1

インスタンスを持つフクロウのクラスがいくつかあります。これらのクラスには、各インスタンスに値を持つプロパティもあります。私はProtege3.4でオントロジーを作成し、それらからRowlexでc#ライブラリを作成しました。
たとえば、クラス「Program」には、「Software」および「atGrade」プロパティのインスタンスがあります。このインスタンスのプロパティ値は「PHD」です(atGradeは、ドメインをGradeクラスにマップするオブジェクトプロパティです)。これはOWLです:

<owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Program">
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Student"/>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Teacher"/>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Rank"/>
    <rdfs:subClassOf>
        <owl:Restriction>
            <owl:onProperty>
                <owl:ObjectProperty rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#atGrade"/>
            </owl:onProperty>
            <owl:allValuesFrom rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Grade"/>
        </owl:Restriction>
    </rdfs:subClassOf>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Course"/>
    <owl:disjointWith>
        <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#LearningResource"/>
    </owl:disjointWith>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Note"/>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#ClassOfCourse"/>
    <owl:equivalentClass>
        <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
                <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Management">
                    <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#PHD"/>
                </Program>
                <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Literature">
                    <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#PHD"/>
                </Program>
                <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Software">
                    <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#MasterOfResearch"/>
                </Program>
                <Program rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Information_Technology">
                    <atGrade rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#MasterOfScience"/>
                </Program>
            </owl:oneOf>
        </owl:Class>
    </owl:equivalentClass>
    <owl:disjointWith>
        <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Project"/>
    </owl:disjointWith>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Grade"/>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#ResourceType"/>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Language"/>
    <rdfs:comment xml:lang="en">Study branch in which the members are working (e.g. MBA)</rdfs:comment>
    <owl:disjointWith>
        <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Discussion"/>
    </owl:disjointWith>
    <owl:disjointWith rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Question"/>
</owl:Class>

atGradeプロパティは、オントロジーでも定義されています。

<owl:ObjectProperty rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#atGrade">
    <rdfs:range rdf:resource="http://www.owl-ontologies.com/Ontology1243411901.owl#Grade"/>
    <rdfs:domain>
        <owl:Class>
            <owl:unionOf rdf:parseType="Collection">
                <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Program"/>
                <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Teacher"/>
                <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Project"/>
                <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Course"/>
                <owl:Class rdf:about="http://www.owl-ontologies.com/Ontology1243411901.owl#Student"/>
            </owl:unionOf>
        </owl:Class>
    </rdfs:domain>
</owl:ObjectProperty>

ここで、c#でインスタンスの1つを作成すると、たとえば次のようになります。

Program prog = new Program("http://www.owl-ontologies.com/Ontology1243411901.owl#Management", new RdfDocument());

atGradeプロパティはnullを返します。私は次のことをしましたが、問題は解決しませんでした:
-完全なクラスを作成しました(新しいProgram _(...))
-既存のRDFファイルを入力しました:新しいプログラム(uri、new RdfDocument(uri))。
-オントロジーから「rdfs:subClassOf」タグを削除しました。

この問題がどのように解決するかについてのアイデアはありますか?
たぶん、オントロジーからインスタンスを削除してRDFに挿入し、そこからそれらを取得する必要がありますか?

4

1 に答える 1

0

オントロジーで、どの個人がプログラム クラスに準拠するかを規定します。その URI が列挙されたものの 1 つであり、適切な atGrade プロパティを持っている場合、その個体は「プログラム」です。

RdfDocument を作成し、新しい Program インスタンスを作成すると、「myUri typeof Program」のようなトリプルだけが得られます。ROWLEX は、期待どおりにデフォルトを入力せず、余分な atGrade プロパティを追加します。そのため、プロパティを取得すると null が返されます。個人に atGrade プロパティを追加する必要があります。そうしないと、有効な Program インスタンスでさえありません。

于 2009-08-07T09:21:40.997 に答える