5

我最近开始学习 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>

该属性具有双精度值范围,但我想限制该范围,以使我的属性仅接受 0 和 1 之间的双精度值。如果您指导我如何定义我自己的数据属性范围,我将不胜感激。

4

1 回答 1

15

在这里(为了简洁,使用 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 于 2014 年 2 月标准化。如果您更喜欢基于 JSON 的 RDF 表示法,还有另一个 W3C 标准JSON-LD 。

于 2013-01-05T16:19:58.533 回答