0

有没有人可以帮助我使用“OWL API”生成这个 ObjectPropertyRange?

<ObjectPropertyRange>
    <Annotation>
        <AnnotationProperty abbreviatedIRI="owl:backwardCompatibleWith"/>
        <IRI>#ProgramLanguage</IRI>
    </Annotation>
    <ObjectProperty IRI="#specifiedBy"/>
    <ObjectMaxCardinality cardinality="1">
        <ObjectProperty IRI="#specifiedBy"/>
        <Class IRI="#Grammars"/>
    </ObjectMaxCardinality>
</ObjectPropertyRange> 

这就是我最近3天的样子......

<ObjectPropertyRange>
    <ObjectProperty IRI="#has"/>
    <ObjectMaxCardinality cardinality="1">
        <ObjectProperty IRI="#has"/>
        <Class IRI="#Quantity"/>
    </ObjectMaxCardinality>
</ObjectPropertyRange>

从这段代码...

OWLClassExpression expression=df.getOWLObjectMaxCardinality(relations.max, objectProperty,range.getNNF());
OWLSubClassOfAxiom subClassOfAxiom=df.getOWLSubClassOfAxiom(df.getOWLClass(IRI.create(relations.class2)), expression);
OWLObjectPropertyRangeAxiom owlObjectPropertyRangeAxiom=df.getOWLObjectPropertyRangeAxiom(objectProperty,subClassOfAxiom.getSuperClass());
manager.addAxiom(new_ontology,owlObjectPropertyRangeAxiom);
4

1 回答 1

1

给出一个完整的代码片段:

OWLDataFactory df = ...
OWLAnnotationProperty  p=df.getOWLAnnotationProperty(IRI.create("urn:test#backwardCompatibleWith"));
OWLAnnotation ann=df.getOWLAnnotation(p, IRI.create("urn:test#languageDesign"));
OWLObjectProperty op=df.getOWLObjectProperty(IRI.create("urn:test#produces"));
OWLClass c = df.getOWLClass(IRI.create("urn:test#ProgramLanguage"));
OWLObjectPropertyRangeAxiom axiom=df.getOWLObjectPropertyRangeAxiom(op, c, Collections.singleton(ann));

此时,将公理添加到您的本体并以首选格式保存。从这个例子中,我猜那是 OWL/XML。

该问题和此答案可在https://github.com/owlcs/owlapi/issues/235获得进一步的评论、讨论和任何其他不适合 StackOverflow 格式的活动。

关于在添加注释时提到不支持的操作,请注意由 OWLDataFactory 创建的所有对象都是不可变的。创建对象时必须添加注释,之后不能将它们添加到已经存在的对象中。

于 2014-07-01T18:43:51.260 回答