SPARQL обход пути - PullRequest
       6

SPARQL обход пути

0 голосов
/ 10 декабря 2018

Я пытаюсь создать запрос с использованием SPARQL для ttl-файла, где у меня есть часть графика, представляющая ссылки следующим образом: links of a parent

Можно ли искатьвведите Debit и получите все литералы, связанные с его родителем, например: R494Vol1D2, Salvo, Vassallo?

Нужно ли использовать пути?

1 Ответ

0 голосов
/ 14 декабря 2018

Как правильно сказал AKSW, RDF - это ориентированные графы.Поэтому я создал небольшой файл n-троек на основе вашего изображения графика.Я предполагаю, что набор данных выглядит следующим образом:

<http://natarchives.com.mt/deed/R494Vol1-D2> <http://purl.org/dc/terms/type> "Debit".
<http://natarchives.com.mt/deed/R494Vol1-D2> <http://purl.org/dc/terms/identifier> "R494Vol1D2".
<http://natarchives.com.mt/deed/R494Vol1-D2> <http://data.archiveshub.ac.uk/def/associatedWith> <http://natarchives.com.mt/person/person796>.
<http://natarchives.com.mt/person/person796> <http://xmlns.com/foaf/0.1/firstName> "Salvo".
<http://natarchives.com.mt/person/person796> <http://xmlns.com/foaf/0.1/family_name> "Vassallo".

Также я не знал префикс locah, но согласно http://prefix.cc он означает http://data.archiveshub.ac.uk/def/

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

1    SELECT ?literal WHERE{
2      ?start <http://purl.org/dc/terms/type> "Debit".
3      ?start <http://data.archiveshub.ac.uk/def/associatedWith>* ?parent.
4      ?parent ?hasLiteral ?literal.
5      FILTER(isLiteral(?literal) && ?literal != "Debit" )
6    }

В строке 2 мы определяем начальную точку нашего пути, которая является каждой вершиной, имеющей тип «Дебет».Затем мы ищем все вершины, которые связаны с? Начинать с ребра, помеченного <http://data.archiveshub.ac.uk/def/associatedWith>.Эти вершины затем связаны с ?parent.После этого мы ищем все тройки, которые имеют ?parent в качестве субъекта, и сохраняем объект в ?literal.В строке 6 мы фильтруем все, что не является литералом или является «дебетом» из ?literal, что приводит к желаемому результату.

Если бы я неправильно смоделировал направление <http://data.archiveshub.ac.uk/def/associatedWith>, вы могли бы изменить строку 3 запроса на:

?start ^<http://data.archiveshub.ac.uk/def/associatedWith>* ?parent    

Это изменило бы направление края.

И чтобы ответить на вопрос, если вам нужно использовать пути: если вы не знаете, какой длины будет путь ребер, помеченных <http://data.archiveshub.ac.uk/def/associatedWith>, то, по моему мнению, да, вам придется использовать либо *, либо + путей к свойствам.,

...