Обсуждение правил SWRL с помощью Pellet в Jena Framework

Я пытаюсь использовать структуру Jena для редактирования существующей онтологии, созданной с помощью Protoge 4.2. т. е. изменить значения свойств или добавить отдельных лиц или классы, а затем выполнить рассуждения. Предположим, что в онтологии у нас есть такое правило: hasAge(?p,?age)^swrlb:greaterThan(?age,18)->Adult(?p). Я хотел бы иметь возможность изменить свойство hasAge на стороне Jena и посмотреть, является ли кто-то взрослым или нет. Не могли бы вы предоставить мне пример кода для этого? Любая помощь приветствуется.


person Hasti    schedule 14.05.2012    source источник


Ответы (1)


При условии, что :

  • вы знаете, как наполнить свою модель, прочитав построенную вами онтологию
  • Вы поместили Пеллет в путь к классам
  • Вы заменяете IRI ниже на IRI из вашего домена
  • У вас включены утверждения

Следующий фрагмент кода добавит возраст к отдельному x-test://individual и подтвердит, что свойство, которое было бы представлено SWIRL, выполнено.

// create an empty ontology model using Pellet spec
final OntModel model = ModelFactory.createOntologyModel( PelletReasonerFactory.THE_SPEC );   

// read the file
model.read( ont );

// Grab a resource and and property, and then set the property on that individual
final Resource Adult = ResourceFactory.createResource("x-domain://Adult");
final Property hasAge = ResourceFactory.createProperty("x-domain://hasAge");
final Resource res = model.createResource("x-test://individual");
res.addLiteral(hasAge, 19);

// Test that the swirl rule has executed
assert( res.hasProperty(RDF.type, Adult) );
person Rob Hall    schedule 10.04.2014