我有以下sparql查询:
PREFIX ab:<http://learningsparql.com/ns/addressbook#>
SELECT ?firstName ?lastName ?streetAddress ?city ?region ?postalCode
FROM <http://www.learningsparql.com/2ndeditionexamples/ex041.ttl>
WHERE
{
?s ab:firstName ?firstName;
ab:lastname ?lastName;
ab:address ?address.
?address ab:postalCode ?postalCode;
ab:city ?city;
ab:streetAddress ?streetAddress;
ab:region ?region.
}
当我使用Apache ARQ运行此查询时,它很好用。所选变量(?firstName?lastName等)使用来自&#39; FROM&#39;旁边的指定URI的ex041.ttl中的数据填充。条款。 当我从sesame workbench运行这个查询时,变量(?firstName?lastName等)是空的,我不知道为什么。它就像芝麻它没有连接到远程ex041.ttl文件。 远程数据集ex041.ttl包含以下数据:
# filename: ex041.ttl
@prefix ab: <http://learningsparql.com/ns/addressbook#> .
ab:i0432 ab:firstName "Richard" ;
ab:lastName "Mutt" ;
ab:homeTel "(229) 276-5135" ;
ab:email "richard49@hotmail.com" ;
ab:address _:b1 .
_:b1 ab:postalCode "49345" ;
ab:city "Springfield" ;
ab:streetAddress "32 Main St." ;
ab:region "Connecticut" .
您可以通过在浏览器中输入该文件来访问此文件。
答案 0 :(得分:1)
ARQ工具误导您认为SPARQL查询中FROM
子句的含义是引擎应该从该URL提供的文件中检索数据。这是 SPARQL的非标准行为,实际上大多数SPARQL引擎不执行此操作(下面将详细介绍)。
Sesame Workbench是Sesame Server的客户端应用程序。反过来,Sesame Server是一个数据库管理器应用程序:它允许您通过Web创建和访问Sesame RDF数据库(a.k.a'存储库')(它还将它们公开为SPARQL端点)。
要使用SPARQL从Sesame Workbench查询RDF数据,您需要满足以下条件之一:
但是,您无法直接查询可从Web上的某个位置下载的RDF文件。
要使用Sesame Workbench查询此数据,您应该在服务器上创建一个存储库,并将该文件中的数据加载到此存储库中。然后,您可以通过Workbench在此存储库上执行查询。或者,如果可以通过您知道地址的某个已存在的SPARQL端点访问RDF数据,则可以使用SERVICE
- 子句从Workbench查询它。
有关FROM
子句含义的更多背景知识:SPARQL查询通常由SPARQL引擎评估。通常,任何SPARQL引擎都有一个默认数据集,它在其上执行它接收的查询(在Sesame Workbench的情况下,该数据集等于您执行它的Sesame数据库的内容) 。
FROM
和FROM NAMED
子句是指示SPARQL引擎仅查询(默认)数据集的特定部分的指令:这些子句中的值是所谓的标识符命名图,基本上是总数据集的子集。芝麻数据库是所谓的四元组商店,这意味着它们(可选)存储一个命名的图形标识符,其中包含您添加的每个RDF语句(将标准RDF“三元组”转换为“四元组”)。在Sesame等四元组商店中,您可以使用FROM
子句将查询限制为总数据库的这一子集。
因此,使用这些子句就像对查询应用“缩放过滤器”:您指示引擎仅查看所有可用数据的特定子集。但是,如果您查询的数据集中未知该子集的标识符,则查询将不会返回任何结果。