0

dbpedia から N-Triple ファイルをダウンロードしましたが、それを Jena モデルに読み込もうとすると、いくつかの例外がスローされます。以下はこのファイルの一部です。

<http://dbpedia.org/resource/Jacky_Cheung> 

<http://dbpedia.org/resource/Template:%E8%97%9D%E4%BA%BA> "\u9AD4\u91CD"@zh .
<http://dbpedia.org/resource/Jacky_Cheung> <http://dbpedia.org/resource/Template:%E8%97%9D%E4%BA%BA> "\u8EAB\u9AD8"@zh .
<http://dbpedia.org/resource/Jacky_Cheung> <http://dbpedia.org/resource/Template:%E8%97%9D%E4%BA%BA> "\u8840\u578B"@zh .
<http://dbpedia.org/resource/Jacky_Cheung> <http://dbpedia.org/resource/Template:%E8%97%9D%E4%BA%BA> "\u8A9E\u8A00"@zh .

スローされる例外は次のとおりです。

Exception in thread "main" com.hp.hpl.jena.shared.InvalidPropertyURIException: http://dbpedia.org/resource/Template:%E8%97%9D%E4%BA%BA
    at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.splitTag(BaseXMLWriter.java:393)
    at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.startElementTag(BaseXMLWriter.java:368)
    at com.hp.hpl.jena.xmloutput.impl.Unparser$3.wTypeStart(Unparser.java:671)
    at com.hp.hpl.jena.xmloutput.impl.Unparser.wPropertyEltValueString(Unparser.java:488)
    at com.hp.hpl.jena.xmloutput.impl.Unparser.wPropertyEltValue(Unparser.java:473)
    at com.hp.hpl.jena.xmloutput.impl.Unparser.wPropertyElt(Unparser.java:339)
    at com.hp.hpl.jena.xmloutput.impl.Unparser.wPropertyEltStar(Unparser.java:811)
    at com.hp.hpl.jena.xmloutput.impl.Unparser.wTypedNodeOrDescriptionLong(Unparser.java:797)
    at com.hp.hpl.jena.xmloutput.impl.Unparser.wTypedNodeOrDescription(Unparser.java:727)
    at com.hp.hpl.jena.xmloutput.impl.Unparser.wDescription(Unparser.java:686)
    at com.hp.hpl.jena.xmloutput.impl.Unparser.wObj(Unparser.java:642)
    at com.hp.hpl.jena.xmloutput.impl.Unparser.wObjStar(Unparser.java:317)
    at com.hp.hpl.jena.xmloutput.impl.Unparser.wRDF(Unparser.java:298)
    at com.hp.hpl.jena.xmloutput.impl.Unparser.write(Unparser.java:200)
    at com.hp.hpl.jena.xmloutput.impl.Abbreviated.writeBody(Abbreviated.java:143)
    at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.writeXMLBody(BaseXMLWriter.java:500)
    at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:472)
    at com.hp.hpl.jena.xmloutput.impl.Abbreviated.write(Abbreviated.java:128)
    at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:458)
    at com.hp.hpl.jena.rdf.model.impl.ModelCom.write(ModelCom.java:277)
    at jena.ReadRDF.main(ReadRDF.java:45)
Java Result: 1

この問題は、「%E8%97%9D%E4%BA%BA」が原因で発生します。URIref.decode() を使用してこの文字列の URI をデコードすると、「%E8%97%9D%E4%BA%BA」は 2 つを表します漢字。

しかし、Sesame を使用してこの N-Triple ファイルを読み取ると、問題なく OK です。

私の質問は、Jena でこの問題を解決する方法があるかどうか、そしてなぜ dbpedia がデフォルトの RDF 構文として N-Triple を選択するのかということです.非 ASCII 言語ではうまく機能しません。

また、RDFデータをLinked Dataとして公開したいのですが、リソースのURIに中国語と日本語が含まれている場合、最初にURIをデコードする必要がありますか?

4

1 に答える 1

1

「Jena モデルの読み取り」について質問したため、質問は完全には明確ではありませんが、引用したスタックトレースは実際にはライターへの呼び出しから始まります。

一般に、Jena は、W3C および IETF からの関連する RDF 勧告に準拠するために非常に懸命に努力しています。特に、有効な URI の規則に準拠しない URI を生成しないようにします。これは、XML を記述する場合に複雑になります。ほとんどの RDF 識別子は正当な XML 要素 ID ではないためです。つまり、URI をどこかで分割し、XML 名前空間を使用して完全な識別子を作成する必要があります。すべての RDF ツールキットが、Jena が標準のいくつかの規則に準拠することを目的としているほど特殊なわけではありません。

あなたが試すことができること:

  • Model.write()読み込みプロセスの一部として呼び出す必要がありますか? 有効な URI のチェックが呼び出されることなく、モデルを読み込んで処理できるはずです。

  • XML ではなく、Turtle 形式を使用して出力を書き込んでみてください。Turtle には XML と同じ制限がなく、人間が読むのも非常に簡単です。

  • 読み込んでいるデータに特定の不適切な形式の URI がある場合は、新しいバージョンのデータがあるかどうかを確認してください。過去に、dbpedia の不正な URI が問題になっていました。不正な URI が最新バージョンに残っている場合は、dbpedia チームに報告してください。

  • データを前処理して、処理チェーンに入る前に、不正な URI を含むトリプルを削除してください。

中国語と日本語の文字を含む URI に関しては、Jena はIRI 仕様に準拠しているため、URI がそれに準拠している限り問題ありません。

于 2012-07-10T13:32:58.467 に答える