1

^^xsd:stringTurtle-RDF では、文字列リテラルのデータ型拡張を省略すると便利です。しかし、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> |
  ...

それに対処する最善の方法は何ですか?

4

2 に答える 2

4

OWL セマンティクスによれば、"green""green"^^xsd:stringは実際には同等です。これらは RDF 1.1 でも同等です。Stardog はまだ RDF 1.1 をサポートしていません。お気づきのように、文字列リテラルの推論に関するバグがあります。あなたの観察は正しいです。OWL公理のプレーンリテラルは自動的に変換されxsd:stringますが、インスタンスアサーションのリテラルはそうではありません。これにはオープン チケット (#2340) があり、今後のリリース ノートで修正時期を確認できます。それまでの回避策は、常にxsd:stringfor instances を使用することです。

于 2015-06-09T14:14:48.500 に答える
3

ドキュメントによると:

Stardog での RDF 解析は厳密です。型指定された RDF リテラルが明示的なデータ型と一致すること、URI が適切な形式であることが必要です。場合によっては、厳密な解析は理想的ではなく、 --strict-parsing= を使用して無効にすることができます。間違い。

ただし、厳密な解析が無効になっている場合でも、Stardog の RDF パーサーは、回復できない解析エラーに遭遇する場合があります。また、lax モードでデータをロードすると、予期しない SPARQL クエリ結果が生じる可能性があります。たとえば、フィルタ評価で不正な形式のリテラル ("2.5"^^xsd:int) が使用されると、望ましくない結果が生じる可能性があります。

厳密な解析を無効にして、その影響を確認しましたか?

ps質問のジョシュアのコメントを参照してください。厳密な解析をオフにすることを勧めているわけではありませんが、まばらに型付けされた任意/外部データを処理する場合は、これが唯一のオプションになる可能性があります (問題が解決すると仮定して)。

于 2015-06-09T10:05:59.530 に答える