01: /*
02: (c) Copyright 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
03: [See end of file]
04: $Id: ModelSource.java,v 1.13 2008/01/28 15:51:37 chris-dollin Exp $
05: */
06:
07: package com.hp.hpl.jena.rdf.model;
08:
09: /**
10: The revised and soon-to-be-core interface for sources of models,
11: typically generated from RDF descriptions.
12:
13: <p>ModelSources can supply models in a variety of ways.
14:
15: <ul>
16: <li>some fresh model of the kind this ModelSource supplies
17: <li>the particular model this ModelSource supplies
18: <li>a named model from the collection this ModelSource supplies
19: </ul>
20:
21: A ModelSource is free to "forget" named models if it so wishes;
22: for example, it may be a discard-if-getting-full cache.
23:
24: @author hedgehog
25: */
26: public interface ModelSource extends ModelGetter {
27: /**
28: Answer this ModelSource's default model. Every ModelSource
29: has a default model. That model need not exist until the
30: first call on createDefaultModel. Multiple calls of getModel will
31: yield the *same* model. This method never returns <code>null</code>.
32: */
33: Model createDefaultModel();
34:
35: /**
36: Answer a Model that satisfies this ModelSource's shape. Different
37: calls return different models - they are not permitted to return
38: the same model. (Doing this on a database model will create new,
39: pseudo-anonymous, models.) This method never returns <code>null</code>.
40: */
41: Model createFreshModel();
42:
43: /**
44: Answer a model. Different ModelSources may implement this
45: in very different ways - ModelSource imposes few constraints
46: other than the result is a proper Model. A ModelSource may
47: use the name to identify an existing Model and re-use it,
48: or it may create a fresh Model each time.
49:
50: <p>It is expected that uses of different names will answer
51: different models (different in the strong sense of not having
52: the same underlying graph, too).
53:
54: <p>If the ModelSource does not have a model with this name,
55: and if it is not prepared to create one, it should throw a
56: DoesNotExistException. This method never returns <code>null</code>.
57: */
58: Model openModel(String name);
59:
60: /**
61: Answer the model named by <code>string</code> in this ModelSource,
62: if it [still] has one, or <code>null</code> if there isn't one.
63: The ModelSource should <i>not</i> create a fresh model if it
64: doesn't already have one.
65: */
66: Model openModelIfPresent(String string);
67: }
68:
69: /*
70: (c) Copyright 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
71: All rights reserved.
72:
73: Redistribution and use in source and binary forms, with or without
74: modification, are permitted provided that the following conditions
75: are met:
76:
77: 1. Redistributions of source code must retain the above copyright
78: notice, this list of conditions and the following disclaimer.
79:
80: 2. Redistributions in binary form must reproduce the above copyright
81: notice, this list of conditions and the following disclaimer in the
82: documentation and/or other materials provided with the distribution.
83:
84: 3. The name of the author may not be used to endorse or promote products
85: derived from this software without specific prior written permission.
86:
87: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
88: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
89: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
90: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
91: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
92: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
93: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
94: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
95: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
96: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
97: */
|