Как получить путь между IRI или между двумя узлами определенного типа rdf: с помощью запроса SPARQL? - PullRequest
0 голосов
/ 15 октября 2019

Попытка выполнить запрос с помощью консоли rdf4j к конечной точке sparql, чтобы найти путь между 2 узлами с использованием подстановочных знаков свойств, но безуспешно. Первый запрос выдает ошибку как

Неверно сформированный запрос: недопустимый (абсолютный) IRI:

Второй запрос приводит к сбою консоли. Должен ли я попытаться использовать запрос, используя другой способ запроса конечной точки, поскольку это может быть проблема с rdf4j или сам запрос неверен?

PREFIX xy: <http://mainuri/>

select
*

where

{

  <http://uriOfInstanceOfData> ((<>|!<>)|^(<>|!<>))* ?x .
  ?x ?p ?o .
  ?o ((<>|!<>)|^(<>|!<>))* <http://uriOfInstanceOfData>.
  }

AND

PREFIX xy: <http://mainuri/>

select
*

where

{

  <http://uriOfInstanceOfData> (xy:|!xy:)* ?x .
  ?x ?p ?o .
  ?o (xy:|!xy:)* <http://uriOfInstanceOfData>.
  }

1 Ответ

2 голосов
/ 15 октября 2019

Первый запрос синтаксически неверен: <> не является допустимой ссылкой IRI. Грамматика SPARQL допускает пустую строку, но в спецификации также отмечается, что любая ссылка IRI должна быть строкой, которая (после результатов обработки escape) в действительном IRI RFC3987. Поскольку для IRI требуется, как минимум, идентификатор схемы, пустая строка по определению не может быть действительным IRI.

Второй запрос работает, когда я пробую его на небольшом наборе тестовых данных. Однако это, вероятно, очень дорого обрабатывать.

РЕДАКТИРОВАТЬ запрос, который я на самом деле пытался:

PREFIX xy: <http://mainuri/>
select
*
where
{
  rdfs:domain (xy:|!xy:)* ?x .
  ?x ?p ?o .
  ?o (xy:|!xy:)* rdf:Property.
}

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

Evaluating SPARQL query...
+------------------------+------------------------+------------------------+
| x                      | p                      | o                      |
+------------------------+------------------------+------------------------+
| rdfs:domain            | rdf:type               | rdf:Property           |
| rdfs:domain            | rdfs:domain            | rdf:Property           |
+------------------------+------------------------+------------------------+
2 result(s) (28 ms)
...