时态查询和非时态查询有什么区别

What is the difference between a temporal and a non-temporal query

我阅读了一些讨论时态和非时态查询的资源,特别是 SPARQL。这两种查询有什么区别?

temporal 一词的意思是 relative to time,来自拉丁词 tempus,它本身就是时间的意思。

因此,时间查询是一种考虑时间的查询。以您将重写为非时间

的示例问题为例

Who was (ever) married to John?

与其可能的时间版本(其中之一)对比

Who was John married to in 2010?

由于您没有参考讨论时态查询的特定文档,我只能给出一个相当宽泛的答案:

关于如何在 RDF 中对时间受限的事实进行建模的方法有很多。由于RDF本身只关心triples/quads(subject, predicate, object(, graph)),许多简单的映射方法生成的三元组在映射时为真,但很快就会过时和错误。一个例子是

dbpedia:Barack_Obama dbpedia-owl:office "President of the United States" .

虽然目前这是正确的,但在 2017 年很可能是错误的,因为他已经进入第二个任期。尽管如此,如上所述,它总是正确的,这会导致很多并发症。

What is the difference between these two kinds of queries?

一般来说,这可以通过查看您的 SPARQL 查询来回答。如果它以某种方式要求在某个时间/一段时间内有效的语句,那么它就是一个 "temporal" 查询。如果它不包含任何时间信息,则通常不包含(尽管您的端点可能会隐式添加 "only facts valid now" 约束)。

如何包含此类计时信息取决于您的 SPARQL 端点以及您查询的数据的建模方式。

一些建模方法:

合格的关系模式

一种对时间限制语句进行建模的方法(即 actually used by DBpedia) is by using a qualified relation pattern / "role model":

dbpedia:Barack_Obama dbpedia-owl:termPeriod dbpedia:Barack_Obama__1 .
dbpedia:Barack_Obama__1 dbpedia-owl:activeYearsStartDate "2009-01-20"^^xsd:date .
dbpedia:Barack_Obama__1 dbpedia-owl:office "President of the United States" .
...

具体化

另一种方法是使用具体化来对如下语句进行陈述:

ex:Barack_Obama_presidency_stmt rdf:type rdf:Statement .
ex:Barack_Obama_presidency_stmt rdf:subject dbpedia:Barack_Obama .
ex:Barack_Obama_presidency_stmt rdf:predicate dbpedia-owl:office .
ex:Barack_Obama_presidency_stmt rdf:object "President of the United States" .
ex:Barack_Obama_presidency_stmt ex:activeYearsStartDate "2009-01-20"^^xsd:date .

整个图的出处时间

另一种方法是为端点上可访问的每个图提供出处信息,例如与 http://www.w3.org/TR/prov-o/#generatedAtTime 。在这些情况下,您可以在 SPARQL 查询中使用此类信息来请求在给定时间范围内生成的图形,然后与它们的三元组进行匹配。

时间 SPARQL

最后但同样重要的是,有相当多的方法试图在 SPARQL 语言本身中引入特殊语法或标准化此类时态查询,例如:

但是正如这个答案所示,这样的标准化还远未被普遍接受/实施。

结论

由于缺乏标准化及其实际接受度,"temporal SPARQL" 查询需要考虑查询数据如何对此类时态信息建模。

这是一个社区 wiki 答案,欢迎随时扩展。