2015-05-13 62 views
0

我有一個asp.net項目,其中,我想查詢DBPedia。使用下面的代碼 我得到一個錯誤:dotnetrdf xml異常使用QueryWithResultSet

public string testEndpoint() 
    { 

     //TEST02 
     SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"), "http://dbpedia.org"); 
     string res = ""; 
     //Make a SELECT query against the Endpoint 
     SparqlResultSet results = endpoint.QueryWithResultSet("SELECT ?year WHERE {dbpedia:Rihanna dbpedia-owl:birthYear ?year}"); 

     foreach (SparqlResult result in results) 
     { 
      res = result.ToString();  
      Console.WriteLine(result.ToString());} 

Error message: "An exception of type 'System.Xml.XmlException' occurred in dotNetRDF.dll but was not handled in user code".

即使我處理不能被執行的方法除外。關於細節,它說有一個無效的XML版本1.1。

由於XML來自DBPedia,我不知道如何更改xml版本,或者我可以如何處理這個問題。

+1

你聲明DBpedia中:和DBpedia的貓頭鷹:前綴的地方?即使你發送到遠程端點,你仍然需要使查詢成爲'PREFIX dbpedia: PREFIX dbpedia-owl: SELECT ...'。 –

+0

謝謝。我沒有這樣做。但即使我添加前綴,我仍然收到相同的錯誤。 –

回答

0

Virtuoso是dbpedia SPARQL端點背後使用的三重存儲庫,它已更新其XML結果生成。他們用this提交中的1.1替換了XML版本1.0。這會導致dotNetRDF解析器中的異常。

Later Virtuoso還原了XML標題中的更改。希望DBPedia很快會更新它們的二進制文件,所以舊的XML頭文件再次出現在SPARQL結果中。

來源:http://github.com/openlink/virtuoso-opensource/issues/405