Database SPARQL查询中的连接语义端点

Database SPARQL查询中的连接语义端点,database,semantic-web,sparql,Database,Semantic Web,Sparql,我正在尝试提出一个使用bibleontology和dbpedia语义数据库的请求: PREFIX bibleontology: <http://bibleontology.com/resource/> PREFIX dbo: <http://dbpedia.org/ontology/> SELECT ?art ?abstract WHERE { bibleontology:Ezra owl:sameAs ?art . ?art dbo:abstract ?abstra

我正在尝试提出一个使用bibleontology和dbpedia语义数据库的请求:

PREFIX bibleontology: <http://bibleontology.com/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>

SELECT ?art ?abstract WHERE { 
bibleontology:Ezra owl:sameAs ?art .
?art dbo:abstract ?abstract .
}
前缀bibleontology:
前缀dbo:
选择?艺术?摘要,其中{
圣经本体论:以斯拉猫头鹰:萨米亚?艺术。
?艺术dbo:抽象?抽象。
}
这种请求既不适用于bibleontology SPARQL端点,也不适用于dbpedia SPARQL端点。请求的各个部分在每个SPARQL端点上都可以正常工作


有可能以这种方式连接数据库吗?

该查询在dbpedia或bibleontology上都不起作用,因为信息存储在两个不同的数据库中,当您运行SPARQL查询时,基本上会命中其中一个。这意味着您必须从这两个数据库下载数据,将它们放在本地三元组存储中,以便能够运行如您所示的SPARQL查询。另一个选择是使用一个库来为您实现这一点

将遵循SPARQL查询中的所有URI,并从每个资源下载RDF数据,以便它可以加入查询中出现的所有三重模式并给出答案

您可以对查询进行一些小的更改:

PREFIX bibleontology: <http://bibleontology.com/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dbpedia: <http://dbpedia.org/ontology/> 

SELECT * WHERE { 
bibleontology:Ezra owl:sameAs ?art .
?art dbpedia:abstract ?abstract .
FILTER langMatches( lang(?abstract), "EN" )
} 
语义Web客户端库文档中解释了所有命令参数

您将获得以下输出:

| ?art                               | ?abstract
| <http://dbpedia.org/resource/Ezra> | "Ezra is a major .... "@en |

Successfully dereferenced URIs: 

http://www.w3.org/2002/07/owl
http://bibleontology.com/data/Ezra
http://dbpedia.org/data/Ezra.xml
http://dbpedia.org/data3/abstract.n3
|艺术|摘要
||“以斯拉是个少校……”@en|
已成功取消引用URI:
http://www.w3.org/2002/07/owl
http://bibleontology.com/data/Ezra
http://dbpedia.org/data/Ezra.xml
http://dbpedia.org/data3/abstract.n3

为了简单起见,我省略了dbpedia中的长摘要。“成功取消引用的URI”列表是库为回答您的查询而检索的文档。在库的文档中,您将看到如何用Java编程运行查询。

所有其他答案都是正确的,因为数据没有组合在一个SPARQL端点中,所以无法按原样进行查询。如果其中一个端点支持SPARQL 1.1联合查询,那么您可以使用
服务
关键字,如下所示:

PREFIX bibleontology: <http://bibleontology.com/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>

SELECT ?art ?abstract
WHERE 
{ 
  bibleontology:Ezra owl:sameAs ?art .
  SERVICE <http://dbpedia.org/sparql?default-graph-uri=http://dbpedia.org> { ?art dbo:abstract ?abstract . }
}

如果您的本地工具/端点支持
服务
,那么它将能够将查询的相关部分发送到相关端点,并在本地进行连接,希望能够返回您所需的结果

我是bibleontology.com的工程师

bibleontology.com采用SPARQL1.1

PREFIX bibleontology: <http://bibleontology.com/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?art ?abstract
WHERE {
SERVICE <http://bibleontology.com/sparql/> { bibleontology:Ezra owl:sameAs ?art . }
SERVICE <http://dbpedia.org/sparql> { ?art dbo:abstract ?abstract . } }
前缀bibleontology:
前缀dbo:
前缀owl:
选择?艺术?摘要
在哪里{
服务{bibleontology:Ezra owl:sameAs?art.}
服务{?art dbo:抽象?抽象}

当模型未合并时,如何执行交叉查询。可能您可以通过合并两个rdf存储(模型)自己执行数据整理,但实际上,您无法执行交叉查询。因此rdf提供了到描述模型的位置的链接,但从未提供到数据本身的链接?我认为语义网的目标之一是允许在各种数据集上进行分布式查询?也许我不理解注释,就像在合并的模型中一样。bibleontology的sameAs条目:Ezra提供了一个指向dbo条目的链接。这就是我认为可以加入它们的原因。正如我在回答中所解释的,您可以通过使用语义Web客户端库来实现这一点,本质上,该库为您缓存部分数据库,以便回答您的SPARQL查询。我希望这就是您想要的。看看我的答案-如果您的端点支持SPARQL 1.1
SERVICE
关键字,或者您有一个本地端点/工具支持SPARQL 1.1
关键字,那么您可以使用它来实现您的目标。这看起来非常有趣,但对于我尝试的两个SPARQL端点中的任何一个都不起作用。我将继续尝试其他端点。如何安装本地端点?是的,不幸的是,上面提到的是SPARQL 1.1,所以没有被广泛采用。yetI我刚刚进入SPARQL等等。你能给我一些支持SPARQL 1.1的本地端点吗?看看或者(使用内存中的连接)-免责声明-我是这两个工具的开发人员这两个工具都很有趣,尽管这个工具非常慢。出于某种原因,此工具似乎只返回一个结果,即使请求应该返回多个结果,例如
前缀bo:PREFIX bop:PREFIX dbo:PREFIX owl:PREFIX dbpedia:SELECT DISTINCT?Parent?Abstract,其中{bo:Moses bop:hasParents?Parent。?Parent owl:sameAs?art。?art dbpedia:Abstract?Abstract.FILTER(LANG(?Abstract)=“en”)}
实际上,如果我只搜索父项,它会给我一个包含两个条目的列表,但是如果我搜索摘要,它只列出第一个父项的摘要,而不是第二个父项的摘要。
PREFIX bibleontology: <http://bibleontology.com/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>

SELECT ?art ?abstract
WHERE 
{ 
  SERVICE <http://bibleontology.com/sparql> { bibleontology:Ezra owl:sameAs ?art . }
  SERVICE <http://dbpedia.org/sparql?default-graph-uri=http://dbpedia.org> { ?art dbo:abstract ?abstract . }
}
PREFIX bibleontology: <http://bibleontology.com/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?art ?abstract
WHERE {
SERVICE <http://bibleontology.com/sparql/> { bibleontology:Ezra owl:sameAs ?art . }
SERVICE <http://dbpedia.org/sparql> { ?art dbo:abstract ?abstract . } }