Events 本体论中的事件

Events 本体论中的事件,events,ontology,protege,Events,Ontology,Protege,我想将事件实现为本体。例如,通过将个人添加到一个类,它将添加到另一个类。按照中的说明,我写了以下内容: JenaOWLModel model=ProtegeOWL.createJenaOWLModel(); OWLNamedClass c1= model.createOWLNamedClass("A"); OWLNamedClass c2= model.createOWLNamedClass("B"); c1.addClassListener( n

我想将事件实现为本体。例如,通过将个人添加到一个类,它将添加到另一个类。按照中的说明,我写了以下内容:

      JenaOWLModel model=ProtegeOWL.createJenaOWLModel();
      OWLNamedClass c1= model.createOWLNamedClass("A");
      OWLNamedClass c2= model.createOWLNamedClass("B");
      c1.addClassListener( new ClassAdapter(){
       public void instaneAdded(RDFSClass c1,RDFSClass c2,RDFResource instance) {
         String s= instance.getName();
         c2.createInstance(s);
       }
       });

这不是正确的方法吗?因为它在protege中不起作用。

我敢打赌,在新的类适配器中,您的意思是定义一个方法
instanceAdded
,而不是
instanceAdded
(注意前面的
c
)。如果遵循最佳实践并使用
@Override
注释,则可能会出现无法重写以前未定义的方法的错误

public void instanceaded(RDFSClass c、RDFSClass c2、RDFResource实例){
************

添加
@Override
的建议不仅仅是我的建议。如果你看一看公认的答案,其中提到,通过声明你打算覆盖一个方法,如果没有这样的方法可以覆盖,你会收到警告(如本例)。

你说的“它在Protégé中不起作用”是什么意思?Protege是一个OWL本体编辑器;它不是Java编译器。你需要更详细地描述你正在做的事情,以及你期望发生的事情和实际发生的事情。我的意思是,当我将我在Java代码中创建的.OWL文件导入Protege时,我向“a”类添加了一个个体,而不是添加到“B”类中类。您是否正在编写一个独立的应用程序?一个Protege插件?有很多内容您没有告诉我们。是否应该将
实例化
添加为
实例化
(注意
c
)?如果你使用
@Override
注释,你会在试图重写之前未定义的方法时出错。你是对的@Joshoua。这是一个愚蠢的错误,我想我永远也找不到。我修复了它,效果很好,非常感谢你。@MD没问题,mona。一定要使用
@Override
注释,这样你就可以避免这个问题了这是一种未来的问题。