OWL,Protege:从默认的OWL ObjectProperty值获取到个人的类

时间:2013-09-11 11:54:22

标签: owl protege owl-api

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

OWLIndividual中有两种方法可以让您更轻松。假设您的OWLOntology为ontology。然后,使用getObjectPropertyValues(OWLOntology),您可以获得一个映射,该映射将属性表达式映射到该属性与individual相关的个人集合。您可以迭代该映射的条目,然后遍历该组映射。然后,对于每个那些个体,您可以使用getTypes(OWLOntology)来获取其类型的OWLClassExpressions集。 (你得到一组这些而不是单一类型,因为OWL个人可以,而且通常会有多种类型。)

如果您只对某些属性的值感兴趣,那么您可以使用更专业的getObjectPropertyValues(OWLObjectPropertyExpression,OWLOntology)来获取个人特定属性的值。

一般来说,我建议至少略过OWLIndividual界面提供的所有方法,只是为了全面了解你可以用它做什么。你不需要记住所有的细节,但是当你接近一个问题时,你至少会有一个模糊的想法,“我认为界面有某种东西就像那样......”而你我知道在哪里看。这是任何API或工具的好习惯,而不仅仅是OWL API。