我已经阅读了一些有关时态和非时态查询的资源,特别是有关SPARQL的资源。这两种查询有什么区别?
由于您没有参考讨论时态查询的特定文档,因此我只能给出一个相当广泛的答案:
关于如何在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”查询需要考虑到查询的数据如何建模此类时间信息。
这是社区Wiki的答案,随时可以扩展。