0

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

4

1 回答 1

0

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

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

一般来说,我建议至少浏览一下 OWLIndividual 接口提供的所有方法,以便大致了解您可以使用它做什么。你不需要记住所有的细节,但是当你接近一个问题时,你至少会有一个模糊的想法,“我认为界面有类似的东西……”并且你会知道去哪里看。这对于任何 API 或工具都是很好的做法,而不仅仅是 OWL API。

于 2013-09-11T13:12:07.847 回答