0

我有一个 asp.net 项目,我想在其中查询 DBPedia。使用以下代码出现错误:

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());}

错误消息:“在 dotNetRDF.dll 中出现类型为 'System.Xml.XmlException' 的异常,但未在用户代码中处理”。

即使我处理了异常,该方法也无法执行。关于细节,它说 XML 版本 1.1 无效。

由于 XML 来自 DBPedia,我不知道如何更改 xml 版本或如何处理此问题。

4

1 回答 1

0

Virtuoso 是 dbpedia SPARQL 端点后面使用的三重存储,它更新了其 XML 结果生成。他们在此提交中将 XML 版本 1.0 替换为 1.1 。这会导致 dotNetRDF 解析器出现异常。

后来,Virtuoso 恢复了 XML 标头中的更改。希望 DBPedia 很快会更新他们的二进制文件,所以旧的 XML 标头会再次出现在 SPARQL 结果中。

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

于 2015-05-25T11:33:38.973 回答