Есть ли элегантный способ хранения графа онтологии и определений/данных, связанных с узлами?

Я написал простой модуль для хранения и управления онтологией, представленной в плоском файле, с использованием Perl. Для этого я использую превосходный модуль Graph.

Одна проблема, с которой мне приходится иметь дело, заключается в том, как хранить текстовые определения вершин в онтологии. У каждого термина есть небольшое текстовое описание, которое я хочу сохранить и получить. На данный момент, поскольку Graph не поддерживает это напрямую, я использую внутренний хэш.

Мне интересно, есть ли более элегантный способ иметь единую структуру данных для хранения графа онтологии и определений/данных, связанных с узлами?


person Wisdom Seeker    schedule 27.09.2010    source источник
comment
Биоинформатика или семантическая сеть?   -  person daxim    schedule 27.09.2010


Ответы (2)


Модуль 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;
person FMc    schedule 27.09.2010

На ум приходят следующие вещи:

  • если это просто "простая онтология", т.е. таксономия, или еще проще, вложенный список терминов, то простой YAML звучит достаточно. После десериализации в хэш Perl вы сопоставили любую вложенность в хэши/массивы.

  • если вы хотите, чтобы ваша онтология (словарь, субтермины, супертермины) была более стандартизирована, вы можете посмотреть RDF::SKOS . SKOS — это стандарт W3C для простых (нелогических) онтологий.

  • если вы смелы, вы также можете посмотреть на TM (тематические карты). Он имеет ту же «функциональность», что и SKOS, но является стандартом ISO (не W3C).

  • если вы ожидаете, что ваша онтология будет расти/развиваться, а также содержать простые логические операторы (см. Логика описания), вы можете взглянуть на один из пакетов RDF. Я использовал RDF::Redland, а также RDF::Simple или что-то Тоби и Kjetil стоит попробовать. В последнее время много активности.

  • если ваша онтология БОЛЬШАЯ или вы хотите хранить МНОГО данных экземпляра вместе с вашей онтологией, тогда RDF::AllegroGraph это правильный путь. Но это использует внешний сервер. Серьезный софт.

Напутствие: не все, что выглядит как график, является им. Ни тематические карты, ни RDF на самом деле не являются графовыми структурами.

person drrho    schedule 27.09.2010
comment
Возможно/рекомендуется ли хранить карту темы в виде графика? Например, если бы у меня была быстрая графовая база данных, можно ли было бы эмулировать n-арные отношения с помощью искусственных узлов? Если нет, то как лучше всего хранить карту тем? (когда файлы кажутся слишком медленными и требуется высокопроизводительное постоянное решение) - person mrsteve; 15.10.2010
comment
Я ознакомился с эталонной моделью тематических карт (tmrm) и теперь понимаю, что графики, вероятно, плохая идея для тематических карт. поэтому наборы и, возможно, утверждения лучше. - person mrsteve; 20.10.2010