Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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 通过SNORQL和服务查询在DBpedia中的结果顺序不同_Sparql_Dbpedia_Linked Data - Fatal编程技术网

Sparql 通过SNORQL和服务查询在DBpedia中的结果顺序不同

Sparql 通过SNORQL和服务查询在DBpedia中的结果顺序不同,sparql,dbpedia,linked-data,Sparql,Dbpedia,Linked Data,我试图从DBpedia检索一些关于电影的数据。这是我的疑问: PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax

我试图从DBpedia检索一些关于电影的数据。这是我的疑问:

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX : <http://dbpedia.org/resource/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX dbpedia: <http://dbpedia.org/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX onto: <http://dbpedia.org/ontology/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT *
{{SELECT *

WHERE {
SERVICE<http://dbpedia.org/sparql>{
?movie dcterms:subject <http://dbpedia.org/resource/Category:American_films> ;
        a onto:Film ;
        rdfs:label ?title ;
        dbpedia2:gross ?revenue .

?movie onto:starring ?actorUri .
?actorUri rdfs:label ?actor .

OPTIONAL {
  ?movie onto:imdbId ?imdbId .
}
BIND(xsd:integer(?revenue) as ?intRevenue) .
FILTER ((datatype(?revenue) = 'http://dbpedia.org/datatype/usDollar') && (LANGMATCHES(LANG(?title), 'en')) && (LANGMATCHES(LANG(?actor), 'en'))) .
}
}
}}
ORDER BY DESC (?intRevenue)
LIMIT 40000
OFFSET 0
前缀owl:
前缀xsd:
前缀rdfs:
前缀rdf:
前缀foaf:
前缀dc:
前缀:
前缀db2:
前缀dbpedia:
前缀skos:
前缀到:
前缀dcterms:
前缀foaf:
挑选*
{{选择*
在哪里{
服务{
?电影术语:主题;
a:电影;
rdfs:标签?标题;
DB2:总收入。
?电影:主演?阿克托鲁里。
?actorUri rdfs:标签?演员。
可选的{
?电影到:imdbId?imdbId。
}
绑定(xsd:integer(?revenue)为?intRevenue)。
过滤器((数据类型(?收入)='http://dbpedia.org/datatype/usDollar和&(LANGMATCHES(LANG(?title),'en'))和&(LANGMATCHES(LANG(?actor),'en'))。
}
}
}}
按描述订购(?intRevenue)
限额40000
偏移量0
http://dbpedia.org/snorql/
(不带SERVICE关键字)返回正确的结果。然而,从第三方的三重奏中这样做并不会产生相同的顺序(例如:霍比特人和指环王不见了)


要获得相同的结果,我需要在查询中更改哪些内容?

克服此特定限制的最佳方法是使用,您可以在其上设置自己的限制(包括无限制),然后将其用作主要或远程数据存储和/或查询引擎


(obdisclaimeration:提供、生产、和雇用我。)

DBpedia的默认限制为10000,并且您的order-BY没有传播到服务查询,因此,您确实可以得到不同的结果。有没有办法克服这个限制?我不这么认为。任何远程查询,当在远程端点附近使用服务时,基本上都会受到远程端点返回的最大结果集的影响。因此,联邦查询引擎的任务是处理这个问题,但我不知道有任何实现。哪种API分别是。您使用三重存储吗?克服此限制的最佳方法是使用三重存储,您可以在三重存储上设置自己的限制(包括无限制),然后将其用作主数据存储或远程数据存储和/或查询引擎。可以将其作为解决方案