2011-05-22 22 views
7

我知道這聽起來像一個非常愚蠢的問題,但我一直試圖弄清楚這一點,我無法找到任何這方面的東西,但看起來很明顯這應該是可行的。如何查詢DL曼徹斯特OWL語法中的個人?

我正在開發一些使用曼徹斯特OWL語法和HermiT推理器通過API查詢OWL文件的東西。我也可以在Protege 4的「DL查詢」選項卡上運行查詢,以檢查該文件上的查詢結果。該文件基本上是添加了數據實例的朋友之友(FOAF)本體。

問題:我找不到通過其唯一標識符查詢實例的方法。

它應該是URI,例如與URI http://xmlns.com/foaf/0.1/Andrew_Kuchling一個Person對象,我試圖運行下面的查詢:

Person and URI value "http://xmlns.com/foaf/0.1/Andrew_Kuchling" 

Person value "http://xmlns.com/foaf/0.1/Andrew_Kuchling" 

Person and URI value "Andrew_Kuchling" 

Person that "Andrew_Kuchling" 

沒有這些工作。 (URI的前綴爲http://xmlns.com/foaf/0.1/,用於輸入任何字符串,並且URI在本體中並未實際標識爲屬性)。

在FOAF中,mbox_sha1sum是郵箱的sha1sum。郵箱獨特地連接到個人。所以,我想下面的查詢:

Person and mbox_sha1sum value "mbox_sha1sum-property-value-here" 

然而,它甚至不因爲感覺查詢不正確執行這個查詢。 mbox_sha1sum的值與我爲此人添加的值相同。它存在於個人。

它確實執行這個查詢:

Person and firstName value "Andrew" 

所有數據屬性沒有專門的數據類型。默認處理爲文字。

我真的不知道我在做什麼錯。有人可以請幫忙嗎?

+0

**接受答案!** – gsamaras 2016-03-04 00:17:51

回答

6

我知道這個問題已經發布一年多以前,但我最近問我同樣的問題,找到了以下解決方案:

只要把你想查詢的個人/成員的名稱大括號:

{MyIndividualEntityName} 

這樣,你甚至可以同時查詢多個個人:

{IndividualName1,IndividualName2} 

請注意,這些查詢窗體類expre所謂的enumarated classes的一部分。這意味着,這個查詢的結果不會簡單地列出你在查詢中命名的所有個人的所有超類或子類。相反,它指的是一個匿名類,它由你所列出的個人組成。 匿名類是一個不能從你的本體之外獲得的類,因爲這個類沒有可引用的owl實體(沒有IRI可以引用)。

您可以在正文W3C specification中找到OWL曼徹斯特語法的更多信息。

+0

上帝保佑你!這樣可行。 – gsamaras 2016-03-04 00:17:40