Graphe conceptuel. More...
#include "cogitant/graph.h"
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... | |||
GraphObject * | nodes (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. | |||
| |||
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... | |||
Graph * | asGraph () | ||
Conversion explicite de l'objet en graphe conceptuel. More... | |||
Rule * | asRule () | ||
Conversion explicite de l'objet en règle. More... | |||
Constraint * | asConstraint () | ||
Conversion explicite de l'objet en contrainte. More... | |||
ColoredGraphConstraint * | asColoredGraphConstraint () | ||
Conversion explicite de l'objet en contrainte sous forme de graphe bicoloré. More... | |||
CoupleOfLambdas * | asCoupleOfLambdas () | ||
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... | |||
EnvironmentObjectExtension * | extension (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... | |||
PropertySet * | properties () | ||
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... | |||
CogitantObject & | operator= (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 ObserverSet * | allocObservers () 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... | |
ObserverSet & | observers () |
Accès à l'ensemble des observateurs. More... | |
Protected Member Functions inherited from cogitant::CogitantObject | |
virtual PropertySet * | allocProperties () 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. | |
Graph & | operator= (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... | |
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 :
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).
env | environnement 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). |
alloc | allocateur pour les membres. |
cogitant::Graph::Graph | ( | Graph const & | o, |
bool | external = false , |
||
Environment const * | env = NULL , |
||
GraphAllocator const * | alloc = NULL |
||
) |
Constructeur par recopie.
o | graphe à copier. |
external | faç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. |
env | environnement 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é. |
cogitant::Graph::~Graph | ( | ) |
Destructeur.
|
protected |
Ajout d'un objet.
Attribue un identifiant au nouvel objet qui est rattaché à un parent.
obj | objet à ajouter. |
p | identifiant de l'objet auquel obj doit être rattaché (obj a pour parent p, p a pour fils obj). |
Ajout d'un sommet concept à une classe de coréférence.
concept | identificateur du sommet concept à ajouter à la classe. |
coref | identificateur de la classe de coréférence. |
ExceptionStructure |
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.
c1 | identificateur de sommet concept. |
c2 | identificateur de sommet concept. |
ExceptionStructure | si c1 ou c2 ne sont pas des sommets concepts. |
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.
h | le graphe à ajouter (somme disjointe) au graphe courant. |
parent | l'identificateur du sommet du graphe courant qui recevra comme fils les sommets copiés. |
fusioncc | si 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 . |
subh | sous ensemble de h à copier. Si subh vaut NULL , h est copié entièrement. |
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é.
icn | identificateur du sommet concept à modifier. |
ct | type de concept à ajouter à icn. |
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é.
icn | identificateur du sommet concept à modifier. |
ct | type de concept conjonctif à ajouter à icn. |
|
inline |
Allocateur du graphe.
|
protected |
Allocation de tous les membres.
|
protected |
Allocation de tous les membres par copie des membres d'un graphe existant.
|
inline |
Retourne un itérateur de début pour le parcours des éléments du graphe.
References cogitant::Set< SetContent >::begin().
|
inline |
Retourne un itérateur de début pour le parcours des éléments du graphe.
References cogitant::Set< SetContent >::begin().
void cogitant::Graph::changeConceptValue | ( | iSet | c, |
std::string const & | v | ||
) |
Modifie la valeur portée par un sommet concept.
c | Identifiant d'un sommet concept du graphe. |
v | Nouvelle valeur. Cette valeur doit être compatible avec le Datatype du sommet concept. Si ce n'est pas le cas, lève une ExceptionIncorrectType::NOTACORRECTVALUE. |
void cogitant::Graph::changeProperty | ( | iSet | inode | ) |
Cette méthode se charge de notifier les observateurs du graphe avec un ObserverMessage::GRAPH_NODE_CHANGE.
inode | identificateur du noeud dont des propriétés ont été modifiées. |
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).
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.
msg | si true notifie les observateurs avec un ObserverMessage::GRAPH_NODE_ID_CHANGE. |
|
inline |
Nombre de sommets concepts.
References cogitant::GraphObject::OT_CONCEPT.
Classe de coréférence d'un sommet concept.
concept | identificateur d'un sommet concept. |
ExceptionIncorrectType | si concept ne repère pas un sommet concept. |
std::string cogitant::Graph::coreferenceClassUniqueName | ( | ) | const |
Détermination d'un nom utilisé par aucune classe de coréférence.
Accès à un sommet de la classe de coréférence.
coref | identificateur d'une classe de coréférence. |
ExceptionIncorrectType | si coref ne repère pas une classe de coréférence. |
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.
c1 | identificateur du premier sommet concept. |
c2 | identificateur du deuxième sommet concept. |
cc | si true vérifie aussi l'appartenance à la même classe de coréférence. Si false ne considère que les marqueurs individuels. |
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.
|
protected |
Destruction de tous les membres.
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().
icn | Identificateur du sommet concept dont les emboîtements doivent être détruits. |
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.
i | identificateur de l'objet à détruire. |
compact | si 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). |
msg | si true notifie les observateurs avec un message ObserverMessage::GRAPH_NODE_DEL. |
pendingvertices | si 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. |
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.
gs | Ensemble d'objets à détruire. |
compact | Si 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. |
msg | si true notifie les observateurs avec un message ObserverMessage::GRAPH_NODE_DEL. |
pendingvertices | si 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. |
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.
|
inline |
Ensemble des arêtes du graphe.
Ne pas utiliser cette méthode pour ajouter/supprimer des arêtes.
|
inline |
Accès direct aux voisins d'un noeud par son identificateur.
|
inline |
Ensemble des arêtes étiquetées.
|
inline |
Accès direct aux voisins d'un noeud par son identificateur.
|
inline |
Retourne un itérateur de fin pour le parcours des éléments du graphe.
References cogitant::Set< SetContent >::end(), and cogitant::ISET_NULL.
void cogitant::Graph::ensureObject | ( | iSet | i | ) | const |
S'assure de l'existence d'un objet du graphe.
i | identificateur de l'objet à vérifier. |
ExceptionUnknownObject | si l'objet à vérifier n'existe pas dans le graphe. |
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.
i | identificateur de l'objet à vérifier. |
t | type de l'object à vérifier. |
ExceptionUnknownObject | si l'objet à vérifier n'existe pas dans l'environnement. |
ExceptionIncorrectType | si l'objet à vérifier n'est pas du bon type. |
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.
id | identificateur recherché. |
iSet cogitant::Graph::findCoreferenceClass | ( | std::string const & | name | ) | const |
Recherche d'une classe de coréférence par son nom.
Accès aux sommets portant le marqueur individuel passé.
Recherche d'un sommet concept individuel étiqueté par le marqueur passé.
m | le marqueur individuel recherché. |
ig | l'identificateur du graphe interne dans lequel s'effectue la recherche. |
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.
cc1 | identificateur de classe de coréférence. |
cc2 | identificateur de classe de coréférence. |
compact | compacter le graphe après la fusion. |
Exception | si cc1 ou cc2 ne sont pas des classes de coréférence fusionnables. |
bool cogitant::Graph::hasIndexIndividuals | ( | ) | const |
Est-ce que l'index de marqueurs individuels est construit.
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).
CoupleOfLambdas const* cogitant::Graph::inCoupleOfLambdas | ( | ) | const |
Couple de lambda-graphes dans laquelle se trouve le Graph.
|
virtual |
Ajoute à l'ensemble passé l'ensemble des marqueurs individuels utilisés dans l'EnvironmentObject.
Implements cogitant::EnvironmentObject.
|
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.
|
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.
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
).
c1 | identificateur du sommet concept sur lequel la fusion est effectuée. |
c2 | identificateur du sommet qui est fusionné dans c1. Le sommet c2 est détruit par l'opération. |
Lie un sommet relation avec un sommet concept.
r | identificateur du sommet relation. |
l | étiquette de l'arête. |
c | identificateur du sommet concept (cogitant::ISET_NULL pour rendre l'arête pendante). |
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.
addtypes | Si true ajoute les types de c2 à c1. Sinon, le type de c1 est conservé, sans aucune modification, quel que soit le type de c2. |
c1 | identificateur du sommet concept sur lequel la fusion est effectuée. |
c2 | identificateur du sommet concept qui est fusionné dans c1. Le sommet c2 est détruit par l'opération. |
compact | compacter 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. |
msg | si true notifie les observateurs avec un ObserverMessage::GRAPH_NODE_MERGE_BEFORE et ObserverMessage::GRAPH_NODE_MERGE_AFTER. |
Identificateur du graphe emboîté dans l'emboîtement.
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().
t | identificateur du type de relation du sommet à créer. |
c1 | identificateur du premier sommet concept voisin. |
c2 | identificateur du deuxième sommet concept voisin. |
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().
t | intitulé du type de relation du sommet à créer. |
c1 | identificateur du premier sommet concept voisin. |
c2 | identificateur du deuxième sommet concept voisin. |
iSet cogitant::Graph::newCoreferenceClass | ( | std::string | name = "" | ) |
Création d'une classe de coréférence (CoreferenceClass).
name | nom de la classe de coréférence. Si "" est passé (défaut), un nom est généré automatiquement. |
ExceptionStructure | si name est utilisé par une autre classe de coréférence du même graphe. |
Création d'un sommet Concept générique.
t | identifiant 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). |
idparent | identifiant de l'objet parent du sommet Concept créé. |
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.
t | ensemble 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). |
idparent | identifiant de l'objet parent du sommet Concept créé. |
Création d'un sommet Concept générique.
t | intitule du type de concept du sommet à créer. |
idparent | identifiant de l'objet parent du sommet Concept créé. |
Création d'un sommet concept générique muni d'un type conjonctif.
t | ensemble des intitulés des types primitifs du sommet à créer. |
idparent | identifiant de l'objet parent du sommet Concept créé. |
Création d'un sommet Concept individuel.
t | identifiant 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). |
im | identifiant du marqueur individuel du sommet à créer (se rapporte à l'ensemble des marqueurs individuels du support sur lequel le graphe est défini). |
idparent | identifiant de l'objet parent du sommet Concept créé. |
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.
t | ensemble 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). |
im | identifiant du marqueur individuel du sommet à créer (se rapporte à l'ensemble des marqueurs individuels du support sur lequel le graphe est défini). |
idparent | identifiant de l'objet parent du sommet Concept créé. |
iSet cogitant::Graph::newIndividualConcept | ( | std::string const & | t, |
std::string const & | im, | ||
iSet | idparent = 0 |
||
) |
Création d'un sommet Concept individuel.
t | intitulé du type de concept du sommet à créer. |
im | intitulé du marqueur individuel du sommet à créer. |
idparent | identifiant de l'objet parent du sommet Concept créé. |
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.
t | ensemble d'intitulés de types primitifs du type de concept du sommet à créer. |
im | intitulé du marqueur individuel du sommet à créer. |
idparent | identifiant de l'objet parent du sommet Concept créé. |
Création d'un graphe interne (InternalGraph).
idparent | identifiant de l'objet parent du InternalGraph créé. |
Création d'un emboîtement (Nesting).
t | identifiant 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". |
idparent | identifiant de l'objet parent de l'emboîtement créé. |
Création d'un emboîtement (Nesting).
t | intitulé du type d'emboîtement de l'emboîtement à créer. |
idparent | identifiant de l'objet parent de l'emboîtement créé. |
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.
t | identifiant 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). |
idparent | identifiant de l'objet parent de l'emboîtement créé. |
g | graphe devant être emboîté. |
fusioncc | si 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 . |
iSet cogitant::Graph::newNode | ( | GraphObject const * | o, |
iSet | idparent = 0 |
||
) |
Création d'un objet dans le graphe par copie d'un objet existant.
o | l'objet à copier dans le graphe. |
idparent | identifiant de l'objet parent de l'objet créé. |
Création d'un sommet Relation.
Les arêtes du sommet relation créé sont "pendantes".
t | identifiant 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). |
idparent | identifiant de l'objet parent du sommet Relation créé. |
Création d'un sommet Relation.
Les arêtes du sommet relation créé sont "pendantes".
t | intitulé du type de relation du sommet à créer. |
idparent | identifiant de l'objet parent du sommet Relation créé. |
Création d'un sommet Relation.
Le sommet relation créé a pour voisins les sommets passés en paramètre.
t | identifiant 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). |
n | voisinage du sommet relation créé: identifiants des sommets concept auxquels le sommet relation doit être lié (se rapporte au même graphe). |
idparent | identifiant de l'objet parent du sommet Relation créé. |
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.
t | intitulé du type de relation du sommet à créer. |
n | voisinage du sommet relation créé: identifiants des sommets concept auxquels le sommet relation doit être lié (se rapporte au même graphe). |
idparent | identifiant de l'objet parent du sommet Relation créé. |
|
inline |
Ensemble des noeuds du graphe.
Ne pas utiliser cette méthode pour ajouter/supprimer des éléments.
|
inline |
Accès direct à un noeud par son identificateur.
References cogitant::Set< SetContent >::iGetContent().
|
inline |
Ensemble des noeuds.
|
inline |
Accès direct à un noeud par son identificateur.
References cogitant::Set< SetContent >::iGetContent().
|
virtual |
void cogitant::Graph::printInternalInfo | ( | std::ostream & | os | ) | const |
Affichage d'informations pouvant être utiles à l'optimisation.
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.
unsigned int cogitant::Graph::relationArity | ( | iSet | r | ) | const |
Arité du sommet relation.
r | identificateur de sommet relation. |
iSet cogitant::Graph::relationNeighbour | ( | iSet | r, |
Edge::Label | l | ||
) | const |
Identificateur d'un voisin d'un sommet relation.
|
inline |
Nombre de sommets relations.
References CGTDLLEXPORT, cogitant::operator<<(), and cogitant::GraphObject::OT_RELATION.
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).
concept | identificateur du sommet concept à supprimer de la classe. |
coref | identificateur de la classe de coréférence. |
ExceptionStructure | si concept n'est pas un sommet concept ou coreference n'est pas une classe de coréférence. |
ExceptionAlreadyPresent | si concept n'est (déjà) pas dans coref. |
void cogitant::Graph::removeProperty | ( | Property::Type | pt | ) |
Supprime la propriété passée de tous les GraphObject composant le graphe.
|
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.
iSet cogitant::Graph::root | ( | ) | const |
Identificateur du InternalGraph racine.
void cogitant::Graph::setExternalMode | ( | bool | ext | ) |
Fixe le mode d'ajout des nouveaux noeuds.
ext | si 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. |
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.
r | CoupleOfLambdas contenant le Graph, ou NULL si le Graph ne fait partie d'aucun CoupleOfLambdas. |
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.
nSet cogitant::Graph::size | ( | GraphObject::Type | t | ) | const |
Nombre d'objets du graphe d'un type donné.
t
. Le résultat est retourné en O(n), n étant le nombre d'objets contenus dans le graphe. 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().
true
ssi l'index a effectivement été calculé (i.e. le graphe était sous forme normale).
|
protected |
Validité d'un identificateur d'objet.
i | identificateur d'un objet composant le graphe. |
|
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.