2012-10-03 1 views
3

Я ноб в Йене и читаю это page, более конкретно на рис. 5 (iii) - «прямое выведенное отношение» Я нашел именно то, что мне нужно. В принципе, мой OntModel должен соблюдать следующее правило: «Нельзя допускать прямые инструкции, которые можно вывести». Но, к сожалению, я не знаю, как воплотить эти идеи в Йене.jena direct inferred graph

Мой пример кода:

String baseUri="http://entidades.owl"; 
    OntModel base = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); 

    OntClass studant = base.createClass(baseUri +"#Student"); 

    OntClass person = base.createClass(baseUri +"#Person"); 
    OntClass ser = base.createClass(baseUri +"#ThingLive"); 

    Property isA = base.createTransitiveProperty(baseUri+"#IsA", true); 
    nome.addDomain(person); 
    base.add(new StatementImpl(studant, isA, person)); 
    base.add(new StatementImpl(person, isA, ser)); 

    base.createIndividual(baseUri+"#JonhDoe",studant); 
    base.createIndividual(baseUri+"#JonhDoe",person); 
    base.createIndividual(baseUri+"#JonhDoe",ser); 
    base.write(System.out); 

    OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF,base); 
    model.write(System.out); 

Ну

  1. Я пытаюсь построить свойство "Isa" как "transitiveProperty", но мыслителя не признает его. Как я могу это исправить?

  2. Если я меняю: base.add (новое StatementImpl (studant, isA, лицо)); base.add (новое StatementImpl (лицо, isA, ser));

к:

person.addSubClass (студент); ser.addSubClass (лицо);

Основатель был в состоянии отличить отлично, но, к сожалению, «базовая» OntModel и модель «OntModel» показывают мне тот же RDF. Я думаю, что «модель» должна показать мне минимальный график RDF.

Что я могу сделать, чтобы увидеть это изменение в структуре RDF?

Большое спасибо, ребята !!!!!

ответ

1

Ваш код хорошо, единственная проблема заключается в том, что:

model.write(System.out); 

вызовы OntModel.write(), который определен для записи базовой модели только. Это связано с тем, что многие пользователи хотят иметь рабочий процесс для чтения модели, манипулировать моделью, сохранять модель и не иметь сохраненную версию, загрязненную, например, закрытием транзитивных свойств.

Если вы запросите модель, в вашем запросе будут указаны выведенные троек, а также базовая модель троек. Здесь отражается только write(). Если вы действительно хотите написать всю модель для отладки, включая выведенные тройки, используйте OntModel.writeAll().

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

  • Нет связанных вопросов^_^