为什么有些SPARQL查询缺少FROM关键字?

时间:2014-09-24 10:13:49

标签: sparql

我正在使用此客户端 http://yasgui.laurensrietveld.nl 我希望查询bioportal http://bioportal.bioontology.org

我以前的大多数查询都有一个PREFIX而没有FROM部分。我可以将任何FROM URL移动到PREFIX吗?

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

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

我无法列出人类表型本体概念id:HP:0000023的详细信息,因为我不确定将什么内容放入FROM或是否完全使用它。

1 个答案:

答案 0 :(得分:2)

这里有许多术语和机制。我们一个接一个地讨论它们。

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

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

表示字符串ex:是字符串http://example.org/的快捷方式。如果您在查询开头声明了此前缀,则可以在查询的其他位置使用ex:someUrl(而不是<http://example.org/someUrl>)。它只是让查询更容易阅读和写入,但除此之外它不会影响查询的含义。

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

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

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

  

我以前的大多数查询都有一个PREFIX而没有FROM部分。我可以将任何FROM URL移动到PREFIX吗?

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

  

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

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

  

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

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