В моей базе данных есть информация о документах, где каждый документ имеет категорию, например
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX: <http://example.com>
:doc1 :hasCategory :category1 .
:category1 rdfs:label "Law" .
Таких утверждений около 100к.
Выполнение простого запроса для получения количества документов по категориям:
SELECT ?category (count(distinct ?doc) as ?count) WHERE {
?doc :hasCategory ?category .
} GROUP BY ?category
запуск занимает около 0,1 с.
Но чтобы вернуть и метки категорий:
SELECT ?category ?label (count(distinct ?doc) as ?count) WHERE {
?doc :hasCategory ?category .
?category rdfs:label ?label .
} GROUP BY ?category ?label
выполнение этого запроса занимает более 7 секунд.
Почему разница такая большая и есть ли более оптимизированный запрос, который я могу использовать для получения меток?
SELECT ?category (sample(?label) as ?l) (count(distinct ?doc) as ?count) WHERE { ...} GROUP BY ?category
- person UninformedUser   schedule 14.06.2018sample
уменьшил время, затрачиваемое на секунду, но все равно около 6 секунд - person user888734   schedule 14.06.2018?doc :hasCategory ?category .
всего 133. Я бы подумал, что нужно найти ярлыки только для 133 категорий. - person user888734   schedule 14.06.2018