質問

インスタンスを持つフクロウのクラスがいくつかあります。これらのクラスには、各インスタンスの値を持つプロパティもあります。 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に挿入し、そこから取得する必要があるかもしれません。

役に立ちましたか?

解決

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top