1

私はセマンティック Web の学習にかなり慣れていないので、学習を容易にするために、私がよく知っているビデオ ゲームについてのオントロジーを作成することにしました。

これで少しは理解できたと思いますが、まだいくつか問題があります。ここでの私の一般的な考えは、基本的に 4 つのプラットフォームがあるということです。これは非常に単純化されています (さまざまなコンソールではなく、ゲームをプレイできるコンソールを作成している会社をリストするだけです)。とにかく、私が抱えている問題は次の行に起因します。

<owl:someValuesFrom rdf:resource="#Platforms"/>

何が問題なのか完全にはわかりません。「#」文字を使用して、または使用せずに試しましたが、Jena は解析時にこのエラーを表示しています (コメントアウトすると、正常に解析されます)。

org.apache.jena.riot.RiotException: {E201} rdf:resource not allowed as attribute here.

私は owl:someValuesFrom を完全には理解していないと感じており、私が調べた参照オントロジーのほとんどは、同様のコンテキストでそれを使用しているようです。私は単純なものを見落としているとほぼ確信しているので、もっと目が役立つかもしれませんが、すべての助けに感謝します. 必要に応じて、オントロジーをさらに投稿できれば幸いです。

そのコンテキストは次のとおりです。

<owl:Class rdf:ID="Platforms">
    <owl:oneOf rdf:parseType="Collection">
        <owl:Thing rdf:about="#PC"/>
        <owl:Thing rdf:about="#Playstation"/>
        <owl:Thing rdf:about="#Xbox"/>
        <owl:Thing rdf:about="#Nintendo"/>
    </owl:oneOf>
</owl:Class>

<owl:Class rdf:ID="Platform">
    <rdfs:label>Platform</rdfs:label>
    <owl:Restriction>
        <owl:someValuesFrom rdf:resource="#Platforms"/>
    </owl:Restriction>
</owl:Class>

オントロジーを開く/読み取るための Java コードは次のとおりです。

    try
    {
        // open input file stream
        InputStream in = FileManager.get().open(inputFile);

        // create a new model, then read the OWL file into it
        model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RULE_INF, null);
        model.read(inputFile);      
    }
    catch (Exception e)
    {
        System.err.println(e);
    }

追加情報: Jena 2.10.0 (最新) と Eclipse を使用しています。

4

1 に答える 1

1

これがあなたが見ている解析エラーの原因であるかどうかはすぐにはわかりませんが、あなたの制限は少し欠けています.何に制限するか(つまり、 class からのいくつかの値Platforms)を示していますが、何を示していませんプロパティが制限されています。

次のようなものが必要です。

<owl:Restriction>
     <owl:onProperty rdf:resource="#platformType" />
     <owl:someValuesFrom rdf:resource="#Platforms"/>
</owl:Restriction>

owl:Classさらに、制限を要素の一部にすることはできません。rdfS:subClassOf要素またはそのowl:equivalentClass周りの要素が必要です。

また、ヒント: オントロジーを RDF/XML 構文で手書きしないでください。Protege や TopBraid などのオントロジー エディターを使用するか、Turtle など、より読みやすく編集しやすい別の構文に切り替えます。これを信じてください。そうすれば、物事はずっと簡単になります。

たとえば、Turtle 構文の (修正された) オントロジーは次のようになります。

:Platforms a owl:Class ;
           owl:oneOf ( :PC :PlayStation :Xbox :Nintendo ) .

:Platform a owl:Class ;
          rdfs:label "Platform";
          rdfs:subClassOf [ a owl:Restriction ;
                            owl:onProperty :platformType ;
                            owl:someValuesFrom :Platforms ] .
于 2013-05-05T02:00:16.000 に答える