引用 owl:oneOf 枚举中的实例

Reference to instance in owl:oneOf enumeration

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

<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>

As I understand the standard, we can only define new individuals in oneOf expressions.

这是不正确的。您可以在 oneOf 表达式中使用任何个体。例如,这里有一个 ontology(在 Turtle 和 RDF/XML 中),其中 class Color 包含 Red, Blue, and Green, 然后两个枚举的classes RedOrBlue ≡ { Red, Blue },并且 RedOrGreen ≡ { 红色,绿色 }.

@prefix :      < .
@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 .
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns=""
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
  <owl:Ontology rdf:about=""/>
  <owl:Class rdf:about="RedOrBlue">
    <owl:equivalentClass>
      <owl:Class>
        <owl:oneOf rdf:parseType="Collection">
          <owl:NamedIndividual rdf:about="Blue">
            <rdf:type>
              <owl:Class rdf:about="Color"/>
            </rdf:type>
          </owl:NamedIndividual>
          <owl:NamedIndividual rdf:about="Red">
            <rdf:type rdf:resource="Color"/>
          </owl:NamedIndividual>
        </owl:oneOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:about="RedOrGreen">
    <owl:equivalentClass>
      <owl:Class>
        <owl:oneOf rdf:parseType="Collection">
          <owl:NamedIndividual rdf:about="Green">
            <rdf:type rdf:resource="Color"/>
          </owl:NamedIndividual>
          <owl:NamedIndividual rdf:about="Red"/>
        </owl:oneOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
</rdf:RDF>