Sparql 为什么不同的端点不查询相同的数据集?

Sparql 为什么不同的端点不查询相同的数据集?,sparql,endpoint,Sparql,Endpoint,我想查询诸如FOAF和DBPedia之类的数据集。其目的是运行非常简单的请求,例如“马格里特画了哪些画?”,“哪些是在美国电影中扮演的美国演员?” 因此,我编写了我的查询,并用于运行它们。然后,出于其他一些原因,我试图发现结果因终点不同而不同 以下是两个示例: 1使用DBpedia SnorQL回答问题,但既不是实时DBpedia也不是OpenLinks demo.openlinksw.com #works of Magritte PREFIX dbo: <http://dbpedia.o

我想查询诸如FOAF和DBPedia之类的数据集。其目的是运行非常简单的请求,例如“马格里特画了哪些画?”,“哪些是在美国电影中扮演的美国演员?”

因此,我编写了我的查询,并用于运行它们。然后,出于其他一些原因,我试图发现结果因终点不同而不同

以下是两个示例:

1使用DBpedia SnorQL回答问题,但既不是实时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使用实时DBpedia回答问题,但DBpedia SnorQL和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
美国演员

我认为端点只是一个查询数据集的工具。所以我认为您可以从DBPedia、live DBPedia或openlinks demo.openlinksw.com查询DBPedia和FOAF

我读到实际上不同的端点使用不同的数据集,但我不知道为什么,因为您提供了特定的URI来访问


为什么同一个查询会根据SPARQL端点返回不同的结果?

很像SQL DBMS的不同实例,例如[没有特定的顺序,也没有背书的含义]OpenLink Virtuoso、Oracle、MySQL、Informix、SQL Server、Sybase、DB2、PostgreSQL、Ingres、Progress OpenEdge和许多其他拥有不同数据的实例,不同的实例是:RDF RDBMS的SPARQL端点,也称为四元存储或三元存储,例如[没有特定顺序,也没有背书的含义]OpenLink Virtuoso、AllegroGraph、Stardog、Neo4J、MarkLogic和许多其他具有不同数据的实例

您不能通过DBMS B中的Fred数据库查询DBMS A中Joe的数据库-除非有人已经告诉Fred的数据库和/或DBMS关于Joe的数据库和/或DBMS,例如VDBMS功能,或者您在查询中包含一些关于Joe的数据库和/或DBMS的信息,例如SPARQL联邦等

DBMS是一种数据库管理系统,如上面所列。数据库是数据的集合,通常存储在[大型]文档中,由DBMS管理

关于你的问题,特别值得注意的是-

是一个本体,一个词汇表,用于描述实体。 是一个数据集,随着时间的推移,它有不同的版本,一个项目,一个组织,还有各种其他的东西--文字标识符的模糊性!。 not openlinks是一家生产与数据相关的软件和服务的公司,它在web上提供许多实时端点,包括。声明:他也是我的雇主。
老实说,我不明白这个问题……或者更确切地说,我不明白为什么您不明白1 SPARQL端点只提供对加载的数据的访问,而2个不同的公共端点可能确实包含不同的数据。DBpedia基于从Wikipedia的,维基百科的数据随着时间的推移而变化——人们称之为动态数据。现在的问题是如何使RDF数据保持最新?最明显的方法是,周期性地进行负载转储,事实上,这很耗时,而且不可能每秒钟都完成。因此,数据不同步。另一个选项是只应用变更集,即差异。这只由dbpedialive完成,确实有一些延迟。您提到的另外两项服务上一次加载了一些转储,是在2017年底发布的2016-10版本。当然,这些数据比实时数据集要旧得多。此外,如果您转到DBpedia数据集页面,您可以看到有许多附加数据,这或多或少是可选的。并非每个公共服务都加载了所有内容,因此,这是另一个不同之处。此外,第二个查询不起作用,因为无论出于何种原因,人们往往会忽略名称空间声明。dc:为您保留http://purl.org/dc/elements/1.1/ 但主题的正确名称空间是http://purl.org/dc/terms/ 实际上,它的前缀是dct:。属性也是一样,应该是dbo:starring和dbo:director。非常感谢你的回答,现在清楚多了!TallTed和AKSW评论都让我了解了什么是真正的端点,以及RDBMS本身的区别。还感谢您提供的其他详细信息:一个更一般的问题:我不知道如何知道哪个名称空间是正确的名称空间。例如,发布的是dbp,但主演和导演都是dbo,因此dbp也工作得很好。每次我检查名称空间时,它都很长。是否有规则知道使用哪种方法,或者是根据经验?@J.dellhave我认为您后面的评论就是我们所说的新问题,应该这样提出。