/**
 * PODD is an OWL ontology database used for scientific project management
 * 
 * Copyright (C) 2009-2013 The University Of Queensland
 * 
 * This program is free software: you can redistribute it and/or modify it under the terms of the
 * GNU Affero 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
 * Affero General Public License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License along with this program.
 * If not, see <http://www.gnu.org/licenses/>.
 */
/**
 * 
 */
package com.github.podd.api;

import org.openrdf.OpenRDFException;
import org.openrdf.model.URI;
import org.openrdf.repository.Repository;
import org.openrdf.repository.RepositoryException;

/**
 * Interface to manage the Sesame Repository used by PODD.
 * 
 * @author Peter Ansell p_ansell@yahoo.com
 * 
 */
public interface PoddRepositoryManager
{
    /**
     * 
     * @return The artifact management graph URI for this repository manager.
     */
    URI getArtifactManagementGraph();
    
    /**
     * 
     * @return The file repository management graph URI for this repository manager.
     */
    URI getFileRepositoryManagementGraph();
    
    /**
     * 
     * @return A new, initialized in-memory repository that can be used to store statements
     *         temporarily while validating them before uploading them to a permanent repository.
     * @throws OpenRDFException
     */
    Repository getNewTemporaryRepository() throws OpenRDFException;
    
    /**
     * 
     * @return A link to the initialised repository managed by this manager.
     * @throws OpenRDFException
     *             If there are any errors with the repository at this stage.
     */
    Repository getRepository() throws OpenRDFException;
    
    /**
     * 
     * @return The schema management graph URI for this repository manager.
     */
    URI getSchemaManagementGraph();
    
    /**
     * Sets the artifact management graph URI for use with this repository manager.
     * 
     * @param artifactManagementGraph
     */
    void setArtifactManagementGraph(URI artifactManagementGraph);
    
    /**
     * Sets the file repository management graph URI for use with this repository manager.
     * 
     * @param dataRepositoryManagementGraph
     */
    void setFileRepositoryManagementGraph(URI dataRepositoryManagementGraph);
    
    /**
     * Sets the repository for this repository manager.
     * 
     * @param repository
     *            The new repository to be managed by this repository manager.
     * @throws OpenRDFException
     *             If there are any errors with the repository at this stage.
     */
    void setRepository(Repository repository) throws OpenRDFException;
    
    /**
     * Sets the schema management graph URI for use with this repository manager.
     * 
     * @param schemaManagementGraph
     */
    void setSchemaManagementGraph(URI schemaManagementGraph);
    
    /**
     * Shutdown the repository manager, including any active repositories.
     * 
     * @throws RepositoryException
     *             If there were issues shutting down the active repositories.
     */
    void shutDown() throws RepositoryException;
    
}

@@ -843,16 +843,69 @@
 d.api;%0A%0A
+import java.util.Collection;%0Aimport java.util.List;%0A%0A
 import o
@@ -1055,16 +1055,67 @@
 ception;
+%0Aimport org.semanticweb.owlapi.model.OWLOntologyID;
 %0A%0A/**%0A *
@@ -1570,32 +1570,493 @@
 );%0A    %0A    /**%0A
+     * Gets a reference to the%0A     * %0A     * @return A link to the initialised management repository managed by this manager.%0A     * @throws OpenRDFException%0A     *             If there are any errors with the repository at this stage.%0A     */%0A    Repository getManagementRepository() throws OpenRDFException;%0A    %0A    /**%0A     * %0A     * @param schemaOntologies%0A     *            A list of schema ontologies that must be supported by the temporary repository.%0A
      * %0A     * @
@@ -2322,47 +2322,226 @@
 ory(
-) throws OpenRDFException;%0A    %0A    /**
+Collection%3COWLOntologyID%3E schemaOntologies) throws OpenRDFException;%0A    %0A    /**%0A     * %0A     * @param schemaOntologies%0A     *            A list of schema ontologies that must be supported by the permanent repository.
 %0A   
@@ -2758,16 +2758,25 @@
 tory get
+Permanent
 Reposito
@@ -2770,32 +2770,74 @@
 anentRepository(
+Collection%3COWLOntologyID%3E schemaOntologies
 ) throws OpenRDF
@@ -3758,16 +3758,26 @@
 void set
+Management
 Reposito

Add federated repository fetching methods to repository manager