2

私は 2 つの完全に別個のクラスを持つ RDFS オントロジーを持っています:UserVenue. 両方に というプロパティを介して提供される名前を付けたいと思います。これはhasName、次のUserようになります。

<rdf:Property rdf:ID="hasName"> 
    <rdfs:comment> 
        Comment here. Blah blah blah.
    </rdfs:comment>
    <rdfs:domain rdf:resource="#user"/> 
    <rdfs:range rdf:resource="Literal"/> 
</rdf:Property>

ただし、同様に必要な場合は、Venue検証されません。

これにどのようにアプローチすればよいですか?

4

1 に答える 1

10

原則として、複数のドメイン プロパティを指定するだけです。

<rdf:Property rdf:ID="hasName"> 
    <rdfs:domain rdf:resource="#user"/> 
    <rdfs:domain rdf:sources="#venue"/> 
</rdf:Property>

ただし、これは有効な RDF ですが、あなたが思っているような意味ではありません。RDF では、複数のドメインが交差セマンティクスを持つように定義されています。これは、上記のように複数のドメインを定義すると、RDF推論器はプロパティ「hasName」を持つものはすべてauser aの両方であると推論することを意味しますvenue(どちらか/またはではなく)。

名前を持つ何かが auser またはavenueであることを表現するには、いくつかのオプションがあります。user1 つの方法は、との共通のスーパークラスを検索 (または作成) し、venueそれをドメインにすることです。

 <rdf:Property rdf:ID="hasName"> 
        <rdfs:comment> 
            Comment here. Blah blah blah.
        </rdfs:comment>
        <rdfs:domain rdf:sources="#ThingsWithNames"/> 
    </rdf:Property>

   <rdfs:Class rdf:about="#ThingsWithNames"/> 
   <rdfs:Class rdf:about="#user">
        <rdfs:subClassOf rdf:resource="#ThingsWithNames"/>
   </rdfs:Class> 
   <rdfs:Class rdf:about="#venue">
        <rdfs:subClassOf rdf:resource="#ThingsWithNames"/>
   </rdfs:Class>

別の方法owl:unionOfとして、2 つのクラスをドメインとして使用することもできます。ただし、このアプローチでは OWL を使用する必要があるため、単純な RDFS 推論では完全に解釈できません。

余談ですが、ヒント: RDF/XML の代わりに Turtle 構文を使い始めてください。読みやすく、編集しやすくなっています。たとえば、元のプロパティ定義は Turtle では次のようになります。

 :hasName a rdf:Property ;
          rdfs:domain :user ;
          rdfs:range rdfs:Literal ;
          rdfs:comment "Comment here. Blah blah blah." .
于 2014-05-19T04:07:23.563 に答える