2

オントロジーの 2 つのクラスを接続するリンクに値を自動的に割り当てられるようにしたいと考えています。リンクに割り当てる値は 2 つだけです。つまり、リンクが終了しているクラスと比較して接続しているサブクラスの数が少ないクラスからのリンクである場合、リンクに値 1 が割り当てられ、リンクが終了しているクラスからのリンクである場合、値 5 が割り当てられます。すべてのクラスに同じ数のサブクラスがある場合、リンクには 5 の値が割り当てられます。

オントロジーを Jena にロードし、オントロジー内の各クラスのすべてのサブクラスとスーパークラスを一覧表示できます。

これは、任意のアルゴリズムを使用して RDF グラフをトラバースするのに役立ちます。

4

2 に答える 2

1

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>))
)
于 2013-06-20T12:24:48.943 に答える