我想将我的 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)
据我了解,我们只能在 oneOf 表达式中定义新的个体。
这是不正确的。您可以在 oneOf 表达式中使用任何个人。例如,这里有一个本体(在 Turtle 和 RDF/XML 中),其类Color包含Red、Blue和Green,然后是两个枚举类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)