Есть ли способ отсортировать результаты по дате создания?
Пример запроса, который необходимо отсортировать:
SELECT * WHERE {?s ?p ?o} limit 200
Есть ли способ отсортировать результаты по дате создания?
Пример запроса, который необходимо отсортировать:
SELECT * WHERE {?s ?p ?o} limit 200
Вы можете использовать предложение order by точно так же, как и в SQL. Обратите внимание, что согласно спецификации SPARQL ORDER BY
применяется только к SELECT
запросам. Вам нужно будет создать привязку для свойства, которое вы хотите использовать для заказа.
SELECT ?s ?p ?o
WHERE {?s ?p ?o .
?s <creationDatePredicate> ?date . }
ORDER BY DESC(?date)
LIMIT 200
Обновление. Если вы еще не сохранили дату создания, вам нужно будет сохранить метаданные самостоятельно. Что касается того, как это сделать, у вас есть несколько вариантов:
Сохраните тройку в диаграмме по умолчанию, у которой есть дата создания для каждого предмета. Если вы храните более одного графика, это очень быстро станет громоздким и, вероятно, это не то, что вам нужно.
Сохраните каждый график как именованный график в тройном хранилище RDF. Затем вы можете сохранить метаданные о каждом графике в графике по умолчанию или в одном «общем» именованном графике для времени создания.
Храните данные в именованном графике и используйте именованный график для хранения метаданных времени создания.
Примером запроса SPARQL варианта № 2 может быть:
SELECT ?s ?p ?o
WHERE {
GRAPH ?g { ?s ?p ?o . }
?g <creationDatePredicate> ?date . }
ORDER BY DESC(?date)
LIMIT 200
Поскольку вы сказали, что на самом деле не сохраняете дату создания в своем RDF, любой возможный механизм для этого будет зависеть от используемой вами реализации SPARQL и резервного хранилища RDF или чего-то еще. Вполне вероятно, что это просто невозможно.