0

私は dotNetRDF と SPARQL を初めて使用し、DBPedia から個人データを取得しようとしています。私はこのクエリを書き、 http : //dbpedia.org/sparqlのオンライン エディタで正常にテストしました。

問題は、以下のコードを使用してクエリを起動しようとすると、HTTP 例外 400、無効な要求が発生することです。

SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"));

        //Make a SELECT query against the Endpoint
        SparqlResultSet results = endpoint.QueryWithResultSet(@" 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n
PREFIX type: <http://dbpedia.org/class/yago/>\n
PREFIX prop: <http://dbpedia.org/ontology/>\n
\n
select DISTINCT ?person ?name ?birth ?shortDescription where {\n
?person a dbpedia-owl:Person ;\n
      foaf:name ?name ;\n
      dbpedia-owl:birthDate ?birth ;\n
      dbpprop:shortDescription ?shortDescription .\n
filter langMatches(lang(?name),'en') .\n
filter langMatches(lang(?shortDescription),'en') \n
}\n
LIMIT 10");
        foreach (SparqlResult result in results)
        {
            Console.WriteLine(result.ToString());
        }

どんな助けでも大歓迎です。前もって感謝します ;)

4

2 に答える 2

2

XML バージョン エラーの場合、dotNetRDF に非 XML 形式で結果を要求するように指示できます。

endpoint.ResultsAcceptHeader = "application/sparql-results+json";

XML バージョンの問題を回避する XML の代わりに JSON を要求します。

そのプロパティのドキュメントにあるように:

dotNetRDF がデフォルトで送信する広範な Accept ヘッダーを好まないバグのあるエンドポイントを回避するために使用できます

于 2015-06-15T14:46:26.483 に答える