Quick links: Tutorial - Examples - Files - Symbols.
Classes: Hierarchy - Index - List - Members.
Namespaces: Index - base - cs - display.

List of all members
cogitant::Graph Class Reference

Graphe conceptuel. More...

#include "cogitant/graph.h"

Inheritance diagram for cogitant::Graph:
cogitant::EnvironmentObject cogitant::ObservableObject cogitant::CogitantObject cogitant::ColoredGraph cogitant::ColoredGraphConstraint

Public Types

Itérateurs pour le parcours des noeuds du graphe.
typedef Set< GraphObject * >::iterator iterator
 
typedef Set< GraphObject * >::const_iterator const_iterator
 
Itérateurs pour le parcours filtré des éléments du graphe par leur type.
typedef GraphObjectCondIterator< Concept *, Concept *&, GraphObject::OT_CONCEPTconcept_iterator
 
typedef GraphObjectCondIterator< Concept *, Concept const *const &, GraphObject::OT_CONCEPTconcept_const_iterator
 
typedef GraphObjectCondIterator< Relation *, Relation *&, GraphObject::OT_RELATIONrelation_iterator
 
typedef GraphObjectCondIterator< Relation *, Relation const *const &, GraphObject::OT_RELATIONrelation_const_iterator
 
typedef GraphObjectCondIterator< Nesting *, Nesting *&, GraphObject::OT_NESTINGnesting_iterator
 
typedef GraphObjectCondIterator< Nesting *, Nesting const *const &, GraphObject::OT_NESTINGnesting_const_iterator
 
typedef GraphObjectCondIterator< InternalGraph *, InternalGraph *&, GraphObject::OT_INTERNALGRAPHinternalgraph_iterator
 
typedef GraphObjectCondIterator< InternalGraph *, InternalGraph const *const &, GraphObject::OT_INTERNALGRAPHinternalgraph_const_iterator
 
typedef GraphObjectCondIterator< CoreferenceClass *, CoreferenceClass *&, GraphObject::OT_COREFERENCECLASScoreferenceclass_iterator
 
typedef GraphObjectCondIterator< CoreferenceClass *, CoreferenceClass const *const &, GraphObject::OT_COREFERENCECLASScoreferenceclass_const_iterator
 
- Public Types inherited from cogitant::EnvironmentObject
enum  Type {
  OT_GRAPH, OT_COUPLEOFLAMBDAS, OT_RULE, OT_POSITIVECONSTRAINT,
  OT_NEGATIVECONSTRAINT, OT_POSITIVECOLOREDGRAPHCONSTRAINT, OT_NEGATIVECOLOREDGRAPHCONSTRAINT
}
 Type d'objet. More...
 

Public Member Functions

Constructeurs - destructeur.
 Graph (Environment const *env, GraphAllocator const *alloc=NULL)
 Constructeur. More...
 
 Graph (Graph const &o, bool external=false, Environment const *env=NULL, GraphAllocator const *alloc=NULL)
 Constructeur par recopie. More...
 
 ~Graph ()
 Destructeur. More...
 
Modifications - Accès aux noeuds et arêtes.
Set< GraphObject * > * nodes ()
 Ensemble des noeuds du graphe. More...
 
Set_Simple_Final< Set_Simple_Final< Edge > * > * edges ()
 Ensemble des arêtes du graphe. More...
 
GraphObjectnodes (iSet i)
 Accès direct à un noeud par son identificateur. More...
 
Set_Simple_Final< Edge > * edges (iSet i)
 Accès direct aux voisins d'un noeud par son identificateur. More...
 
Modifications - Ajout de noeuds.
iSet newInternalGraph (iSet idparent)
 Création d'un graphe interne (InternalGraph). More...
 
iSet newGenericConcept (iSet t, iSet idparent=0)
 Création d'un sommet Concept générique. More...
 
iSet newGenericConcept (ConceptType::ConjunctiveType const &t, iSet idparent=0)
 Création d'un sommet concept générique muni d'un type conjonctif. More...
 
iSet newGenericConcept (std::string const &t, iSet idparent=0)
 Création d'un sommet Concept générique. More...
 
iSet newGenericConcept (std::vector< std::string > const &t, iSet idparent=0)
 Création d'un sommet concept générique muni d'un type conjonctif. More...
 
iSet newIndividualConcept (iSet t, iSet im, iSet idparent=0)
 Création d'un sommet Concept individuel. More...
 
iSet newIndividualConcept (ConceptType::ConjunctiveType const &t, iSet im, iSet idparent=0)
 Création d'un sommet Concept individuel muni d'un type conjonctif. More...
 
iSet newIndividualConcept (std::string const &t, std::string const &im, iSet idparent=0)
 Création d'un sommet Concept individuel. More...
 
iSet newIndividualConcept (std::vector< std::string > const &t, std::string const &im, iSet idparent=0)
 Création d'un sommet Concept individuel muni d'un type conjonctif. More...
 
iSet newValueConcept (iSet t, std::string const &value, iSet idparent=0)
 Création d'un sommet Concept valeur. More...
 
iSet newValueConcept (std::string const &t, std::string const &value, iSet idparent=0)
 Création d'un sommet Concept valeur. More...
 
iSet newGenericValueConcept (iSet t, iSet idparent=0)
 Création d'un sommet Concept valeur avec la valeur générique du datatype passé. More...
 
iSet newGenericValueConcept (std::string const &t, iSet idparent=0)
 Création d'un sommet Concept valeur avec la valeur générique du datatype passé. More...
 
iSet newRelation (iSet t, iSet idparent=0)
 Création d'un sommet Relation. More...
 
iSet newRelation (std::string const &t, iSet idparent=0)
 Création d'un sommet Relation. More...
 
iSet newRelation (iSet t, std::vector< iSet > const &n, iSet idparent=0)
 Création d'un sommet Relation. More...
 
iSet newRelation (std::string const &t, std::vector< iSet > const &n, iSet idparent=0)
 Création d'un sommet Relation. More...
 
iSet newBinaryRelation (iSet t, iSet c1, iSet c2)
 Création d'un sommet Relation binaire. More...
 
iSet newBinaryRelation (std::string const &t, iSet c1, iSet c2)
 Création d'un sommet Relation binaire. More...
 
iSet newNesting (iSet t, iSet idparent)
 Création d'un emboîtement (Nesting). More...
 
iSet newNesting (std::string const &t, iSet idparent)
 Création d'un emboîtement (Nesting). More...
 
iSet newNesting (iSet t, iSet idparent, Graph const &g, bool fusioncc=false)
 Création d'un emboîtement (Nesting) contenant un graphe déjà créé. More...
 
iSet newCoreferenceClass (std::string name="")
 Création d'une classe de coréférence (CoreferenceClass). More...
 
iSet newNode (GraphObject const *o, iSet idparent=0)
 Création d'un objet dans le graphe par copie d'un objet existant. More...
 
void addGraph (Graph const &h, iSet parent=0, bool fusioncc=false, GraphSubset *subh=NULL)
 Ajout d'un sous ensemble de graphe au graphe. More...
 
Modifications - Suppression de noeuds.
void deleteObject (iSet i, bool compact=true, bool msg=true, bool pendingvertices=true)
 Suppression d'un objet. More...
 
void deleteObjects (GraphSubset const &gs, bool compact=true, bool msg=true, bool pendingvertices=true)
 Suppression d'objets. More...
 
void deleteNestings (iSet icn)
 Suppression des emboîtements d'un sommet concept. More...
 
void clear ()
 Vider le graphe. More...
 
Modifications - Arêtes.
void link (iSet r, unsigned int l, iSet c)
 Lie un sommet relation avec un sommet concept. More...
 
void recreateNeighbourhood (iSet r)
 Recalcule les voisins du sommet relation r après un changement de type). More...
 
Modifications - Coréférence.
void addCoreference (iSet concept, iSet coref)
 Ajout d'un sommet concept à une classe de coréférence. More...
 
void removeCoreference (iSet concept, iSet coref)
 Suppression d'un sommet concept d'une classe de coréférence. More...
 
iSet addCoreferenceLink (iSet c1, iSet c2)
 Ajout d'un lien de coréférence entre deux sommet soncepts. More...
 
iSet fusionCoreferenceClasses (iSet cc1, iSet cc2, bool compact=true)
 Fusion de deux classes de coréférence. More...
 
Modifications - Propriétés des noeuds.
void addSimplifyConceptType (iSet icn, iSet ct)
 Ajout d'un type à un sommet concept et simplification du type de ce sommet. More...
 
void addSimplifyConceptType (iSet icn, ConceptType::ConjunctiveType const &ct)
 Ajout d'un type à un sommet concept et simplification du type de ce sommet. More...
 
void simplifyConceptType (iSet c)
 Simplification du type d'un sommet concept. More...
 
void changeConceptValue (iSet c, std::string const &v)
 Modifie la valeur portée par un sommet concept. More...
 
void removeProperty (Property::Type pt)
 Supprime la propriété passée de tous les GraphObject composant le graphe. More...
 
void changeProperty (iSet inode)
 Cette méthode se charge de notifier les observateurs du graphe avec un ObserverMessage::GRAPH_NODE_CHANGE. More...
 
Modifications - Divers.
virtual void reserveNodes (nSet const size)
 Réservation d'espace dans l'ensemble des noeuds (concepts, relations, emboîtements, graphes internes). More...
 
void setExternalMode (bool ext)
 Fixe le mode d'ajout des nouveaux noeuds. More...
 
void setInCoupleOfLambdas (CoupleOfLambdas const *r)
 Modification du couple de lambas-graphes contenant le graphe. More...
 
void compact (bool msg=true)
 Compactage des objets composant le graphe. More...
 
void merge (bool addtypes, iSet c1, iSet c2, bool compact=true, bool msg=true)
 Fusion de deux sommets concepts avec ajout au premier des types du second. More...
 
void join (iSet c1, iSet c2)
 Fusion de deux sommets concepts ayant la même étiquette et n'ayant pas d'emboîtements. More...
 
bool updateIndexIndividuals () const
 Mise à jour de l'index des individus permettant un calcul plus efficaces des projections (plus particulièrement OpeProjLIPIndividual). More...
 
Accesseurs.
Type objectType () const
 Type de l'objet. More...
 
void individualMarkers (std::vector< iSet > &im)
 Ajoute à l'ensemble passé l'ensemble des marqueurs individuels utilisés dans l'EnvironmentObject. More...
 
std::string iSetString () const
 Retourne une chaine contenant l'identifiant de l'objet pouvant être utile pour du débogage. More...
 
Set< GraphObject * > const * nodes () const
 Ensemble des noeuds. More...
 
GraphObject const * nodes (iSet i) const
 Accès direct à un noeud par son identificateur. More...
 
Set_Simple_Final< Set_Simple_Final< Edge > * > const * edges () const
 Ensemble des arêtes étiquetées. More...
 
Set_Simple_Final< Edge > const * edges (iSet i) const
 Accès direct aux voisins d'un noeud par son identificateur. More...
 
bool edgeP (iSet a, iSet b, Edge::Label l) const
 Existence d'une arc étiqueté l entre les éléments a et b. More...
 
std::string coreferenceClassUniqueName () const
 Détermination d'un nom utilisé par aucune classe de coréférence. More...
 
CoupleOfLambdas const * inCoupleOfLambdas () const
 Couple de lambda-graphes dans laquelle se trouve le Graph. More...
 
GraphAllocator const * allocator () const
 Allocateur du graphe. More...
 
void findIndividual (iSet ind, std::vector< iSet > &result) const
 Accès aux sommets portant le marqueur individuel passé. More...
 
bool hasIndexIndividuals () const
 Est-ce que l'index de marqueurs individuels est construit. More...
 
Parcours.
const_iterator begin () const
 Retourne un itérateur de début pour le parcours des éléments du graphe. More...
 
iterator begin ()
 Retourne un itérateur de début pour le parcours des éléments du graphe. More...
 
const_iterator end () const
 Retourne un itérateur de fin pour le parcours des éléments du graphe. More...
 
Parcours des éléments du graphe par leur type.
Parameters
idp= cogitant::ISET_NULL, parcours de tous les éléments du graphe du type voulu, sinon, parcours des seuls éléments du graphe fils de l'élément d'identifiant idp. (Sauf pour le parcours des classes de coréférence : elles sont toutes parcourues)
concept_const_iterator conceptBegin (iSet const idp=ISET_NULL) const
 
concept_iterator conceptBegin (iSet const idp=ISET_NULL)
 
concept_const_iterator conceptEnd (iSet const idp=ISET_NULL) const
 
relation_const_iterator relationBegin (iSet const idp=ISET_NULL) const
 
relation_iterator relationBegin (iSet const idp=ISET_NULL)
 
relation_const_iterator relationEnd (iSet const idp=ISET_NULL) const
 
nesting_const_iterator nestingBegin (iSet const idp=ISET_NULL) const
 
nesting_iterator nestingBegin (iSet const idp=ISET_NULL)
 
nesting_const_iterator nestingEnd (iSet const idp=ISET_NULL) const
 
internalgraph_const_iterator internalGraphBegin (iSet const idp=ISET_NULL) const
 
internalgraph_iterator internalGraphBegin (iSet const idp=ISET_NULL)
 
internalgraph_const_iterator internalGraphEnd (iSet const idp=ISET_NULL) const
 
coreferenceclass_const_iterator coreferenceClassBegin () const
 
coreferenceclass_iterator coreferenceClassBegin ()
 
coreferenceclass_const_iterator coreferenceClassEnd () const
 
Accesseurs raccourcis.
iSet parent (iSet i) const
 Identificateur du parent d'un objet. More...
 
iSet root () const
 Identificateur du InternalGraph racine. More...
 
iSet nestedGraph (iSet nesting) const
 Identificateur du graphe emboîté dans l'emboîtement. More...
 
iSet relationNeighbour (iSet r, Edge::Label l) const
 Identificateur d'un voisin d'un sommet relation. More...
 
iSet findCoreferenceClass (std::string const &name) const
 Recherche d'une classe de coréférence par son nom. More...
 
iSet coreferenceClass (iSet concept) const
 Classe de coréférence d'un sommet concept. More...
 
iSet coreferenceClassVertex (iSet coref) const
 Accès à un sommet de la classe de coréférence. More...
 
bool coreferentConcepts (iSet c1, iSet c2, bool cc=true) const
 Est-ce que les deux sommets concepts sont coréférents (portent le même marqueur individuel ou associés à la même classe de coréférence) ou pas. More...
 
nSet size (GraphObject::Type t) const
 Nombre d'objets du graphe d'un type donné. More...
 
nSet conceptSize () const
 Nombre de sommets concepts. More...
 
nSet relationSize () const
 Nombre de sommets relations. More...
 
unsigned int relationArity (iSet r) const
 Arité du sommet relation. More...
 
iSet findIndividual (iSet m, iSet ig=0) const
 Recherche d'un sommet concept individuel étiqueté par le marqueur passé. More...
 
iSet findByIdentifier (std::string const &id) const
 Recherche d'un noeud du graphe par son identificateur chargé depuis un fichier (Property::IDENTIFIER). More...
 
void ensureObject (iSet i) const
 S'assure de l'existence d'un objet du graphe. More...
 
void ensureObject (iSet i, GraphObject::Type t) const
 S'assure de l'existence d'un objet du graphe et vérifie son type. More...
 
nSet heavyObjects () const
 Retourne le nombre d'objets ayant des propriétés (et occupant donc plus d'espace mémoire que les objets simples). More...
 
- Public Member Functions inherited from cogitant::EnvironmentObject
 EnvironmentObject (Environment const *env)
 Constructeur. More...
 
 EnvironmentObject (EnvironmentObject const &o, Environment const *env=NULL)
 Constructeur par recopie. More...
 
 ~EnvironmentObject ()
 Destructeur. More...
 
GraphasGraph ()
 Conversion explicite de l'objet en graphe conceptuel. More...
 
RuleasRule ()
 Conversion explicite de l'objet en règle. More...
 
ConstraintasConstraint ()
 Conversion explicite de l'objet en contrainte. More...
 
ColoredGraphConstraintasColoredGraphConstraint ()
 Conversion explicite de l'objet en contrainte sous forme de graphe bicoloré. More...
 
CoupleOfLambdasasCoupleOfLambdas ()
 Conversion explicite de l'objet en couple de lambdas graphes. More...
 
virtual void setName (std::string const &n)
 Changement du nom de l'objet. More...
 
void setId (iSet id)
 Changement de l'identificateur d'environnement. More...
 
virtual void setEnvironment (Environment const *env)
 Changement de l'environnement de l'objet. More...
 
std::vector< EnvironmentObjectExtension * > & extensions ()
 Accès aux extensions de l'objet. More...
 
EnvironmentObjectExtensionextension (const char *id)
 Accès à une extension de l'objet par son identifiant. More...
 
void addExtension (EnvironmentObjectExtension *ext)
 Ajoute une extension. More...
 
Graph const * asGraph () const
 Conversion explicite de l'objet en graphe conceptuel. More...
 
Rule const * asRule () const
 Conversion explicite de l'objet en règle. More...
 
Constraint const * asConstraint () const
 Conversion explicite de l'objet en contrainte. More...
 
ColoredGraphConstraint const * asColoredGraphConstraint () const
 Conversion explicite de l'objet en contrainte sous forme de graphe bicoloré. More...
 
CoupleOfLambdas const * asCoupleOfLambdas () const
 Conversion explicite de l'objet en couple de lambdas graphes. More...
 
virtual std::string name () const
 Nom de l'objet. More...
 
iSet id () const
 Identificateur de l'objet dans l'Environment. More...
 
Environment const * environment () const
 Environnement dans lequel l'objet est défini. More...
 
Support const * support () const
 Support sur lequel l'objet est défini. More...
 
std::vector< EnvironmentObjectExtension * > const & extensions () const
 Accès aux extensions de l'objet. More...
 
EnvironmentObjectExtension const * extension (const char *id) const
 Accès à une extension de l'objet par son identifiant. More...
 
- Public Member Functions inherited from cogitant::ObservableObject
 ObservableObject ()
 Constructeur. More...
 
 ObservableObject (ObservableObject const &o)
 Constructeur par recopie. More...
 
 ~ObservableObject ()
 Destructeur. More...
 
ObserverSet const & observers () const
 Accès à l'ensemble des observateurs. More...
 
bool hasObservers () const
 Existence d'observateurs. More...
 
bool hasObservers (ObserverMessage::Type mt) const
 Existence d'observateurs qui écoutent le type de message passé. More...
 
void attachObserver (Observer *obs)
 Ajoute un nouvel observateur à l'objet. More...
 
void detachObserver (Observer *obs)
 Supprime le lien entre l'observateur et l'objet. More...
 
void notifyObservers (ObserverMessage const *msg)
 Envoie le message de modification à tous les observateurs. More...
 
- Public Member Functions inherited from cogitant::CogitantObject
 CogitantObject ()
 Constructeur. More...
 
 CogitantObject (CogitantObject const &o)
 Constructeur par recopie. More...
 
virtual ~CogitantObject ()
 Destructeur. More...
 
PropertySetproperties ()
 Accès à l'ensemble des propriétés. More...
 
virtual std::string toString () const
 Transformation en chaîne de caractères. More...
 
std::string className () const
 Nom de la classe. More...
 
PropertySet const * properties () const
 Accès en lecture seule à l'ensemble des propriétés. More...
 
bool hasProperties () const
 Existence de propriétés. More...
 
CogitantObjectoperator= (CogitantObject const &ob)
 Affectation. More...
 

Protected Member Functions

Allocateurs.
void allocMembers ()
 Allocation de tous les membres. More...
 
void allocMembers (Graph const &o)
 Allocation de tous les membres par copie des membres d'un graphe existant. More...
 
void deleteMembers ()
 Destruction de tous les membres. More...
 
Fonctions internes.
iSet add (GraphObject const *obj, iSet p)
 Ajout d'un objet. More...
 
void internalDeleteObject (iSet i)
 Suppression d'un objet. More...
 
bool validISet (iSet i) const
 Validité d'un identificateur d'objet. More...
 
- Protected Member Functions inherited from cogitant::ObservableObject
virtual ObserverSetallocObservers () const
 Fonction créant l'instance d'une sous classe de ObserverSet pour la représentation de l'ensemble des observateurs de l'objet. More...
 
ObserverSetobservers ()
 Accès à l'ensemble des observateurs. More...
 
- Protected Member Functions inherited from cogitant::CogitantObject
virtual PropertySetallocProperties () const
 Fonction créant l'instance d'une sous classe de PropertySet pour la représentation des propriétés de l'objet. More...
 

Divers.

Graphoperator= (Graph const &ob)
 Affectation. More...
 
void printInternalInfo (std::ostream &os) const
 Affichage d'informations pouvant être utiles à l'optimisation. More...
 
std::ostream & operator<< (std::ostream &os, Graph const &ob)
 Sortie sur un flux. More...
 

Detailed Description

Graphe conceptuel.

Une présentation de l'utilisation de cette classe est disponible dans la section Conceptual graph manipulation.

Fonctionnalité avancée Noeuds internes / externes (inutilisé dans un usage normal)
Le lien qui existe entre le graphe et les noeuds contenus (m_nodes) peut être de deux types :

Le deuxième mode peut être utile dans le cas où des ajouts de sommets (éventuellement suivi de suppressions de ces sommets) doivent être faits en frand nombre. Par exemple, lors de l'application de règles (et pour le test si l'application d'une règle est irredondante), plutot que d'ajouter au graphe des copies des sommets de la conlusion, il est préférable, pour des raisons de performance, d'ajouter des pointeurs vers les sommets du graphe conclusion de la règle. En effet, les liens qui existent entre les noeuds d'un graphe (aretes et lien fils/parent) ne sont pas stockés dans les noeuds mais dans le membre m_edges du graphe. De cette façon, un pointeur sur un sommet d'un autre graphe peut être utilisé dans un graphe pour représenter un sommet de même étiquette, même si son voisinnage est différent.
Il y a cependant quelques limites à l'utilisation de noeuds externes :

Constructor & Destructor Documentation

◆ Graph() [1/2]

cogitant::Graph::Graph ( Environment const *  env,
GraphAllocator const *  alloc = NULL 
)

Constructeur.

L'allocateur par défaut est utilisé si alloc = NULL. A la construction le graphe ne contient qu'un InternalGraph représentant le graphe de niveau 0 (ce graphe est vide et a pour identifiant 0).

Parameters
envenvironnement dans lequel le graphe est défini. Même si un graphe n'est pas géré dans un Environment, il est toujours rattaché à un Environment car un graphe est défini sur un Support (qui est dans un Environment).
allocallocateur pour les membres.

◆ Graph() [2/2]

cogitant::Graph::Graph ( Graph const &  o,
bool  external = false,
Environment const *  env = NULL,
GraphAllocator const *  alloc = NULL 
)

Constructeur par recopie.

Parameters
ographe à copier.
externalfaçon dont la copie doit être faite. Si external vaut false (défaut), la copie est réalisée normalement et une copie de chaque noeud de e est ajoutée au graphe créé. Au contraire, si external vaut true, le graphe copié ne contient que des pointeurs sur les noeuds de o. L'utilisation de noeuds externes peut améliorer les performances dans certains cas mais doit être utilisé avec précautions.
envenvironnement dans lequel le graphe créé est défini. Il est conseillé de laisser la valeur par défaut (NULL) qui définit l'environnement du nouveau graphe avec celui du graphe copié.
alloc= NULL, un allocateur par défaut (instance de GraphAllocator) est utilisé pour la copie, sinon l'allocateur passé est utilisé.

◆ ~Graph()

cogitant::Graph::~Graph ( )

Destructeur.

Member Function Documentation

◆ add()

iSet cogitant::Graph::add ( GraphObject const *  obj,
iSet  p 
)
protected

Ajout d'un objet.

Attribue un identifiant au nouvel objet qui est rattaché à un parent.

Parameters
objobjet à ajouter.
pidentifiant de l'objet auquel obj doit être rattaché (obj a pour parent p, p a pour fils obj).
Returns
l'identifiant attribué à obj.
Precondition
l'objet n'est pas déjà dans le graphe.

◆ addCoreference()

void cogitant::Graph::addCoreference ( iSet  concept,
iSet  coref 
)

Ajout d'un sommet concept à une classe de coréférence.

Parameters
conceptidentificateur du sommet concept à ajouter à la classe.
corefidentificateur de la classe de coréférence.
Precondition
concept est un identificateur de sommet concept qui n'est pas déjà dans une classe de coréférence (pas même coreference).
Exceptions
ExceptionStructure
Warning
Ne pas confondre cette méthode avec addCoreferenceLink().

◆ addCoreferenceLink()

iSet cogitant::Graph::addCoreferenceLink ( iSet  c1,
iSet  c2 
)

Ajout d'un lien de coréférence entre deux sommet soncepts.

Ce lien de coréférence n'est pas explicitement représenté en mémoire, puisque la coréférence est toujours représentée par l'appartenance à une classe de coréférence. Plus précisément, si un des deux sommets appartient déjà à une classe de coréférence, l'autre est rattaché à cette classe. Si aucun sommet n'appartient à une classe de coréférence, une nouvelle classe de coréférence est créée et les deux sommets y sont rattachés. Enfin, si les deux sommets appartiennent déjà à des classes de coréférence (distinctes), ces deux classes sont fusionnées.

Parameters
c1identificateur de sommet concept.
c2identificateur de sommet concept.
Returns
identificateur de la classe de coréférence dans laquelle figurent c1 et c2. Cette classe a éventuellement été créée dans la méthode.
Exceptions
ExceptionStructuresi c1 ou c2 ne sont pas des sommets concepts.
Warning
Ne pas confondre cette méthode avec addCoreference(). L'appel à cette méthode pouvant conduite à la suppression d'un objet du graphe (la classe de coréférence fusionnée), les identificateurs sur les objets du graphe sont invalidés.

◆ addGraph()

void cogitant::Graph::addGraph ( Graph const &  h,
iSet  parent = 0,
bool  fusioncc = false,
GraphSubset subh = NULL 
)

Ajout d'un sous ensemble de graphe au graphe.

Parameters
hle graphe à ajouter (somme disjointe) au graphe courant.
parentl'identificateur du sommet du graphe courant qui recevra comme fils les sommets copiés.
fusionccsi true les classes de coréférence de même nom sont fusionnées. Ces classes ne sont pas fusionnées si fusioncc vaut false.
subhsous ensemble de h à copier. Si subh vaut NULL, h est copié entièrement.

◆ addSimplifyConceptType() [1/2]

void cogitant::Graph::addSimplifyConceptType ( iSet  icn,
iSet  ct 
)

Ajout d'un type à un sommet concept et simplification du type de ce sommet.

Le type (primitif) ct est ajouté à icn, puis le type est simplifié par un appel à simplifyConceptType(). Cette méthode appelle changeProperty() (afin de notifier les observateurs liés) dans le cas où le type du sommet a été modifié.

Parameters
icnidentificateur du sommet concept à modifier.
cttype de concept à ajouter à icn.

◆ addSimplifyConceptType() [2/2]

void cogitant::Graph::addSimplifyConceptType ( iSet  icn,
ConceptType::ConjunctiveType const &  ct 
)

Ajout d'un type à un sommet concept et simplification du type de ce sommet.

Les types de ct sont ajoutés à icn, puis le type est simplifié par un appel à simplifyConceptType(). Cette méthode appelle changeProperty() (afin de notifier les observateurs liés) dans le cas où le type du sommet a été modifié.

Parameters
icnidentificateur du sommet concept à modifier.
cttype de concept conjonctif à ajouter à icn.

◆ allocator()

GraphAllocator const* cogitant::Graph::allocator ( ) const
inline

Allocateur du graphe.

◆ allocMembers() [1/2]

void cogitant::Graph::allocMembers ( )
protected

Allocation de tous les membres.

◆ allocMembers() [2/2]

void cogitant::Graph::allocMembers ( Graph const &  o)
protected

Allocation de tous les membres par copie des membres d'un graphe existant.

Warning
L'allocateur n'est pas copié. L'allocateur est en effet fixé au moment du constructeur du graphe et ne peut être modifié par la suite.

◆ begin() [1/2]

const_iterator cogitant::Graph::begin ( ) const
inline

Retourne un itérateur de début pour le parcours des éléments du graphe.

References cogitant::Set< SetContent >::begin().

◆ begin() [2/2]

iterator cogitant::Graph::begin ( )
inline

Retourne un itérateur de début pour le parcours des éléments du graphe.

References cogitant::Set< SetContent >::begin().

◆ changeConceptValue()

void cogitant::Graph::changeConceptValue ( iSet  c,
std::string const &  v 
)

Modifie la valeur portée par un sommet concept.

Parameters
cIdentifiant d'un sommet concept du graphe.
vNouvelle valeur. Cette valeur doit être compatible avec le Datatype du sommet concept. Si ce n'est pas le cas, lève une ExceptionIncorrectType::NOTACORRECTVALUE.
Precondition
c est un sommet concept portant un Datatype.

◆ changeProperty()

void cogitant::Graph::changeProperty ( iSet  inode)

Cette méthode se charge de notifier les observateurs du graphe avec un ObserverMessage::GRAPH_NODE_CHANGE.

Warning
Les méthodes de modification directe des propriétés des GraphObject n'appellent pas cette méthode à des fins d'optimisation. Si des observateurs sont définis sur un Graph, il est donc nécessaire d'appeler explicitement cette méthode dès qu'une propriété d'un objet est définie afin de notifer les observateurs. Toujours à des fins d'optimisation, il est préférable d'appeler cette méthode une seule fois après une série de modifications, plutôt que de l'appeler après chaque modification.
Parameters
inodeidentificateur du noeud dont des propriétés ont été modifiées.

◆ clear()

void cogitant::Graph::clear ( )

Vider le graphe.

Après appel à cette méthode le graphe n'a plus aucun sommet concept et plus aucun sommet relation (seul reste l'InternalGraph externe).

◆ compact()

void cogitant::Graph::compact ( bool  msg = true)

Compactage des objets composant le graphe.

Re-numérote les objets afin que la numérotation soit continue. L'appel à cette méthode peut transformer un noeud externe en noeud interne dans le cas où un noeud interne est supprimé et remplacé (utilisation du même identifiant) par un noeud externe. Dans une utilisation classique de la bibliothèque, il n'est pas nécessaire d'appliquer explicitement cette méthode, qui est appelée automatiquement à chaque fois qu'un objet du graphe est détruit (par deleteObject()). Cependant, un appel à deleteObject() peut invalider les identificateurs, et en plus, si plusieurs appels à deleteObject() doivent être faits, il est préférable, à des fins de performance, de les exécuter sans faire de compactage, puis faire un (et un seul) compactage après toutes les suppressions.

Parameters
msgsi true notifie les observateurs avec un ObserverMessage::GRAPH_NODE_ID_CHANGE.
Warning
Un Graph dans lequel des objets ont été détruits et qui n'a pas été compacté n'est pas dans un état valide, et le comportement des opérations est indéfini. Il est donc préférable d'utiliser les méthodes de suppression de sommets telles que deleteObject() et merge() avec la valeur par défaut du paramètre compact, car de cette façon elles effectuent un compactage automatique, sauf si vous savez exactement ce que vous faites et que vous voulez écrire un code plus performant.

◆ conceptSize()

nSet cogitant::Graph::conceptSize ( ) const
inline

Nombre de sommets concepts.

Returns
le nombre de sommets concepts du graphe.

References cogitant::GraphObject::OT_CONCEPT.

◆ coreferenceClass()

iSet cogitant::Graph::coreferenceClass ( iSet  concept) const

Classe de coréférence d'un sommet concept.

Parameters
conceptidentificateur d'un sommet concept.
Returns
identificateur de la classe de coréférence (CoreferenceClass) de concept, ou ISET_NULL si concept n'appartient à aucune classe de coréférence (non triviale, c'est à dire non réduite au seul sommet).
Exceptions
ExceptionIncorrectTypesi concept ne repère pas un sommet concept.

◆ coreferenceClassUniqueName()

std::string cogitant::Graph::coreferenceClassUniqueName ( ) const

Détermination d'un nom utilisé par aucune classe de coréférence.

◆ coreferenceClassVertex()

iSet cogitant::Graph::coreferenceClassVertex ( iSet  coref) const

Accès à un sommet de la classe de coréférence.

Parameters
corefidentificateur d'une classe de coréférence.
Returns
un identificateur de sommet concept de la classe. Tous les sommets de la classe étant de même type, le sommet retourné peut être utilisé pour représenter tous les autres. Si la classe est vide, retourne ISET_NULL.
Exceptions
ExceptionIncorrectTypesi coref ne repère pas une classe de coréférence.

◆ coreferentConcepts()

bool cogitant::Graph::coreferentConcepts ( iSet  c1,
iSet  c2,
bool  cc = true 
) const

Est-ce que les deux sommets concepts sont coréférents (portent le même marqueur individuel ou associés à la même classe de coréférence) ou pas.

Parameters
c1identificateur du premier sommet concept.
c2identificateur du deuxième sommet concept.
ccsi true vérifie aussi l'appartenance à la même classe de coréférence. Si false ne considère que les marqueurs individuels.
Returns
true ssi les deux sommets concepts sont des sommets concepts individuels portant le même marqueur individuel ou s'ils sont dans la même classe de coréférence.

◆ deleteMembers()

void cogitant::Graph::deleteMembers ( )
protected

Destruction de tous les membres.

◆ deleteNestings()

void cogitant::Graph::deleteNestings ( iSet  icn)

Suppression des emboîtements d'un sommet concept.

Tous les emboîtements du sommet concept passé son détruits par un appel à deleteObject().

Parameters
icnIdentificateur du sommet concept dont les emboîtements doivent être détruits.

◆ deleteObject()

void cogitant::Graph::deleteObject ( iSet  i,
bool  compact = true,
bool  msg = true,
bool  pendingvertices = true 
)

Suppression d'un objet.

Tous les objets contenus dans (fils de) l'objet supprimé sont détruits, si un sommet concept est détruit, les arêtes liées à ce sommet sont rendues pendantes. L'objet supprimé du graphe, puis est détruit. Les itérateurs sur l'ensemble des objets sont invalidés par l'appel à celle méthode.

Parameters
iidentificateur de l'objet à détruire.
compactsi défini à vrai (défaut) les sommets du graphe sont compactés après destruction, et les identificateurs de sommets sont invalidés. compact=false est à utiliser avec précaution car des valeurs NULL subsistent dans la liste des noeuds du graphe (mais dans ce cas, les iSet des noeuds ne sont pas invalidés).
msgsi true notifie les observateurs avec un message ObserverMessage::GRAPH_NODE_DEL.
pendingverticessi true, quand un sommet concept est supprimé, les arêtes entre les sommets relations qui étaient liés à ce sommet concept et le sommet supprimé deviennent pendantes. Si false, les sommets relations liés à un sommet concept supprimé sont eux aussi supprimés.

◆ deleteObjects()

void cogitant::Graph::deleteObjects ( GraphSubset const &  gs,
bool  compact = true,
bool  msg = true,
bool  pendingvertices = true 
)

Suppression d'objets.

Tous les objets présents dans le GraphSubset passé sont détruits du graphe.

Parameters
gsEnsemble d'objets à détruire.
compactSi défini à vrai (défaut), les sommets du graphes sont compactés après la destruction des sommets de gs et les identificateurs de sommets sont donc invalidés.
msgsi true notifie les observateurs avec un message ObserverMessage::GRAPH_NODE_DEL.
pendingverticessi true, quand un sommet concept est supprimé, les arêtes entre les sommets relations qui étaient liés à ce sommet concept et le sommet supprimé deviennent pendantes. Si false, les sommets relations liés à un sommet concept supprimé sont eux aussi supprimés.

◆ edgeP()

bool cogitant::Graph::edgeP ( iSet  a,
iSet  b,
Edge::Label  l 
) const

Existence d'une arc étiqueté l entre les éléments a et b.

◆ edges() [1/4]

Set_Simple_Final< Set_Simple_Final<Edge> *>* cogitant::Graph::edges ( )
inline

Ensemble des arêtes du graphe.

Ne pas utiliser cette méthode pour ajouter/supprimer des arêtes.

See also
Nodes of a graph.

◆ edges() [2/4]

Set_Simple_Final<Edge>* cogitant::Graph::edges ( iSet  i)
inline

Accès direct aux voisins d'un noeud par son identificateur.

◆ edges() [3/4]

Set_Simple_Final< Set_Simple_Final<Edge> *> const* cogitant::Graph::edges ( ) const
inline

Ensemble des arêtes étiquetées.

◆ edges() [4/4]

Set_Simple_Final<Edge> const* cogitant::Graph::edges ( iSet  i) const
inline

Accès direct aux voisins d'un noeud par son identificateur.

◆ end()

const_iterator cogitant::Graph::end ( ) const
inline

Retourne un itérateur de fin pour le parcours des éléments du graphe.

References cogitant::Set< SetContent >::end(), and cogitant::ISET_NULL.

◆ ensureObject() [1/2]

void cogitant::Graph::ensureObject ( iSet  i) const

S'assure de l'existence d'un objet du graphe.

Parameters
iidentificateur de l'objet à vérifier.
Exceptions
ExceptionUnknownObjectsi l'objet à vérifier n'existe pas dans le graphe.

◆ ensureObject() [2/2]

void cogitant::Graph::ensureObject ( iSet  i,
GraphObject::Type  t 
) const

S'assure de l'existence d'un objet du graphe et vérifie son type.

Parameters
iidentificateur de l'objet à vérifier.
ttype de l'object à vérifier.
Exceptions
ExceptionUnknownObjectsi l'objet à vérifier n'existe pas dans l'environnement.
ExceptionIncorrectTypesi l'objet à vérifier n'est pas du bon type.

◆ findByIdentifier()

iSet cogitant::Graph::findByIdentifier ( std::string const &  id) const

Recherche d'un noeud du graphe par son identificateur chargé depuis un fichier (Property::IDENTIFIER).

Cette méthode retourne l'identificateur interne (iSet) de l'objet portant la propriété Property::IDENTIFIER passée.

Warning
Les opérations d'entrées/sorties ne mémorisent pas, par défaut les identificateurs présents dans les fichiers dans les graphes. Pour changer ce comportement, et pouvoir utiliser cette méthode, il faut utiliser IOHandler::graphObjectIdentifiers().
Parameters
ididentificateur recherché.
Returns
l'identificateur interne du sommet portant la proporiété passée ou ISET_NULL si introuvable.

◆ findCoreferenceClass()

iSet cogitant::Graph::findCoreferenceClass ( std::string const &  name) const

Recherche d'une classe de coréférence par son nom.

Returns
l'identificateur de la classe de coréférence dont la propriété Property::LABEL vaut name ou ISET_NULL si une telle classe est introuvable.

◆ findIndividual() [1/2]

void cogitant::Graph::findIndividual ( iSet  ind,
std::vector< iSet > &  result 
) const

Accès aux sommets portant le marqueur individuel passé.

◆ findIndividual() [2/2]

iSet cogitant::Graph::findIndividual ( iSet  m,
iSet  ig = 0 
) const

Recherche d'un sommet concept individuel étiqueté par le marqueur passé.

Parameters
mle marqueur individuel recherché.
igl'identificateur du graphe interne dans lequel s'effectue la recherche.
Returns
l'identificateur d'un sommet étiqueté par le marqueur passé ou ISET_NULL si introuvable.

◆ fusionCoreferenceClasses()

iSet cogitant::Graph::fusionCoreferenceClasses ( iSet  cc1,
iSet  cc2,
bool  compact = true 
)

Fusion de deux classes de coréférence.

Les deux classes de coréférence passées en paramètre sont fusionnées : à condition que ces deux classes contiennent des sommets concepts de même étiquette, la classe la plus petite est supprimée et tous ses sommets concepts sont rattachés à l'autre classe.

Parameters
cc1identificateur de classe de coréférence.
cc2identificateur de classe de coréférence.
compactcompacter le graphe après la fusion.
Returns
identificateur de la classe de coréférence restante.
Exceptions
Exceptionsi cc1 ou cc2 ne sont pas des classes de coréférence fusionnables.
Warning
L'appel à cette méthode pouvant provoquant la suppression d'un objet du graphe (la classe de coréférence fusionnée), les identificateurs sur les objets du graphe sont invalidés.

◆ hasIndexIndividuals()

bool cogitant::Graph::hasIndexIndividuals ( ) const

Est-ce que l'index de marqueurs individuels est construit.

◆ heavyObjects()

nSet cogitant::Graph::heavyObjects ( ) const

Retourne le nombre d'objets ayant des propriétés (et occupant donc plus d'espace mémoire que les objets simples).

◆ inCoupleOfLambdas()

CoupleOfLambdas const* cogitant::Graph::inCoupleOfLambdas ( ) const

Couple de lambda-graphes dans laquelle se trouve le Graph.

Returns
Le CoupleOfLambdas dont le Graph est élément, ou NULL.

◆ individualMarkers()

void cogitant::Graph::individualMarkers ( std::vector< iSet > &  im)
virtual

Ajoute à l'ensemble passé l'ensemble des marqueurs individuels utilisés dans l'EnvironmentObject.

Implements cogitant::EnvironmentObject.

◆ internalDeleteObject()

void cogitant::Graph::internalDeleteObject ( iSet  i)
protected

Suppression d'un objet.

Supprime l'objet d'identificateur i, ainsi que tous ses descendants. i est enlevé de la liste des fils de son parent. Si i est un sommet concept, les arêtes liées sont rendues pendantes. Si i est un sommet relation, les arêtes sont supprimées. Après la suppression, les ensembles de sommets et d'arêtes m_nodes et m_edges contiennent des valeurs NULL pour les emplacements des objets supprimés, il est nécessaire donc d'appeler compact() pour retrouver un graphe dans l'état correct. À noter que le noeud lui même n'est détruit que dans le cas où il s'agit d'un noeud interne.

◆ iSetString()

std::string cogitant::Graph::iSetString ( ) const
virtual

Retourne une chaine contenant l'identifiant de l'objet pouvant être utile pour du débogage.

Dans le cas d'un graphe ou d'une règle présent dans l'Environment, retourne simplement l'identifiant du graphe dans l'environnement, dans le cas d'un graphe utilisé comme hypothèse ou conclusion d'une règle retourne une chaîne du type "Hypothesis of" avec l'identifiant de la règle dans l'environnement.

Reimplemented from cogitant::EnvironmentObject.

◆ join()

void cogitant::Graph::join ( iSet  c1,
iSet  c2 
)

Fusion de deux sommets concepts ayant la même étiquette et n'ayant pas d'emboîtements.

Cette méthode n'est qu'un raccourci de l'appel à Graph::merge(false, c1, c2, true, true).

Parameters
c1identificateur du sommet concept sur lequel la fusion est effectuée.
c2identificateur du sommet qui est fusionné dans c1. Le sommet c2 est détruit par l'opération.

◆ link()

void cogitant::Graph::link ( iSet  r,
unsigned int  l,
iSet  c 
)

Lie un sommet relation avec un sommet concept.

Parameters
ridentificateur du sommet relation.
létiquette de l'arête.
cidentificateur du sommet concept (cogitant::ISET_NULL pour rendre l'arête pendante).
Precondition
l >= 1, l <= arité(r), respect de la signature du sommet relation.

◆ merge()

void cogitant::Graph::merge ( bool  addtypes,
iSet  c1,
iSet  c2,
bool  compact = true,
bool  msg = true 
)

Fusion de deux sommets concepts avec ajout au premier des types du second.

Parameters
addtypesSi true ajoute les types de c2 à c1. Sinon, le type de c1 est conservé, sans aucune modification, quel que soit le type de c2.
c1identificateur du sommet concept sur lequel la fusion est effectuée.
c2identificateur du sommet concept qui est fusionné dans c1. Le sommet c2 est détruit par l'opération.
compactcompacter le graphe après la fusion. Si le graphe est compacté, après l'opération, les identificateurs sur les sommets du graphe sont invalidés. Par contre, si le graphe n'est pas compacté, les identificateurs de sommets restent valides, mais le graphe n'est pas dans un état permettant l'exécution d'opérations.
msgsi true notifie les observateurs avec un ObserverMessage::GRAPH_NODE_MERGE_BEFORE et ObserverMessage::GRAPH_NODE_MERGE_AFTER.
Precondition
c1 et c2 doivent avoir le même parent (être dans le même graphe emboîté). Après appel à cette méthode le sommet c1 contient (éventuellement) un type conjonctif.
Warning
Les éventuels graphes emboîtés dans c2 sont supprimés. A moins de savoir ce que vous faites, n'appelez pas merge() avec compact = false, car cet appel est destiné à une optimisation du code dans le cas où plusieurs couples de sommets doivent être fusionnés : merge() est appelée plusieurs fois, puis compact() est appelée une fois (plutôt que d'appeler compact() à chaque fusion).

◆ nestedGraph()

iSet cogitant::Graph::nestedGraph ( iSet  nesting) const

Identificateur du graphe emboîté dans l'emboîtement.

Precondition
nesting est l'identificateur d'un emboîtement.

◆ newBinaryRelation() [1/2]

iSet cogitant::Graph::newBinaryRelation ( iSet  t,
iSet  c1,
iSet  c2 
)

Création d'un sommet Relation binaire.

Le sommet relation créé a pour voisins les sommets passés en paramètre. Cette méthode est juste un raccourci pour newRelation().

Parameters
tidentificateur du type de relation du sommet à créer.
c1identificateur du premier sommet concept voisin.
c2identificateur du deuxième sommet concept voisin.
Returns
l'identifiant du sommet Relation créé.

◆ newBinaryRelation() [2/2]

iSet cogitant::Graph::newBinaryRelation ( std::string const &  t,
iSet  c1,
iSet  c2 
)

Création d'un sommet Relation binaire.

Le sommet relation créé a pour voisins les sommets passés en paramètre. Cette méthode est juste un raccourci pour newRelation().

Parameters
tintitulé du type de relation du sommet à créer.
c1identificateur du premier sommet concept voisin.
c2identificateur du deuxième sommet concept voisin.
Returns
l'identifiant du sommet Relation créé.

◆ newCoreferenceClass()

iSet cogitant::Graph::newCoreferenceClass ( std::string  name = "")

Création d'une classe de coréférence (CoreferenceClass).

Parameters
namenom de la classe de coréférence. Si "" est passé (défaut), un nom est généré automatiquement.
Returns
l'identifiant de la CoreferenceClass créée.
Exceptions
ExceptionStructuresi name est utilisé par une autre classe de coréférence du même graphe.
See also
Coreference classes.

◆ newGenericConcept() [1/4]

iSet cogitant::Graph::newGenericConcept ( iSet  t,
iSet  idparent = 0 
)

Création d'un sommet Concept générique.

Parameters
tidentifiant du type de concept du sommet à créer (se rapporte à l'ensemble des types de concepts du support sur lequel le graphe est défini).
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.
Precondition
idparent est l'identifiant d'un InternalGraph.

◆ newGenericConcept() [2/4]

iSet cogitant::Graph::newGenericConcept ( ConceptType::ConjunctiveType const &  t,
iSet  idparent = 0 
)

Création d'un sommet concept générique muni d'un type conjonctif.

Parameters
tensemble d'identifiants des types primitifs du sommet à créer (se rapporte à l'ensemble des types de concepts du support sur lequel le graphe est défini).
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.
Precondition
idparent est l'identifiant d'un InternalGraph.

◆ newGenericConcept() [3/4]

iSet cogitant::Graph::newGenericConcept ( std::string const &  t,
iSet  idparent = 0 
)

Création d'un sommet Concept générique.

Parameters
tintitule du type de concept du sommet à créer.
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.
Precondition
idparent est l'identifiant d'un InternalGraph.
t est un intitulé d'un type de concept du support.

◆ newGenericConcept() [4/4]

iSet cogitant::Graph::newGenericConcept ( std::vector< std::string > const &  t,
iSet  idparent = 0 
)

Création d'un sommet concept générique muni d'un type conjonctif.

Parameters
tensemble des intitulés des types primitifs du sommet à créer.
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.
Precondition
idparent est l'identifiant d'un InternalGraph.

◆ newGenericValueConcept() [1/2]

iSet cogitant::Graph::newGenericValueConcept ( iSet  t,
iSet  idparent = 0 
)

Création d'un sommet Concept valeur avec la valeur générique du datatype passé.

Parameters
tidentifiant du datatype du sommet à créer.
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.

◆ newGenericValueConcept() [2/2]

iSet cogitant::Graph::newGenericValueConcept ( std::string const &  t,
iSet  idparent = 0 
)

Création d'un sommet Concept valeur avec la valeur générique du datatype passé.

Parameters
tintitulé du datatype du sommet à créer.
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.

◆ newIndividualConcept() [1/4]

iSet cogitant::Graph::newIndividualConcept ( iSet  t,
iSet  im,
iSet  idparent = 0 
)

Création d'un sommet Concept individuel.

Parameters
tidentifiant du type de concept du sommet à créer (se rapporte à l'ensemble des types de concepts du support sur lequel le graphe est défini).
imidentifiant du marqueur individuel du sommet à créer (se rapporte à l'ensemble des marqueurs individuels du support sur lequel le graphe est défini).
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.
Precondition
idparent est l'identifiant d'un InternalGraph.

◆ newIndividualConcept() [2/4]

iSet cogitant::Graph::newIndividualConcept ( ConceptType::ConjunctiveType const &  t,
iSet  im,
iSet  idparent = 0 
)

Création d'un sommet Concept individuel muni d'un type conjonctif.

Parameters
tensemble d'identifiants des types primitifs du sommet à créer (se rapporte à l'ensemble des types de concepts du support sur lequel le graphe est défini).
imidentifiant du marqueur individuel du sommet à créer (se rapporte à l'ensemble des marqueurs individuels du support sur lequel le graphe est défini).
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.
Precondition
idparent est l'identifiant d'un InternalGraph.

◆ newIndividualConcept() [3/4]

iSet cogitant::Graph::newIndividualConcept ( std::string const &  t,
std::string const &  im,
iSet  idparent = 0 
)

Création d'un sommet Concept individuel.

Parameters
tintitulé du type de concept du sommet à créer.
imintitulé du marqueur individuel du sommet à créer.
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.
Precondition
idparent est l'identifiant d'un InternalGraph.
Le marqueur im peut être associé au type t.
t est un intitulé d'un type de concept du support.
im est un intitulé d'un marqueur individuel du support.

◆ newIndividualConcept() [4/4]

iSet cogitant::Graph::newIndividualConcept ( std::vector< std::string > const &  t,
std::string const &  im,
iSet  idparent = 0 
)

Création d'un sommet Concept individuel muni d'un type conjonctif.

Parameters
tensemble d'intitulés de types primitifs du type de concept du sommet à créer.
imintitulé du marqueur individuel du sommet à créer.
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.
Precondition
idparent est l'identifiant d'un InternalGraph.
Le marqueur im peut être associé au type t.
t est un intitulé d'un type de concept du support.
im est un intitulé d'un marqueur individuel du support.

◆ newInternalGraph()

iSet cogitant::Graph::newInternalGraph ( iSet  idparent)

Création d'un graphe interne (InternalGraph).

Parameters
idparentidentifiant de l'objet parent du InternalGraph créé.
Returns
l'identifiant du InternalGraph créé.
Precondition
idparent est l'identifiant d'un Nesting qui ne contient pas déjà un InternalGraph.

◆ newNesting() [1/3]

iSet cogitant::Graph::newNesting ( iSet  t,
iSet  idparent 
)

Création d'un emboîtement (Nesting).

Warning
Cette méthode de crée pas le graphe interne (InternalGraph) contenu dans l'emboîtement.
Parameters
tidentifiant du type d'emboîtement de l'emboîtement à créer (se rapporte à l'ensemble des types d'emboîtements du support sur lequel le graphe est défini). t = 0 représente habituellement le type d'emboîtement "description".
idparentidentifiant de l'objet parent de l'emboîtement créé.
Returns
l'identifiant de l'emboîtement créé.
Precondition
idparent est l'identifiant d'un sommet Concept.

◆ newNesting() [2/3]

iSet cogitant::Graph::newNesting ( std::string const &  t,
iSet  idparent 
)

Création d'un emboîtement (Nesting).

Warning
Cette méthode de crée pas le graphe interne (InternalGraph) contenu dans l'emboîtement.
Parameters
tintitulé du type d'emboîtement de l'emboîtement à créer.
idparentidentifiant de l'objet parent de l'emboîtement créé.
Returns
l'identifiant de l'emboîtement créé.
Precondition
idparent est l'identifiant d'un sommet Concept.
t est un intitulé d'un type d'emboîtement du support.

◆ newNesting() [3/3]

iSet cogitant::Graph::newNesting ( iSet  t,
iSet  idparent,
Graph const &  g,
bool  fusioncc = false 
)

Création d'un emboîtement (Nesting) contenant un graphe déjà créé.

Une copie du graphe g est emboîtée dans le sommet concept, g peut être détruit ou modifié après l'appel sans aucune conséquence pour le graphe courant.

Parameters
tidentifiant du type d'emboîtement de l'emboîtement à créer (se rapporte à l'ensemble des types d'emboîtements du support sur lequel le graphe est défini).
idparentidentifiant de l'objet parent de l'emboîtement créé.
ggraphe devant être emboîté.
fusionccsi true les classes de coréférence de même nom sont fusionnées. Ces classes ne sont pas fusionnées si fusioncc vaut false.
Returns
l'identifiant de l'emboîtement créé.
Precondition
idparent est l'identifiant d'un sommet Concept.

◆ newNode()

iSet cogitant::Graph::newNode ( GraphObject const *  o,
iSet  idparent = 0 
)

Création d'un objet dans le graphe par copie d'un objet existant.

Warning
Cette méthode ne copie aucune arête et ne crée pas de voisinage. Il est donc conseillé d'utiliser les autres méthodes newxxx.
Parameters
ol'objet à copier dans le graphe.
idparentidentifiant de l'objet parent de l'objet créé.
Returns
l'identifiant de l'objet créé.
Precondition
idparent est l'identifiant d'un objet pouvant avoir comme fils un objet du type de o.

◆ newRelation() [1/4]

iSet cogitant::Graph::newRelation ( iSet  t,
iSet  idparent = 0 
)

Création d'un sommet Relation.

Les arêtes du sommet relation créé sont "pendantes".

Parameters
tidentifiant du type de relation du sommet à créer (se rapporte à l'ensemble des types de relations du support sur lequel le graphe est défini).
idparentidentifiant de l'objet parent du sommet Relation créé.
Returns
l'identifiant du sommet Relation créé.
Precondition
idparent est l'identifiant d'un InternalGraph.

◆ newRelation() [2/4]

iSet cogitant::Graph::newRelation ( std::string const &  t,
iSet  idparent = 0 
)

Création d'un sommet Relation.

Les arêtes du sommet relation créé sont "pendantes".

Parameters
tintitulé du type de relation du sommet à créer.
idparentidentifiant de l'objet parent du sommet Relation créé.
Returns
l'identifiant du sommet Relation créé.
Precondition
idparent est l'identifiant d'un InternalGraph.
t est un intitulé d'un type de relation du support.

◆ newRelation() [3/4]

iSet cogitant::Graph::newRelation ( iSet  t,
std::vector< iSet > const &  n,
iSet  idparent = 0 
)

Création d'un sommet Relation.

Le sommet relation créé a pour voisins les sommets passés en paramètre.

Parameters
tidentifiant du type de relation du sommet à créer (se rapporte à l'ensemble des types de relations du support sur lequel le graphe est défini).
nvoisinage du sommet relation créé: identifiants des sommets concept auxquels le sommet relation doit être lié (se rapporte au même graphe).
idparentidentifiant de l'objet parent du sommet Relation créé.
Returns
l'identifiant du sommet Relation créé.
Precondition
idparent est l'identifiant d'un InternalGraph.

◆ newRelation() [4/4]

iSet cogitant::Graph::newRelation ( std::string const &  t,
std::vector< iSet > const &  n,
iSet  idparent = 0 
)

Création d'un sommet Relation.

Le sommet relation créé a pour voisins les sommets passés en paramètre.

Parameters
tintitulé du type de relation du sommet à créer.
nvoisinage du sommet relation créé: identifiants des sommets concept auxquels le sommet relation doit être lié (se rapporte au même graphe).
idparentidentifiant de l'objet parent du sommet Relation créé.
Returns
l'identifiant du sommet Relation créé.
Precondition
idparent est l'identifiant d'un InternalGraph.
t est un intitulé d'un type de relation du support.

◆ newValueConcept() [1/2]

iSet cogitant::Graph::newValueConcept ( iSet  t,
std::string const &  value,
iSet  idparent = 0 
)

Création d'un sommet Concept valeur.

Parameters
tidentifiant du datatype du sommet à créer.
valuevaleur du sommet à créer, représentée sous la forme de chaîne
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.

◆ newValueConcept() [2/2]

iSet cogitant::Graph::newValueConcept ( std::string const &  t,
std::string const &  value,
iSet  idparent = 0 
)

Création d'un sommet Concept valeur.

Parameters
tintitulé du datatype du sommet à créer.
valuevaleur du sommet à créer, représentée sous la forme de chaîne
idparentidentifiant de l'objet parent du sommet Concept créé.
Returns
l'identifiant du sommet Concept créé.

◆ nodes() [1/4]

Set<GraphObject*>* cogitant::Graph::nodes ( )
inline

Ensemble des noeuds du graphe.

Ne pas utiliser cette méthode pour ajouter/supprimer des éléments.

See also
Nodes of a graph, Accessing graph objects and traversal.

◆ nodes() [2/4]

GraphObject* cogitant::Graph::nodes ( iSet  i)
inline

Accès direct à un noeud par son identificateur.

References cogitant::Set< SetContent >::iGetContent().

◆ nodes() [3/4]

Set<GraphObject*> const* cogitant::Graph::nodes ( ) const
inline

Ensemble des noeuds.

◆ nodes() [4/4]

GraphObject const* cogitant::Graph::nodes ( iSet  i) const
inline

Accès direct à un noeud par son identificateur.

References cogitant::Set< SetContent >::iGetContent().

◆ objectType()

Type cogitant::Graph::objectType ( ) const
virtual

Type de l'objet.

Returns
EnvironmentObject::OT_GRAPH.

Implements cogitant::EnvironmentObject.

◆ operator=()

Graph& cogitant::Graph::operator= ( Graph const &  ob)

Affectation.

◆ parent()

iSet cogitant::Graph::parent ( iSet  i) const

Identificateur du parent d'un objet.

◆ printInternalInfo()

void cogitant::Graph::printInternalInfo ( std::ostream &  os) const

Affichage d'informations pouvant être utiles à l'optimisation.

◆ recreateNeighbourhood()

void cogitant::Graph::recreateNeighbourhood ( iSet  r)

Recalcule les voisins du sommet relation r après un changement de type).

Après un changement de type d'un sommet relation (Relation::setType()), l'arité du sommet peut avoir changé, dans ce cas, il est nécessaire d'appeler cette méthode qui se charge de détruire les arêtes surnuméraires et de créer les arêtes pendantes nécessaires.

◆ relationArity()

unsigned int cogitant::Graph::relationArity ( iSet  r) const

Arité du sommet relation.

Parameters
ridentificateur de sommet relation.
Returns
l'arité du sommet, qui est normalement l'arité du type de relation du sommet, sauf dans le cas où l'arité du type de relation n'est pas fixée, auquel cas l'arité du sommet peut être quelconque. Évidemment, pour respecter le modèle, il est nécessaire de fixer l'arité des types de relations et de respecter cette contrainte dans les graphes conceptuels.

◆ relationNeighbour()

iSet cogitant::Graph::relationNeighbour ( iSet  r,
Edge::Label  l 
) const

Identificateur d'un voisin d'un sommet relation.

Returns
l'identificateur du voisin de r par l'arête étiquetée l.
Precondition
r est l'identificateur d'un sommet relation.
l >= 1, l <= arité du type de relation du sommet r.

◆ relationSize()

nSet cogitant::Graph::relationSize ( ) const
inline

Nombre de sommets relations.

Returns
le nombre de sommets relations du graphe.

References CGTDLLEXPORT, cogitant::operator<<(), and cogitant::GraphObject::OT_RELATION.

◆ removeCoreference()

void cogitant::Graph::removeCoreference ( iSet  concept,
iSet  coref 
)

Suppression d'un sommet concept d'une classe de coréférence.

Le sommet n'est pas détruit, pas plus que la classe de coréférence (même si celle-ci devient vide suite à la suppression du sommet).

Parameters
conceptidentificateur du sommet concept à supprimer de la classe.
corefidentificateur de la classe de coréférence.
Precondition
concept est un identificateur de sommet appartenant à la classe coréférence.
Exceptions
ExceptionStructuresi concept n'est pas un sommet concept ou coreference n'est pas une classe de coréférence.
ExceptionAlreadyPresentsi concept n'est (déjà) pas dans coref.

◆ removeProperty()

void cogitant::Graph::removeProperty ( Property::Type  pt)

Supprime la propriété passée de tous les GraphObject composant le graphe.

◆ reserveNodes()

virtual void cogitant::Graph::reserveNodes ( nSet const  size)
virtual

Réservation d'espace dans l'ensemble des noeuds (concepts, relations, emboîtements, graphes internes).

L'appel à cette méthode est optionnel mais entraîne de meilleures performances selon l'implantation de l'ensemble de noeuds.

◆ root()

iSet cogitant::Graph::root ( ) const

Identificateur du InternalGraph racine.

◆ setExternalMode()

void cogitant::Graph::setExternalMode ( bool  ext)

Fixe le mode d'ajout des nouveaux noeuds.

Parameters
extsi true les nouveaux noeuds ajoutés sont des noeuds externes, sinon ce sont des noeuds internes. L'appel à cette méthode avec le paramètre false a une autre conséquence : les éventuels noeuds externes du graphe sont copiés pour devenir internes (par appel à GraphAllocator::allocNode()). En effet, un graphe ne peut contenir de noeud interne d'identifiant supérieur à un noeud externe, or, l'appel à setExternalMode(false) est habitellement suivi d'ajout de noeuds internes, et donc la conversion des noeuds externes du graphe est obligatoire et automatique.

◆ setInCoupleOfLambdas()

void cogitant::Graph::setInCoupleOfLambdas ( CoupleOfLambdas const *  r)

Modification du couple de lambas-graphes contenant le graphe.

Il est habituellement inutile d'appeler cette méthode, la classe SetOfLambdas se charge de l'appeler correctement. Cette méthode permet de modifier la référence au SetOfLambdas contenant le Graph, dans le cas, par exemple, où le Graph est hypothèse ou conclusion d'une Rule.

Parameters
rCoupleOfLambdas contenant le Graph, ou NULL si le Graph ne fait partie d'aucun CoupleOfLambdas.

◆ simplifyConceptType()

void cogitant::Graph::simplifyConceptType ( iSet  c)

Simplification du type d'un sommet concept.

Dans le cas où un type de concept est défini par un type conjonctif, l'ensemble de types primitifs peut contenir plusieurs fois le même type ou des types tels que l'un est une spécialisation de l'autre. Après appel à cette méthode, le type du sommet est simplifié, c'est à dire qu'il ne contient aucun type primitif qui est une spécialisation d'un autre.

Warning
Cette méthode ne notifie pas les observateurs, contrairement à addSimplifyConceptType(), qu'il est conseillé d'utiliser, plutôt que cette méthode. Cette méthode est utile (par rapport à addSimplifyConceptType()) uniquement à des fins d'optimisation: avec cette méthode, le sommet peut être modifié plusieurs fois avant d'être simplifié une seule fois.

◆ size()

nSet cogitant::Graph::size ( GraphObject::Type  t) const

Nombre d'objets du graphe d'un type donné.

Returns
le nombre d'objets du graphe de type t. Le résultat est retourné en O(n), n étant le nombre d'objets contenus dans le graphe.

◆ updateIndexIndividuals()

bool cogitant::Graph::updateIndexIndividuals ( ) const

Mise à jour de l'index des individus permettant un calcul plus efficaces des projections (plus particulièrement OpeProjLIPIndividual).

Cette méthode ne peut être appelée que sur un graphe sous forme normale et permet d'avoir une implémentation efficace de findIndividual().

Returns
true ssi l'index a effectivement été calculé (i.e. le graphe était sous forme normale).

◆ validISet()

bool cogitant::Graph::validISet ( iSet  i) const
protected

Validité d'un identificateur d'objet.

Parameters
iidentificateur d'un objet composant le graphe.
Returns
true ssi l'identificateur i est correct.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
Graph const &  ob 
)
friend

Sortie sur un flux.

La fonction est redéfinie pour une sortie sur le flux plus complète que le résultat de toString.