Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SPARQL查询从wikidata获取数据无效_Sparql_Jena_Wikidata_Fuseki_Linked Data - Fatal编程技术网

SPARQL查询从wikidata获取数据无效

SPARQL查询从wikidata获取数据无效,sparql,jena,wikidata,fuseki,linked-data,Sparql,Jena,Wikidata,Fuseki,Linked Data,我试图通过从本地Jena Fuseki实例运行SPARQL查询,从wikidata获取一些图像链接。我想将其与本地图形中的数据合并。不幸的是,查询没有传递任何数据,而是在没有任何错误消息的情况下不断运行 sparql查询: PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX wd: <http://www.wikidata.org/entity/> PREFIX wdt: <http://www.wikidata.

我试图通过从本地Jena Fuseki实例运行SPARQL查询,从wikidata获取一些图像链接。我想将其与本地图形中的数据合并。不幸的是,查询没有传递任何数据,而是在没有任何错误消息的情况下不断运行

sparql查询:

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT ?name ?image WHERE { 
  ?s foaf:name ?name.
  ?s owl:sameAs ?wikidata_link.
  FILTER regex(str(?wikidata_link), "wikidata").
  SERVICE <https://query.wikidata.org/sparql> {
    ?wikidata_link wdt:P18 ?image.
  }

} LIMIT 10
前缀owl:
前缀wd:
前缀wdt:
前缀foaf:
选择?名称?图像,其中{
s foaf:名称?名称。
s猫头鹰:sameAs?维基数据链接。
过滤正则表达式(str(?wikidata_链接),“wikidata”)。
服务{
?维基数据链接wdt:P18?图片。
}
}限制10
Jena Fuseki服务器上本地图形中的测试数据:

@base <http://dmt.de/pages> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix dbp: <http://dbpedia.org/resource/> .
@prefix wd: <https://www.wikidata.org/entity/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

<#john-cage>
    a foaf:Person ;
    foaf:name "John Cage";
    owl:sameAs dbp:John_Cage, wd:Q180727.

<#karlheinz-stockhausen>
    a foaf:Person ;
    foaf:name "Karlheinz Stockhausen";
    owl:sameAs dbp:Karlheinz_Stockhausen, wd:Q154556.

<#arnold-schoenberg>
    a foaf:Person;
    foaf:name "Arnold Schönberg";
    owl:sameAs dbp:Arnold_Schoenberg, wd:Q154770.

@base。
@前缀rdf:。
@前缀rdfs:。
@前缀foaf:。
@前缀dbp:。
@前缀wd:。
@前缀owl:。
foaf:人;
foaf:名称“约翰·凯奇”;
猫头鹰:sameAs dbp:John_Cage,wd:Q180727。
foaf:人;
foaf:名称“Karlheinz Stockhausen”;
owl:sameAs dbp:Karlheinz_Stockhausen,wd:Q154556。
foaf:人;
foaf:名称“Arnold Schönberg”;
owl:sameAs dbp:Arnold_Schoenberg,wd:Q154770。
我尝试了一个类似的dbpedia数据查询,它运行得非常好

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dbp: <http://dbpedia.org/resource/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dbo: <http://dbpedia.org/ontology/>

SELECT ?name ?dbpedia_link ?birthplace WHERE { 
  ?s foaf:name ?name.
  ?s owl:sameAs ?dbpedia_link.
  FILTER regex(str(?dbpedia_link),"dbpedia.org").
  SERVICE <https://dbpedia.org/sparql> {
    ?dbpedia_link dbo:birthPlace ?birthplace.
  }

} LIMIT 10
前缀owl:
前缀dbp:
前缀foaf:
前缀dbo:
选择?名称?数据库链接?出生地{
s foaf:名称?名称。
s猫头鹰:sameAs?dbpedia_链接。
过滤正则表达式(str(?dbpedia_链接),“dbpedia.org”)。
服务{
dbpedia_link dbo:出生地?出生地。
}
}限制10

有什么想法吗?提前谢谢

主要的问题是您的查询。首先对服务进行评估,即它只检索与内部模式匹配的所有绑定。嗯,至少对Fuseki来说,我认为服务是首先评估的。SPARQL 1.1规范在这里很模糊,唯一的目标是返回正确的结果。这是连接后与您的外部三重模式。Wikidata的绑定数量为3186880。对于DBpedia,它之所以有效,可能是因为它的默认限制是每个请求10000个。这也意味着您的查询可能不完整,它将返回一组(随机)10000个绑定,这些绑定与DBpedia中的一些出生地相匹配。要注意DBpedia端点,10000的限制肯定是存在的,以确保所有使用公共服务thx作为提示的人都能公平使用!如何解决这个问题有什么建议吗?查询现在运行了一个多小时,没有任何答案。这对我来说是不可用的:(我想这只是必须获取的数据量?我尝试使用Jena CLI工具,即
bin/rsparql--servicehttps://query.wikidata.org/sparql “前缀wdt:选择*{?wikidata_link wdt:P18?image}”>/tmp/res.sparql
只运行Wikidata部分。这会导致默认内存设置的java.lang.OutOfMemory错误。确实,必须解析和处理一个巨大的JSON对象。Andy可能知道解决此问题的方法。事实上,增加java堆有助于长时间运行,这可能是由于非常接近bein时GC循环造成的g内存不足。更改堆大小可以对此进行测试。主要问题是一般情况下的查询。首先计算服务,即它只检索与内部模式匹配的所有绑定。至少对于Fuseki,我认为服务是首先计算的。SPARQL 1.1规范在这里很模糊,唯一的目标是返回正确的结果。这是连接的然后使用外部三重模式。对于Wikidata,绑定的数量是3186880。对于DBpedia,它可以工作,可能是因为它的默认限制是每个请求10000个。这也意味着您的查询可能不完整,它突出返回一个(随机)一组10000个绑定,与DBpedia中的一些出生地匹配。可能没有回答您的问题,但这是我从联合查询中学到的。请注意DBpedia端点,10000个绑定的限制肯定是为了确保所有使用公共服务的人都能公平使用!有什么建议如何解决这个问题吗em?查询现在运行了一个多小时,没有任何答案。这对我来说不可用:(我想这只是必须获取的数据量?我尝试使用Jena CLI工具,即
bin/rsparql--servicehttps://query.wikidata.org/sparql “前缀wdt:选择*{?wikidata_link wdt:P18?image}”>/tmp/res.sparql
只运行Wikidata部分。这会导致默认内存设置的java.lang.OutOfMemory错误。确实,必须解析和处理一个巨大的JSON对象。Andy可能知道解决此问题的方法。事实上,增加java堆有助于长时间运行,这可能是由于非常接近bein时GC循环造成的内存不足。更改堆大小可以测试这一点。