Как использовать выводы owl: sameAs в Fuseki Sparql и возвращать свойства каждого подходящего экземпляра?
У меня есть следующие данные RDF в моем хранилище троек Fuseki.
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix schema: <http://schema.org/> .
@prefix ex: <http://localhost:3030/eb/> .
@prefix wgs84: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
ex:School rdf:type owl:Class .
<http://localhost:3030/eb/School/1> rdf:type ex:School ;
schema:name "Escola 1" .
ex:NewSchool rdf:type owl:Class .
<http://localhost:3030/eb/NewSchool/1> rdf:type ex:NewSchool ;
wgs84:lat "23.085980" ;
wgs84:long "-5.692" .
<http://localhost:3030/eb/School/1> owl:sameAs <http://localhost:3030/eb/NewSchool/1> .
Я спрашиваю так:
SELECT ?predicate ?object
WHERE {
<http://localhost:3030/eb/School/1> ?predicate ?object
}
со следующим результатом:
predicate object
<http://www.w3.org/2002/07/owl#sameAs> <http://localhost:3030/eb/NewSchool/1>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://localhost:3030/eb/Escola>
<http://schema.org/name> "Escola 1"
Я хотел бы знать, что мне делать, чтобы запрос возвращал значения wgs84:lat / wgs84:long из экземпляра owl:sameAs? Возможно ли использование запроса SPARQL?
1 ответ
Здесь необходимо отредактировать файлы конфигурации (внутри папки /run/configuration/datasetname.ttl), добавить и перезапустить сервер Fuseki.
:service1 a fuseki:Service ;
fuseki:dataset :inferred_dataset ;
:inferred_dataset a ja:RDFDataset ;
ja:defaultGraph :inference_model .
:inference_model a ja:InfModel ;
ja:baseModel :tdb_graph ;
ja:reasoner [
ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>
] .
:tdb_graph a tdb:GraphTDB ;
tdb:dataset :tdb_dataset_readwrite .
:tdb_dataset_readwrite
a tdb:DatasetTDB ;
tdb:location "[MyDatasetLocationOnDisk]" .
Некоторые ссылки о том, как это сделать:
https://christinemdraper.wordpress.com/2017/04/09/getting-started-with-rdf-sparql-jena-fuseki/
https://gist.github.com/ruebot/fb7b1da82042860138d2d609756e07dc
Тогда он ведет себя так, как задумано в вопросе.
Просто помните, что если кто-то хочет ссылаться на словарный запас третьей стороны, он должен загрузить файл и загрузить его в Fuseki, чтобы выводы работали.