1

.Net RDF ライブラリを使用して、RDF ファイルに対して sparql クエリを作成しています。しかし、RDF ファイルを C# .Net RDFlibrary にロードしようとしたとき。

エラーは次のとおりです。

ドキュメントを解析できなかったため、この RDF/XML を解析できませんSystem.Xml。詳細については、内部例外を参照してください

私のRDFファイル:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rdf:RDF [<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>]>
<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
         xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:dnr="http://www.dotnetrdf.org/configuration#"
         xmlns:rdf="http://www.w3.org/XML/1998/namespace#"
         xml:base="http://www.example.org/">

  <rdf:Description rdf:about="Fadi">
    <ns0:eat xmlns:ns0="http://example.org/">Apple</ns0:eat>
    <xml:startTime>00:01:38</xml:startTime>
    <xml:endTime>00:01:39</xml:endTime>
  </rdf:Description>
</rdf:RDF>

およびロードするステートメント:

Graph myGraph = new Graph();
FileLoader.Load(myGraph, "C:\\Users\\hasoOn\\Desktop\\tt.rdf");

誰が何が悪いのか教えてもらえますか? - なぜこのエラーが発生するのですか?

4

1 に答える 1

1

例外メッセージが示すように、実際に内部例外を見ましたか? これには生成された が含まれ、XmlException位置情報、つまりファイル内のどこにエラーがあるかなど、RDF/XML の何が問題なのかを正確に教えてくれます。

あなたの場合、問題rdfは同じ要素で名前空間を 2 回定義したことです。つまりxmlns:rdf、ルートrdf:RDF要素に 2 つの属性があり、XML が違法になります。

それを削除すると、有効な XML になりますが、名前空間を定義せずにプロパティxml:startTimeを使用したため、dotNetRDF での解析に失敗します。XML 構文自体以外に名前空間を使用することは一般的に非常に悪い考えであり、悪いデータ モデリングの兆候ですが、dotNetRDF はXML で暗黙的に定義されているため、おそらくそれらを許可する必要があると思います。xml:endTimexmlxml:xml

于 2013-04-29T19:45:33.900 に答える