2016-05-25 61 views
0

假設我們有以下規則:如何將規則轉換爲SWRL代碼?

課程,teacherOf(Y,X?),worksFor => coursePresentedInUniversity(X,Z?)

(X?)(Y,Z?)

是否有沉澱物或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

用於將字符串作爲SWRL規則在本體中,根據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

您可以在Protégé編輯器中表示語法進入SWRL規則,然後保存在RDF/XML格式的本體。如果您希望在代碼中執行相同的操作,則需要使用OWLAPI中的ManchesterOWLSyntaxParserImpl類來解析規則。然後,您可以使用OWLAPI將規則保存爲RDF/XML格式。

+0

感謝@Evren,它會如果你是偉大的可以給我一個例子(或者指出我的代碼)來解析使用該庫的規則公理。 - Enayat – Eni