9

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

必须排序的示例查询:

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

2 回答 2

21

您可以像在 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. 将您的数据存储在命名图中,并使用命名图来存储创建时间元数据。

选项 #2 的 SPARQL 查询示例如下:

SELECT ?s ?p ?o
WHERE {
        GRAPH ?g { ?s ?p ?o . }
        ?g <creationDatePredicate> ?date . }
ORDER BY DESC(?date)
LIMIT 200
于 2009-07-20T16:50:34.540 回答
4

既然您说过您实际上并未将创建日期存储在您的 RDF 中,那么执行此操作的任何可能机制都将特定于您正在使用的 SPARQL 实现以及支持 RDF 存储或其他任何东西。这很可能是不可能的。

于 2009-07-21T12:32:14.910 回答