В настоящее время я пытаюсь создать указатели на значения типов данных, поскольку они не могут быть связаны напрямую. Тем не менее, я хотел бы иметь возможность оценить указатели из среды SPARQL, которая возникла именно в том случае, если желаемое значение является частью упорядоченного rdf: перечислите несколько вопросов для меня. Мой подход состоит в том, чтобы использовать пути свойств в запросе SPARQL, в котором я могу использовать определенный индивид, свойство и индекс упорядоченного списка, который указатель прикрепил к нему.
Учитывая следующие примеры данных с укороченным синтаксисом упорядоченных списков по ttl:
ex:myObject ex:somePropery ("1" "2" "3") .
ex:myPointer ex:lookAtIndividual ex:myObject;
ex:lookAtProperty ex:someProperty ;
ex:lookAtIndex "3"^^xsd:integer .
Теперь я хотел бы создать запрос SPARQL, который - на основе указателя - возвращаетзначение по данному индексу. Насколько я понимаю, запрос может / должен выглядеть примерно так:
SELECT ?value
WHERE {
ex:myPointer ex:lookAtIndividual ?individual ;
ex:lookAtProperty ?prop ;
ex:lookAtIndex ?index .
?individual ?prop/rdf:rest{?index-1}/rdf:first ?value .
}
Но если я попытаюсь выполнить этот запрос с TopBraid, он выдаст сообщение об ошибке, что ?index
было найдено, когда <INTEGER>
былоожидается. Я также попытался связать индекс в запросе SPARQL через BIND(?index-1 AS ?i)
, опять же безуспешно. Если указанное значение не сохраняется в списке, запрос без пути к свойствам работает нормально.
Можно ли вообще использовать значение, связанное через свойство типа данных в запросе SPARQL, в качестве длины пути для путей к свойствам?