All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.semanticweb.owlapi.model.OWLOntologyManagerFactoryRegistry Maven / Gradle / Ivy

The newest version!
/*
 * This file is part of the OWL API.
 * 
 * The contents of this file are subject to the LGPL License, Version 3.0.
 * 
 * Copyright (C) 2011, The University of Manchester
 * 
 * This program is free software: you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along with this program. If
 * not, see http://www.gnu.org/licenses/.
 * 
 * 
 * Alternatively, the contents of this file may be used under the terms of the Apache License,
 * Version 2.0 in which case, the provisions of the Apache License Version 2.0 are applicable
 * instead of those above.
 * 
 * Copyright 2011, University of Manchester
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package org.semanticweb.owlapi.model;

import java.util.ArrayList;
import java.util.List;

import org.semanticweb.owlapi.io.OWLParserFactoryRegistry;

import com.github.ansell.abstractserviceloader.AbstractServiceLoader;

/**
 * Author: Matthew Horridge
* The University Of Manchester
* Bio-Health Informatics Group
* Date: 15-Nov-2006
*
*

* The OWLOntologyManagerFactory provides a central point for the registration of * storer factories that create storers to store OWL ontologies. The registry is typically used by * at least one type of ontology factory for storing ontologies whose concrete representations are * to be contained in some kind of document. */ public class OWLOntologyManagerFactoryRegistry extends AbstractServiceLoader { private static final OWLOntologyManagerFactoryRegistry instance = new OWLOntologyManagerFactoryRegistry(); public OWLOntologyManagerFactoryRegistry() { super(OWLOntologyManagerFactory.class); } /** * @return A static, pre-initialized, instance of this registry. */ public static OWLOntologyManagerFactoryRegistry getInstance() { return instance; } /** * clear all registered manager factories */ public void clearManagerFactories() { this.clear(); } /** * @return the list of managers - changes will not be backed by the factory */ public List getOntologyManagerFactories() { return new ArrayList(this.getAll()); } /** * @param managerFactory * the manager factory to register */ public void registerOntologyManagerFactory(OWLOntologyManagerFactory managerFactory) { this.add(managerFactory); } /** * @param managerFactory * the manager factory to remove */ public void unregisterOntologyManagerFactory(OWLOntologyManagerFactory managerFactory) { this.remove(managerFactory); } /** * Returns the class name of the service as its unique key, to prevent multiple instances of the * one service being present in the registry. */ @Override public String getKey(OWLOntologyManagerFactory service) { return service.getClass().getName(); } /** * Creates an OWL ontology manager that is configured with standard parsers, * storers etc. * * NOTE: This uses the first registered OWLOntologyManagerFactory. * * @return The new manager. */ public static OWLOntologyManager createOWLOntologyManager() { return createOWLOntologyManager(getOWLDataFactory()); } /** * Creates an OWL ontology manager that is configured with standard parsers, * storers etc. * * NOTE: This uses the first registered OWLOntologyManagerFactory. * * @param dataFactory The data factory that the manager should have a reference to. * @return The manager. */ public static OWLOntologyManager createOWLOntologyManager(OWLDataFactory dataFactory) { return createOWLOntologyManager(dataFactory, OWLOntologyStorerFactoryRegistry.getInstance(), OWLParserFactoryRegistry.getInstance()); } /** * Creates an OWL ontology manager that is configured with standard parsers, * storers etc. * * NOTE: This uses the first registered OWLOntologyManagerFactory. * * @param dataFactory The data factory that the manager should have a reference to. * @param storerRegistry The OWLOntologyStorer registry to use to define valid ontology storing options for the returned OWLOntologyManager * @param parserRegistry The OWLParser registry to use to define valid ontology storing options for the returned OWLOntologyManager * @return The manager. */ public static OWLOntologyManager createOWLOntologyManager(OWLDataFactory dataFactory, OWLOntologyStorerFactoryRegistry storerRegistry, OWLParserFactoryRegistry parserRegistry) { if(instance.getOntologyManagerFactories().isEmpty()) { throw new IllegalStateException("Could not find an OWLOntologyManagerFactory implementations"); } return instance.getOntologyManagerFactories().iterator().next().buildOWLOntologyManager(dataFactory, storerRegistry, parserRegistry); } /** * Gets a global data factory that can be used to create OWL API objects. * * NOTE: This uses the first registered OWLOntologyManagerFactory. * * @return An OWLDataFactory that can be used for creating OWL API objects. */ public static OWLDataFactory getOWLDataFactory() { if(instance.getOntologyManagerFactories().isEmpty()) { throw new IllegalStateException("Could not find any OWLOntologyManagerFactory implementations"); } return instance.getOntologyManagerFactories().iterator().next().getFactory(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy