Rdf 文本的推理和数据类型

Rdf 文本的推理和数据类型,rdf,owl,reasoning,stardog,turtle-rdf,Rdf,Owl,Reasoning,Stardog,Turtle Rdf,在Turtle RDF中,可以方便地省略字符串文本的数据类型扩展名^^xsd:string。但是,当我尝试使用StarDog进行推理时,只有扩展名为“green”的个人:YYY被发现是:GreenButton @prefix : <http://stackoverflow.com/q/29075078/1281433#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix owl:

在Turtle RDF中,可以方便地省略字符串文本的数据类型扩展名
^^xsd:string
。但是,当我尝试使用StarDog进行推理时,只有扩展名为“green”的个人
:YYY
被发现是
: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 .
@前缀:。
@前缀rdfs:。
@前缀owl:。
@前缀xsd:。
@前缀rdf:。
:为owl:DatatypeProperty着色;
rdfs:range xsd:string;
rdfs:domain:Button。
:XXX:颜色为“绿色”。
:YYY:color“green”^^xsd:string。
:按钮a rdfs:Class。
:绿色按钮a rdfs:Class;
owl:等价类[a owl:限制;
owl:onProperty:color;
猫头鹰:hasValue“绿色”
] .
:测试按钮a:绿色按钮。
推理结果:

+-------------+----------+----------------------------------------------------+
|      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> |
  ...
+-------------+----------+----------------------------------------------------+
|s|p|o|
+-------------+----------+----------------------------------------------------+
|:XXX | rdf:类型|:按钮|
|:YYY | rdf:type |:按钮|
|:YYY | rdf:type |:绿色按钮|
|:TestButton | rdf:type |:绿色按钮|
|:测试按钮|:颜色|“绿色”^|
...
最好的解决方法是什么?

根据:

Stardog中的RDF解析是严格的:它需要类型化的RDF文本来进行解析 在某些情况下,匹配它们的显式数据类型、格式良好的URI等 在某些情况下,严格解析并不理想,可以使用 --严格解析=FALSE

然而,即使禁用了严格解析,Stardog的RDF解析器也可能 遇到无法恢复的分析错误。和加载数据 在lax模式下,可能会导致意外的SPARQL查询结果。例如 筛选器求值中使用的格式错误的文本(“2.5”^^xsd:int)可能导致 导致不希望的结果

您是否尝试过禁用严格解析并查看其效果

p、 见约书亚在问题中的评论。我不建议关闭严格解析,但如果处理的是稀疏类型的任意/外部数据(假设它确实解决了问题),则这可能是唯一的选择。

根据:

Stardog中的RDF解析是严格的:它需要类型化的RDF文本来进行解析 在某些情况下,匹配它们的显式数据类型、格式良好的URI等 在某些情况下,严格解析并不理想,可以使用 --严格解析=FALSE

然而,即使禁用了严格解析,Stardog的RDF解析器也可能 遇到无法恢复的分析错误。和加载数据 在lax模式下,可能会导致意外的SPARQL查询结果。例如 筛选器求值中使用的格式错误的文本(“2.5”^^xsd:int)可能导致 导致不希望的结果

您是否尝试过禁用严格解析并查看其效果


p、 见约书亚在问题中的评论。我不建议关闭严格解析,但如果处理类型稀少的任意/外部数据(假设它确实解决了问题),它可能是唯一的选择。

根据OWL语义
“green”
“green”^^xsd:string
实际上是等效的。它们在RDF 1.1中也是等效的。Stardog还不支持RDF1.1,正如您所注意到的,还有一个bug wrt字符串文字推理。您的观察是正确的:OWL axioms中的普通文本会自动转换为
xsd:string
,但实例断言中的文本不会。对此有一个公开的通知单(#2340),您可以在将来查看发行说明以查看何时修复。在此之前,解决方法是始终对实例使用
xsd:string

根据OWL语义
“绿色”
“绿色”^^xsd:string
实际上是等效的。它们在RDF 1.1中也是等效的。Stardog还不支持RDF1.1,正如您所注意到的,还有一个bug wrt字符串文字推理。您的观察是正确的:OWL axioms中的普通文本会自动转换为
xsd:string
,但实例断言中的文本不会。对此有一个公开的通知单(#2340),您可以在将来查看发行说明以查看何时修复。在此之前,解决方法是始终对实例使用
xsd:string

谢谢您的谷歌搜索;-)我还尝试通过“bin/stardog admin db create-n myDatabase-o strict.parsing=FALSE--/tmp/test.ttl”禁用严格解析,但它似乎没有任何效果。@rmv那么这对您的应用是否有效?这似乎是一个非常好的答案,您将其标记为已接受,但您的评论使其看起来似乎不起作用…@Jushua:问题是“处理它的最佳方式是什么?”据我所知,答案是:在上面的示例中,使用键入的RDF文本,如“green”^^xsd:string。我接受了这个答案。我的评论只涉及关闭严格解析的(不推荐)解决方案。如果有更好/更具硼酸酯的解决方案,可以取消标记答案。约书亚最初的评论当然是对的。rdf和RDF1.1之间确实存在差异,因此这可能是一个因素。我已经稍微更新了我的答案。@chris:对我来说,“绿色”与“绿色”不同没关系^xsd:string。没问题。但我有点困惑,类定义中的语句owl:hasValue“green”会自动转换为“green”^^xsd:string,这可以在推理结果表中看到。谢谢你的谷歌搜索;-)我还尝试通过“bin/stardog admin db create-n myDatabase-o strict.parsing=FALSE--/tmp/test”禁用严格解析。