引用 owl:oneOf 枚举中的实例

Den*_*lov 4 rdf owl

我想将我的 OWL 类之一的实例限制为多个枚举个体之一。在标准中我找到了oneOf类表达式,如下所示。据我了解,我们只能在oneOf表达式中定义新的个体。但是,我如何引用已定义的个人?

<owl:Class rdf:ID="WineColor">
  <rdfs:subClassOf rdf:resource="#WineDescriptor"/>
  <owl:oneOf rdf:parseType="Collection">
    <owl:Thing rdf:about="#White"/>
    <owl:Thing rdf:about="#Rose"/>
    <owl:Thing rdf:about="#Red"/>
  </owl:oneOf>
</owl:Class>
Run Code Online (Sandbox Code Playgroud)

Jos*_*lor 5

据我了解,我们只能在 oneOf 表达式中定义新的个体。

这是不正确的。您可以在 oneOf 表达式中使用任何个人。例如,这里有一个本体(在 Turtle 和 RDF/XML 中),其类Color包含RedBlueGreen,然后是两个枚举类RedOrBlue ≡ { Red, Blue }RedOrGreen ≡ { Red, Green }

@prefix :      <http://stackoverflow.com/q/37419182/1281433/> .
@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#> .

:Green  a       owl:NamedIndividual , :Color .

:RedOrGreen  a               owl:Class ;
        owl:equivalentClass  [ a          owl:Class ;
                               owl:oneOf  ( :Green :Red )
                             ] .

:Red    a       owl:NamedIndividual , :Color .

:RedOrBlue  a                owl:Class ;
        owl:equivalentClass  [ a          owl:Class ;
                               owl:oneOf  ( :Blue :Red )
                             ] .

:Color  a       owl:Class .

:Blue   a       owl:NamedIndividual , :Color .

:       a       owl:Ontology .
Run Code Online (Sandbox Code Playgroud)
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns="http://stackoverflow.com/q/37419182/1281433/"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
  <owl:Ontology rdf:about="http://stackoverflow.com/q/37419182/1281433/"/>
  <owl:Class rdf:about="http://stackoverflow.com/q/37419182/1281433/RedOrBlue">
    <owl:equivalentClass>
      <owl:Class>
        <owl:oneOf rdf:parseType="Collection">
          <owl:NamedIndividual rdf:about="http://stackoverflow.com/q/37419182/1281433/Blue">
            <rdf:type>
              <owl:Class rdf:about="http://stackoverflow.com/q/37419182/1281433/Color"/>
            </rdf:type>
          </owl:NamedIndividual>
          <owl:NamedIndividual rdf:about="http://stackoverflow.com/q/37419182/1281433/Red">
            <rdf:type rdf:resource="http://stackoverflow.com/q/37419182/1281433/Color"/>
          </owl:NamedIndividual>
        </owl:oneOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:about="http://stackoverflow.com/q/37419182/1281433/RedOrGreen">
    <owl:equivalentClass>
      <owl:Class>
        <owl:oneOf rdf:parseType="Collection">
          <owl:NamedIndividual rdf:about="http://stackoverflow.com/q/37419182/1281433/Green">
            <rdf:type rdf:resource="http://stackoverflow.com/q/37419182/1281433/Color"/>
          </owl:NamedIndividual>
          <owl:NamedIndividual rdf:about="http://stackoverflow.com/q/37419182/1281433/Red"/>
        </owl:oneOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)