OWL:如何限制值的范围

时间:2016-03-09 09:31:47

标签: owl

例如,我需要描述1到4岁之间的狗。如何限制属性的值范围?属性数量有minCardinality和maxCardinality。但不适合我的例子。

<xs:element name="age">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="4"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

作为一个具体的例子,如何将上面的xsd翻译成owl?

1 个答案:

答案 0 :(得分:1)

您可以直接将合格的基数限制定义为本地类限制。例如,要定义变形虫的年龄范围为1到4,请使用以下命令:

<rdfs:subClassOf>
  <owl:Restriction>
    <owl:onProperty rdf:resource="http://example.org/things#age"/>
    <owl:maxQualifiedCardinality rdf:datatype="xs:nonNegativeInteger">4</owl:maxQualifiedCardinality>
    <owl:onDataRange rdf:resource="http://example.org/things#Amoeba"/>
  </owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
  <owl:Restriction>
    <owl:onProperty rdf:resource="http://example.org/things#age"/>
    <owl:minQualifiedCardinality rdf:datatype="xs:nonNegativeInteger">1</owl:minQualifiedCardinality>
    <owl:onDataRange rdf:resource="http://example.org/things#Amoeba"/>
  </owl:Restriction>
</rdfs:subClassOf>

这有点难以阅读。等效的Turtle序列化更容易阅读和管理(请注意三元组的直接表示.JSON-LD是RDF的另一个易于消费的文本序列化):

rdfs:subClassOf [
    rdf:type owl:Restriction ;
    owl:maxQualifiedCardinality "4"^^xs:nonNegativeInteger ;
    owl:onDataRange ex:Amoeba ;
    owl:onProperty ex:age ;
  ] ;
rdfs:subClassOf [
    rdf:type owl:Restriction ;
    owl:minQualifiedCardinality "1"^^xs:nonNegativeInteger ;
    owl:onDataRange ex:Amoeba ;
    owl:onProperty ex:age ;
  ] ;