芝麻工作台查询在线数据集

时间:2015-05-25 07:17:41

标签: rdf sparql semantic-web sesame triplestore

我有以下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" .

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

1 个答案:

答案 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数据,您需要满足以下条件之一:

  1. 您要查询的RDF数据存储在Sesame Server上的Sesame存储库中,或者;
  2. 您要查询的RDF数据可通过某个远程SPARQL端点访问。
  3. 但是,您无法直接查询可从Web上的某个位置下载的RDF文件。

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

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

    FROMFROM NAMED子句是指示SPARQL引擎仅查询(默认)数据集的特定部分的指令:这些子句中的值是所谓的标识符命名图,基本上是总数据集的子集。芝麻数据库是所谓的四元组商店,这意味着它们(可选)存储一个命名的图形标识符,其中包含您添加的每个RDF语句(将标准RDF“三元组”转换为“四元组”)。在Sesame等四元组商店中,您可以使用FROM子句将查询限制为总数据库的这一子集。

    因此,使用这些子句就像对查询应用“缩放过滤器”:您指示引擎仅查看所有可用数据的特定子集。但是,如果您查询的数据集中未知该子集的标识符,则查询将不会返回任何结果。