Search in sources :

Example 1 with RootOntologyDocument

use of edu.stanford.bmir.protege.web.server.inject.project.RootOntologyDocument in project webprotege by protegeproject.

the class ProjectDocumentStore method loadProjectOntologiesIntoManager.

private OWLOntology loadProjectOntologiesIntoManager(OWLOntologyManager manager) throws OWLOntologyCreationException {
    logger.info("{} Loading project", projectId);
    long t0 = System.currentTimeMillis();
    OWLOntologyLoaderListener loaderListener = new OWLOntologyLoaderListener() {

        public void startedLoadingOntology(LoadingStartedEvent event) {
            logger.info("{} Ontology loading started: {}", projectId, event.getDocumentIRI());
        }

        public void finishedLoadingOntology(LoadingFinishedEvent event) {
            // Give something else a chance - in case we have LOTS of imports
            Thread.yield();
            if (event.isSuccessful()) {
                logger.info("{} Ontology loading finished: (Loaded:  {})", projectId, event.getDocumentIRI(), event.getOntologyID());
                MemoryMonitor memoryMonitor = new MemoryMonitor(logger);
                memoryMonitor.monitorMemoryUsage();
            } else {
                logger.info("Ontology loading failed: {} (Reason: )", projectId, event.getException().getMessage());
            }
        }
    };
    manager.addOntologyLoaderListener(loaderListener);
    final MissingImportListener missingImportListener = (MissingImportListener) missingImportEvent -> logger.info("{} Missing import: {} due to {}", projectId, missingImportEvent.getImportedOntologyURI(), missingImportEvent.getCreationException().getMessage());
    manager.addMissingImportListener(missingImportListener);
    manager.getIRIMappers().add((OWLOntologyIRIMapper) iri -> {
        logger.info("{} Fetching imported ontology from {}.", projectId, iri.toQuotedString());
        return iri;
    });
    // Important - add last
    ImportsCacheManager importsCacheManager = importsCacheManagerProvider.get();
    OWLOntologyIRIMapper iriMapper = importsCacheManager.getIRIMapper();
    manager.getIRIMappers().add(iriMapper);
    try {
        OWLOntologyLoaderConfiguration config = new OWLOntologyLoaderConfiguration();
        config = config.setMissingImportHandlingStrategy(MissingImportHandlingStrategy.SILENT);
        config = config.setReportStackTraces(true);
        // It is safe to turn of illegal punning fixing as we've already parsed (and saved) the ontology
        // using a manager with this turned on.
        config = config.setRepairIllegalPunnings(false);
        logger.info("{} Loading root ontology imports closure.", projectId);
        ProjectInputSource projectInputSource = new ProjectInputSource(rootOntologyDocument);
        OWLOntology rootOntology = manager.loadOntologyFromOntologyDocument(projectInputSource, config);
        importsCacheManager.cacheImports(rootOntology);
        return rootOntology;
    } finally {
        long t1 = System.currentTimeMillis();
        logger.info("{} Ontology loading completed in {} ms.", projectId, (t1 - t0));
        MemoryMonitor memoryMonitor = new MemoryMonitor(logger);
        memoryMonitor.monitorMemoryUsage();
        memoryMonitor.logMemoryUsage();
        manager.removeIRIMapper(iriMapper);
        manager.removeOntologyLoaderListener(loaderListener);
        manager.removeMissingImportListener(missingImportListener);
    }
}
Also used : ArrayListMultimap(com.google.common.collect.ArrayListMultimap) IdUtil(edu.stanford.bmir.protege.web.server.util.IdUtil) Provider(javax.inject.Provider) ListMultimap(com.google.common.collect.ListMultimap) org.semanticweb.owlapi.model(org.semanticweb.owlapi.model) BinaryOWLOntologyDocumentFormat(org.semanticweb.binaryowl.owlapi.BinaryOWLOntologyDocumentFormat) LoggerFactory(org.slf4j.LoggerFactory) BinaryOWLOntologyDocumentSerializer(org.semanticweb.binaryowl.BinaryOWLOntologyDocumentSerializer) ReentrantReadWriteLock(java.util.concurrent.locks.ReentrantReadWriteLock) ArrayList(java.util.ArrayList) Inject(javax.inject.Inject) MemoryMonitor(edu.stanford.bmir.protege.web.server.util.MemoryMonitor) BinaryOWLMetadata(org.semanticweb.binaryowl.BinaryOWLMetadata) OntologyChangeDataList(org.semanticweb.binaryowl.change.OntologyChangeDataList) ReadWriteLock(java.util.concurrent.locks.ReadWriteLock) ProjectSingleton(edu.stanford.bmir.protege.web.shared.inject.ProjectSingleton) OWLOntologyDocumentSource(org.semanticweb.owlapi.io.OWLOntologyDocumentSource) SimpleIRIMapper(org.semanticweb.owlapi.util.SimpleIRIMapper) Logger(org.slf4j.Logger) RootOntologyDocument(edu.stanford.bmir.protege.web.server.inject.project.RootOntologyDocument) OWLOntologyChangeRecord(org.semanticweb.owlapi.change.OWLOntologyChangeRecord) OWLOntologyChangeData(org.semanticweb.owlapi.change.OWLOntologyChangeData) List(java.util.List) Lock(java.util.concurrent.locks.Lock) java.io(java.io) FileDocumentSource(org.semanticweb.owlapi.io.FileDocumentSource) StreamDocumentSource(org.semanticweb.owlapi.io.StreamDocumentSource) ProjectId(edu.stanford.bmir.protege.web.shared.project.ProjectId) OWLOntologyCreationIOException(org.semanticweb.owlapi.io.OWLOntologyCreationIOException) MemoryMonitor(edu.stanford.bmir.protege.web.server.util.MemoryMonitor)

Aggregations

ArrayListMultimap (com.google.common.collect.ArrayListMultimap)1 ListMultimap (com.google.common.collect.ListMultimap)1 RootOntologyDocument (edu.stanford.bmir.protege.web.server.inject.project.RootOntologyDocument)1 IdUtil (edu.stanford.bmir.protege.web.server.util.IdUtil)1 MemoryMonitor (edu.stanford.bmir.protege.web.server.util.MemoryMonitor)1 ProjectSingleton (edu.stanford.bmir.protege.web.shared.inject.ProjectSingleton)1 ProjectId (edu.stanford.bmir.protege.web.shared.project.ProjectId)1 java.io (java.io)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Lock (java.util.concurrent.locks.Lock)1 ReadWriteLock (java.util.concurrent.locks.ReadWriteLock)1 ReentrantReadWriteLock (java.util.concurrent.locks.ReentrantReadWriteLock)1 Inject (javax.inject.Inject)1 Provider (javax.inject.Provider)1 BinaryOWLMetadata (org.semanticweb.binaryowl.BinaryOWLMetadata)1 BinaryOWLOntologyDocumentSerializer (org.semanticweb.binaryowl.BinaryOWLOntologyDocumentSerializer)1 OntologyChangeDataList (org.semanticweb.binaryowl.change.OntologyChangeDataList)1 BinaryOWLOntologyDocumentFormat (org.semanticweb.binaryowl.owlapi.BinaryOWLOntologyDocumentFormat)1 OWLOntologyChangeData (org.semanticweb.owlapi.change.OWLOntologyChangeData)1