/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.apache.jena.rdf.model; /** The revised and soon-to-be-core interface for sources of models, typically generated from RDF descriptions. <p>ModelSources can supply models in a variety of ways. <ul> <li>some fresh model of the kind this ModelSource supplies <li>the particular model this ModelSource supplies <li>a named model from the collection this ModelSource supplies </ul> A ModelSource is free to "forget" named models if it so wishes; for example, it may be a discard-if-getting-full cache. */ public interface ModelSource extends ModelGetter { /** Answer this ModelSource's default model. Every ModelSource has a default model. That model need not exist until the first call on createDefaultModel. Multiple calls of getModel will yield the *same* model. This method never returns <code>null</code>. */ Model createDefaultModel(); /** Answer a Model that satisfies this ModelSource's shape. Different calls return different models - they are not permitted to return the same model. (Doing this on a database model will create new, pseudo-anonymous, models.) This method never returns <code>null</code>. */ Model createFreshModel(); /** Answer a model. Different ModelSources may implement this in very different ways - ModelSource imposes few constraints other than the result is a proper Model. A ModelSource may use the name to identify an existing Model and re-use it, or it may create a fresh Model each time. <p>It is expected that uses of different names will answer different models (different in the strong sense of not having the same underlying graph, too). <p>If the ModelSource does not have a model with this name, and if it is not prepared to create one, it should throw a DoesNotExistException. This method never returns <code>null</code>. */ Model openModel( String name ); /** Answer the model named by <code>string</code> in this ModelSource, if it [still] has one, or <code>null</code> if there isn't one. The ModelSource should <i>not</i> create a fresh model if it doesn't already have one. */ Model openModelIfPresent( String string ); }