rdfs:domain 在 RDFUnit 中使用 RDFS 验证 RDF 时出错
rdfs:domain error when validating RDF with RDFS in RDFUnit
我尝试在 RDFUnit 在线演示 (http://rdfunit.aksw.org/demo/) 中使用 RDFS 验证我的 RDF。验证结果为:
Fail ERROR http://example.org/cim#IdentifiedObject.mRID has
rdfs:domain different from: http://example.org/cim#IdentifiedObject
RDF:
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:cim="http://example.org/cim#" >
<rdf:Description rdf:about="1">
<rdf:type rdf:resource="cim:IdentifiedObject" />
<cim:IdentifiedObject.mRID>1</cim:IdentifiedObject.mRID>
</rdf:Description>
</rdf:RDF>
RDFS:
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://example.org/cim#" >
<rdfs:Class rdf:ID="IdentifiedObject" />
<rdf:Property rdf:ID="IdentifiedObject.mRID">
<rdfs:domain rdf:resource="#IdentifiedObject" />
</rdf:Property>
</rdf:RDF>
在 rdf:Propery 中声明域的正确方法是什么?
错误有点神秘,但我猜问题出在您数据中的这一行:
<rdf:type rdf:resource="cim:IdentifiedObject" />
您在此处使用前缀名称作为 rdf:resource
的值,但这在 RDF/XML* 中是不允许的。此值需要是完整的 URI:http://example.org/cim#IdentifiedObject
。当前情况的结果可能是 RDFUnit 无法识别您的数据中使用的 class 和您的模式在域语句中使用的 class 是一回事。
提示:不要使用 RDF/XML。就像,曾经。必须手动 write/debug 是一个糟糕的语法。切换到 Turtle 或 N-Triples 之类的东西,更容易阅读和编辑。
* 这不起作用的原因是 RDF/XML 是 XML,它使用 XML 命名空间机制来表示前缀名称 - 这仅适用于元素和属性名称,不适用于属性 values。
我尝试在 RDFUnit 在线演示 (http://rdfunit.aksw.org/demo/) 中使用 RDFS 验证我的 RDF。验证结果为:
Fail ERROR http://example.org/cim#IdentifiedObject.mRID has rdfs:domain different from: http://example.org/cim#IdentifiedObject
RDF:
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:cim="http://example.org/cim#" >
<rdf:Description rdf:about="1">
<rdf:type rdf:resource="cim:IdentifiedObject" />
<cim:IdentifiedObject.mRID>1</cim:IdentifiedObject.mRID>
</rdf:Description>
</rdf:RDF>
RDFS:
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://example.org/cim#" >
<rdfs:Class rdf:ID="IdentifiedObject" />
<rdf:Property rdf:ID="IdentifiedObject.mRID">
<rdfs:domain rdf:resource="#IdentifiedObject" />
</rdf:Property>
</rdf:RDF>
在 rdf:Propery 中声明域的正确方法是什么?
错误有点神秘,但我猜问题出在您数据中的这一行:
<rdf:type rdf:resource="cim:IdentifiedObject" />
您在此处使用前缀名称作为 rdf:resource
的值,但这在 RDF/XML* 中是不允许的。此值需要是完整的 URI:http://example.org/cim#IdentifiedObject
。当前情况的结果可能是 RDFUnit 无法识别您的数据中使用的 class 和您的模式在域语句中使用的 class 是一回事。
提示:不要使用 RDF/XML。就像,曾经。必须手动 write/debug 是一个糟糕的语法。切换到 Turtle 或 N-Triples 之类的东西,更容易阅读和编辑。
* 这不起作用的原因是 RDF/XML 是 XML,它使用 XML 命名空间机制来表示前缀名称 - 这仅适用于元素和属性名称,不适用于属性 values。