2015-06-09 102 views
1

在Turtle-RDF中,省略字符串文字的數據類型擴展^^xsd:string是方便的。但是當我嘗試做StarDog,http://www.stardog.com/推理,只有個別:YYY擴展名爲"green"^^xsd:string被發現是一個:GreenButton文字的推理和數據類型

@prefix :  <http://stackoverflow.com/q/29075078/1281433#> . 
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 
@prefix owl: <http://www.w3.org/2002/07/owl#> . 
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . 
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 


:color a   owl:DatatypeProperty ; 
     rdfs:range xsd:string ; 
     rdfs:domain :Button . 


:XXX  :color  "green"    . 
:YYY  :color  "green"^^xsd:string . 


:Button   a  rdfs:Class . 

:GreenButton a  rdfs:Class ; 
       owl:equivalentClass [ a owl:Restriction; 
             owl:onProperty :color ; 
             owl:hasValue "green" 
            ] . 

:TestButton  a  :GreenButton . 

推理結果:

+-------------+----------+----------------------------------------------------+ 
|  s  | p  |   o           | 
+-------------+----------+----------------------------------------------------+ 
| :XXX  | rdf:type | :Button           | 
| :YYY  | rdf:type | :Button           | 
| :YYY  | rdf:type | :GreenButton          | 

| :TestButton | rdf:type | :GreenButton          | 
| :TestButton | :color | "green"^^<http://www.w3.org/2001/XMLSchema#string> | 
    ... 

什麼是應對的最佳方式用它?

+3

**「在Turtle-RDF中,省略字符串文字的數據類型擴展^^ xsd:string是很方便的。」**請注意,在原始的RDF中,有普通文字(沒有數據類型或語言標籤)以及數據類型文字。純文字「綠色」不同於數據類型文字「綠色」^^ xsd:string。然而,在RDF 1.1中,所有文字都有一個數據類型,「綠色」只是「綠色」^^ xsd:string的簡寫。我不確定這是否是這個問題,但它可能是相關的。 「綠色」不一定是「綠色」^^ xsd:字符串。 –

+0

@Jushua:是的,我注意到了。但是,另一方面,類的定義中的簡單文字「綠色」:GreenButton實際上被推理者翻譯爲「綠色」^^ 或數據導入或任何..? – rmv

回答

3

按照docs

在Stardog

RDF解析是嚴格的:它需要輸入RDF文字來 比賽他們明確的數據類型,URI來很好地形成,等等。在一些 情況下,嚴格解析是不理想的 - 它可能會被禁用,使用 --strict-parsing = FALSE。

但是,即使禁用了嚴格的解析,Stardog的RDF解析器可能會遇到無法恢復的解析錯誤。並且以寬鬆模式加載數據 可能會導致意外的SPARQL查詢結果。例如, 過濾器評估中使用的格式錯誤的文字(「2.5」^^ xsd:int)可能導致 出現意外結果。

您是否嘗試過禁用strict-parsing並查看效果是什麼?

p.s.見約書亞在這個問題上的評論。我不建議關閉嚴格的解析,但如果處理稀疏類型的任意/外部數據(假設它解決了問題),它可能是唯一的選擇。

+0

感謝您使用Google ;-)我也嘗試禁用「bin/stardog-admin db create -n myDatabase -o strict.parsing = FALSE - /tmp/test.ttl」的嚴格解析,但似乎沒有任何影響..? – rmv

+0

@rmv所以這真的爲你工作嗎?這似乎是一個相當不錯的答案,並且您將其標記爲已接受,但是您的評論使其看起來可能沒有奏效...... –

+0

@Jushua:問題是「處理它的最佳方法是什麼?「據我瞭解,答案是:在上面的示例中使用類型化的RDF文字,如」green「^^ xsd:string我接受了這個答案,我的評論只涉及關閉嚴格解析的(非推薦)解決方法。 – rmv

4

根據OWL語義"green""green"^^xsd:string實際上是等價的。它們在RDF 1.1中也相當。 Stardog目前還不支持RDF 1.1,並且您注意到存在一個錯誤字符串字面推理。您的觀察是正確的:OWL公理中的純文字會自動轉換爲xsd:string,但實例斷言中的文字不是。有一張開放票(#2340),您可以在將來查看發行說明以瞭解何時解決此問題。在此之前,解決方法是始終使用xsd:string作爲實例。