Проблема с производительностью запроса SPARQL

Недавно я изучал запросы SPARQl, и они кажутся заметно медленными. Я также пытался запустить федеративный запрос с помощью Apache Jena Fuseki, это тоже было очень медленно, медленнее, чем запросы с использованием одной конечной точки SPARQL. Есть ли способ улучшить производительность запроса SPARQL? Некоторые предложения, которые я нашел в Интернете, заключались в том, чтобы использовать кешированные результаты запросов, что, я думаю, противоречит цели размещения данных в Интернете.

Вот пример федеративного запроса, который я пробовал. Я получил этот запрос от Подключение Linkedmdb и DBpedia через федеративные запросы SPARQL

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
PREFIX dcterms: <http://purl.org/dc/terms/>

SELECT ?film ?label ?subject WHERE {
SERVICE <http://data.linkedmdb.org/sparql> {
    ?film a movie:film .
    ?film rdfs:label ?label .
    ?film owl:sameAs ?dbpediaLink 
    FILTER(regex(str(?dbpediaLink), "dbpedia", "i"))
}
SERVICE <http://dbpedia.org/sparql> {
    ?dbpediaLink dcterms:subject ?subject
}
}
LIMIT 50

person RDangol    schedule 02.07.2017    source источник
comment
Пожалуйста, покажите ваш запрос.   -  person Stanislav Kralin    schedule 02.07.2017
comment
Ни в коем случае, вы запрашиваете LinkedMDB, размещенную на сервере D2R, и используете REGEX, который требует полного сканирования всех промежуточных результатов. Вы можете проверить производительность без REGEX, я уверен, что это будет намного быстрее. Но тогда вы также выполняете федеративный запрос локально...   -  person UninformedUser    schedule 02.07.2017
comment
Также есть локальные owl:sameAs ссылки на LinkedMDB в DBpedia.   -  person Stanislav Kralin    schedule 02.07.2017
comment
Я должен изменить свое мнение: я попробовал Отдельный запрос LinkedMDB - мгновенно возвращает результат. Это означает, что объединенный запрос, вероятно, является узким местом.   -  person UninformedUser    schedule 02.07.2017
comment
@AKSW Как ни странно, без REGEX запрос не работает. Каков наилучший способ выполнения федеративного запроса? Если не локально, то где/как мне их запускать? Кроме того, обычные запросы SPARQL тоже не очень быстрые.   -  person RDangol    schedule 02.07.2017
comment
Какой запрос не работает? Весь запрос или только один запрос LinkedMDB, выполняемый на конечной точке LinkedMDB?   -  person UninformedUser    schedule 02.07.2017
comment
@AKSW Весь запрос. Я попытался запустить запрос без фильтра. Пробовал локально, а также на игровой площадке SPARQL sparql-playground.sib.swiss   -  person RDangol    schedule 02.07.2017
comment
Это то, что я сказал в своем втором комментарии - это, вероятно, слишком медленно из-за федеративного движка.   -  person UninformedUser    schedule 02.07.2017
comment
@AKSW Не могли бы вы подсказать мне, как мне обрабатывать федеративный запрос? Я довольно новичок в этом деле, поэтому любая помощь будет высоко оценена.   -  person RDangol    schedule 02.07.2017
comment
С учетом LIMIT 50 (без ORDER BY и т. д.) вам не нужно извлекать все данные из LinkedMDB. Модификаторы решения не допускаются после предложений SERVICE, поэтому просто оберните вызов службы LinkedMDB в { SELECT ?film ?label ?dbpediaLink WHERE { ... } LIMIT 100 }.   -  person Stanislav Kralin    schedule 03.07.2017
comment
@StanislavKralin Спасибо за подсказку. Все еще медленно, но намного быстрее, чем предыдущий запрос.   -  person RDangol    schedule 03.07.2017
comment
@RDangol, немного бенчмаркинга. Время выполнения вашего запроса составляет около 25 секунд на моей локальной Jena Fuseki, столько же времени на моей локальной GraphDB и примерно в 5 раз быстрее на экземпляре GraphDB в AWS. Я думаю, что задержка в сети является основной проблемой.   -  person Stanislav Kralin    schedule 21.10.2017