2010-09-27 28 views
4

我已經編寫了一個簡單的模塊來存儲和操作使用Perl在平面文件中提供的本體。爲此,我使用了優秀的Graph module是否有一種優雅的方式來存儲本體圖和與節點相關的定義/數據?

我不得不處理的一個問題是如何在本體中存儲頂點的文本定義。每個術語都有一個我想要存儲和檢索的小文本描述。目前,由於Graph不直接支持這個,我使用內部散列。

我想知道,是否有一個更優雅的方式,有一個單一的數據結構來存儲本體圖與節點相關的定義/數據?

+0

生物信息學或語義Web? – daxim 2010-09-27 12:45:27

回答

4

Graph模塊允許您將attributes附加到頂點和邊緣。當你說你正在使用內部散列時,這就是你的意思嗎?如果沒有,也許這將有助於:

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; 
8

以下的事情浮現在腦海中:

  • 如果這僅僅是一個「簡單的本體論」,即一個分類,或者更簡單,一個 嵌套列表的條款,那麼 一個簡單的YAML文件聽起來就足夠了。一旦反序列化爲Perl散列, 您已將任何嵌套映射到散列/數組。

  • 如果你想讓你的本體(字典,子條目,超類)更加標準化,你可以看看RDF::SKOS。對於簡單(非邏輯)的本體,SKOS是W3C標準 。

  • 如果您大膽,您可能還想看看TMtopic maps)。它具有與SKOS類似的「功能」 ,但是是ISO(不是W3C)標準。如果您希望您的本體可以增長/發展,並且也可以容納簡單的邏輯語句 (請參閱Description Logics),您可能需要查看其中一個RDF軟件包。我 已使用RDF::Redland,但也RDF::Simple或什麼TobyKjetil做的,是 值得嘗試。最近有很多活動。

  • 如果你的本體很大,或者你想存儲大量的實例數據和 你的本體,那麼RDF::AllegroGraph是要走的路。但是,它使用外部 服務器。嚴重的軟件。

注意:並非所有看起來像圖的東西都是一樣。 Topic圖或RDF實際上都不是 圖結構。

+0

是否可以/可建議將主題圖存儲爲圖形?就像我有一個快速的圖形數據庫一樣,n-ary關係可以用人工節點來模擬嗎?如果不是,存儲主題地圖的最佳方式是什麼? (當文件看起來太慢並且需要高性能持久解決方案時) – mrsteve 2010-10-15 14:35:53

+0

我已閱讀主題地圖參考模型(tmrm),現在明白圖表對主題地圖來說可能是一個壞主意。所以集合,也許斷言更好。 – mrsteve 2010-10-20 01:22:13

相關問題