我有一个存储在StarDog实例中的Person
图,以及一个Fuseki实例中存储的Address
es图。其中一个Person
实例与Address
具有hasAddress
关系。
我希望进行一个SPARQL查询,该查询仅返回所有拥有地址的Person
,以及他们居住的地址。此查询将发送到 StarDog 实例(具有Person
图的端点(。我正在使用的查询是
prefix testOnt: <http://www.example.org/test-ontology#>
SELECT ?person ?address
WHERE {
?person testOnt:hasAddress ?address
}
但是,这不会返回任何结果。
我正在使用以下TTL初始化StarDog数据库:
:SomeDude rdf:type owl:NamedIndividual , :Person;
:hasAddress :Address1.
其中Address1
在 TDB 中定义 在 Fuseki 一侧。
只是不知道当我向另一个图形进行查询时,我应该如何引用第二个图形。
感谢您的任何帮助,我可以澄清评论中的任何要点。
您只检索?person testOnt:hasAddress ?address
的查询应该适用于Stardog,但不会返回存储在Fuseki中的地址信息。如果此查询不起作用,请确保在数据和查询中使用的命名空间匹配。
为了从Stardog获取人员实例,并从Fuseki获取他们的地址,您将需要一个使用SERVICE
关键字的联合SPARQL查询。假设命名空间正确,则查询应如下所示:
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
}
}