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