Java 从ObjectPropertySertion OWLAPI获取注释

Java 从ObjectPropertySertion OWLAPI获取注释,java,owl,owl-api,Java,Owl,Owl Api,我正在使用OWL2.0的OWLAPI,但有一件事我似乎还没有弄明白。我有一个OWL/XML文件,我想检索对象属性断言的注释。以下是我的OWL/XML和Java代码的片段: 猫头鹰: 鲍勃喜欢寿司 爪哇: 问题是,即使OWL声明有一个rdfs:comment,也不会返回任何内容。查找有关如何检索此信息的任何文档都很麻烦。添加带有注释或其他内容的公理不是问题。为了检索注释,您需要浏览感兴趣的公理。如注释中所述,使用getSomething将内容添加到本体中,不可能以这种方式检索您的axiom。以下代

我正在使用OWL2.0的OWLAPI,但有一件事我似乎还没有弄明白。我有一个OWL/XML文件,我想检索对象属性断言的注释。以下是我的OWL/XML和Java代码的片段:

猫头鹰:

鲍勃喜欢寿司 爪哇:


问题是,即使OWL声明有一个rdfs:comment,也不会返回任何内容。查找有关如何检索此信息的任何文档都很麻烦。添加带有注释或其他内容的公理不是问题。

为了检索注释,您需要浏览感兴趣的公理。如注释中所述,使用getSomething将内容添加到本体中,不可能以这种方式检索您的axiom。以下代码改编自:


ifax.isAnnotated{…}块中的其他代码是否执行?也就是说,如.isnotated返回的是真的吗?目前,问题可能在于它返回false,或者ax.getAnnotations返回空iterable。这将有助于确定正在发生的情况。ax.isAnnotated确实返回false,并且集合为空。为了避免混淆,我删除了if语句。谢谢。如果您使用的是factory.getowlObjectPropertyServationAXIOM…,您是否正在创建一个新的axiom,而不是从本体中检索一个?如果你用它来找到你正在寻找的公理,并检查它是否被注意到,会发生什么?非常感谢。非常有用。为了向其他人澄清,请重写VisitToLobjectPropertySerrionAXIOM ax以从断言axioms检索注释。您好,在本例中,如何获取特定对象属性断言的注释?在本例中,是这样的吗?据我所知,walker只获取本体中所有对象属性断言的注释。
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());
  }
//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);