按日期排序SPARQL结果

时间:2009-07-20 16:27:15

标签: sorting date sparql creation

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

必须进行分类的示例查询:

SELECT * WHERE {?s ?p ?o} limit 200

2 个答案:

答案 0 :(得分: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

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

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

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

  3. 将您的数据存储在指定的图表中,并使用命名图表来存储创建时元数据。

  4. 选项#2的SPARQL查询的一个例子是:

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

答案 1 :(得分:4)

由于您已经说过实际上并没有将创建日期存储在RDF中,因此任何可能的机制都将特定于您正在使用的SPARQL实现以及支持RDF存储或其他任何内容。这很可能是不可能的。

相关问题