admin

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

sql

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


阅读 156

收藏
2021-06-07

共1个答案

admin

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

关于如何在RDF中建模时间受约束的事实,有很多方法。由于RDF本身仅涉及三元组/四元组(主题,谓词,对象(图)),因此许多简单的映射方法会生成三元组,在映射时是正确的,但容易过时且很快出错。一个例子是

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

尽管目前确实如此,但由于他已经第二任期了,所以在2017年很可能会错。然而,如上所述,这将永远是正确的,这会导致很多并发症。

这两种查询有什么区别?

通常,可以通过查看您的SPARQL查询来回答。如果它以某种方式要求一次/在一段时间内有效的语句,则它是一个“时间”查询。如果它不包含任何时序信息,则通常不会(尽管您的端点可能会隐式添加“仅现在有效的事实”约束)。

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

一些建模方法:

合格的关系模式

一种建模时间受限语句(实际上由DBpedia使用)的方法是使用限定的关系模式/“角色模型”:

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/#genicAtTime。在这些情况下,您可以在SPARQL查询中使用此类信息来查询在给定时间范围内生成的图形,然后将其与三元组匹配。

时间性SPARQL

最后但并非最不重要的一点是,有很多方法试图引入特殊语法或使用SPARQL语言本身来标准化此类时间查询,例如:

但是,正如该答案所表明的那样,这种标准化还远远没有被普遍接受/实施。

结论

由于缺乏标准化及其实际接受性,“时间SPARQL”查询需要考虑到查询的数据如何建模此类时间信息。

这是社区Wiki的答案,随时可以扩展。

2021-06-07