Почему моя конечная точка SPARQL слишком медленная?

Я использовал сервер D2R для преобразования моей базы данных, которая содержит примерно 1,3 миллиона записей. При преобразовании все прошло нормально, но скорость конечной точки SPARQL очень низкая, и в большинстве случаев она заканчивается 500 неизвестной ошибкой. Ищу любое решение, которое может ускорить процесс выполнения запроса. У меня есть пример, проверьте с помощью dbpedia snorql, когда я запрашиваю, он дает мне результаты за секунды. Но когда я пытаюсь выполнить такой же запрос в своей конечной точке, он дает результаты очень поздно и в большинстве случаев без ошибок (тип кучи Java или 500 неизвестных). DBpedia snorql http://dbpedia.org/snorql. попробуйте этот запрос

ВЫБРАТЬ количество (*) ГДЕ {? S? P? O}

Мой snorql http://cbakerlab.unbsj.ca:8080/liapibackup/snorql/

Любые советы / предложения будут высоко оценены. На моем сервере около 42 ГБ ОЗУ, поэтому проблем с памятью быть не должно. Спасибо


person Ahmad Syed    schedule 30.10.2013    source источник
comment
Если это не опечатка и у вас действительно доступно только 42 МБ ОЗУ, то, вероятно, это ваша проблема. Этого недостаточно памяти, чтобы что-то делать.   -  person Michael    schedule 31.10.2013


Ответы (1)


Причина в том, что вы используете D2R. Если вы выполняете запрос, который соответствует каждой возможной тройке, это означает, что все сопоставления должны быть разрешены. Это приводит к появлению большого количества запросов SQL (или любой другой базы данных отношений, которую вы используете).

Есть два возможных решения:

Выполняйте только определенные запросы и используйте ограничения:

SELECT ?s ?p ?o WHERE {
  ?s ?p ?o
} LIMIT 10

SELECT ?s WHERE {
  ?s a uysie:DocumentFigures
} LIMIT 100

Или используйте инструмент d2r rdf-dump и поместите результат в rdf store

person Rhand    schedule 01.11.2013