【问题标题】:Sorting SPARQL results by date按日期对 SPARQL 结果排序
【发布时间】:2009-07-20 16:27:14
【问题描述】:

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

必须排序的查询示例:

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

【问题讨论】:

    标签: sorting date sparql creation


    【解决方案1】:

    您可以像在 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
    

    【讨论】:

    • 没有这样的谓词:(
    • @Sirakov 对,您必须填写适合您的数据集的任何谓词。
    • 我的意思是,我的数据集中没有一个对象,其中包含日期...相应地没有这样的谓词:)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多