将属性值限制为单个值?

时间:2016-02-22 16:11:44

标签: rdf semantic-web owl ontology protege

我希望有一个日期属性,可以将任何个人作为主题(即,对域没有限制),但只能将值1(double)作为值。是否有适合此用例的限制?也许确切?我正在使用Protege。

1 个答案:

答案 0 :(得分:3)

您可以将属性的范围指定为枚举类。在Protege中,你将它写成:

{1.0}

property with range restricted to a single value

由此产生的本体,在Turtle和RDF / XML中:

@prefix :      <http://example.org/> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

:p      a           owl:DatatypeProperty ;
        rdfs:range  [ a          rdfs:Datatype ;
                      owl:oneOf  [ a          rdf:List ;
                                   rdf:first  1.0 ;
                                   rdf:rest   ()

                                 ]
                    ] .

:       a       owl:Ontology .
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns="http://example.org/"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
  <owl:Ontology rdf:about="http://example.org/"/>
  <owl:DatatypeProperty rdf:about="http://example.org/p">
    <rdfs:range>
      <rdfs:Datatype>
        <owl:oneOf>
          <rdf:List>
            <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal"
            >1.0</rdf:first>
            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
          </rdf:List>
        </owl:oneOf>
      </rdfs:Datatype>
    </rdfs:range>
  </owl:DatatypeProperty>
</rdf:RDF>

如果您希望数据类型为 xsd:double 而不是 xsd:decimal ,则只需将范围指定为 {“1.0”^^ double} 代替:

similar, but with a different datatype