簡體   English   中英

從ObjectPropertyAssertion OWLAPI獲取注釋

[英]Get annotations from ObjectPropertyAssertion OWLAPI

我使用的是OWL 2.0的OWL API,有一件事似乎無法弄清。 我有一個OWL / XML文件,我想為我的對象屬性聲明檢索注釋。 以下是我的OWL / XML和Java代碼的片段:

貓頭鷹:

<ObjectPropertyAssertion>
  <Annotation>
    <AnnotationProperty abbreviatedIRI="rdfs:comment"/>
    <Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#string">Bob likes sushi</Literal>
  </Annotation>
  <ObjectProperty IRI="#Likes"/>
  <NamedIndividual IRI="#UserBob"/>
  <NamedIndividual IRI="#FoodSushi"/>
</ObjectPropertyAssertion>

Java:

OWLIndividual bob = manager.getOWLDataFactory().getOWLNamedIndividual(IRI.create(base + "#UserBob"));
OWLObjectProperty likes = manager.getOWLDataFactory().getOWLObjectProperty(IRI.create(base + "#Likes"));
OWLIndividual sushi = factory.getOWLNamedIndividual(IRI.create(base + "#FoodSushi"));

OWLObjectPropertyAssertionAxiom ax =  factory.getOWLObjectPropertyAssertionAxiom(likes, bob, sushi);

  for(OWLAnnotation a: ax.getAnnotations()){
    System.out.println(a.getValue());
  }

問題是,即使OWL聲明存在一個rdfs:comment ,也不會返回任何內容。 很難找到有關如何檢索此信息的任何文檔。 添加帶有注釋或其他任何問題的公理。

為了檢索注釋,您需要遍歷感興趣的公理。 如注釋中所述,使用getSomething()將事物添加到本體中,無法以這種方式檢索公理。 這是從OWL-API指南改編的代碼:

//Get rdfs:comment
final OWLAnnotationProperty comment = factory.getRDFSComment();

//Create a walker
OWLOntologyWalker walker = 
                        new OWLOntologyWalker(Collections.singleton(ontology));

//Define what's going to visited
OWLOntologyWalkerVisitor<Object> visitor = 
                                new OWLOntologyWalkerVisitor<Object>(walker) {

  //In your case you visit the annotations made with rdfs:comment
  //over the object properties assertions
  @Override
  public Object visit(OWLObjectPropertyAssertionAxiom axiom) {
    //Print them
    System.out.println(axiom.getAnnotations(comment));
    return null;
  }
};

//Walks over the structure - triggers the walk
walker.walkStructure(visitor);      

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM