Java 如何使用OWLAPI获取对象属性的集合
请,我想使用OWLAPI用java程序解析以下本体Java 如何使用OWLAPI获取对象属性的集合,java,owl-api,Java,Owl Api,请,我想使用OWLAPI用java程序解析以下本体 <ObjectPropertyAssertion> <ObjectProperty IRI="http://onto1#creator"/> <NamedIndividual IRI="Mark1"/> <NamedIndividual IRI="Car1"/> </ObjectPropertyAssertion>
<ObjectPropertyAssertion>
<ObjectProperty IRI="http://onto1#creator"/>
<NamedIndividual IRI="Mark1"/>
<NamedIndividual IRI="Car1"/>
</ObjectPropertyAssertion>
<ObjectPropertyAssertion>
<ObjectProperty IRI="http://onto1#creator"/>
<NamedIndividual IRI="Mark2"/>
<NamedIndividual IRI="Car2"/>
</ObjectPropertyAssertion>
输出:
- 标记1-->Car1
- 标记2-->Car2
提前感谢您的帮助您需要首先提取本体中的个体,然后要求
OWL API
查找分配给这些个体的对象属性值:
Set<OWLNamedIndividual> inds=localOntology.getIndividualsInSignature();
for (OWLNamedIndividual ind: inds){
System.out.println(ind.getObjectPropertyValues(localOntology));
}
Set inds=localOntology.getIndividualsInSignature();
用于(OWLNamedIndividual ind:inds){
System.out.println(ind.getObjectPropertyValues(localOntology));
}
或者,您可以将OWLDataFactory用作
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLDataFactory factory = manager.getDataFactory();
Set<OWLNamedIndividual> inds = localOntology.getIndividualsInSignature();
for (OWLNamedIndividual ind: inds){
System.out.println(ind.getObjectPropertyValues(factory.getOWLObjectProperty(IRI.create("Put the iri of the property here")), localOntology));
}
OWLOntologyManager=OWLManager.createOWLOntologyManager();
OWLDataFactory=manager.getDataFactory();
Set inds=localOntology.getIndividualsInSignature();
用于(OWLNamedIndividual ind:inds){
System.out.println(ind.getObjectPropertyValues(factory.getOWLObjectProperty(IRI.create(“在此处放置属性的IRI”)),localOntology));
}
尽管要记住System.out.println(ind.getObjectPropertyValues(factory.getOWLObjectProperty(IRI.create(“在此处放置属性的IRI”)),localOntology))代码>返回一个集合
这样做的好处是可以准确地查找您要使用的属性,而不是某个特定个体上的所有属性。非常感谢,是的,我使用了此解决方案,因为它返回特定对象属性的一组个体。对于OWLAPI版本4,check EntitySearcher-许多在OWLTentity中声明的方法都被移动到了那里。嗨!根据个人在owlapi中的DataProperty,是否有任何简单的方法来保留个人?例如,如果我想保留对我来说未知的个体,但我知道它应该具有DataProperty(比如orderNumber=1)。我认为遍历集合IND需要更多的时间。