Производительность SPARQL в запросе пути к свойствам Sesame / rdf4j - PullRequest
0 голосов
/ 06 июня 2019

Допустим, я хочу найти все предметы, которые связаны с объектами через путь свойства. Связь может быть представлена:

Subject - prop 1 -> A - prop 2 -> B - prop 3 -> Object

Этого можно достичь с помощью довольно простого запроса SPARQL:

SELECT ?s WHERE {
    ?s prop1/prop2/prop3 ?o .
    VALUES ?o { <uri1> ... <urin> }
}

Но я также хочу включить пути, которые используют подклассы A и / или B:

Subject - prop 1 -> subclassOfA - prop 2 -> subclassOfB - prop 3 -> Object

Для этого я добавил промежуточное свойство "sublassOf" в путь:

SELECT ?s WHERE {
    ?s prop1/<subclassOf>*/prop2/<subclassOf>*/prop3 ?o .
    VALUES ?o { <uri1> ... <urin> }
}

Это очень быстро сработало для моего набора данных в Sesame 2.7.2, но после перехода на rdf4j 2.5.2 этот запрос просто зависает. Вопрос в том, является ли это правильным способом запроса таким способом или есть что-то гораздо более эффективное? И что могло вызвать такое значительное падение производительности в новых версиях?

...