2016-05-25 10 views
0

Давайте предположим, что мы имеем следующее правило:Как я могу преобразовать правила в код SWRL?

курс, teacherOf (у, х?), WorksFor => coursePresentedInUniversity (х, г?)

(х?) (У, г?)

Есть ли библиотека в гранулах или java для преобразования вышеуказанного правила в код SWRL? например, следующее:

<swrl:Imp rdf:about="#CoursePresentedInUniversityRule"> 
    <swrl:head rdf:parseType="Collection"> 
     <swrl:IndividualPropertyAtom> 
       <swrl:propertyPredicate rdf:resource="#coursePresentedInUniversity" /> 
       <swrl:argument1 rdf:resource="#x" /> 
       <swrl:argument2 rdf:resource="#z" /> 
     </swrl:IndividualPropertyAtom> 
    </swrl:head> 
    <swrl:body rdf:parseType="Collection"> 
     <swrl:ClassAtom> 
      <swrl:classPredicate rdf:resource="#Course" /> 
      <swrl:argument1 rdf:resource="#x" /> 
     </swrl:ClassAtom> 

     <swrl:IndividualPropertyAtom> 
      <swrl:propertyPredicate rdf:resource="#teacherOf" /> 
      <swrl:argument1 rdf:resource="#y" /> 
      <swrl:argument2 rdf:resource="#x" /> 
     </swrl:IndividualPropertyAtom> 
     <swrl:IndividualPropertyAtom> 
      <swrl:propertyPredicate rdf:resource="#worksFor" /> 
      <swrl:argument1 rdf:resource="#y" /> 
      <swrl:argument2 rdf:resource="#z" /> 
     </swrl:IndividualPropertyAtom> 

    </swrl:body> 
</swrl:Imp> 

Я знаю, что таблетка может сделать обратное (используя reasoner.getKB().getRules()), но я не знаю, есть ли что-нибудь, чтобы преобразовать изображение в код SWRL XML. Спасибо!

ответ

1

Для преобразования строки в качестве правила SWL в онтологию, согласно this document, необходимо выполнить некоторые шаги: 1) строка должна быть проанализирована и обозначена. 2) Правило SWRL должно быть создано с использованием SWRLRule и SWRLObjectProperties. 3) применить и сохранить изменения в онтологии, Например, для teacherOf(?y,?x) мы можем написать следующий код:

OWLObjectProperty teacherP= factory.getOWLObjectProperty(IRI 
      .create(ontologyIRI + "#teacherOf")); 

    SWRLVariable var1 = factory.getSWRLVariable(IRI.create(ontologyIRI 
      + "#y")); 
    SWRLVariable var2 = factory.getSWRLVariable(IRI.create(ontologyIRI 
      + "#x")); 
    SWRLObjectPropertyAtom teacherAtom = factory.getSWRLObjectPropertyAtom(
      teacherP, var1, var2); 
    Set<SWRLAtom> SWRLatomList= new HashSet<SWRLAtom>(); 
    SWRLatomList.add(teacherAtom); 

...

SWRLRule teacherRule = factory.getSWRLRule(SWRLatomList, 
      Collections.singleton(headAtom)); 
    ontologyManager.applyChange(new AddAxiom(testOntology, teacherRule)); 
    ontologyManager.saveOntology(testOntology); 
+0

Если это решит ваш ответ, вы должны отметить его как принятый. –

1

Вы можете ввести правила SWRL в синтаксисе представления в редакторе Protégé, а затем сохранить свою онтологию в формате RDF/XML. Если вы хотите сделать то же самое в своем коде, вам нужно будет использовать класс ManchesterOWLSyntaxParserImpl из OWLAPI для анализа этого правила. Затем вы можете использовать OWLAPI для сохранения правил в формате RDF/XML.

+0

Благодаря @Evren, было бы здорово, если бы вы может дать мне пример (или указать мне на код) для разбора правила Axioms с использованием этой библиотеки. - Enayat – Eni