我最近开始学习 Web Ontology Language (OWL)。我想用我自己定义的值范围定义一个 DataProperty。
考虑以下属性:
<owl:DatatypeProperty rdf:ID="myProperty">
<rdfs:domain rdf:resource="#MyDomain"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#double"/>
</owl:DatatypeProperty>
该属性具有 double 值的范围,但我想限制该范围,以使我的属性仅接受 0 和 1 之间的 double 值。如果您指导我如何定义我自己的数据属性范围,我将不胜感激。
最佳答案
在这里(为简洁起见,使用 Turtle 而不是 RDF/XML):
:myProperty a owl:DatatypeProperty;
rdfs:domain :MyDomain;
rdfs:range [
a rdfs:Datatype;
owl:onDatatype xsd:double;
owl:withRestrictions ( [xsd:minInclusive 0] [xsd:maxInclusive 1] )
] .
我建议您使用
xsd:decimal
而不是 xsd:double
, 因为 xsd:double
精度有限并且与 xsd:decimal
不相交,这也使它与 xsd:integer
脱节, xsd:int
, 等等。更新:在 RDF/XML 中,它对应于(看看它与 Turtle 相比有多凌乱):
<owl:DatatypeProperty rdf:about="#myProperty">
<rdfs:domain rdf:resource="#MyDomain"/>
<rdfs:range>
<rdfs:Datatype>
<owl:onDatatype rdf:resource="&xsd;double"/>
<owl:withRestrictions rdf:parseType="Collection">
<rdf:Description>
<xsd:minInclusive rdf:datatype="&xsd;double">0</xsd:minInclusive>
</rdf:Description>
<rdf:Description>
<xsd:maxInclusive rdf:datatype="&xsd;double">1</xsd:maxInclusive>
<rdf:Description>
</rdf:Description>
</owl:withRestrictions>
</rdfs:Datatype>
</rdfs:range>
</owl:DatatypeProperty>
但是如果你直接用文本编辑器写RDF,你真的应该学会使用Turtle .它比 RDF/XML 更简单、更简洁。你真的可以看到三元组。它很快就会成为一个标准,向 W3C 候选推荐标准的转变迫在眉睫。
**2017 年 10 月 3 日更新:Turtle was standardised in February 2014 .如果您更喜欢基于 JSON 的 RDF 符号,还有 JSON-LD ,另一个 W3C 标准。
关于rdf - 如何为 OWL 数据属性定义我自己的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14172610/