public void ConstraintBound() { MemoryTripleStore statements = new MemoryTripleStore(); statements.Add(new Statement(new UriRef("ex:s"), new UriRef("ex:p"), new UriRef("ex:o"))); SimpleQueryBuilder builder = new SimpleQueryBuilder(); builder.AddPattern(new Pattern(new UriRef("ex:s"), new UriRef("ex:p"), new Variable("v"))); builder.AddConstraint(new Constraint(new Bound(new Variable("v")))); Query query = builder.GetQuery(); QuerySqlMapper mapper = new QuerySqlMapper(query, statements); string expected = "SELECT rn_v.resourceHash rh_v, rn_v.nodeHash nh_v, rn_v.nodeType nt_v, COALESCE(u_v.uri, pl_v.value, l_v.value) val_v, COALESCE(tl_v.value, t_v.value) sub_v " + "FROM Statements s1 JOIN ResourceNodes rn_v ON rn_v.resourceHash=s1.objectHash AND rn_v.graphId=s1.graphId " + "LEFT OUTER JOIN UriRefs u_v ON rn_v.nodeHash=u_v.hash AND rn_v.nodeType='u' " + "LEFT OUTER JOIN PlainLiterals pl_v ON rn_v.nodeHash=pl_v.hash AND rn_v.nodeType='p' " + "LEFT OUTER JOIN Languages l_v ON pl_v.languageHash=l_v.hash " + "LEFT OUTER JOIN TypedLiterals tl_v ON rn_v.nodehash=tl_v.hash AND rn_v.nodeType='t' " + "LEFT OUTER JOIN DataTypes t_v ON tl_v.datatypeHash=t_v.hash " + "WHERE s1.subjectHash=" + statements.GetResourceDenotedBy(new UriRef("ex:s")).GetHashCode() + " AND s1.predicateHash=" + statements.GetResourceDenotedBy(new UriRef("ex:p")).GetHashCode() + " AND s1.graphId=" + statements.GetHashCode() + " AND s1.objectHash IS NOT NULL"; Assert.AreEqual(expected, mapper.Sql); }