芝麻workbench查询在线数据集

Sesame workbench querying an online data set

我有以下 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 等)使用来自 'FROM' 子句旁边指定 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" .

您可以通过在浏览器中输入 URI 来访问此文件。

ARQ 工具​​误导您相信 SPARQL 查询中 FROM 子句的含义是引擎应该从 URL 提供的文件中检索数据。这是 SPARQL 的 非标准行为 事实上,大多数 SPARQL 引擎 不会 这样做(下面会详细介绍)。

Sesame Workbench 是 Sesame 服务器的客户端应用程序。反过来,Sesame 服务器是一个数据库管理器应用程序:它允许您通过 Web 创建和访问 Sesame RDF 数据库 (a.k.a 'repositories')(它还将它们公开为 SPARQL 端点)。

要使用 SPARQL 从 Sesame Workbench 查询 RDF 数据,您需要满足以下条件之一:

  1. 您要查询的 RDF 数据存储在您的 Sesame 服务器上的 Sesame 存储库中,或者;
  2. 您希望查询的 RDF 数据可通过某些远程 SPARQL 端点访问。

但是,您不能像这样直接查询可从 Web 上某处下载的 RDF 文件。

要使用 Sesame Workbench 查询此数据,您应该在您的服务器上创建一个存储库并将文件中的数据加载到该存储库中。然后,您可以通过 Workbench 在此存储库上执行查询。或者,如果 RDF 数据可以通过一些已知地址的现有 SPARQL 端点访问,则可以使用 SERVICE 子句从 Workbench 查询它。

关于 FROM 子句含义的更多背景知识:SPARQL 查询通常由 SPARQL 引擎评估。通常,任何 SPARQL 引擎都有一个特定的默认数据集,它会在该数据集上执行它接收到的查询(在 Sesame Workbench 的情况下,该数据集等于 Sesame 的内容执行它的数据库)。

FROMFROM NAMED 子句指示 SPARQL 引擎仅查询(默认)数据集的特定部分:这些子句中的值是所谓的 命名图,本质上是整个数据集的子集。 Sesame 数据库是所谓的 quad stores,这意味着它们(可选)存储一个命名的图形标识符和您添加的每个 RDF 语句(将标准 RDF 'triple' 转换为 'quad').在诸如芝麻之类的四元存储中,您可以使用 FROM 子句将查询限制为整个数据库的此类子集。

因此,使用这些子句就像将 'zoom filter' 应用于您的查询:您指示引擎仅查看所有可用数据的特定子集。但是,如果您正在查询的数据集中不知道该子集的标识符,您的查询将不会 return 任何结果。