2015-09-19 3 views
0

Я хотел бы создать TransitiveReasoner с Jena, чтобы создать новую модель вывода из схемы и набора данных. Он работает с аргументом RDFS, но не с TransitiveReasoner.Как использовать Transitive Reasoner с Йеной?

Это мой первый опыт с выводом; Я посмотрел на поддержку Jena Inference и другие уроки, но не смог решить мою проблему.

Вот мой тестовый код в Java:

import com.hp.hpl.jena.ontology.*; 
import com.hp.hpl.jena.rdf.model.*; 
import com.hp.hpl.jena.reasoner.*; 
import com.hp.hpl.jena.vocabulary.*; 

public class TestInference 
{ 

    public static void myTest() throws IOException 
    { 
     String NS = "testInference:"; 
     OntModel schema = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null); 
     OntClass m = schema.createClass(NS + "Mention"); 
     OntClass pm = schema.createClass(NS + "PersonMention"); 
     pm.addProperty(RDFS.subClassOf, m); 

     Model data = ModelFactory.createDefaultModel(); 
     Resource r = data.createResource(NS+"alberto"); 
     r.addProperty(RDF.type, pm); 

     Reasoner rdfsReasoner = ReasonerRegistry.getRDFSSimpleReasoner(); 
     Reasoner transReasoner = ReasonerRegistry.getTransitiveReasoner(); 

     System.out.println("\n===== RDSF ====="); 
     InfModel rdfsInf = ModelFactory.createInfModel(rdfsReasoner, schema, data); 
     rdfsInf.write(System.out, "TURTLE"); 

     System.out.println("\n===== Trans ====="); 
     InfModel transInf = ModelFactory.createInfModel(transReasoner, schema, data); 
     transInf.write(System.out, "TURTLE"); 
} 

public static void main(String[] args) throws IOException 
{ 
    myTest(); 
} 

Попытка изменить OntModelSpec не помогает.

Что я делаю неправильно?

Заранее за вашу помощь.

ответ

1

TransitiveReasoner занимается только транзитивностью RDFS subClassOf и RDFS subPropertyOf. Он не обеспечивает этап rdf:type.

A subClassOf B . B subClassOf C => A subClassOf C 

Но не эта часть:

x type T . T subClassOf S => x type S 

https://jena.apache.org/documentation/inference/#transitive

+0

ОК, undertood, большое спасибо за это объяснение! – ecrin

Смежные вопросы