使用 OWL API 提取本体命名空间/前缀

问题描述

.owl 文件中,我声明了一些这样的前缀:

Prefix(:=<http://default.ont/my_ont/>)
Prefix(ex:=<http://example.org/ex#>)
Prefix(ex2:=<http://example2.org/ex#>)
...

在这样的 Java 项目中使用我的本体:

OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = manager.loadOntologyFromOntologyDocument(new File(resourceFullPath(ontologyFilename)));

现在我想用以下内容以编程方式构建一个 Map<String,String>

{
  ""    -> "http://default.ont/my_ont/","ex"  -> "http://example.org/ex#","ex2" -> "http://example2.org/ex#"
}

如何使用 OWL API 执行此操作(即不自己解析 .owl 文件)?

解决方法

解析过程中找到的前缀作为与本体关联的 OWLDocumentFormat 实例的一部分保存:

OWLDocumentFormat format = manager.getOntologyFormat(ontology);
if (format.isPrefixOWLDocumentFormat()) {
    // this is the map you need
    Map<String,String> map = format.asPrefixOWLDocumentFormat().getPrefixName2PrefixMap();
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...