private Param<NODE> var(String var) { return new QNODE<NODE>(NODE.class, var); }
@Test public void Pattern_with_Filters() { Block pattern = Blocks.pattern(subject, predicate, object); List<Predicate> filters = Arrays.<Predicate> asList( subject.eq(new UID(TEST.NS)), subject.in(RDF.type, RDF.first), predicate.eq(RDFS.label), subject.ne(new UID(TEST.NS)), object.isNull(), object.isNotNull(), object.stringValue().startsWith("X"), object.lit().like("X%"), object.lit().matches(".*"), object.lit().lt("D"), object.lit().gt("B"), object.lit().loe("C"), object.lit().goe("C"), object.lit().eqIgnoreCase("X"), object.lit().isEmpty() ); for (Predicate filter : filters) { query().where(pattern, filter).selectSingle(subject); } }
private Map<ID, Multimap<UID, STMT>> getInvProperties(MappedClass mappedClass, Collection<ID> objects) { RDFQuery query = new RDFQueryImpl(connection); query.where( Blocks.SPOC, QNODE.p.in(mappedClass.getInvMappedPredicates())); if (objects.size() == 1) { query.set(QNODE.o, objects.iterator().next()); } else { query.where(QNODE.o.in(objects)); } CloseableIterator<STMT> stmts = query.construct(Blocks.SPOC); Map<ID, Multimap<UID, STMT>> invProperties = getPropertiesMap(stmts, true); for (ID id : objects) { if (!invProperties.containsKey(id)) { invProperties.put(id, MultimapFactory.<UID, STMT> create()); } } return invProperties; }
@Test public void To_String_with_Filter() { Block block = Blocks.optionalFilter(Blocks.SPOC, QNODE.o.lit().lt("X")); assertEquals("OPTIONAL { {s} {p} {o} {c} . FILTER({o} < \"X\") }", block.toString()); }
@Test public void Desc_Order() { assertEquals("{o} DESC", QNODE.o.desc().toString()); }
@Test public void Asc_Order() { assertEquals("{o} ASC", QNODE.o.asc().toString()); }
private List<STMT> findStatements(@Nullable ID subject, @Nullable UID predicate, @Nullable NODE object, @Nullable UID context, boolean includeInferred) { if (logger.isDebugEnabled()) { logger.debug("findStatements " + subject + " " + predicate + " " + object + " " + context); } // rdf type inference if (RDF.type.equals(predicate) && subject == null && object != null && connection.getInferenceOptions().subClassOf()) { Collection<UID> types = ontology.getSubtypes(object.asURI()); if (types.size() > 1) { RDFQuery query = new RDFQueryImpl(connection); CloseableIterator<STMT> stmts = query.where( Blocks.SPOC, QNODE.o.in(types)) .set(QNODE.p, predicate) .construct(Blocks.SPOC); return IteratorAdapter.asList(stmts); } } return IteratorAdapter.asList(connection.findStatements(subject, predicate, object, context, includeInferred)); }
@Test public void Equals() { Block block1 = Blocks.optional(Blocks.SPOC); Block block2 = Blocks.optionalFilter(Blocks.SPOC, QNODE.o.lit().lt("X")); assertFalse(block1.equals(block2)); } }
@Test public void Equals() { Block block1 = Blocks.graphFilter(new QNODE<UID>(UID.class, "c"), Blocks.SPO); Block block2 = Blocks.graphFilter(new QNODE<UID>(UID.class, "c"), Blocks.SPOC); Block block3 = Blocks.graphFilter(new QNODE<UID>(UID.class, "d"), Blocks.SPO); assertFalse(block1.equals(block2)); assertFalse(block1.equals(block3)); assertFalse(block2.equals(block3)); } }
public QLIT lit() { if (lit == null) { lit = new QLIT(getName()); } return lit; }
@Test public void To_String() { Block block = Blocks.graph(new QNODE<UID>(UID.class, "c"), Blocks.SPO); assertEquals("GRAPH {c}{ {s} {p} {o} . }", block.toString()); }
public QID id() { if (id == null) { id = new QID(getName()); } return id; }
@Test public void Exists() { Block block = Blocks.graphFilter(new QNODE<UID>(UID.class, "c"), Blocks.SPO); assertEquals("exists GRAPH {c}{ {s} {p} {o} . }", block.exists().toString()); }
private Collection<NODE> convertList(ID subject, UID context) { List<NODE> list = new ArrayList<NODE>(); while (subject != null && !subject.equals(RDF.nil)) { if (logger.isDebugEnabled()) { logger.debug("query for list elements of " + subject); } Map<String, NODE> nodes = listCache.get(subject); if (nodes == null) { nodes = new RDFQueryImpl(connection) .where(Blocks.S_REST, Blocks.optional(Blocks.S_FIRST)) .set(QNODE.s, subject) .selectSingle(QNODE.first, QNODE.rest); } if (nodes == null) { if (list.size() == 0) { list.add(subject); } break; } NODE value = nodes.get(QNODE.first.getName()); if (value != null) { list.add(value); } else { list.add(null); } subject = (ID) nodes.get(QNODE.rest.getName()); } return list; }