index[idx++] = 's'; StatementTree tree = new StatementTree(index); tree.addAll(trees.get(0)); trees.add(tree); return tree;
private void removeAll(TreeSet<Statement> owner, StatementTree chosen, Iterator<Statement> iter) { while (iter.hasNext()) { Statement last = iter.next(); for (StatementTree tree : trees) { if (tree.owns(owner)) { tree.reindex(); tree.remove(last); } else if (tree != chosen) { tree.remove(last); } } iter.remove(); // remove from chosen } }
@Override public int size() { return trees.get(0).size(); }
if (contexts == null || contexts.length == 1 && contexts[0] == null) { StatementTree chosen = choose(subj, pred, obj, null); Iterator<Statement> iter = chosen.subIterator(before(subj, pred, obj, null), true, after(subj, pred, obj, null), true); iter = new PatternIterator<Statement>(iter, subj, pred, obj, contexts); Iterator<Statement> iter = chosen.subIterator(before(subj, pred, obj, null), true, after(subj, pred, obj, null), true); removeAll(owner, chosen, iter); Iterator<Statement> iter = chosen.subIterator(before(subj, pred, obj, ctx), true, after(subj, pred, obj, ctx), true); removeAll(owner, chosen, iter);
StatementTree chosen = choose(subj, pred, obj, null); Iterator<Statement> iter = chosen .subIterator(before(subj, pred, obj, null),true, after(subj, pred, obj, null),true); iter = new PatternIterator<Statement>(iter, subj, pred, obj, StatementTree chosen = choose(subj, pred, obj, null); Iterator<Statement> iter = chosen .subIterator(before(subj, pred, obj, null),true, after(subj, pred, obj, null),true); removeAll(owner, chosen, iter); } else { StatementTree chosen = choose(subj, pred, obj, ctx); Iterator<Statement> iter = chosen.subIterator( before(subj, pred, obj, ctx),true, after(subj, pred, obj, ctx),true);
index[idx++] = 's'; StatementTree tree = new StatementTree(index); tree.addAll(trees.get(0)); trees.add(tree); return tree;
@Override public boolean add(Resource subj, IRI pred, Value obj, Resource... contexts) { if (subj == null || pred == null || obj == null) throw new UnsupportedOperationException("Incomplete statement"); boolean changed = false; for (Value ctx : notEmpty(contexts)) { if (ctx == null || ctx instanceof Resource) { Statement st = new TreeStatement(subj, pred, obj, (Resource)ctx); for (StatementTree tree : trees) { changed |= tree.add(st); } } } return changed; }
public boolean add(Resource subj, URI pred, Value obj, Resource... contexts) { if (subj == null || pred == null || obj == null) throw new UnsupportedOperationException("Incomplete statement"); boolean changed = false; for (Value ctx : notEmpty(contexts)) { if (ctx == null || ctx instanceof Resource) { Statement st = new TreeStatement(subj, pred, obj, (Resource) ctx); for (StatementTree tree : trees) { changed |= tree.add(st); } } } return changed; }
public TreeModel() { trees.add(new StatementTree("spog".toCharArray())); }
private void removeAll(TreeSet<Statement> owner, StatementTree chosen, Iterator<Statement> iter) { while (iter.hasNext()) { Statement last = iter.next(); for (StatementTree tree : trees) { if (tree.owns(owner)) { tree.reindex(); tree.remove(last); } else if (tree != chosen) { tree.remove(last); } } iter.remove(); // remove from chosen } }
@Override public int size() { return trees.get(0).size(); }
public TreeModel() { trees.add(new StatementTree("spog".toCharArray())); }
public Iterator<Statement> iterator() { StatementTree tree = model.trees.get(0); Iterator<Statement> it = tree.subIterator(lo, loInclusive, hi, hiInclusive); return model.new ModelIterator(it, tree); }
public void clear() { StatementTree tree = model.trees.get(0); Iterator<Statement> it = tree.subIterator(lo, loInclusive, hi, hiInclusive); it = model.new ModelIterator(it, tree); while (it.hasNext()) { it.remove(); } }
Iterator<Statement> match(Value subj, Value pred, Value obj, Value ctx) { if (!isResourceURIResource(subj, pred, ctx)) { Set<Statement> emptySet = Collections.emptySet(); return emptySet.iterator(); } StatementTree tree = choose(subj, pred, obj, ctx); Iterator<Statement> it = tree.subIterator(before(subj, pred, obj, ctx),true, after(subj, pred, obj, ctx),true); return new ModelIterator(it, tree); }
@Override public void clear() { for (StatementTree tree : trees) { tree.clear(); } }
private StatementTree choose(Value subj, Value pred, Value obj, Value ctx) { for (StatementTree tree : trees) { if (tree.isIndexed(subj, pred, obj, ctx)) return tree; } return index(subj, pred, obj, ctx); }
@Override public void clear() { for (StatementTree tree : trees) { tree.clear(); } }