OWLオントロジーには、クラスA、B、C、および公理(DL表記)があります。
A ⊑ (B ⊓ C)
またはおおよそのマンチェスター OWL 構文:
subClassOf ( BおよびC)
A が B のサブクラスであり、A が C のサブクラスであることは論理的に真ですが、トリプル
A rdfs:subClassOf B
A rdfs:subClassOf C
OWLオントロジーのRDFシリアル化に必ずしも存在するとは限りません。たとえば、Protégé でのこの非常に単純なオントロジーと、RDF/XML および Turtle でのその RDF シリアライゼーションについて考えてみましょう。
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://stackoverflow.com/q/19924861/1281433/sample.owl#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Ontology rdf:about="http://stackoverflow.com/q/19924861/1281433/sample.owl"/>
<owl:Class rdf:about="http://stackoverflow.com/q/19924861/1281433/sample.owl#C"/>
<owl:Class rdf:about="http://stackoverflow.com/q/19924861/1281433/sample.owl#B"/>
<owl:Class rdf:about="http://stackoverflow.com/q/19924861/1281433/sample.owl#A">
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="http://stackoverflow.com/q/19924861/1281433/sample.owl#B"/>
<owl:Class rdf:about="http://stackoverflow.com/q/19924861/1281433/sample.owl#C"/>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
</rdf:RDF>
@prefix : <http://stackoverflow.com/q/19924861/1281433/sample.owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<http://stackoverflow.com/q/19924861/1281433/sample.owl>
a owl:Ontology .
:B a owl:Class .
:C a owl:Class .
:A a owl:Class ;
rdfs:subClassOf [ a owl:Class ;
owl:intersectionOf ( :B :C )
] .
シリアル化には のトリプルrdfs:subClassOf
がありますが、オブジェクトは:B
または:C
ではないため、次のようなクエリ
:A rdfs:subClassOf ?superclass
のスーパークラスを返しません:A
。のスーパークラスを返す SPARQL クエリを作成するにはどうすればよい:A
ですか?