SPARQL 查询链接在两个独立图形之间的数据

SPARQL Querying Data Linked Between Two Separate Graphs

我在 StarDog 实例中存储了 Persons 的图形,在 Fuseki 实例中存储了 Addresses 的图形。 Person 个实例之一与 Address.

hasAddress 关系

我想做一个 SPARQL 查询,简单地 returns 所有有地址的 Person 以及他们居住的地址。此查询将发送到 StarDog 实例(具有 Person 图的端点)。我使用的查询是

prefix testOnt: <http://www.example.org/test-ontology#>

SELECT ?person ?address 
WHERE {
  ?person testOnt:hasAddress ?address
}

但是,这个returns没有结果。

我正在使用这段 TTL 初始化 StarDog 数据库:

:SomeDude rdf:type owl:NamedIndividual , :Person;
    :hasAddress :Address1.

其中 Address1 在 Fuseki 端的 TDB 中定义。

我只是不知道当我向另一个图表查询时我应该如何引用第二个图表。

感谢您的帮助,我可以在评论中澄清任何要点。

您仅检索 ?person testOnt:hasAddress ?address 的查询应该适用于 Stardog,但不会 return 处理存储在 Fuseki 中的地址信息。如果此查询不起作用,请确保您在数据中使用的名称空间与查询匹配。

为了从 Stardog 获取人物实例并从 Fuseki 获取他们的地址,您需要一个使用 SERVICE 关键字的 federated SPARQL query。假设名称空间正确,您的查询应如下所示:

prefix testOnt: <http://www.example.org/test-ontology#>

SELECT ?person ?address 
WHERE {
  ?person testOnt:hasAddress ?address
  SERVICE <http://fuseki/location> {
     ?address ?p ?o     # use a more specific BGP here if necessary
  }
}