首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跨异构三层查询

跨异构三层查询
EN

Stack Overflow用户
提问于 2013-10-31 14:13:31
回答 1查看 160关注 0票数 0

我现在相信的是真实的:

  • Triplestore都是关于“链接数据”的;与任何给定应用程序分离的数据可以通过新数据形成的传入链接来增强。这个概念推动了网络。
  • URI允许将链接数据托管在不同的异构环境中。
  • 要使两台机器互操作,它们都必须按照商定的标准工作。
  • W3C已经定义了这样的标准。具体而言: RDF (用于格式化)和SPARQL (用于查询)。

问题:

是否有可能运行跨多个异构RDF三元组的查询?

示例:

  • 我们在不同的triplestore软件上运行了3个RDF triplestore。
  • Triplestore A包含引用Triplestore B和C中其他节点的节点。
  • 我们运行这样一个查询,应该从所有三个商店传递节点。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-31 14:28:18

是的,这是很有可能的,这就是SPARQL 1.1联邦查询 W3C建议的意义所在。在SPARQL查询中,使用SERVICE关键字指定要查询的不同SPARQL端点。链接建议中的一个例子是

代码语言:javascript
运行
复制
PREFIX foaf:   <http://xmlns.com/foaf/0.1/>
SELECT ?name
FROM <http://example.org/myfoaf.rdf>
WHERE
{
  <http://example.org/myfoaf/I> foaf:knows ?person .
  SERVICE <http://people.example.org/sparql> { 
    ?person foaf:name ?name . } 
}

那里的service关键字说,应该从<http://people.example.org/sparql>中检索三元?person foaf:name ?name。在您的例子中,您可能会得到如下的结果:

代码语言:javascript
运行
复制
PREFIX ex: <http://example.org/>
SELECT ?person ?age ?weight ?resume WHERE {
  values ?person { ex:Bill ex:John }
  SERVICE <http://jobs.example.org/sparql>   { ?person ex:resume ?resume } 
  SERVICE <http://age.example.org/sparql>    { ?person ex:age    ?age    } 
  SERVICE <http://weight.example.org/sparql> { ?person ex:weight ?weight } 
}

不过,您必须在某个地方运行这个查询。如果您在本地运行它,那么所有三个triplestores都可以指定为services,但是如果您直接针对其中一个运行查询,那么其他两个就可以作为service运行。当然,这将取决于是否有一些支持联邦查询的SPARQL引擎。现在,我希望大多数人都这么做,但我只有使用Jena的经验(Jena确实支持联合查询)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19708858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档