1

我在使用 dotNetRDF 向 DBpedia 询问所有图表时遇到问题。执行以下代码后:

SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(
    new Uri("http://dbpedia.org/sparql"), "http://dbpedia.org"
);
SparqlResultSet results = endpoint.QueryWithResultSet(
    "SELECT DISTINCT ?g WHERE { GRAPH ?g {?s ?p ?o} }"
);

我有UriFormattedException消息Invalid URI: The format of the URI could not be determined.

以下图存在问题:b3sonto, b3sifp, dbprdf-label, virtrdf-label, facets- 可能 dotNetRDF 忘记了默认图 URI

顺便提一句。我可以成功地执行这个查询表单 dotNetRDF: SELECT ?s ?p ?o FROM <b3sonto> WHERE { ?s ?p ?o} limit 20

你知道为什么它不起作用吗?

4

1 回答 1

1

这些不是有效的 URI,因此 dotNetRDF 在返回时无法处理它们。这是 Virtuoso 的一个错误,应该向他们报告 (virtuoso-users@lists.sf.net)

它们与默认图无关,因为默认图根据定义是未命名的并且没有 URI。

您可以使用这些虚假 URI 查询 Virtuoso,因为 dotNetRDF 默认情况下在发送查询之前根本不解析查询。这允许您向远程端点发送非标准语法,否则 dotNetRDF 的标准兼容实现可能会拒绝该语法。

于 2012-12-03T23:57:29.430 回答