Сортировка результатов SPARQL по дате - PullRequest
7 голосов
/ 20 июля 2009

Есть ли способ отсортировать результаты по дате создания?

Пример запроса, который должен быть сортирован:

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

Ответы [ 2 ]

17 голосов
/ 20 июля 2009

Вы можете использовать порядок по предложению , как в SQL. Обратите внимание, что согласно спецификации 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. Сохраните ваши данные в названном графике и используйте именованный график для хранения метаданных времени создания.

Примером запроса SPARQL для опции № 2 будет:

SELECT ?s ?p ?o
WHERE {
        GRAPH ?g { ?s ?p ?o . }
        ?g <creationDatePredicate> ?date . }
ORDER BY DESC(?date)
LIMIT 200
4 голосов
/ 21 июля 2009

Поскольку вы сказали, что на самом деле не храните дату создания в своем RDF, то любой возможный механизм для этого будет зависеть от используемой вами реализации SPARQL и резервного хранилища RDF или чего-либо другого. Вполне вероятно, что это просто невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...