Представление SPIN в SPARQL - PullRequest
       43

Представление SPIN в SPARQL

1 голос
/ 28 октября 2019

Существует ли API, который может помочь преобразовать представление SPIN (запроса SPARQL) обратно в форму запроса SPARQL?

От:

[ a                              <http://spinrdf.org/sp#Select> ;
  <http://spinrdf.org/sp#where>  ( [ <http://spinrdf.org/sp#object>  [ <http://spinrdf.org/sp#varName>
                                                       "o"^^<http://www.w3.org/2001/XMLSchema#string> ] ;
                                     <http://spinrdf.org/sp#predicate>
                                             [ <http://spinrdf.org/sp#varName>
                                                       "p"^^<http://www.w3.org/2001/XMLSchema#string> ] ;
                                     <http://spinrdf.org/sp#subject>
                                             [ <http://spinrdf.org/sp#varName>
                                                       "s"^^<http://www.w3.org/2001/XMLSchema#string> ]
                                   ] )
] .

Кому:

SELECT *
WHERE {
    ?s ?p ?o .
}

Заранее спасибо.

1 Ответ

1 голос
/ 29 октября 2019

Я знаю два API на основе jena для работы с SPIN.

Вы можете использовать либо org.topbraid:shacl:1.0.1, основанное на jena-arq:3.0.4, либо упомянутое в комментарии org.spinrdf:spinrdf:3.0.0-SNAPSHOT, которое является форкомпервый, но с измененными пространствами имен и обновленными зависимостями.

Обратите внимание, что первый (оригинальный) API также может работать с современной jena (3.13.x), по крайней мере, ваша задача может быть решена в таких обстоятельствах. Второй API еще не имеет релиза maven, но может быть включен в ваш проект через jitpack.

Чтобы решить эту проблему, вам нужно найти корень org.apache.jena.rdf.model.Resource и привести его к org.topbraid.spin.model.Select (или org.spinrdf.model.Select). ) с использованием дженского полиморфизма (т.е. операция org.apache.jena.rdf.model.RDFNode#as(Class)). Тогда #toString() вернет желаемый запрос с префиксами модели. Обратите внимание, что все личности уже включены в модель посредством статической инициализации.

Демонстрация этого подхода SpinTransformer из области тестирования ONT-API, которая преобразует запросы на основе SPARQL в эквивалентную формус sp:text.

...