我正在尝试使用Stanford OWL API,我发现文档有点不清楚。使用Java,我加载了一些用户通过Protégé准备的本体,然后转到DefaultOWLObjectProperty
。该属性的值是本体中某个类中的个体。我怎样才能找到这门课?以下代码段:
OWLNamedClass cls = (OWLNamedClass) it.next();
Collection instances = cls.getInstances(false);
for (Iterator jt = instances.iterator(); jt.hasNext();) {
OWLIndividual individual = (OWLIndividual) jt.next();
Collection props = individual.getRDFProperties();
for (Object prop : props) {
DefaultOWLObjectProperty obj = (DefaultOWLObjectProperty) prop;
Object val = individual.getPropertyValue(obj);
DefaultRDFIndividual valInd = (DefaultRDFIndividual) val;
…
}
我想上课valInd
。
答案 0 :(得分:0)
OWLIndividual中有两种方法可以让您更轻松。假设您的OWLOntology为ontology
。然后,使用getObjectPropertyValues(OWLOntology),您可以获得一个映射,该映射将属性表达式映射到该属性与individual
相关的个人集合。您可以迭代该映射的条目,然后遍历该组映射。然后,对于每个那些个体,您可以使用getTypes(OWLOntology)来获取其类型的OWLClassExpressions集。 (你得到一组这些而不是单一类型,因为OWL个人可以,而且通常会有多种类型。)
如果您只对某些属性的值感兴趣,那么您可以使用更专业的getObjectPropertyValues(OWLObjectPropertyExpression,OWLOntology)来获取个人特定属性的值。
一般来说,我建议至少略过OWLIndividual界面提供的所有方法,只是为了全面了解你可以用它做什么。你不需要记住所有的细节,但是当你接近一个问题时,你至少会有一个模糊的想法,“我认为界面有某种东西就像那样......”而你我知道在哪里看。这是任何API或工具的好习惯,而不仅仅是OWL API。