【问题标题】:Discovering the version of a SPARQL endpoint发现 SPARQL 端点的版本
【发布时间】:2015-04-21 10:30:02
【问题描述】:

给定一个 SPARQL 端点(可以是 SPARQL 1.0 或 1.1),例如 http://pt.dbpedia.org/sparql,我如何找到它支持的 SPARQL 版本?

[一个选择是尝试 1.1 功能,例如 aggregate functions 并查看它是否有效,但我想应该有更好的方法来做到这一点]。

SPARQL 1.1 服务描述规范says

通过 SPARQL 协议提供的 SPARQL 服务应该返回一个 取消引用时服务端点处的服务描述文档 使用不带任何查询参数字符串的 HTTP GET 操作 假如。此服务描述必须在 RDF 中提供 序列化,可以通过 RDFa [RDFA] 嵌入到 (X)HTML 中,并且 如果在其他 RDF 中可用,则应使用内容协商 [CONNEG] 表示

还有,

3.2.10 sd:supportedLanguage 将 sd:Service 的实例与它实现的 SPARQL 语言(例如查询和更新)相关联。 subPropertyOf: sd:feature domain: sd:Service range: sd:Language

3.3.3 sd:语言 sd:Language 的一个实例代表一种 SPARQL 语言,包括提供的特定配置 特定的功能或扩展。该文件定义了三个 sd:Language 的实例:sd:SPARQL10Query、sd:SPARQL11Query 和 sd:SPARQL11更新。类型: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)方面已经完成了一些工作,但我没有看到找到版本的直接方法。

【问题讨论】:

  • “但是当我取消引用大多数 SPARQL 端点时,它们只会向我发送一个 HTML SPARQL 查询编辑器。”您取消了哪些端点?这适用于例如 DBpedia's SPARQL endpointOrdnance Linked Data Sparql endpoint
  • 谢谢。是的,我应该使用内容协商。端点是 pt.dbpedia.org/sparql 。它不支持 SPARQL 端点上的内容协商,因此它只有一个用于 GET 操作的 HTML 表示。

标签: service version sparql linked-data discoverability


【解决方案1】:

您应该检查的第一件事是,当您取消引用端点时,您请求的是 RDF 格式的内容,而不是 web 浏览器默认指定的 text/html 等内容,并且端点没有根据用户代理等为您提供某些输出。例如,如果您访问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);
  });
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 谢谢!是的,它解决了我关于在没有内容协商的情况下向 SPARQL 端点发送请求的评论。此外,如果 SPARQL 端点向我发送服务描述,即使没有 sd:Language 信息,我也可以推断它可能支持 SPARQL 1.1,因为服务描述是在 1.1 中引入的。但是如果没有服务描述,有没有办法知道一个特定的端点是否是 SPARQL 1.0 的呢?我关心的端点是pt.dbpedia.org/sparql
  • @Nandana 是的,该端点似乎没有返回适当的 RDF 描述。我不确定 SPARQL 1.0 有什么可用的。我认为SPARQL protocol for RDF(对于 SPARQL 1.0)可能是你得到的最接近的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多