这是我要以RDF/XML格式提取的规则:
<rdf:Description rdf:about="http://www.semanticweb.org/myCompany/ontologies#x">
<rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#Variable"/>
</rdf:Description>
<rdf:Description>
<swrla:isRuleEnabled rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</swrla:isRuleEnabled>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">testing a rule</rdfs:comment>
<rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">TEST</rdfs:label>
<rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#Imp"/>
<swrl:body>
<rdf:Description>
<rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
<swrl:classPredicate rdf:resource="http://www.semanticweb.org/myCompany/ontologies#depth"/>
<swrl:argument1 rdf:resource="http://www.semanticweb.org/myCompany/ontologies#x"/>
</rdf:Description>
</rdf:first>
<rdf:rest>
<rdf:Description>
<rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#BuiltinAtom"/>
<swrl:builtin rdf:resource="http://www.w3.org/2003/11/swrlb#greaterThan"/>
<swrl:arguments>
<rdf:Description>
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#List"/>
<rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#int">2</rdf:first>
<rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:Description>
</swrl:arguments>
</rdf:Description>
</rdf:first>
<rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:Description>
</rdf:rest>
</rdf:Description>
</swrl:body>
<swrl:head>
<rdf:Description>
<rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
<swrl:classPredicate rdf:resource="http://www.semanticweb.org/myCompany/ontologies#profondeur"/>
<swrl:argument1 rdf:resource="http://www.semanticweb.org/myCompany/ontologies#Bad"/>
</rdf:Description>
</rdf:first>
<rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:Description>
</swrl:head>
</rdf:Description>
我想知道我是否可以提取语法更像是的规则:
depth(?x) ^ swrlb:greaterThan(2) -> profondeur(Bad)
此外,我不想在protégé或其他软件中使用规则,而是在寻找Jena或Pellet之类的外部连接器
等待您的答复,
Sloql用户Aloïs。
答案 0 :(得分:0)
感谢您的帮助,我终于设法使用OWL API编写了一些代码
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
try {
OWLOntology ontology = manager.loadOntologyFromOntologyDocument(new File(ONTOLOGY_FILE_NAME));
Set<SWRLRule> rules = ontology.getAxioms(AxiomType.SWRL_RULE);
for (SWRLRule r : rules) {
// body
for (SWRLAtom a : r.getBody()) {
System.out.println(a.getPredicate().toString());
for (SWRLArgument ar : a.getAllArguments()) {
System.out.println(ar.toString());
}
}
// head
for (SWRLAtom a : r.getHead()) {
System.out.println(a.getPredicate().toString());
for (SWRLArgument ar : a.getAllArguments()) {
System.out.println(ar.toString());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}