Как правильно сказал 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>
, то, по моему мнению, да, вам придется использовать либо *, либо + путей к свойствам.,