这里有一些术语和机制。我们一个接一个地去看看他们。
首先,PREFIX
子句只是语法快捷方式的声明,用于查询中。所以这条线:
PREFIX ex: <http://example.org/>
表示,该字符串ex:
是字符串http://example.org/
的快捷方式。如果您在查询开始时声明了此前缀,则可以在查询的其他位置使用ex:someUrl
(而不是<http://example.org/someUrl>
)。只是为了使查询更易于阅读和编写,但除此之外,它对查询的含义没有影响。
A SPARQL端点是可以回答SPARQL查询的Web服务的另一个术语。
一个SPARQL查询的FROM
子句确定数据集(或更精确地,默认的图形,这是该数据集的一部分),在其上执行查询。任何SPARQL端点都可能包含多个图形,每个图形都由URI标识(所谓的命名图形为)。这些图形的集合是一个数据集。如果您没有指定FROM
子句(也许还有一个或多个FROM NAMED
子句),则查询的数据集只是端点选择的任何默认数据集。
那么,这对您的具体问题意味着什么?
我以前的大多数查询都有PREFIX和FROM部分。我可以将任何FROM网址移入PREFIX吗?
正如你从上面的解释中可以看到的那样,这是没有意义的。它们是不同的机制,出于不同的目的,只是恰好两者都使用URI。
使用YASGUI客户端,FROM和Endpoint字段有什么区别?
端点字段定义YASGUI需要发送查询的服务。子句FROM
告诉端点你想要查询的数据集。
我可以使用from语句将任何查询重写为没有它的查询吗?
不一般,没有。 FROM
子句的缺失意味着端点通过其默认数据集执行查询。根据端点的配置方式,这可能意味着您要么获得更多的结果(即不仅仅来自您想要的一个数据集,而是来自许多其他数据集),或者根本没有结果(如果您想要查询的数据集不是端点默认数据集的一部分)。