2016-11-29 68 views
1

我在Java應用程序中使用SPARQL-DL和OWL-API。 Maven的依賴性如下:SPARQL-DL:文字查詢

<dependency> 
    <groupId>edu.stanford.protege</groupId> 
    <artifactId>de-derivo-sparqldlapi</artifactId> 
    <version>2.0.0</version> 
</dependency> 

我認爲它下載OWL-API的權利(兼容)版本。 我有一個人與一些人。每個人都有一個稱爲名稱的數據屬性,其範圍在一個字符串上。

通過運行此查詢:

SELECT ?x WHERE { PropertyValue(?y, my:name, ?x) } 

我得到這個:

[email protected] = ?"Andrea"^^xsd:string 
[email protected] = ?"Pippo"^^xsd:string 
[email protected] = ?"Pluto"^^xsd:string 

我不能把所有具有名稱等於冥王星的個人。

SELECT ?p WHERE { PropertyValue(?p, my:name, "Pluto") } 

返回一個空集和

SELECT ?p WHERE { PropertyValue(?p, my:name, "Pluto^^xsd:string") } 

返回一個空集

任何幫助嗎? 在此先感謝。

回答

1

數據類型必須要加引號的外放,即"Pluto"^^xsd:string

不幸的是,從源代碼中,我可以看到SPARQL-DL API不支持的數據類型,見here。所有文字都作爲普通文字處理。我想你應該打開一個功能請求或者自己實現它,然後提出一個請求。

+0

我試圖 '選擇Y WHERE {的PropertyValue(Y,我的:名字, 「冥王星」 ^^串)}' ,但我得到了以下錯誤:在SPARQL-DL查詢 字符 「)」 已久。 (接近「^^串」,pos:140,col:52,row:2) – Andrea

+0

<命名個體IRI =「#q」/> <文字數據類型IRI =「&xsd;條帶g「> Pluto ' – Andrea

+0

現在,您忘記了前綴'xsd'。你有''Pluto「^^ string',但它應該是''Pluto」^^ xsd:string'。請嘗試'SELECT?y WHERE {PropertyValue(?y,my:name,「Pluto」^^ xsd:string)}' – AKSW