【问题标题】:Why some SPARQL queries lack FROM keyword?为什么有些 SPARQL 查询缺少 FROM 关键字?
【发布时间】:2014-11-18 19:02:08
【问题描述】:

我正在使用这个客户端 http://yasgui.laurensrietveld.nl 并希望查询生物门户http://bioportal.bioontology.org

我之前的大部分查询都有 PREFIX 并且没有 FROM 部分。我可以将任何 FROM URL 移动到 PREFIX 中吗?

使用YASGUI客户端,FROM和Endpoint字段有什么区别?

我可以将任何带有 from 语句的查询重写为没有它的查询吗?

我无法列出例如人类表型本体概念 id:HP:0000023 的详细信息,因为我不确定要放入 FROM 或是否要使用它。

【问题讨论】:

    标签: sparql


    【解决方案1】:

    这里有许多术语和机制。让我们一一来介绍。

    首先,PREFIX 子句只是语法快捷方式的声明,可在查询中使用。所以这一行:

    PREFIX ex: <http://example.org/>
    

    表示字符串ex: 是字符串http://example.org/ 的快捷方式。如果您在查询开始时声明了此前缀,则可以在查询的其他位置使用ex:someUrl(而不是&lt;http://example.org/someUrl&gt;)。它只是为了使查询更易于阅读和编写,但除此之外它对查询的含义没有任何影响。

    SPARQL 端点是可以回答 SPARQL 查询的 Web 服务的另一个术语。

    SPARQL 查询的FROM 子句确定查询所在的数据集(或更准确地说,默认图,它是数据集的一部分)执行。任何 SPARQL 端点都可能包含多个图,每个图都由一个 URI 标识(所谓的命名图)。这种图的集合是一个数据集。如果您没有指定 FROM 子句(可能还有一个或多个 FROM NAMED 子句),则查询的数据集就是端点选择的任何默认数据集。

    那么,这对您的具体问题意味着什么?

    我之前的大部分查询都有 PREFIX 并且没有 FROM 部分。我可以将任何 FROM URL 移动到 PREFIX 中吗?

    从上面的解释可以看出,这没有任何意义。它们是不同的机制,用于不同的目的,只是碰巧都使用了 URI。

    使用YASGUI客户端,FROM和Endpoint字段有什么区别?

    endpoint 字段定义了 YASGUI 需要将查询发送到哪个服务。 FROM 子句告诉端点您要查询的数据集。

    我可以将任何带有 from 语句的查询重写为没有它的查询吗?

    一般不会,不会。缺少FROM 子句意味着端点在其默认数据集上执行查询。根据该端点的配置方式,这可能意味着您要么获得更多结果(即不仅来自您想要的一个数据集,而且来自许多其他数据集)或根本没有(如果您想要查询的数据集不是端点默认数据集的一部分)。

    【讨论】:

      最近更新 更多