2014-09-06 3 views
0

Схема ФРР влечет за собой в вопросеКак оптимизировать SPARQL CONSTRUCT запросов

sparql DESCRIBE query to get data about linked objects

Следующий запрос выполняется в доли секунды.

DESCRIBE ?book 
where 
{ 
?book a schema:Book ; 

} 

Описываемый запрос, однако, не дает мне подробностей автора. Он возвращает только свойства, принадлежащие самой книге.

Таким образом, я заменил вышеуказанный запрос одним из приведенных ниже.

CONSTRUCT 
{ 
?book a schema:Book ; 
schema:bookName ?bookName ; 
schema:bookId ?bookId ; 
schema:authoredBy ?author . 
?author a schema:Person ; 
schema:personName ?personName . 

} 
where 
{ 
?book a schema:Book ; 
} 

Однако вышеуказанный запрос sparql занимает 4 секунды для выполнения.

Is there way to optimize the sparql CONSTRUCT 
OR 
should we be using SELECT always instead of CONSTRUCT 

ответ

1

В вашем запросе CONSTRUCT есть некоторые несвязанные переменные, поэтому вы не получите информацию, которую вы хотите сказать. Попробуйте:

CONSTRUCT WHERE 
{ 
?book a schema:Book ; 
    schema:bookName ?bookName ; 
    schema:bookId ?bookId ; 
    schema:authoredBy ?author . 
    ?author a schema:Person ; 
    schema:personName ?personName . 
} 

Если вы получаете тройки для автора, то система не действует стандартным образом?.

Что касается скорости, это зависит от того, какую систему вы используете.

Вы также можете попробовать описания двух взаимосвязанных вещей:

DESCRIBE ?book ?author { 
    ?book a schema:Book ; 
     schema:authoredBy ?author . 
} 
+0

Как ограничить количество книг возвращаемые с помощью ОПИСАТЬ. Скажите LIMIT 10 – Anubhav

+0

Вы добавляете LIMIT 10. Для большего контроля используйте суб-SELECT внутри части шаблона. – AndyS

Смежные вопросы