2016-02-01 4 views
0

Я работаю с Jena SPARQL API, и я хочу выполнять запросы в своих RDF-файлах после применения правил вывода. Я создал файл .rul, содержащий все мои правила; теперь я хочу запустить эти правила и выполнить свои запросы. Когда я OWL, я продолжал так:Jena SPARQL API с использованием файла правил вывода

 OntModel model1 = ModelFactory.createOntologyModel(OntModelSpec..OWL_MEM_MICRO_RULE_INF); 

    // read the RDF/XML file 
    model1.read("./files/ontology.owl", "RDF/XML"); 
    model1.read("./files/data.rdf", "RDF/XML"); 

    // Create a new query 
    String queryString =   
     ".....my query"; 
    Query query = QueryFactory.create(queryString); 
    QueryExecution qe = QueryExecutionFactory.create(query, model1); 
    ResultSet results = qe.execSelect(); 
    ResultSetFormatter.out(System.out, results, query); 

Я хочу сделать то же самое с правилами и выводов, то есть загрузить мой .rul файл, как это:

model1.read("./files/rules.rul", "RDF/XML"); 

Это не работает с .rul, правила не выполняются. Любые идеи, как загрузить файл .rul? Заранее спасибо.

+0

Вы забыли задать свой вопрос. С какой проблемой вы столкнулись? –

+0

Я отредактировал мой вопрос. На самом деле, я хочу загрузить файл .rul и выполнять правила. Я пробовал использовать тот же метод, что и файлы OWL, но не работал. – user3510821

ответ

1

Правила Йены не RDF, и вы не читаете их в модели.

RDFS - это RDF, и он реализован внутренне с использованием правил.

Для построения модели логического вывода:

Model baseData = ... 
    List<Rule> rules = Rule.rulesFromURL("file:YourRulesFile") ; 
    Reasoner reasoner = new GenericRuleReasoner(rules); 
    Model infModel = ModelFactory.createInfModel(reasoner, baseData) ; 

См ModelFactory другие способы построения модели (например, RDFS вывода) непосредственно.