Encontrar la ruta más corta con la consulta SPARQL

Estoy tratando de entender las limitaciones computacionales de la consulta SPARQL, y me gustaría saber cómo escribir una consulta que determine si hay una ruta dirigida entre dos objetos.

Conozco una manera de hacerlo por un camino de una longitud específica:

SELECT ?a ?b ?c ?d
WHERE { ?a  <http://graphtheory/hasNeighbor>  ?b . 
        ?b  <http://graphtheory/hasNeighbor>  ?c .
        ?c  <http://graphtheory/hasNeighbor>  ?d .
        FILTER (?a != ?c && ?b != ?d
                && ?a = <http://graphtheory/node/1>
                && ?d = <http://graphtheory/node/2>)
      }
LIMIT 10

¿Hay una manera de buscar cualquier ruta de longitud en una sola consulta? ¿Es esto imposible con SPARQL?

Respuestas a la pregunta(2)

Su respuesta a la pregunta