Получить список импортируемых онтологий - OWL API - PullRequest
0 голосов
/ 02 сентября 2018

Я использую OWL API для получения информации из онтологий. Мне нужно получить список всех импортированных онтологий, используемых в загруженной онтологии.

Есть ли метод в OWL API, который может выполнить эту задачу?

мой код, который загружает онтологию:

import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLAnnotationProperty;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLDataProperty;
import org.semanticweb.owlapi.model.OWLImportsDeclaration;
import org.semanticweb.owlapi.model.OWLObjectProperty;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyManager;

public class NSExtractor {

@SuppressWarnings("deprecation")
public static void main(String[] args) throws FileNotFoundException, OWLOntologyCreationException {

    @SuppressWarnings("resource")       
    File testFile= new File("C:\\acco.n3");

    OWLOntologyManager m = OWLManager.createOWLOntologyManager();
    OWLDataFactory f = OWLManager.getOWLDataFactory();
    OWLOntology o; 
    o = m.loadOntologyFromOntologyDocument(testFile);

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

o.importsDeclarations() предоставит вам поток объявлений об импорте для этой онтологии. Это список IRI, объявленных с owl:imports свойствами.

Примечание: это объявленные импорты, а не закрытие импорта - разница в том, что закрытие импорта включает онтологии, импортированные в вашу онтологию, и онтологии, импортированные этими онтологиями, - рекурсивно, включая импортированные онтологии.

o.importsClosure() предоставит все онтологии, которые были загружены во время анализа вашей онтологии.

0 голосов
/ 02 сентября 2018

После долгих поисков я нашел, как решить эту задачу. Я использовал OWLOntologyXMLNamespaceManager (я использую OWL API 5.1.6). После этого, используя getPrefixes и getNameSpaces, вы можете извлечь префикс и пространства имен соответственно для загруженной онтологии следующим образом:

OWLDocumentFormat format = m.getOntologyFormat(ontology);

OWLOntologyXMLNamespaceManager nsManager = new OWLOntologyXMLNamespaceManager(ontology, format);

        for (String prefix : nsManager.getPrefixes()) {
            System.out.println(prefix);
        }
        for (String ns : nsManager.getNamespaces()) {
            System.out.println(ns);
        }
...