01: /*
02: (c) Copyright 2006, 2007, 2008 Hewlett-Packard Development Company, LP
03: All rights reserved - see end of file.
04: $Id: UnionModelAssembler.java,v 1.7 2008/01/03 15:19:05 chris-dollin Exp $
05: */
06:
07: package com.hp.hpl.jena.assembler.assemblers;
08:
09: import com.hp.hpl.jena.assembler.*;
10: import com.hp.hpl.jena.graph.*;
11: import com.hp.hpl.jena.graph.compose.*;
12: import com.hp.hpl.jena.graph.impl.GraphBase;
13: import com.hp.hpl.jena.rdf.model.*;
14: import com.hp.hpl.jena.util.iterator.*;
15:
16: public class UnionModelAssembler extends ModelAssembler implements
17: Assembler {
18: private static final Graph immutable = new GraphBase() {
19: protected ExtendedIterator graphBaseFind(TripleMatch m) {
20: return NullIterator.instance;
21: }
22: };
23:
24: protected Model openEmptyModel(Assembler a, Resource root, Mode mode) {
25: checkType(root, JA.UnionModel);
26: MultiUnion union = new MultiUnion();
27: union.addGraph(getRootModel(a, root, mode));
28: addSubModels(a, root, union, mode);
29: return ModelFactory.createModelForGraph(union);
30: }
31:
32: private Graph getRootModel(Assembler a, Resource root, Mode mode) {
33: Resource r = getUniqueResource(root, JA.rootModel);
34: return r == null ? immutable : a.openModel(r, mode).getGraph();
35: }
36:
37: private void addSubModels(Assembler a, Resource root,
38: MultiUnion union, Mode mode) {
39: for (StmtIterator it = root.listProperties(JA.subModel); it
40: .hasNext();) {
41: Resource resource = getResource(it.nextStatement());
42: union.addGraph(a.openModel(resource, mode).getGraph());
43: }
44: }
45:
46: }
47:
48: /*
49: * (c) Copyright 2006, 2007, 2008 Hewlett-Packard Development Company, LP
50: * All rights reserved.
51: *
52: * Redistribution and use in source and binary forms, with or without
53: * modification, are permitted provided that the following conditions
54: * are met:
55: * 1. Redistributions of source code must retain the above copyright
56: * notice, this list of conditions and the following disclaimer.
57: * 2. Redistributions in binary form must reproduce the above copyright
58: * notice, this list of conditions and the following disclaimer in the
59: * documentation and/or other materials provided with the distribution.
60: * 3. The name of the author may not be used to endorse or promote products
61: * derived from this software without specific prior written permission.
62: *
63: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
64: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
65: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
66: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
67: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
68: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
69: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
70: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
71: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
72: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
73: */
|