Protege 5.2“定制”;另存为……”;文件格式

Protege 5.2“定制”;另存为……”;文件格式,protege,owl-api,Protege,Owl Api,我通过扩展以下内容,通过owl api 4.5.2实现了一个自定义存储渲染器: AbstractOWLStorer OWLStorerFactoryImpl AbstractOWLRenderer OWLDocumentFormatFactoryImpl PrefixDocumentFormatImpl OWLObjectVisitor OWLClassExpressionVisitorAdapter 代码正在运行,但我现在想通过Protégé5.2中的“另存为…”对话框提供此格式。我已经使用插

我通过扩展以下内容,通过owl api 4.5.2实现了一个自定义存储渲染器: AbstractOWLStorer
OWLStorerFactoryImpl
AbstractOWLRenderer
OWLDocumentFormatFactoryImpl
PrefixDocumentFormatImpl
OWLObjectVisitor
OWLClassExpressionVisitorAdapter

代码正在运行,但我现在想通过Protégé5.2中的“另存为…”对话框提供此格式。我已经使用插件示例代码作为指南,通过插件框架成功加载了代码
在插件工具菜单初始化调用期间,我尝试挂接storer

final OWLModelManager modelManager = getOWLModelManager();
OWLOntologyManager om = modelManager.getOWLOntologyManager();
om.getOntologyStorers().add(new mySyntaxStorerFactory());
这不起作用,因为我怀疑要么管理器没有持久化,要么另存为对话代码已经初始化。

有更好的方法吗?也许是一个特定的插件类型来处理这个功能?我可以通过自定义工具菜单项实现导出本体特性。但是,我认为“另存为…”中包含的内容要简洁得多。
我还计划使用解析器以自定义格式检索本体。是否有推荐的方法通过插件实现此功能?
如果我在文档中遗漏了这一点,我深表歉意

除了存储代码外,还需要实现
OWLDocumentFormat
;但是,在您有机会手动注册您的格式之前,可能会在Protege代码中初始化可用格式列表


我假设您正在构建自己的OWLAPI jar以部署在Protege中,请检查“META-INF/services”文件夹的内容-您的存储者应该与其他存储者一样在这里提及。这保证了格式和存储程序一经创建就可供所有经理使用。

除了存储代码外,还需要实现
OWLDocumentFormat
;但是,在您有机会手动注册您的格式之前,可能会在Protege代码中初始化可用格式列表


我假设您正在构建自己的OWLAPI jar以部署在Protege中,请检查“META-INF/services”文件夹的内容-您的存储者应该与其他存储者一样在这里提及。这保证了格式和存储程序一经创建,即可供所有经理使用。

非常感谢。我已经实现了扩展PrefixDocumentFormatImpl的getKey()和扩展OWLDocumentFormatFactoryImpl的createFromat()
代码包含在jar包中,但不包含在META-INF清单中。我将进行调查。我将使用插件示例中的maven构建作为起点。我尝试添加以下条目:META-INF/services/org.semanticweb.owlapi.util.owlstorerfactorympl,然后在内部给出工厂实现的类名。不幸的是,这似乎不起作用。文件名不能包含Impl-它需要匹配接口的名称,而不是实现类。类名只需出现在文件中。谢谢。我基于底层接口org.semanticweb.owlapi.model.OWLStorerFactory重命名了该文件,然后在内部尝试了实现类名blah.blah.blah.myStorerFactory,还尝试了路径/blah/blah/blah/myStorerFactory.class。在任何一种情况下,在加载期间都不会实例化命名类。对不起,我一定错过了什么。非常感谢。我已经实现了扩展PrefixDocumentFormatImpl的getKey()和扩展OWLDocumentFormatFactoryImpl的createFromat()
代码包含在jar包中,但不包含在META-INF清单中。我将进行调查。我将使用插件示例中的maven构建作为起点。我尝试添加以下条目:META-INF/services/org.semanticweb.owlapi.util.owlstorerfactorympl,然后在内部给出工厂实现的类名。不幸的是,这似乎不起作用。文件名不能包含Impl-它需要匹配接口的名称,而不是实现类。类名只需出现在文件中。谢谢。我基于底层接口org.semanticweb.owlapi.model.OWLStorerFactory重命名了该文件,然后在内部尝试了实现类名blah.blah.blah.myStorerFactory,还尝试了路径/blah/blah/blah/myStorerFactory.class。在任何一种情况下,在加载期间都不会实例化命名类。对不起,我一定错过了什么。