2

早上好,我正在使用 OWL API,我正在尝试检索 owl:Restriction 中的数据。例如,我正在使用比萨饼本体,我想获取 onProperty 和 someValuesFrom 的数据,它们是

<owl:Class rdf:about="#American">
   <rdfs:label xml:lang="pt">Americana</rdfs:label>
   <rdfs:subClassOf>
     <owl:Restriction>
       <owl:onProperty rdf:resource="#hasTopping"/>
       <owl:someValuesFrom rdf:resource="#TomatoTopping"/>
     </owl:Restriction>
   </rdfs:subClassOf>
   ...
</owl:Class>

因此,如果我有 American OWLClass,如何获得 OwlRestrictions 列表及其适用的属性。类似于 American -> subClassOf -> Restriction -> onProperty -> hasTopping。有没有办法创建一个包含所有这些步骤的数据结构?

4

1 回答 1

3

我不确定您所说的“步骤”到底是什么意思,但我认为您有一个类,并且您需要适用于子类的所有限制。但是,如果您还希望将限制应用于等效类,会发生什么?因此,我想写一个更笼统的。开始:

    PrefixManager pm= new DefaultPrefixManager("http://www.co-ode.org/ontologies/pizza/pizza.owl#");
    OWLClass american=factory.getOWLClass("American", pm);
    Set<OWLClassAxiom> tempAx=localOntology.getAxioms(american);
    for(OWLClassAxiom ax: tempAx){
        for(OWLClassExpression nce:ax.getNestedClassExpressions())
            if(nce.getClassExpressionType()!=ClassExpressionType.OWL_CLASS)
                System.out.println(ax);
    }
于 2015-03-10T22:06:43.503 回答