Как использовать выводы 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]" .       

Некоторые ссылки о том, как это сделать:

Тогда он ведет себя так, как задумано в вопросе.

Просто помните, что если кто-то хочет ссылаться на словарный запас третьей стороны, он должен загрузить файл и загрузить его в Fuseki, чтобы выводы работали.

Другие вопросы по тегам