Допустим, я хочу найти все предметы, которые связаны с объектами через путь свойства. Связь может быть представлена:
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 этот запрос просто зависает. Вопрос в том, является ли это правильным способом запроса таким способом или есть что-то гораздо более эффективное? И что могло вызвать такое значительное падение производительности в новых версиях?