时间和非时间查询之间有什么区别

时间:2015-06-04 08:03:57

标签: sql database sparql

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

2 个答案:

答案 0 :(得分:1)

“时间”一词意味着relative to time,来自拉丁语tempus,它本身就意味着时间。

因此,时间查询是需要花费时间的查询。以一个例子为例,您将重写为非时间

Who was (ever) married to John?

与其可能的时间版本(其中一个)相比

Who was John married to in 2010?

答案 1 :(得分:1)

由于您没有提及涉及时间查询的特定文档,我只能给出一个非常广泛的答案:

关于如何在RDF中对时间上受约束的事实进行建模,有很多方法。由于RDF本身仅涉及三元组/四元组(主语,谓语,对象(,图形)),许多简单的映射方法会生成三元组,这在映射时是正确的,但很快就会过时和错误。一个例子是

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

虽然目前情况属实,但2017年很可能是错误的,因为他已经在第二个任期内了。然而,如上所述,这将永远是真的,这会导致很多并发症。

  

这两种查询有什么区别?

通常,可以通过查看SPARQL查询来回答这个问题。如果它以某种方式要求在一段时间/一段时间内有效的陈述,那么它是一个"时间"查询。如果它不包含任何定时信息,则通常不会(尽管您的端点可能会隐式添加"只有现在有效的事实"约束)。

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

一些建模方法:

合格关系模式

模拟时间有限语句(即actually used by DBpedia)的一种方法是使用qualified relation pattern /"角色模型":

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查询中使用此类信息来请求在给定时间范围内生成的图形,然后匹配它们的三元组。

Temporal SPARQL

最后但并非最不重要的是,有一些方法尝试在SPARQL语言本身中引入特殊语法或标准化此类时间查询,例如:

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

结论

由于缺乏标准化及其实际接受度,"时间SPARQL"查询需要考虑查询数据如何模拟这种时间信息。

这是社区维基的答案,随意扩展。