Ian Dickinson's answerで述べたように、RDF でこれを行う直接的な方法はありません。RDF には、トリプルについて話すための具象語彙があり、トリプルについて話し、Class1 relatedTo Class2
それを と呼びtriple789
、次に を追加することができますtriple789 hasValue 5
。ただし、トリプルに関するステートメントを含むグラフは、そのトリプルを含むグラフと同じではありません。ただし、OWL オントロジーがあるように思えます。OWLは、ステートメントをアサートする方法と、それについて何かを言う方法を提供します: アノテーション。
RDFとしてシリアル化できるOWLでは、クラス間の任意の関係を注釈として作成できます。これは、オントロジーの意味に影響を与えませんが、他の処理ツールやオントロジーの人間の読者にとって有用な情報を運ぶことができます. さらに、注釈公理を含む公理などの他のOWL構造にも注釈を付けることができます。OWL アノテーションは、OWL 処理ツールによって保持される必要があり、独自の具体化ボキャブラリーを発明する必要がないという点で優れています。
linkedTo
注釈を使用すると、たとえば、注釈プロパティとして定義してから、(注釈として) アサートできますFirstClass linkedTo SecondClass
。次に、その注釈に別の注釈プロパティlinkValue
と objectを使用して注釈を付けることができます"5"^^xsd:integer
。RDF/XML と N3 では次のようになります。Ian Dickinson が彼の回答で示唆したように、この使用法には、特に追加の値が必要ない場合に、SPARQL クエリを容易にするFirstClass linksTo SecondClass
クラス間の直接リンク (つまり、 がある) がまだ含まれていることに注意してください。
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:links="http://www.example.com/links#"
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://www.example.com/links"/>
<owl:Class rdf:about="http://www.example.com/links#SecondClass">
<links:linkedTo>
<owl:Class rdf:about="http://www.example.com/links#FirstClass"/>
</links:linkedTo>
</owl:Class>
<owl:AnnotationProperty rdf:about="http://www.example.com/links#linkValue"/>
<owl:Axiom>
<links:linkValue rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>5</links:linkValue>
<owl:annotatedTarget rdf:resource="http://www.example.com/links#FirstClass"/>
<owl:annotatedSource rdf:resource="http://www.example.com/links#SecondClass"/>
<owl:annotatedProperty>
<owl:AnnotationProperty rdf:about="http://www.example.com/links#linkedTo"/>
</owl:annotatedProperty>
</owl:Axiom>
</rdf:RDF>
@prefix : <http://www.example.com/links#> .
@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#> .
@prefix links: <http://www.example.com/links#> .
links:linkedTo
a owl:AnnotationProperty .
[] a owl:Axiom ;
links:linkValue 5 ;
owl:annotatedProperty
links:linkedTo ;
owl:annotatedSource links:SecondClass ;
owl:annotatedTarget links:FirstClass .
links:linkValue
a owl:AnnotationProperty .
<http://www.example.com/links>
a owl:Ontology .
links:SecondClass
a owl:Class ;
links:linkedTo links:FirstClass .
links:FirstClass
a owl:Class .
結果として得られる OWL オントロジーの構造を (その RDF シリアライゼーションは別として) 見ることができるように、OWL 機能構文のオントロジーも以下に示します。
Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)
Prefix(owl:=<http://www.w3.org/2002/07/owl#>)
Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)
Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)
Ontology(<http://www.example.com/links>
Declaration(Class(<http://www.example.com/links#FirstClass>))
Declaration(Class(<http://www.example.com/links#SecondClass>))
AnnotationAssertion(Annotation(<http://www.example.com/links#linkValue> "5"^^xsd:integer) <http://www.example.com/links#linkedTo> <http://www.example.com/links#SecondClass> <http://www.example.com/links#FirstClass>)
Declaration(AnnotationProperty(<http://www.example.com/links#linkValue>))
Declaration(AnnotationProperty(<http://www.example.com/links#linkedTo>))
)