我想查询数据集,例如FOAF和DBPedia。目的是提出一些非常简单的要求,例如“马格利特画的哪些画作?”,“美国演员扮演的美国演员是谁?”......
所以我编写了查询,并使用DBpedia snorql来运行它们。然后,由于其他一些原因,我尝试Live DBpedia和OpenLinks demo.openlinksw.com来发现根据端点结果不同。
以下是两个例子:
1)回答DBpedia SnorQL,但不是Live DBpedia,也不是 OpenLinks demo.openlinksw.com
#works of Magritte
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT * WHERE {
?person a dbo:Artist .
?person foaf:surname "Magritte"@en .
?work dbo:author ?person .
OPTIONAL {?work dbp:year ?year ; dbo:museum ?museum .}
}
ORDER BY ?year
2)回答Live DBpedia,但没有DBpedia SnorQL,也没有 OpenLinks demo.openlinksw.com
SELECT ?actor ?movie ?director ?movie_date
WHERE {
?m dc:subject <http://dbpedia.org/resource/Category:American_films> .
?m rdfs:label ?movie .
FILTER(LANG(?movie) = "en")
?m dbp:released ?movie_date .
FILTER(DATATYPE(?movie_date) = xsd:date)
?m dbp:starring ?a .
?a rdfs:label ?actor .
FILTER(LANG(?actor) = "en")
?m dbp:director ?d .
?d rdfs:label ?director .
FILTER(LANG(?director) = "en")
}
LIMIT 1000
我认为端点只是一个查询数据集的工具,无论它是什么。所以我认为你可以从dbpedia,live dbpedia或 openlinks demo.openlinksw.com查询DBPedia和FOAF ..
我读到实际上不同的端点使用不同的数据集,但我无法理解为什么,因为您提供了特定的URI。
为什么同一查询根据SPARQL端点返回不同的结果?
答案 0 :(得分:1)
非常类似于SQL DBMS的不同实例(例如[没有特定的顺序且没有代言的含义] OpenLink Virtuoso,Oracle,MySQL,Informix,SQL Server,Sybase,DB2,PostgreSQL,Ingres,Progress OpenEdge等等)保存不同的数据,RDF RDBMS的不同实例(读取:SPARQL端点),也称为Quadstores或Triplestores(例如[无特定顺序且不含有认可] OpenLink Virtuoso,AllegroGraph,Stardog,Neo4J,MarkLogic等等其他人持有不同的数据。
你不能通过DBMS B中的Fred数据库在DBMS A中查询Joe的数据库 - 除非有人已经告诉Fred的数据库和/或DBMS有关Joe的数据库和/或DBMS(例如,VDBMS功能),或者在查询中包含有关Joe的数据库和/或DBMS的一些信息(例如,SPARQL Federation)等。
(A&#34; DBMS&#34;是一个数据库管理系统,如上所列.A&#34;数据库&#34;是一组数据,通常存储在[大]文件中,这是由DBMS管理。)
与您的问题有关的特别注意事项 -