LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
ConstraintFunction.cpp
Go to the documentation of this file.
1// Copyright 2002-2019 CEA LIST
2// SPDX-FileCopyrightText: 2022 CEA LIST <gael.de-chalendar@cea.fr>
3//
4// SPDX-License-Identifier: MIT
5
6/***************************************************************************
7 * Copyright (C) 2006 by Romuald *
8 * romuald.bourre@cea.fr *
9 *
10 ***************************************************************************/
11
12#include "ConstraintFunction.h"
21
22#include <iostream>
23
24#include <algorithm>
25
26using namespace Lima::Common::AnnotationGraphs;
28
29#define SEMLOGINIT LOGINIT("LP::SemanticAnalysis")
30
31namespace Lima
32{
33namespace LinguisticProcessing
34{
35namespace SemanticAnalysis
36{
37
38//**********************************************************************
39// factories for constraints defined in this file
42
43
46
49
50//**********************************************************************
52 const LimaString& complement):
53ConstraintFunction(language,complement)
54{
55}
56
58{
59#ifdef DEBUG_LP
61 LDEBUG << "ClearSemanticRelation::operator()";
62#endif
63 auto semanticData = std::dynamic_pointer_cast<SemanticRelationData>(analysis.getData("SemanticRelationData"));
64 if (semanticData==0)
65 {
66 return false;
67 }
68 else
69 {
70 return semanticData->clearStoredRelations();
71 }
72}
73
75 const LimaString& complement):
76 ConstraintFunction(language,complement)
77{
78}
79
81{
82#ifdef DEBUG_LP
84 LDEBUG << "SaveSemanticRelation::operator()";
85#endif
86 auto semanticData = std::dynamic_pointer_cast<SemanticRelationData>(analysis.getData("SemanticRelationData"));
87 if (semanticData==0)
88 {
89 return false;
90 }
91 else
92 {
93 return semanticData->addRelations(analysis);
94 }
95}
96
98 const LimaString& complement):
99 ConstraintFunction(language,complement)
100{
101 m_semanticRelationType = Common::Misc::limastring2utf8stdstring(complement);
102}
103
106 const LinguisticGraphVertex& vertex1,
107 const LinguisticGraphVertex& vertex2,
108 AnalysisContent& analysis ) const
109{
110#ifdef DEBUG_LP
112 LDEBUG << "CreateSemanticRelation::operator()" << vertex1 << vertex2
113 << m_semanticRelationType;
114#endif
115 LIMA_UNUSED(anagraph);
116 auto semanticData = std::dynamic_pointer_cast<SemanticRelationData>(analysis.getData("SemanticRelationData"));
117 if (semanticData == nullptr)
118 {
119 semanticData = std::make_shared<SemanticRelationData>();
120 analysis.setData("SemanticRelationData", semanticData);
121 }
122 return semanticData->relation(vertex1,vertex2,m_semanticRelationType);
123}
124
125
126} // end namespace SemanticAnalysis
127} // end namespace LinguisticProcessing
128} // end namespace Lima
This file is the main header file for the data related to annotation graphs.
A graph that stores any data (annotations) referencing primarily nodes of a text anlaysis.
#define SEMLOGINIT
#define CreateSemanticRelationId
#define SaveSemanticRelationId
#define ClearSemanticRelationId
#define LIMA_UNUSED(x)
Definition LimaCommon.h:224
#define LDEBUG
Definition LimaCommon.h:157
LinguisticGraph::vertex_descriptor LinguisticGraphVertex
Data used for Semantic Relation Annotation.
Holds all data that pass through the ProcessUnits Analysis data are shared pointers,...
std::shared_ptr< AnalysisData > getData(const QString &id)
return AnalysisData by id
void setData(const QString &id, std::shared_ptr< AnalysisData > data)
set an analysisData with the given id.
An AnalysisData containing a LinguisticGraph with a language and an id.
ClearSemanticRelation(MediaId language, const LimaString &complement=LimaString())
bool operator()(AnalysisContent &analysis) const override
zero-ary constraint function : applies the function without a vertex indication (used for actions,...
CreateSemanticRelation(MediaId language, const LimaString &complement=LimaString())
bool operator()(const LinguisticAnalysisStructure::AnalysisGraph &graph, const LinguisticGraphVertex &v1, const LinguisticGraphVertex &v2, AnalysisContent &analysis) const override
binary constraint function : the constraint only applies on two vertices in the graph (the graph is a...
bool operator()(AnalysisContent &analysis) const override
zero-ary constraint function : applies the function without a vertex indication (used for actions,...
SaveSemanticRelation(MediaId language, const LimaString &complement=LimaString())
std::string limastring2utf8stdstring(const Lima::LimaString &phrase, uint32_t size0)
Convert a wide string to a string , in dest up to size bytes.
Automaton::ConstraintFunctionFactory< ClearSemanticRelation > ClearSemanticRelationFactory(ClearSemanticRelationId)
Automaton::ConstraintFunctionFactory< CreateSemanticRelation > CreateSemanticRelationFactory(CreateSemanticRelationId)
Automaton::ConstraintFunctionFactory< SaveSemanticRelation > SaveSemanticRelationFactory(SaveSemanticRelationId)
NAUTITIA.
QString LimaString
Definition LimaString.h:33