命名图和联合SPARQL端点
我最近看到了的工作草案,想知道这是否已经可以使用命名图(不要减损上述草案的有用性) 我对命名图的理解有点模糊,除了我从阅读规范中得到的唯一线索是关于合并的规则,查询时与其他图相关的非合并规则。由于这不能完全满足我的理解,我的问题如下: 给出以下查询:命名图和联合SPARQL端点,sparql,semantic-web,named-graphs,federated-queries,Sparql,Semantic Web,Named Graphs,Federated Queries,我最近看到了的工作草案,想知道这是否已经可以使用命名图(不要减损上述草案的有用性) 我对命名图的理解有点模糊,除了我从阅读规范中得到的唯一线索是关于合并的规则,查询时与其他图相关的非合并规则。由于这不能完全满足我的理解,我的问题如下: 给出以下查询: SELECT ?something FROM NAMED <http://www.vw.co.uk/models/used> FROM NAMED <http://www.autotrader.co.uk/cars/used>
SELECT ?something
FROM NAMED <http://www.vw.co.uk/models/used>
FROM NAMED <http://www.autotrader.co.uk/cars/used>
WHERE {
...
}
或
加载
偏移量
和限制
可能还有一些额外的考虑因素
我还记得很久以前在遥远的银河系的某个地方读到,根据以下约定,任何SPARQL端点的默认图都应该是命名图:
For:应该有一个表示默认图的命名图,因此通过上述逻辑,应该已经可以使用命名图联合SPARQL端点
我问这个问题的原因是,我想在上面的示例中开始跨域提升联合,而不必等待标准,以确保我不会在将来做一些不正常或与其他内容不兼容的事情。联合查询中使用的命名图和URL(使用服务或来自)这是两件不同的事情。后者指向SPARQL端点,命名图位于三重存储中,主要功能是分离不同的数据集。这反过来有助于提高性能和表示知识,例如表示一组语句的来源 例如,您可能有两个数据源,都声明
?电影有分级?x
,并且您可能想知道哪个数据源声明哪个分级,在这种情况下,您可以使用与这两个数据源关联的两个命名图(例如http://www.example.com/rotten-tomatoes
和http://www.example.com/imdb
)。如果要将两个数据集存储在同一个三元组存储中,可能需要使用NGs,而远程端点则是另一回事。此外,命名图的URL可以与词汇表一起使用,比如将数据集作为一个整体来描述(例如,数据集名称、三元组从何处和何时导入、谁是维护者、用户许可证)。这是将triple store划分为NGs的另一个原因
这就是说,您将NGs绑定到端点URL的机制可以作为一个选项来实现,但我认为将其作为强制性的不是一个好主意,因为单独管理远程端点URL和NGs可能更有用
此外,联邦查询中的真正挑战是提供端点透明的查询,使查询引擎足够智能,能够分析查询并理解如何拆分查询并在正确的端点上执行部分查询(并在以后以高效的方式连接结果)。在这方面已经做了很多研究,其中一个最重要的结果(据我所知)是,它已被用于实现多个查询分布优化()
最后要补充的是,我模糊地记得您提到的关于$url、$url/sparql的约定。有两种方法(例如,)。这就是说,在当今的大多数三重存储(例如,Virtuoso)中,不指定命名图(不使用图)的查询的工作方式不同于陷入默认图的情况,它们实际上查询存储中所有命名图的并集,这通常更有用(当您不知道在何处陈述某些内容,或者您希望集成交叉图数据时)。命名图和联合查询是非常正交的功能。请将命名图视为(本地)的特定子集三元组。对于远程端点的查询,使用
服务
关键字。AFAIK,Jena Assembler允许将命名图映射到本地文件,可能其他三元组允许将命名图映射到远程三元组集,但这些解决方案是特定于供应商的。至于默认图的默认名称,目前不包含任何内容这类的。看起来你所说的功能是非常专业的,参见。
GET /cars/used HTTP/1.1
Host: www.autotrader.co.uk
LOAD <http://www.autotrader.co.uk/cars/used>