如何使用 Java 或颗粒将 SWRL 规则添加到 Ontology?
How to add SWRL rules to an Ontology using Java or pellet?
我不想使用 Protégé 将规则添加到我的 ontology,而是使用 Java 或 pellet 将 SWRL 规则添加到 ontology。
例如,这是我要导入到 ontology 中的规则:
[Course(?x),teacherOf(?y,?x),worksFor(?y,?z)] =>
[coursePresentedInUniversity(?x,?z)]
我想将以下代码添加到 ontology 中:
<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>
谁能给我指出一个示例代码来做到这一点?
其实我写了下面的代码,但是没有成功!
Rule mynewRule=new Rule(ruleHead,ruleBody);
PelletReasoner pelletReasoner =com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory.getInstance().createReasoner(testOntology );
KnowledgeBase knowledgeBase=pelletReasoner.getKB();
knowledgeBase.addRule(mynewRule);
使用 Java 代码的一种方法是通过 OWL API - OWLDataFactory
class 具有创建 SWRL 规则的方法,以及生成的规则可以添加到 ontology 并保存 - 它与 Protege 4 和 5 使用的过程相同。
文档可用here
我不想使用 Protégé 将规则添加到我的 ontology,而是使用 Java 或 pellet 将 SWRL 规则添加到 ontology。
例如,这是我要导入到 ontology 中的规则:
[Course(?x),teacherOf(?y,?x),worksFor(?y,?z)] => [coursePresentedInUniversity(?x,?z)]
我想将以下代码添加到 ontology 中:
<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>
谁能给我指出一个示例代码来做到这一点?
其实我写了下面的代码,但是没有成功!
Rule mynewRule=new Rule(ruleHead,ruleBody);
PelletReasoner pelletReasoner =com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory.getInstance().createReasoner(testOntology );
KnowledgeBase knowledgeBase=pelletReasoner.getKB();
knowledgeBase.addRule(mynewRule);
使用 Java 代码的一种方法是通过 OWL API - OWLDataFactory
class 具有创建 SWRL 规则的方法,以及生成的规则可以添加到 ontology 并保存 - 它与 Protege 4 和 5 使用的过程相同。
文档可用here