我最近遇到了SPARQL 1.1 联合扩展的工作草案,并想知道这是否已经可以使用命名图(不要减损上述草案的有用性)。
我对命名图的理解有点模糊,除了我从阅读规范中得到的唯一一件事包括关于合并的规则,在查询时与其他图相关的非合并。由于这不能完全满足我的理解,我的问题如下:
给定以下查询:
SELECT ?something
FROM NAMED <http://www.vw.co.uk/models/used>
FROM NAMED <http://www.autotrader.co.uk/cars/used>
WHERE {
...
}
假设查询处理器/端点可以或应该在命名图的上下文中执行以下操作是否合理:
检查命名图是否在本地存在
如果没有,则执行以下操作(在上述查询的情况下,我将使用第二个命名图)
GET /sparql/?query=EncodedQuery HTTP/1.1 主机:www.autotrader.co.uk 用户代理:my-sparql-client/0.1
其中 EncodedQuery 仅在子句中包含第二个命名图,并且FROM NAMED
子句针对子句进行了WHERE
相应的修改GRAPH
(例如,如果GRAPH <http://www.vw.co.uk/models/used> {...}
正在使用 a)。
只有当它不能执行上述操作时,才执行以下任一操作:
GET /cars/used HTTP/1.1
Host: www.autotrader.co.uk
或者
LOAD <http://www.autotrader.co.uk/cars/used>
- 返回适当的搜索结果。
OFFSET
显然,围绕's 和LIMIT
's可能还有一些额外的考虑
我还记得很久以前在遥远的星系的某个地方读到,任何 SPARQL 端点的默认图都应该是根据以下约定的命名图:
对于:http://www.vw.co.uk/sparql/应该有一个命名图:http://www.vw.co.uk代表默认图,因此按照上述逻辑,它应该已经可以使用命名图来联合 SPARQL 端点。
我问的原因是我想在上面的例子中开始促进跨域的联合,而不必等待标准,确保我不会做一些不合时宜或与其他东西不兼容的事情未来。