Есть ли элегантный способ хранить график онтологии и определения / данные, связанные с узлами?
Вопрос
Я написал простой модуль для хранения и манипулирования онтологией, которая предоставляется в плоском файле с использованием Perl. Для этого я использую Графический модуль который отлично.
Одним из проблем, с которым мне предстоит иметь дело, является то, как хранить текстовые определения для вершин в онтологии. Каждый термин имеет небольшое текстовое описание, которое я хочу хранить и получать. На данный момент, как график не поддерживает это напрямую, я использую внутреннюю хеш.
Мне было интересно, есть ли более элегантный способ иметь единую структуру данных для хранения как на онтологии графика а также Определения / данные, связанные с узлами?
Решение
То Graph
Модуль позволяет прикрепить атрибуты к вершинам и краям. Это то, что вы имеете в виду, когда вы говорите, что вы используете внутреннюю хеш? Если нет, возможно, это поможет:
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;
Другие советы
Следующие вещи приходят на ум:
Если это просто «простая онтология», то есть таксономией, или даже проще, вложенный список терминов, то простой Ямл файл звучит достаточно. Однажды десериализовали в хэш Perl, вы сопоставили любое гнездо в хэши / массивы.
Если вы хотите, чтобы ваша онтология (словарь, подставные, сверхстреки) быть более стандартизированным, вы можете посмотреть на RDF :: SKOS.. Скитание Это стандарт W3C для просто (не логики) онтологии.
Если вы дерзкие, вы также можете посмотреть на Тм (Тема карты). Он имеет аналогичную «функциональность» как SKOS, но является стандартом ISO (не W3C).
Если вы ожидаете, что ваша онтология выращивает / развивается, а также проводить простые логические утверждения (см. Описание Логики), вы можете посмотреть на одну из пакетов RDF. я использовал RDF :: Redland., но также RDF :: просто или что Тоби а также Kjetil. Делай, стоит попробовать. Много деятельности в последнее время.
Если ваша онтология большая, или вы хотите хранить много данных экземпляра вместе с вашей онтологией, затем RDF :: Allegrograph это путь к работе. Но это использует внешний сервер. Серьезное программное обеспечение.
Падение примечания: не все, что выглядит как график, - это один. Ни одна тема карты, ни RDF - это графические структуры на самом деле.