按日期排序SPARQL结果

cup*_*kob 7 sorting date creation sparql

有没有办法按创建日期对结果进行排序?

示例查询必须是sortet:

SELECT * WHERE {?s ?p ?o} limit 200
Run Code Online (Sandbox Code Playgroud)

Phi*_*l M 17

您可以像在SQL中一样使用order by子句.请注意,根据SPARQL规范,ORDER BY仅适用于SELECT查询.您需要为要用于订购的属性创建绑定.

SELECT ?s ?p ?o
WHERE {?s ?p ?o .
       ?s <creationDatePredicate> ?date . }
ORDER BY DESC(?date)
LIMIT 200
Run Code Online (Sandbox Code Playgroud)

更新:如果您尚未存储创建日期,则需要自己存储元数据.至于如何做到这一点,你有几个选择:

  1. 在默认图表中存储三元组,其中包含每个主题的创建日期.如果你要存储多个图表,这将很快变得笨拙,可能不是你想要的.

  2. 将每个图形存储为RDF三元组存储中的命名图形.然后,您可以在默认图表中或在一个"共享"命名图中存储有关每个图的元数据,以便创建时间.

  3. 将数据存储在命名图中,并使用命名图存储创建时元数据.

选项#2的SPARQL查询的一个示例是:

SELECT ?s ?p ?o
WHERE {
        GRAPH ?g { ?s ?p ?o . }
        ?g <creationDatePredicate> ?date . }
ORDER BY DESC(?date)
LIMIT 200
Run Code Online (Sandbox Code Playgroud)