给定SPARQL端点(可以是SPARQL 1.0或1.1),例如http://pt.dbpedia.org/sparql,我如何找到它支持的SPARQL版本?
[一种选择是尝试使用aggregate functions之类的1.1功能,看看它是否有效,但我想应该有更好的方法来实现这一点。
SPARQL 1.1服务描述规范says
通过SPARQL协议提供的SPARQL服务应返回a 取消引用时服务端点上的服务描述文档 使用HTTP GET操作而不使用任何查询参数字符串 提供。必须在RDF中提供此服务说明 序列化,可以通过RDFa [RDFA]嵌入(X)HTML中,并且 如果在其他RDF中可用,则应使用内容协商[CONNEG] 表示
进一步,
3.2.10 sd:supportedLanguage 将sd:Service的实例与其实现的SPARQL语言(例如,查询和更新)相关联。 subPropertyOf:sd:feature domain:sd:服务范围:sd:语言
3.3.3 sd:语言 sd:Language的一个实例代表SPARQL语言之一,包括提供的特定配置 特定功能或扩展。本文件定义了三个 sd的实例:语言:sd:SPARQL10Query,sd:SPARQL11Query,和 SD:SPARQL11Update。 type:rdfs:Class subClassOf:sd:Feature
但是,当我取消引用大多数SPARQL端点时,它们只是向我发送了一个HTML SPARQL查询编辑器。
更新: HTML编辑器问题是因为我没有在端点上使用正确的内容协商。但现在的问题是,有一种很好的方法可以区分SPARQL 1.0端点和不提供服务描述的SPARQL 1.1端点吗?
在发现和监控SPARQL端点方面已经完成了一些工作,例如SPARQL Web-Querying Infrastructure: Ready for Action?,Discoverability of SPARQL Endpoints in Linked Open Data,但我没有看到直接查找版本的方法。
答案 0 :(得分:1)
您应该检查的第一件事是,当您解除引用端点时,您要求提供RDF格式的内容,而不是文本/ html等,Web浏览器会指定默认情况下,端点不会根据用户代理等提供某些输出。例如,如果您在http://dbpedia.org/sparql访问DBpedia端点,则会获得HTML查询编辑器。但是,如果您请求将Accept标头设置为" application / rdf + xml"的页面,您将获得服务描述。如果不知道您遇到什么问题,我们可以提供更多帮助。这个应该工作,但是有些端点没有这样做,这不是我们可以调试的技术问题,特别是如果你不告诉我们哪个端点你有问题。这是使用curl看起来的样子:
$ curl -H "Accept: application/rdf+xml" http://dbpedia.org/sparql
<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:sd="http://www.w3.org/ns/sparql-service-description#" >
<rdf:Description rdf:about="http://dbpedia.org/sparql">
<rdf:type rdf:resource="http://www.w3.org/ns/sparql-service-description#Service" />
<sd:endpoint rdf:resource="http://dbpedia.org/sparql" />
<sd:feature rdf:resource="http://www.w3.org/ns/sparql-service-description#UnionDefaultGraph" />
<sd:feature rdf:resource="http://www.w3.org/ns/sparql-service-description#DereferencesURIs" />
<sd:resultFormat rdf:resource="http://www.w3.org/ns/formats/SPARQL_Results_JSON" />
<sd:resultFormat rdf:resource="http://www.w3.org/ns/formats/SPARQL_Results_XML" />
<sd:resultFormat rdf:resource="http://www.w3.org/ns/formats/Turtle" />
<sd:resultFormat rdf:resource="http://www.w3.org/ns/formats/N-Triples" />
<sd:resultFormat rdf:resource="http://www.w3.org/ns/formats/N3" />
<sd:resultFormat rdf:resource="http://www.w3.org/ns/formats/RDF_XML" />
<sd:resultFormat rdf:resource="http://www.w3.org/ns/formats/SPARQL_Results_CSV" />
<sd:resultFormat rdf:resource="http://www.w3.org/ns/formats/RDFa" />
<sd:supportedLanguage rdf:resource="http://www.w3.org/ns/sparql-service-description#SPARQL10Query" />
<sd:url rdf:resource="http://dbpedia.org/sparql" />
</rdf:Description>
这是一个使用d3的XmlHttpRequest功能的实时版本。 (我知道你可以在没有图书馆的情况下做到这一点,但我最近一直在使用很多d3。)
/**
* Make a GET request to dbpedia.org/sparql
* and show the response in a PRE element.
*/
d3.xhr("http://dbpedia.org/sparql")
.get(function(error,data) {
console.log(error);
console.log(data);
d3.select("body")
.append("pre")
.text(data.response);
});
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
&#13;