0

次のRDFがあります。

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:ppl="http://www.blah.com/people#">

    <rdfs:Class rdf:ID="Person">
        <ppl:Name/>
        <ppl:LastName/>
    </rdfs:Class>

    <rdfs:Class rdf:ID="John">
        <rdfs:subClassOf rdf:resource="#Person"/>
        <ppl:name>John</ppl:name>
        <ppl:LastName>Smith</ppl:LastName>
    </rdfs:Class>
</rdf:RDF>

これは問題ないように見えますが、subClassOf John を実行する可能性は避けたいと思います。たとえば、これは機能しません。

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:ppl="http://www.blah.com/people2#">

    <rdfs:Class rdf:ID="Person">
        <ppl:Name/>
        <ppl:LastName/>
    </rdfs:Class>

    <rdfs:Class rdf:ID="John">
        <rdfs:subClassOf rdf:resource="#Person"/>
        <ppl:name>John</ppl:name>
        <ppl:LastName>Smith</ppl:LastName>
    </rdfs:Class>

    <rdfs:Class rdf:ID="Peter">
        <rdfs:subClassOf rdf:resource="#John"/>
        <ppl:name>Peter</ppl:name>
        <ppl:LastName>Smith</ppl:LastName>
    </rdfs:Class>
</rdf:RDF>

その制限を追加するにはどうすればよいですか?

編集:

cygriの答えの後、私は別のアプローチを試みました:

<rdf:Description ID="John">
    <rdf:type rdf:resource="#Person"/>
    <ppl:name>John</ppl:name>
    <ppl:LastName>Smith</ppl:LastName>
</rdf:Description>

<rdf:Description ID="Peter">
    <rdf:type rdf:resource="#John"/>
    <ppl:name>Peter</ppl:name>
    <ppl:LastName>Smith</ppl:LastName>
</rdf:Description>

しかし、これはまだ機能します:(

4

2 に答える 2

3

何をしようとしているのかわからない。あなたのモデリングは私には奇妙に見えますが、なぜジョンはクラスなのですか? John は Person 型の個体である必要があります。(また、個人のサブクラスを持つことはできないため、John を個人に変更すると、サブクラス化の防止に関する質問にも答えます。)

更新: RDF 自体は、無意味なことを言うことを妨げません。そのため、意味のないデータであっても、データの解析、シリアル化、およびクエリを実行できます。ただし、OWL 整合性チェッカーを使用して、オントロジーを検証できます。この特定のケースでは、オントロジーが OWL DL にあるかどうかを確認する必要があります。(OWL DLはOWLのバリアントであり、とりわけ個人がサブクラスを持つことができないという制限を導入します。OWL Fullでは、Classクラスがクラスと素であるという制約を追加しない限り、これは許可されますPerson

于 2010-07-01T21:31:50.337 に答える
3

あなたはまだジョンをクラスとして扱っています。次のようなものが必要です。

<rdf:RDF
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:ppl="http://www.blah.com/people#">

    <rdfs:Class rdf:ID="Person" />

    <rdf:Description rdf:ID="John">
        <rdf:type rdf:resource="#Person"/>
        <ppl:name>John</ppl:name>
        <ppl:LastName>Smith</ppl:LastName>
    </rdf:Description>

</rdf:RDF>

rdfs:subClassOf と rdf:type は異なる種類の関係です。

rdfs:subClassOf は、たとえば、すべての人は哺乳類であり、すべての哺乳類は動物であると述べるのに役立ちます。

rdf:type は、たとえば、ジョンが人であることを示すために使用されます(さらに言えば、ジョンは哺乳類であり動物です)。

セマンティックオーバーフロー.com は、RDF 関連の質問をするのにも適した場所です。

于 2010-07-08T17:52:30.447 に答える