命名图和联合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>