有没有办法按创建日期对结果进行排序?
必须排序的示例查询:
SELECT * WHERE {?s ?p ?o} limit 200
您可以像在 SQL 中一样使用order by子句。请注意,根据 SPARQL 规范,ORDER BY
仅适用于SELECT
查询。您需要为要用于订购的属性创建绑定。
SELECT ?s ?p ?o
WHERE {?s ?p ?o .
?s <creationDatePredicate> ?date . }
ORDER BY DESC(?date)
LIMIT 200
更新:如果您尚未存储创建日期,则需要自己存储元数据。至于如何做到这一点,您有几个选择:
在您的默认图表中存储一个三元组,其中包含每个主题的创建日期。如果您要存储多个图表,这将很快变得笨拙,并且可能不是您想要的。
将每个图作为命名图存储在您的 RDF 三元组存储中。然后,您可以将有关每个图形的元数据存储在默认图形或一个“共享”命名图形中以用于创建时间。
将您的数据存储在命名图中,并使用命名图来存储创建时间元数据。
选项 #2 的 SPARQL 查询示例如下:
SELECT ?s ?p ?o
WHERE {
GRAPH ?g { ?s ?p ?o . }
?g <creationDatePredicate> ?date . }
ORDER BY DESC(?date)
LIMIT 200
既然您说过您实际上并未将创建日期存储在您的 RDF 中,那么执行此操作的任何可能机制都将特定于您正在使用的 SPARQL 实现以及支持 RDF 存储或其他任何东西。这很可能是不可能的。