2011-03-07 33 views
4

是否有任何支持隱式索引的RDF序列化格式(如Notation 3),以便輕鬆地表示有關語句的語句?隱式索引的簡單格式

例如,說我有說法「瑪麗買了一套房子」,我將代表N3,如:

:Mary :bought-a :house . 

現在說我想添加這個聲明元語句,例如「我聽到了羅布的這個消息。「

直觀地說,我希望能夠通過寫類似表示的:

:Mary :bought-a :house . 
    :heard-by :me . 
    :heard-from :Rob . 

不過,我認爲這將「正式」將在N3代表的辦法是這樣的:

[ a rei:Statement; 
    rei:subject [rei:uri :Mary]; 
    rei:predicate [rei:uri :bought-a]; 
    rei:object [rei:value :house] 
] [ 
    :heard-by :me; 
    :heard-from :Rob; 
] . 

這顯然有點複雜和難以閱讀。如果我需要對關於陳述的陳述進行陳述,情況會變得更加複雜。例如「我從羅布那聽到這個消息,而羅布走在街上。」

以RDF序列化格式表示這種方法的正確和最簡單的方法是什麼?

回答

2

我會使用命名圖並不會害怕在圖中放置單個語句。您可以將原始語句放在一個圖表中,然後元語句將關於該圖表,而不是內部的語句。這些圖可以放入一個或多個其他圖中,如果您需要一些瘋狂的元元語言,那麼您可以通過引用包含元語句的圖來以與原始元語句相同的方式處理它。

以後推理或使用圖表時,您可能需要將所有葉/非元圖形「摺疊」爲一個圖形。這也是推導元數據的一種好方法,以便發現哪些圖形「崩潰」到您的可信語句中,以進行實際推理。

+0

這就是我所用的,因爲它與我的例子最接近,並且N3和TriG都支持命名圖。 – Cerin 2011-03-11 04:20:26

3

我會嘗試儘可能地避免隱含的具體化,對於許多原因,但更具體的原因:

  • 訪問數據是很難,
  • 的數據集急劇增加,因爲每個三重變大小4個三元組,
  • 在非特定數據集上工作的SPARQL查詢將無法在特定的數據集上工作,
  • reasoners會弄亂事情或無法工作。

在對自己編寫了一些語義Web應用程序之後,我已經很少使用隱式實現,但我後悔了。

在你的情況下,我會嘗試使用Blank Node作爲heard-byheard-from謂詞的中間聯合點的顯式通知進行建模。喜歡的東西(在RDF /龜):

@prefix : <http://somedata.org/id/> . 
:Mary :bought-a [ 
    a :House; 
    :heard-by :me; 
    :heard-from :Rob ] . 

在普通的RDF/ntriples這是一樣的(轉化了rapper):

<http://somedata.org/id/Mary> <http://somedata.org/id/bought-a> _:genid1 . 
_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://somedata.org/id/House> . 
_:genid1 <http://somedata.org/id/heard-by> <http://somedata.org/id/me> . 
_:genid1 <http://somedata.org/id/heard-from> <http://somedata.org/id/Rob> . 

正如你可以看到Mary買的rdf:typeHouse東西,你聽到它fromRobYourself

我覺得這個解決方案比隱式實現更清潔,成本更低。我希望這有幫助。