@SuppressWarnings("unchecked") public CloseableIterator<STMT> findStatements(@Nullable ID subject, @Nullable UID predicate, @Nullable NODE object, @Nullable UID context, boolean includeInferred) { Iterator<STMT> iterator = null; if (subject != null) { iterator = getIndexed(subject, predicate, subjects); } else if (objects != null && object != null && object.isResource()) { iterator = getIndexed(object.asResource(), predicate, objects); } else { List<Iterator<STMT>> iterators = Lists.newArrayList(); for (PredicateCache stmtCache : subjects.values()) { iterators.add(stmtCache.iterator(predicate)); } iterator = Iterators.concat(iterators.toArray(new Iterator[iterators.size()])); } return new ResultIterator(iterator, subject, predicate, object, context, includeInferred); }
@SuppressWarnings("unchecked") private <RT> RT getAsProjectionValue(NODE node, Class<RT> type) { if (node.isResource()) { if (type.equals(String.class)) { // TODO : always return LID ? return (RT) session.getLID(node.asResource()).getId(); } else { return session.get(type, node.asResource()); } } else { return converterRegistry.fromString(node.getValue(), type); } }
private Map<ID, Multimap<UID, STMT>> getPropertiesMap(CloseableIterator<STMT> stmts, boolean inv) { Map<ID, Multimap<UID, STMT>> propertiesMap = new HashMap<ID, Multimap<UID, STMT>>(); try { while (stmts.hasNext()) { STMT stmt = stmts.next(); ID key = inv ? stmt.getObject().asResource() : stmt.getSubject(); Multimap<UID, STMT> properties = propertiesMap.get(key); if (properties == null) { properties = MultimapFactory.<UID, STMT> create(); propertiesMap.put(key, properties); } properties.put(stmt.getPredicate(), stmt); } } finally { stmts.close(); } return propertiesMap; }
Map<String, NODE> row = results.next(); if (!row.isEmpty()) { ids.add(row.values().iterator().next().asResource()); } else { ids.add(null);
public void remove(@Nullable ID subject, @Nullable UID predicate, @Nullable NODE object, @Nullable UID context) { // remove all if (subject == null && predicate == null && object == null && context == null) { subjects.clear(); if (objects != null) { objects.clear(); } // subject given } else if (subject != null) { PredicateCache cache = subjects.get(subject); if (cache != null) { Iterator<STMT> stmts = cache.iterator(predicate); removeStatements(IteratorAdapter.asList(stmts)); } // object given } else if (object != null && object.isResource() && objects != null) { PredicateCache cache = objects.get(object.asResource()); if (cache != null) { Iterator<STMT> stmts = cache.iterator(predicate); removeStatements(IteratorAdapter.asList(stmts)); } // predicate or context given } else { for (Map.Entry<ID, PredicateCache> entry : subjects.entrySet()) { PredicateCache cache = entry.getValue(); Iterator<STMT> stmts = cache.iterator(predicate); removeStatements(IteratorAdapter.asList(stmts)); } } }
typeToIds.put(cl, ids); newHandled.add(stmt.getObject().asResource()); ids.add(stmt.getObject().asResource());
List<STMT> typeStmts = findStatements(stmt.getObject().asResource(), RDF.type, null, null, false); boolean matched = false; for (STMT typeStmt : typeStmts) {