01: /*
02: * Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2007.
03: *
04: * Licensed under the Aduna BSD-style license.
05: */
06: package org.openrdf.sail;
07:
08: import java.io.File;
09:
10: import org.openrdf.model.ValueFactory;
11:
12: /**
13: * An interface for an RDF Storage And Inference Layer. RDF Sails can store RDF
14: * statements and evaluate queries over them. Statements can be stored in named
15: * contexts or in the null context. Contexts can be used to group sets of
16: * statements that logically belong together, for example because they come from
17: * the same source. Both URIs and bnodes can be used as context identifiers.
18: *
19: * @author Arjohn Kampman
20: */
21: public interface Sail {
22:
23: public void setDataDir(File dataDir);
24:
25: public File getDataDir();
26:
27: /**
28: * Initializes the Sail. Care should be taken that required initialization
29: * parameters have been set before this method is called. Please consult the
30: * specific Sail implementation for information about the relevant
31: * parameters.
32: *
33: * @throws SailException
34: * If the Sail could not be initialized.
35: */
36: public void initialize() throws SailException;
37:
38: /**
39: * Shuts down the Sail, giving it the opportunity to synchronize any stale
40: * data. Care should be taken that all initialized Sails are being shut down
41: * before an application exits to avoid potential loss of data. Once shut
42: * down, a Sail can no longer be used until it is re-initialized.
43: *
44: * @throws SailException
45: * If the Sail object encountered an error or unexpected situation
46: * internally.
47: */
48: public void shutDown() throws SailException;
49:
50: /**
51: * Checks whether this Sail object is writable, i.e. if the data contained in
52: * this Sail object can be changed.
53: */
54: public boolean isWritable() throws SailException;
55:
56: /**
57: * Opens a connection on the Sail which can be used to query and update data.
58: * Depending on how the implementation handles concurrent access, a call to
59: * this method might block when there is another open connection on this
60: * Sail.
61: *
62: * @throws SailException
63: * If no transaction could be started, for example because the Sail
64: * is not writable.
65: */
66: public SailConnection getConnection() throws SailException;
67:
68: /**
69: * Gets a ValueFactory object that can be used to create URI-, blank node-,
70: * literal- and statement objects.
71: *
72: * @return a ValueFactory object for this Sail object.
73: */
74: public ValueFactory getValueFactory();
75:
76: /**
77: * Adds the specified SailChangedListener to receive events when the data in
78: * this Sail object changes.
79: */
80: public void addSailChangedListener(SailChangedListener listener);
81:
82: /**
83: * Removes the specified SailChangedListener so that it no longer receives
84: * events from this Sail object.
85: */
86: public void removeSailChangedListener(SailChangedListener listener);
87: }
|