01: /*
02: * Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2006.
03: *
04: * Licensed under the Aduna BSD-style license.
05: */
06: package org.openrdf.repository;
07:
08: import java.io.File;
09:
10: import org.openrdf.model.ValueFactory;
11:
12: /**
13: * A Sesame repository that contains RDF data that can be queried and updated.
14: * Access to the repository can be acquired by openening a connection to it.
15: * This connection can then be used to query and/or update the contents of the
16: * repository. Depending on the implementation of the repository, it may or may
17: * not support multiple concurrent connections.
18: * <p>
19: * Please note that a repository needs to be initialized before it can be used
20: * and that it should be shut down before it is discarded/garbage collected.
21: * Forgetting the latter can result in loss of data (depending on the Repository
22: * implementation)!
23: *
24: * @author Arjohn Kampman
25: */
26: public interface Repository {
27:
28: /**
29: * Set the directory where data and logging for this repository is stored.
30: *
31: * @param dataDir
32: * the directory where data for this repository is stored
33: */
34: public void setDataDir(File dataDir);
35:
36: /**
37: * Get the directory where data and logging for this repository is stored.
38: *
39: * @return the directory where data for this repository is stored.
40: */
41: public File getDataDir();
42:
43: /**
44: * Initializes this repository. A repository needs to be initialized before
45: * it can be used.
46: *
47: * @throws RepositoryException
48: * If the initialization failed.
49: */
50: public void initialize() throws RepositoryException;
51:
52: /**
53: * Shuts the repository down, releasing any resources that it keeps hold of.
54: * Once shut down, the repository can no longer be used until it is
55: * re-initialized.
56: */
57: public void shutDown() throws RepositoryException;
58:
59: /**
60: * Checks whether this repository is writable, i.e. if the data contained in
61: * this repository can be changed. The writability of the repository is
62: * determined by the writability of the Sail that this repository operates
63: * on.
64: */
65: public boolean isWritable() throws RepositoryException;
66:
67: /**
68: * Opens a connection to this repository that can be used for querying and
69: * updating the contents of the repository. Created connections need to be
70: * closed to make sure that any resources they keep hold of are released. The
71: * best way to do this is to use a try-finally-block as follows:
72: *
73: * <pre>
74: * Connection con = repository.getConnection();
75: * try {
76: * // perform operations on the connection
77: * }
78: * finally {
79: * con.close();
80: * }
81: * </pre>
82: *
83: * @return A connection that allows operations on this repository.
84: * @throws RepositoryException
85: * If something went wrong during the creation of the Connection.
86: */
87: public RepositoryConnection getConnection()
88: throws RepositoryException;
89:
90: /**
91: * Gets a ValueFactory for this Repository.
92: *
93: * @return A repository-specific ValueFactory.
94: */
95: public ValueFactory getValueFactory();
96: }
|