Извлечение пространств имен / префиксов онтологий с помощью OWL API

#java #namespaces #ontology #prefix #owl-api

#java #пространства имен #онтология #префикс #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 файла)?

Ответ №1:

Префиксы, найденные во время синтаксического анализа, хранятся как часть OWLDocumentFormat экземпляра, связанного с онтологией:

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