Y at-il une façon élégante de stocker un graphe d'ontologie et les définitions / données associées aux nœuds?
Question
J'ai écrit un module simple à stocker et à manipuler une ontologie qui est fourni dans un fichier plat en utilisant Perl. Pour cela, j'utilise le graphique le module qui est excellent.
Une question que j'ai à traiter est de savoir comment stocker les définitions textuelles pour les vertex dans l'ontologie. Chaque terme a une petite description de texte que je veux stocker et récupérer. À l'heure actuelle, comme le graphique ne supporte pas directement, j'utilise un hachage interne.
Je me demandais, est-il une façon plus élégante d'avoir une seule structure de données pour stocker à la fois le graphique de l'ontologie et les définitions / données associées aux nœuds?
La solution
Le module Graph
vous permet d'attacher attributs aux sommets et arêtes. Est-ce que vous voulez dire quand vous dites que vous utilisez actuellement un hachage interne? Dans le cas contraire, cela vous aidera peut-être:
use Graph;
my $g = Graph->new;
my ($v1, $v2) = qw(A B);
$g->add_edge($v1, $v2);
$g->set_vertex_attribute($_, 'desc', "Vertex $_") for $v1, $v2;
print $g->get_vertex_attribute($_, 'desc'), "\n" for $v1, $v2;
Autres conseils
Après les choses viennent à l'esprit:
-
si cela est juste une « ontologie simple », à savoir une taxonomie, ou encore plus simple, un liste imbriquée des termes, puis simple fichier de YAML semble suffisante. Une fois désérialisé dans un hachage Perl, vous avez tracé une imbrication dans hashes / tableaux.
-
si vous voulez que votre ontologie (dictionnaire, sous-termes, superterms) être plus standardisé vous pouvez regarder RDF :: SKOS . SKOS est la norme W3C pour ontologies simplement (non-logiques).
-
si vous êtes audacieux, vous pouvez également regarder TM ( cartes thématiques ). Il a un similaire "fonctionnalité" comme SKOS, mais est une ISO (non W3C) standard.
-
si vous attendez votre ontologie de se développer / évoluer et tenir également des déclarations logiques simples (Voir ), vous voudrez peut-être regarder l'un des packages RDF. je ont utilisé RDF :: Redland , mais aussi RDF :: simple ou ce Toby et Kjetil faire, sont ça vaut le coup d'essayer. Beaucoup d'activité récemment.
-
si votre ontologie est grand, ou si vous voulez stocker beaucoup de données d'instance aux côtés de votre ontologie, puis RDF :: AllegroGraph est le chemin à parcourir. Mais qui utilise un externe serveur. logiciel sérieux.
Note Parting: Tout ce qui ressemble à un graphique est un. Ni Topic Maps ni RDF sont structures graphique en fait.