http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/80faf06d/sail/src/test/java/mvm/rya/RdfCloudTripleStoreConnectionTest.java
----------------------------------------------------------------------
diff --git a/sail/src/test/java/mvm/rya/RdfCloudTripleStoreConnectionTest.java 
b/sail/src/test/java/mvm/rya/RdfCloudTripleStoreConnectionTest.java
new file mode 100644
index 0000000..31efa3a
--- /dev/null
+++ b/sail/src/test/java/mvm/rya/RdfCloudTripleStoreConnectionTest.java
@@ -0,0 +1,1363 @@
+package mvm.rya;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+
+import static mvm.rya.api.RdfCloudTripleStoreConstants.NAMESPACE;
+
+import java.io.InputStream;
+import java.util.List;
+
+import junit.framework.TestCase;
+import mvm.rya.accumulo.AccumuloRdfConfiguration;
+import mvm.rya.accumulo.AccumuloRyaDAO;
+import mvm.rya.api.RdfCloudTripleStoreConfiguration;
+import mvm.rya.api.RdfCloudTripleStoreConstants;
+import mvm.rya.rdftriplestore.RdfCloudTripleStore;
+import mvm.rya.rdftriplestore.RyaSailRepository;
+import mvm.rya.rdftriplestore.inference.InferenceEngine;
+import mvm.rya.rdftriplestore.namespace.NamespaceManager;
+
+import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.mock.MockInstance;
+import org.junit.Ignore;
+import org.openrdf.model.Literal;
+import org.openrdf.model.Resource;
+import org.openrdf.model.Statement;
+import org.openrdf.model.URI;
+import org.openrdf.model.impl.StatementImpl;
+import org.openrdf.model.impl.URIImpl;
+import org.openrdf.model.impl.ValueFactoryImpl;
+import org.openrdf.model.vocabulary.OWL;
+import org.openrdf.model.vocabulary.RDF;
+import org.openrdf.model.vocabulary.RDFS;
+import org.openrdf.query.BindingSet;
+import org.openrdf.query.QueryLanguage;
+import org.openrdf.query.QueryResultHandlerException;
+import org.openrdf.query.TupleQuery;
+import org.openrdf.query.TupleQueryResultHandler;
+import org.openrdf.query.TupleQueryResultHandlerException;
+import org.openrdf.query.Update;
+import org.openrdf.repository.Repository;
+import org.openrdf.repository.RepositoryConnection;
+import org.openrdf.repository.RepositoryResult;
+import org.openrdf.repository.sail.SailRepository;
+import org.openrdf.rio.RDFFormat;
+
+/**
+ * Class RdfCloudTripleStoreConnectionTest
+ * Date: Mar 3, 2011
+ * Time: 12:03:29 PM
+ */
+public class RdfCloudTripleStoreConnectionTest extends TestCase {
+    private Repository repository;
+    ValueFactoryImpl vf = new ValueFactoryImpl();
+    private InferenceEngine internalInferenceEngine;
+
+    static String litdupsNS = "urn:test:litdups#";
+    URI cpu = vf.createURI(litdupsNS, "cpu");
+    protected RdfCloudTripleStore store;
+
+    public void setUp() throws Exception {
+        super.setUp();
+        store = new MockRdfCloudStore();
+//        store.setDisplayQueryPlan(true);
+//        store.setInferencing(false);
+        NamespaceManager nm = new NamespaceManager(store.getRyaDAO(), 
store.getConf());
+        store.setNamespaceManager(nm);
+        repository = new RyaSailRepository(store);
+        repository.initialize();
+    }
+
+    public void tearDown() throws Exception {
+        super.tearDown();
+        repository.shutDown();
+    }
+
+    public void testAddStatement() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+        URI uri1 = vf.createURI(litdupsNS, "uri1");
+        conn.add(cpu, loadPerc, uri1);
+        conn.commit();
+
+        RepositoryResult<Statement> result = conn.getStatements(cpu, loadPerc, 
null, true);
+        int count = 0;
+        while (result.hasNext()) {
+            count++;
+            result.next();
+        }
+        result.close();
+        assertEquals(1, count);
+
+        //clean up
+        conn.remove(cpu, loadPerc, uri1);
+
+//        //test removal
+        result = conn.getStatements(cpu, loadPerc, null, true, new 
Resource[0]);
+        count = 0;
+        while (result.hasNext()) {
+            count++;
+            result.next();
+        }
+        result.close();
+        assertEquals(0, count);
+
+        conn.close();
+    }
+
+//    public void testAddAuth() throws Exception {
+//        RepositoryConnection conn = repository.getConnection();
+//        URI cpu = vf.createURI(litdupsNS, "cpu");
+//        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+//        URI uri1 = vf.createURI(litdupsNS, "uri1");
+//        URI uri2 = vf.createURI(litdupsNS, "uri2");
+//        URI uri3 = vf.createURI(litdupsNS, "uri3");
+//        URI auth1 = 
vf.createURI(RdfCloudTripleStoreConstants.AUTH_NAMESPACE, "1");
+//        URI auth2 = 
vf.createURI(RdfCloudTripleStoreConstants.AUTH_NAMESPACE, "2");
+//        URI auth3 = 
vf.createURI(RdfCloudTripleStoreConstants.AUTH_NAMESPACE, "3");
+//        conn.add(cpu, loadPerc, uri1, auth1, auth2, auth3);
+//        conn.add(cpu, loadPerc, uri2, auth2, auth3);
+//        conn.add(cpu, loadPerc, uri3, auth3);
+//        conn.commit();
+//
+//        //query with no auth
+//        RepositoryResult<Statement> result = conn.getStatements(cpu, 
loadPerc, null, true);
+//        int count = 0;
+//        while (result.hasNext()) {
+//            count++;
+//            result.next();
+//        }
+//        assertEquals(0, count);
+//        result.close();
+//
+//        String query = "select * where {" +
+//                "<" + cpu.toString() + "> ?p ?o1." +
+//                "}";
+//        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+//        
tupleQuery.setBinding(RdfCloudTripleStoreConfiguration.CONF_QUERY_AUTH, 
vf.createLiteral("2"));
+//        CountTupleHandler cth = new CountTupleHandler();
+//        tupleQuery.evaluate(cth);
+//        assertEquals(2, cth.getCount());
+//
+//        conn.close();
+//    }
+
+    public void testEvaluate() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+        URI uri1 = vf.createURI(litdupsNS, "uri1");
+        conn.add(cpu, loadPerc, uri1);
+        conn.commit();
+
+        String query = "select * where {" +
+                "?x <" + loadPerc.stringValue() + "> ?o1." +
+                "}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler cth = new CountTupleHandler();
+        tupleQuery.evaluate(cth);
+        assertEquals(cth.getCount(), 1);
+        conn.close();
+    }
+
+    public void testEvaluateMultiLine() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+        URI uri1 = vf.createURI(litdupsNS, "uri1");
+        URI pred2 = vf.createURI(litdupsNS, "pred2");
+        URI uri2 = vf.createURI(litdupsNS, "uri2");
+        conn.add(cpu, loadPerc, uri1);
+        conn.add(cpu, pred2, uri2);
+        conn.commit();
+
+        String query = "select * where {" +
+                "?x <" + loadPerc.stringValue() + "> ?o1." +
+                "?x <" + pred2.stringValue() + "> ?o2." +
+                "}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        
tupleQuery.setBinding(RdfCloudTripleStoreConfiguration.CONF_QUERYPLAN_FLAG, 
RdfCloudTripleStoreConstants.VALUE_FACTORY.createLiteral(true));
+        CountTupleHandler cth = new CountTupleHandler();
+        tupleQuery.evaluate(cth);
+        conn.close();
+        assertEquals(cth.getCount(), 1);
+    }
+
+    public void testPOObjRange() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+        Literal six = vf.createLiteral("6");
+        Literal sev = vf.createLiteral("7");
+        Literal ten = vf.createLiteral("10");
+        conn.add(cpu, loadPerc, six);
+        conn.add(cpu, loadPerc, sev);
+        conn.add(cpu, loadPerc, ten);
+        conn.commit();
+
+        String query = "PREFIX mvm: <" + NAMESPACE + ">\n" +
+                "select * where {" +
+                "?x <" + loadPerc.stringValue() + "> ?o.\n" +
+                "FILTER(mvm:range(?o, '6', '8'))." +
+                "}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler cth = new CountTupleHandler();
+        tupleQuery.evaluate(cth);
+        conn.close();
+        assertEquals(2, cth.getCount());
+    }
+
+    public void testPOPredRange() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc1");
+        URI loadPerc2 = vf.createURI(litdupsNS, "loadPerc2");
+        URI loadPerc3 = vf.createURI(litdupsNS, "loadPerc3");
+        URI loadPerc4 = vf.createURI(litdupsNS, "loadPerc4");
+        Literal six = vf.createLiteral("6");
+        Literal sev = vf.createLiteral("7");
+        Literal ten = vf.createLiteral("10");
+        conn.add(cpu, loadPerc, six);
+        conn.add(cpu, loadPerc2, sev);
+        conn.add(cpu, loadPerc4, ten);
+        conn.commit();
+
+        String query = "PREFIX mvm: <" + NAMESPACE + ">\n" +
+                "select * where {" +
+                "?x ?p ?o.\n" +
+                "FILTER(mvm:range(?p, <" + loadPerc.stringValue() + ">, <" + 
loadPerc3.stringValue() + ">))." +
+                "}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler cth = new CountTupleHandler();
+        tupleQuery.evaluate(cth);
+        conn.close();
+        assertEquals(cth.getCount(), 2);
+    }
+
+    public void testSPOPredRange() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc1");
+        URI loadPerc2 = vf.createURI(litdupsNS, "loadPerc2");
+        URI loadPerc3 = vf.createURI(litdupsNS, "loadPerc3");
+        URI loadPerc4 = vf.createURI(litdupsNS, "loadPerc4");
+        Literal six = vf.createLiteral("6");
+        Literal sev = vf.createLiteral("7");
+        Literal ten = vf.createLiteral("10");
+        conn.add(cpu, loadPerc, six);
+        conn.add(cpu, loadPerc2, sev);
+        conn.add(cpu, loadPerc4, ten);
+        conn.commit();
+
+        String query = "PREFIX mvm: <" + NAMESPACE + ">\n" +
+                "select * where {" +
+                "<" + cpu.stringValue() + "> ?p ?o.\n" +
+                "FILTER(mvm:range(?p, <" + loadPerc.stringValue() + ">, <" + 
loadPerc3.stringValue() + ">))." +
+                "}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler cth = new CountTupleHandler();
+        tupleQuery.evaluate(cth);
+        conn.close();
+        assertEquals(2, cth.getCount());
+    }
+
+    public void testSPOSubjRange() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+        URI cpu2 = vf.createURI(litdupsNS, "cpu2");
+        URI cpu3 = vf.createURI(litdupsNS, "cpu3");
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+        Literal six = vf.createLiteral("6");
+        Literal sev = vf.createLiteral("7");
+        Literal ten = vf.createLiteral("10");
+        conn.add(cpu, loadPerc, six);
+        conn.add(cpu2, loadPerc, sev);
+        conn.add(cpu3, loadPerc, ten);
+        conn.commit();
+
+        String query = "PREFIX mvm: <" + NAMESPACE + ">\n" +
+                "select * where {" +
+                "?s ?p ?o.\n" +
+                "FILTER(mvm:range(?s, <" + cpu.stringValue() + ">, <" + 
cpu2.stringValue() + ">))." +
+                "}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler cth = new CountTupleHandler();
+        tupleQuery.evaluate(cth);
+        conn.close();
+        assertEquals(cth.getCount(), 2);
+    }
+
+    public void testSPOObjRange() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+        Literal six = vf.createLiteral("6");
+        Literal sev = vf.createLiteral("7");
+        Literal ten = vf.createLiteral("10");
+        conn.add(cpu, loadPerc, six);
+        conn.add(cpu, loadPerc, sev);
+        conn.add(cpu, loadPerc, ten);
+        conn.commit();
+
+        String query = "PREFIX mvm: <" + NAMESPACE + ">\n" +
+                "select * where {" +
+                "<" + cpu.stringValue() + "> <" + loadPerc.stringValue() + "> 
?o.\n" +
+                "FILTER(mvm:range(?o, '6', '8'))." +
+                "}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler cth = new CountTupleHandler();
+        tupleQuery.evaluate(cth);
+        conn.close();
+        assertEquals(cth.getCount(), 2);
+    }
+
+    public void testOSPObjRange() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+        Literal six = vf.createLiteral("6");
+        Literal sev = vf.createLiteral("7");
+        Literal ten = vf.createLiteral("10");
+        conn.add(cpu, loadPerc, six);
+        conn.add(cpu, loadPerc, sev);
+        conn.add(cpu, loadPerc, ten);
+        conn.commit();
+
+        String query = "PREFIX mvm: <" + NAMESPACE + ">\n" +
+                "select * where {" +
+                "?s ?p ?o.\n" +
+                "FILTER(mvm:range(?o, '6', '8'))." +
+                "}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler cth = new CountTupleHandler();
+        tupleQuery.evaluate(cth);
+        conn.close();
+        assertEquals(cth.getCount(), 2);
+    }
+    
+    public void testRegexFilter() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+        URI testClass = vf.createURI(litdupsNS, "test");
+        Literal six = vf.createLiteral("6");
+        Literal sev = vf.createLiteral("7");
+        Literal ten = vf.createLiteral("10");
+        conn.add(cpu, loadPerc, six);
+        conn.add(cpu, loadPerc, sev);
+        conn.add(cpu, loadPerc, ten);
+        conn.add(cpu, RDF.TYPE, testClass);
+        conn.commit();
+
+        String query = "PREFIX mvm: <" + NAMESPACE + ">\n" +
+                "select * where {" +
+                String.format("<%s> ?p ?o.\n", cpu.stringValue()) +
+                "FILTER(regex(?o, '^1'))." +
+                "}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler cth = new CountTupleHandler();
+        tupleQuery.evaluate(cth);
+        conn.close();
+        assertEquals(cth.getCount(), 1);
+    }
+
+    public void testMMRTS152() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+        URI loadPerc = vf.createURI(litdupsNS, "testPred");
+        URI uri1 = vf.createURI(litdupsNS, "uri1");
+        conn.add(cpu, loadPerc, uri1);
+        conn.commit();
+
+        RepositoryResult<Statement> result = conn.getStatements(cpu, loadPerc, 
null, false, new Resource[0]);
+//        RdfCloudTripleStoreCollectionStatementsIterator iterator = new 
RdfCloudTripleStoreCollectionStatementsIterator(
+//                cpu, loadPerc, null, store.connector,
+//                vf, new Configuration(), null);
+
+        while (result.hasNext()) {
+            assertTrue(result.hasNext());
+            assertNotNull(result.next());
+        }
+
+        conn.close();
+    }
+
+    public void testDuplicateLiterals() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+        Literal lit1 = vf.createLiteral(0.0);
+        Literal lit2 = vf.createLiteral(0.0);
+        Literal lit3 = vf.createLiteral(0.0);
+
+        conn.add(cpu, loadPerc, lit1);
+        conn.add(cpu, loadPerc, lit2);
+        conn.add(cpu, loadPerc, lit3);
+        conn.commit();
+
+        RepositoryResult<Statement> result = conn.getStatements(cpu, loadPerc, 
null, true, new Resource[0]);
+        int count = 0;
+        while (result.hasNext()) {
+            count++;
+            result.next();
+        }
+        result.close();
+        assertEquals(1, count);
+
+        //clean up
+        conn.remove(cpu, loadPerc, lit1);
+        conn.close();
+    }
+
+    public void testNotDuplicateUris() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+        URI uri1 = vf.createURI(litdupsNS, "uri1");
+        URI uri2 = vf.createURI(litdupsNS, "uri1");
+        URI uri3 = vf.createURI(litdupsNS, "uri1");
+
+        conn.add(cpu, loadPerc, uri1);
+        conn.add(cpu, loadPerc, uri2);
+        conn.add(cpu, loadPerc, uri3);
+        conn.commit();
+
+        RepositoryResult<Statement> result = conn.getStatements(cpu, loadPerc, 
null, true, new Resource[0]);
+        int count = 0;
+        while (result.hasNext()) {
+            count++;
+            result.next();
+        }
+        result.close();
+        assertEquals(1, count);
+
+        //clean up
+        conn.remove(cpu, loadPerc, uri1);
+        conn.close();
+    }
+
+    public void testNamespaceUsage() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+        conn.setNamespace("lit", litdupsNS);
+        URI loadPerc = vf.createURI(litdupsNS, "loadPerc");
+        final URI uri1 = vf.createURI(litdupsNS, "uri1");
+        conn.add(cpu, loadPerc, uri1);
+        conn.commit();
+
+        String query = "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {lit:cpu lit:loadPerc ?o.}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        tupleQuery.evaluate(new TupleQueryResultHandler() {
+
+            @Override
+            public void startQueryResult(List<String> strings) throws 
TupleQueryResultHandlerException {
+            }
+
+            @Override
+            public void endQueryResult() throws 
TupleQueryResultHandlerException {
+
+            }
+
+            @Override
+            public void handleSolution(BindingSet bindingSet) throws 
TupleQueryResultHandlerException {
+                
assertTrue(uri1.toString().equals(bindingSet.getBinding("o").getValue().stringValue()));
+            }
+
+            @Override
+            public void handleBoolean(boolean paramBoolean) throws 
QueryResultHandlerException {
+            }
+
+            @Override
+            public void handleLinks(List<String> paramList) throws 
QueryResultHandlerException {
+            }
+        });
+        conn.close();
+    }
+
+    public void testSubPropertyOf() throws Exception {
+        if(internalInferenceEngine == null) return; //infer not supported;
+
+        RepositoryConnection conn = repository.getConnection();
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, 
"undergradDegreeFrom"), RDFS.SUBPROPERTYOF, vf.createURI(litdupsNS, 
"degreeFrom")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "gradDegreeFrom"), 
RDFS.SUBPROPERTYOF, vf.createURI(litdupsNS, "degreeFrom")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "degreeFrom"), 
RDFS.SUBPROPERTYOF, vf.createURI(litdupsNS, "memberOf")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "memberOf"), 
RDFS.SUBPROPERTYOF, vf.createURI(litdupsNS, "associatedWith")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "UgradA"), 
vf.createURI(litdupsNS, "undergradDegreeFrom"), vf.createURI(litdupsNS, 
"Harvard")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "GradB"), 
vf.createURI(litdupsNS, "gradDegreeFrom"), vf.createURI(litdupsNS, "Yale")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "ProfessorC"), 
vf.createURI(litdupsNS, "memberOf"), vf.createURI(litdupsNS, "Harvard")));
+        conn.commit();
+        conn.close();
+
+        internalInferenceEngine.refreshGraph();
+
+        conn = repository.getConnection();
+
+        String query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s lit:degreeFrom lit:Harvard.}";
+
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(1, tupleHandler.getCount());
+
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s lit:memberOf lit:Harvard.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(2, tupleHandler.getCount());
+
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s lit:associatedWith ?o.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(3, tupleHandler.getCount());
+
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s lit:gradDegreeFrom lit:Yale.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(1, tupleHandler.getCount());
+
+        conn.close();
+    }
+
+    public void testEquivPropOf() throws Exception {
+        if(internalInferenceEngine == null) return; //infer not supported;
+
+        RepositoryConnection conn = repository.getConnection();
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, 
"undergradDegreeFrom"), OWL.EQUIVALENTPROPERTY, vf.createURI(litdupsNS, 
"ugradDegreeFrom")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "UgradA"), 
vf.createURI(litdupsNS, "undergradDegreeFrom"), vf.createURI(litdupsNS, 
"Harvard")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "GradB"), 
vf.createURI(litdupsNS, "ugradDegreeFrom"), vf.createURI(litdupsNS, 
"Harvard")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "GradC"), 
vf.createURI(litdupsNS, "ugraduateDegreeFrom"), vf.createURI(litdupsNS, 
"Harvard")));
+        conn.commit();
+        conn.close();
+
+        internalInferenceEngine.refreshGraph();
+
+        conn = repository.getConnection();
+
+        String query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s lit:ugradDegreeFrom lit:Harvard.}";
+
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(2, tupleHandler.getCount());
+
+        conn.close();
+    }
+
+    public void testSymmPropOf() throws Exception {
+        if(internalInferenceEngine == null) return; //infer not supported;
+
+        RepositoryConnection conn = repository.getConnection();
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "friendOf"), 
RDF.TYPE, OWL.SYMMETRICPROPERTY));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "Bob"), 
vf.createURI(litdupsNS, "friendOf"), vf.createURI(litdupsNS, "Jeff")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "James"), 
vf.createURI(litdupsNS, "friendOf"), vf.createURI(litdupsNS, "Jeff")));
+        conn.commit();
+        conn.close();
+
+        internalInferenceEngine.refreshGraph();
+
+        conn = repository.getConnection();
+
+        String query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s lit:friendOf lit:Bob.}";
+
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(1, tupleHandler.getCount());
+
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s lit:friendOf lit:James.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(1, tupleHandler.getCount());
+
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s lit:friendOf lit:Jeff.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(2, tupleHandler.getCount());
+
+        conn.close();
+    }
+
+    public void testTransitiveProp() throws Exception {
+        if(internalInferenceEngine == null) return; //infer not supported;
+
+        RepositoryConnection conn = repository.getConnection();
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "subRegionOf"), 
RDF.TYPE, OWL.TRANSITIVEPROPERTY));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "Queens"), 
vf.createURI(litdupsNS, "subRegionOf"), vf.createURI(litdupsNS, "NYC")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "NYC"), 
vf.createURI(litdupsNS, "subRegionOf"), vf.createURI(litdupsNS, "NY")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "NY"), 
vf.createURI(litdupsNS, "subRegionOf"), vf.createURI(litdupsNS, "US")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "US"), 
vf.createURI(litdupsNS, "subRegionOf"), vf.createURI(litdupsNS, 
"NorthAmerica")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "NorthAmerica"), 
vf.createURI(litdupsNS, "subRegionOf"), vf.createURI(litdupsNS, "World")));
+        conn.commit();
+        conn.close();
+
+        internalInferenceEngine.refreshGraph();
+
+        conn = repository.getConnection();
+
+        String query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s lit:subRegionOf lit:NorthAmerica.}";
+
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(4, tupleHandler.getCount());
+
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s lit:subRegionOf lit:NY.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(2, tupleHandler.getCount());
+
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {lit:Queens lit:subRegionOf ?s.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(5, tupleHandler.getCount());
+
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {lit:NY lit:subRegionOf ?s.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(3, tupleHandler.getCount());
+
+        conn.close();
+    }
+
+    public void testInverseOf() throws Exception {
+        if(internalInferenceEngine == null) return; //infer not supported;
+
+        RepositoryConnection conn = repository.getConnection();
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "degreeFrom"), 
OWL.INVERSEOF, vf.createURI(litdupsNS, "hasAlumnus")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "UgradA"), 
vf.createURI(litdupsNS, "degreeFrom"), vf.createURI(litdupsNS, "Harvard")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "GradB"), 
vf.createURI(litdupsNS, "degreeFrom"), vf.createURI(litdupsNS, "Harvard")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "Harvard"), 
vf.createURI(litdupsNS, "hasAlumnus"), vf.createURI(litdupsNS, "AlumC")));
+        conn.commit();
+        conn.close();
+
+        internalInferenceEngine.refreshGraph();
+
+        conn = repository.getConnection();
+
+        String query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {lit:Harvard lit:hasAlumnus ?s.}";
+
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(3, tupleHandler.getCount());
+
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s lit:degreeFrom lit:Harvard.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(3, tupleHandler.getCount());
+
+        conn.close();
+    }
+
+    public void testSubClassOf() throws Exception {
+        if(internalInferenceEngine == null) return; //infer not supported;
+
+        RepositoryConnection conn = repository.getConnection();
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, 
"UndergraduateStudent"), RDFS.SUBCLASSOF, vf.createURI(litdupsNS, "Student")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "Student"), 
RDFS.SUBCLASSOF, vf.createURI(litdupsNS, "Person")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "UgradA"), 
RDF.TYPE, vf.createURI(litdupsNS, "UndergraduateStudent")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "StudentB"), 
RDF.TYPE, vf.createURI(litdupsNS, "Student")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "PersonC"), 
RDF.TYPE, vf.createURI(litdupsNS, "Person")));
+        conn.commit();
+        conn.close();
+
+        internalInferenceEngine.refreshGraph();
+
+        conn = repository.getConnection();
+
+        //simple api first
+        RepositoryResult<Statement> person = conn.getStatements(null, 
RDF.TYPE, vf.createURI(litdupsNS, "Person"), true);
+        int count = 0;
+        while (person.hasNext()) {
+            count++;
+            person.next();
+        }
+        person.close();
+        assertEquals(3, count);
+
+        String query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s rdf:type lit:Person.}";
+
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(3, tupleHandler.getCount());
+
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s rdf:type lit:Student.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(2, tupleHandler.getCount());
+
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select * where {?s rdf:type lit:UndergraduateStudent.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(1, tupleHandler.getCount());
+
+        conn.close();
+    }
+
+    public void testSameAs() throws Exception {
+        if(internalInferenceEngine == null) return; //infer not supported;
+
+        RepositoryConnection conn = repository.getConnection();
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "StudentA1"), 
OWL.SAMEAS, vf.createURI(litdupsNS, "StudentA2")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "StudentA2"), 
OWL.SAMEAS, vf.createURI(litdupsNS, "StudentA3")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "StudentB1"), 
OWL.SAMEAS, vf.createURI(litdupsNS, "StudentB2")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "StudentB2"), 
OWL.SAMEAS, vf.createURI(litdupsNS, "StudentB3")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "StudentA1"), 
vf.createURI(litdupsNS, "pred1"), vf.createURI(litdupsNS, "StudentB3")));
+        conn.add(new StatementImpl(vf.createURI(litdupsNS, "StudentB1"), 
vf.createURI(litdupsNS, "pred2"), vf.createURI(litdupsNS, "StudentA3")));
+        conn.commit();
+        conn.close();
+
+        internalInferenceEngine.refreshGraph();
+
+        conn = repository.getConnection();
+
+        // query where finds sameAs for obj, pred specified
+        String query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select ?s where {?s lit:pred1 lit:StudentB2.}";
+
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(1, tupleHandler.getCount());
+
+        // query where finds sameAs for obj only specified
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select ?s where {?s ?p lit:StudentB2.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(3, tupleHandler.getCount()); // including sameAs 
assertions
+
+        // query where finds sameAs for subj, pred specified
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select ?s where {lit:StudentB2 lit:pred2 ?s.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(1, tupleHandler.getCount()); // including sameAs 
assertions
+
+        // query where finds sameAs for subj only specified
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select ?s where {lit:StudentB2 ?p ?s.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(3, tupleHandler.getCount()); // including sameAs 
assertions
+
+        // query where finds sameAs for subj, obj specified
+        query = "PREFIX rdfs: <" + RDFS.NAMESPACE + ">\n" +
+                "PREFIX rdf: <" + RDF.NAMESPACE + ">\n" +
+                "PREFIX lit: <" + litdupsNS + ">\n" +
+                "select ?s where {lit:StudentB2 ?s lit:StudentA2.}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(1, tupleHandler.getCount()); 
+
+        conn.close();
+    }
+
+    public void testNamedGraphLoad() throws Exception {
+        InputStream stream = 
Thread.currentThread().getContextClassLoader().getResourceAsStream("namedgraphs.trig");
+        assertNotNull(stream);
+        RepositoryConnection conn = repository.getConnection();
+        conn.add(stream, "", RDFFormat.TRIG);
+        conn.commit();
+
+        String query = "PREFIX  ex:  
<http://www.example.org/exampleDocument#>\n" +
+                "PREFIX  voc:  <http://www.example.org/vocabulary#>\n" +
+                "PREFIX  foaf:  <http://xmlns.com/foaf/0.1/>\n" +
+                "PREFIX  rdfs:  <http://www.w3.org/2000/01/rdf-schema#>\n" +
+                "\n" +
+                "SELECT * \n" +
+//                "FROM NAMED <http://www.example.org/exampleDocument#G1>\n" +
+                "WHERE\n" +
+                "{\n" +
+                "  GRAPH ex:G1\n" +
+                "  {\n" +
+                "    ?m voc:name ?name ;\n" +
+                "           voc:homepage ?hp .\n" +
+                "  } .\n" +
+                " GRAPH ex:G2\n" +
+                "  {\n" +
+                "    ?m voc:hasSkill ?skill .\n" +
+                "  } .\n" +
+                "}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+//        tupleQuery.evaluate(new PrintTupleHandler());
+        assertEquals(1, tupleHandler.getCount());
+
+        query = "PREFIX  ex:  <http://www.example.org/exampleDocument#>\n" +
+                "PREFIX  voc:  <http://www.example.org/vocabulary#>\n" +
+                "PREFIX  swp:  <http://www.w3.org/2004/03/trix/swp-1/>\n" +
+                "PREFIX  foaf:  <http://xmlns.com/foaf/0.1/>\n" +
+                "PREFIX  rdfs:  <http://www.w3.org/2000/01/rdf-schema#>\n" +
+                "\n" +
+                "SELECT * \n" +
+                "WHERE\n" +
+                "{\n" +
+                "  GRAPH ex:G3\n" +
+                "  {\n" +
+                "    ?g swp:assertedBy ?w .\n" +
+                "    ?w swp:authority ex:Tom .\n" +
+                "  } .\n" +
+                "  GRAPH ?g\n" +
+                "  {\n" +
+                "    ?m voc:name ?name .\n" +
+                "  } .\n" +
+                "}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(1, tupleHandler.getCount());
+
+        query = "PREFIX  ex:  <http://www.example.org/exampleDocument#>\n" +
+                "PREFIX  voc:  <http://www.example.org/vocabulary#>\n" +
+                "PREFIX  swp:  <http://www.w3.org/2004/03/trix/swp-1/>\n" +
+                "PREFIX  foaf:  <http://xmlns.com/foaf/0.1/>\n" +
+                "PREFIX  rdfs:  <http://www.w3.org/2000/01/rdf-schema#>\n" +
+                "\n" +
+                "SELECT * \n" +
+                "WHERE\n" +
+                "{\n" +
+                "  GRAPH ?g\n" +
+                "  {\n" +
+                "    ?m voc:name ?name .\n" +
+                "  } .\n" +
+                "}";
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+//        tupleQuery.setBinding(BINDING_DISP_QUERYPLAN, 
VALUE_FACTORY.createLiteral(true));
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(2, tupleHandler.getCount());
+
+        conn.close();
+    }
+
+    public void testNamedGraphLoad2() throws Exception {
+        InputStream stream = 
Thread.currentThread().getContextClassLoader().getResourceAsStream("namedgraphs.trig");
+        assertNotNull(stream);
+        RepositoryConnection conn = repository.getConnection();
+        conn.add(stream, "", RDFFormat.TRIG);
+        conn.commit();
+
+        RepositoryResult<Statement> statements = conn.getStatements(null, 
vf.createURI("http://www.example.org/vocabulary#name";), null, true, 
vf.createURI("http://www.example.org/exampleDocument#G1";));
+        int count = 0;
+        while (statements.hasNext()) {
+            statements.next();
+            count++;
+        }
+        statements.close();
+        assertEquals(1, count);
+
+        conn.close();
+    }
+
+//    public void testNamedGraphLoadWInlineAuth() throws Exception {
+//        InputStream stream = 
Thread.currentThread().getContextClassLoader().getResourceAsStream("namedgraphs.trig");
+//        assertNotNull(stream);
+//        URI auth1 = 
vf.createURI(RdfCloudTripleStoreConstants.AUTH_NAMESPACE, "1");
+//        RepositoryConnection conn = repository.getConnection();
+//        conn.add(stream, "", RDFFormat.TRIG, auth1);
+//        conn.commit();
+//
+//        String query = "PREFIX  ex:  
<http://www.example.org/exampleDocument#>\n" +
+//                "PREFIX  voc:  <http://www.example.org/vocabulary#>\n" +
+//                "PREFIX  foaf:  <http://xmlns.com/foaf/0.1/>\n" +
+//                "PREFIX  rdfs:  <http://www.w3.org/2000/01/rdf-schema#>\n" +
+//                "\n" +
+//                "SELECT * \n" +
+//                "WHERE\n" +
+//                "{\n" +
+//                "  GRAPH ex:G1\n" +
+//                "  {\n" +
+//                "    ?m voc:name ?name ;\n" +
+//                "           voc:homepage ?hp .\n" +
+//                "  } .\n" +
+//                " GRAPH ex:G2\n" +
+//                "  {\n" +
+//                "    ?m voc:hasSkill ?skill .\n" +
+//                "  } .\n" +
+//                "}";
+//        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+//        
tupleQuery.setBinding(RdfCloudTripleStoreConfiguration.CONF_QUERY_AUTH, 
vf.createLiteral("1"));
+//        CountTupleHandler tupleHandler = new CountTupleHandler();
+//        tupleQuery.evaluate(tupleHandler);
+//        assertEquals(1, tupleHandler.getCount());
+//
+//        query = "PREFIX  ex:  <http://www.example.org/exampleDocument#>\n" +
+//                "PREFIX  voc:  <http://www.example.org/vocabulary#>\n" +
+//                "PREFIX  swp:  <http://www.w3.org/2004/03/trix/swp-1/>\n" +
+//                "PREFIX  foaf:  <http://xmlns.com/foaf/0.1/>\n" +
+//                "PREFIX  rdfs:  <http://www.w3.org/2000/01/rdf-schema#>\n" +
+//                "\n" +
+//                "SELECT * \n" +
+//                "WHERE\n" +
+//                "{\n" +
+//                "  GRAPH ex:G3\n" +
+//                "  {\n" +
+//                "    ?g swp:assertedBy ?w .\n" +
+//                "    ?w swp:authority ex:Tom .\n" +
+//                "  } .\n" +
+//                "  GRAPH ?g\n" +
+//                "  {\n" +
+//                "    ?m voc:name ?name .\n" +
+//                "  } .\n" +
+//                "}";
+//
+//        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+//        tupleHandler = new CountTupleHandler();
+//        tupleQuery.evaluate(tupleHandler);
+//        assertEquals(0, tupleHandler.getCount());
+//
+//        conn.close();
+//    }
+
+    public void testNamedGraphLoadWAuth() throws Exception {
+        InputStream stream = 
Thread.currentThread().getContextClassLoader().getResourceAsStream("namedgraphs.trig");
+        assertNotNull(stream);
+
+        RdfCloudTripleStore tstore = new MockRdfCloudStore();
+        NamespaceManager nm = new NamespaceManager(tstore.getRyaDAO(), 
tstore.getConf());
+        tstore.setNamespaceManager(nm);
+        SailRepository repo = new SailRepository(tstore);
+        tstore.getRyaDAO().getConf().setCv("1|2");
+        repo.initialize();
+
+        RepositoryConnection conn = repo.getConnection();
+        conn.add(stream, "", RDFFormat.TRIG);
+        conn.commit();
+
+        String query = "PREFIX  ex:  
<http://www.example.org/exampleDocument#>\n" +
+                "PREFIX  voc:  <http://www.example.org/vocabulary#>\n" +
+                "PREFIX  foaf:  <http://xmlns.com/foaf/0.1/>\n" +
+                "PREFIX  rdfs:  <http://www.w3.org/2000/01/rdf-schema#>\n" +
+                "\n" +
+                "SELECT * \n" +
+//                "FROM NAMED <http://www.example.org/exampleDocument#G1>\n" +
+                "WHERE\n" +
+                "{\n" +
+                "  GRAPH ex:G1\n" +
+                "  {\n" +
+                "    ?m voc:name ?name ;\n" +
+                "           voc:homepage ?hp .\n" +
+                "  } .\n" +
+                " GRAPH ex:G2\n" +
+                "  {\n" +
+                "    ?m voc:hasSkill ?skill .\n" +
+                "  } .\n" +
+                "}";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        
tupleQuery.setBinding(RdfCloudTripleStoreConfiguration.CONF_QUERY_AUTH, 
vf.createLiteral("2"));
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(1, tupleHandler.getCount());
+
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query); //no 
auth
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(0, tupleHandler.getCount());
+
+        conn.close();
+
+        repo.shutDown();
+    }
+
+    public void testInsertDeleteData() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+
+        String insert = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "INSERT DATA\n" +
+                "{ <http://example/book3> dc:title    \"A new book\" ;\n" +
+                "                         dc:creator  \"A.N.Other\" .\n" +
+                "}";
+        Update update = conn.prepareUpdate(QueryLanguage.SPARQL, insert);
+        update.execute();
+
+        String query = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "select * where { <http://example/book3> ?p ?o. }";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(2, tupleHandler.getCount());
+
+        String delete = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "\n" +
+                "DELETE DATA\n" +
+                "{ <http://example/book3> dc:title    \"A new book\" ;\n" +
+                "                         dc:creator  \"A.N.Other\" .\n" +
+                "}";
+        update = conn.prepareUpdate(QueryLanguage.SPARQL, delete);
+        update.execute();
+
+        query = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "select * where { <http://example/book3> ?p ?o. }";
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(0, tupleHandler.getCount());
+
+        conn.close();
+    }
+
+    public void testUpdateData() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+
+        String insert = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "PREFIX ex: <http://example/addresses#>\n" +
+                "INSERT DATA\n" +
+                "{ GRAPH ex:G1 {\n" +
+                "<http://example/book3> dc:title    \"A new book\" ;\n" +
+                "                         dc:creator  \"A.N.Other\" .\n" +
+                "}\n" +
+                "}";
+        Update update = conn.prepareUpdate(QueryLanguage.SPARQL, insert);
+        update.execute();
+
+        String query = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "select * where { <http://example/book3> ?p ?o. }";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(2, tupleHandler.getCount());
+
+        String insdel = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "\n" +
+                "WITH <http://example/addresses#G1>\n" +
+                "DELETE { ?book dc:title ?title }\n" +
+                "INSERT { ?book dc:title \"A newer book\"." +
+                "         ?book dc:add \"Additional Info\" }\n" +
+                "WHERE\n" +
+                "  { ?book dc:creator \"A.N.Other\" ;\n" +
+                "        dc:title ?title .\n" +
+                "  }";
+        update = conn.prepareUpdate(QueryLanguage.SPARQL, insdel);
+        update.execute();
+
+        query = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "PREFIX ex: <http://example/addresses#>\n" +
+                "select * where { GRAPH ex:G1 {<http://example/book3> ?p ?o. } 
}";
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(3, tupleHandler.getCount());
+
+        conn.close();
+    }
+    
+    public void testClearGraph() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+
+        String insert = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "PREFIX ex: <http://example/addresses#>\n" +
+                "INSERT DATA\n" +
+                "{ GRAPH ex:G1 {\n" +
+                "<http://example/book3> dc:title    \"A new book\" ;\n" +
+                "                         dc:creator  \"A.N.Other\" .\n" +
+                "}\n" +
+                "}";
+        Update update = conn.prepareUpdate(QueryLanguage.SPARQL, insert);
+        update.execute();
+
+        insert = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "PREFIX ex: <http://example/addresses#>\n" +
+                "INSERT DATA\n" +
+                "{ GRAPH ex:G2 {\n" +
+                "<http://example/book3> dc:title    \"A new book\" ;\n" +
+                "                         dc:creator  \"A.N.Other\" .\n" +
+                "}\n" +
+                "}";
+        update = conn.prepareUpdate(QueryLanguage.SPARQL, insert);
+        update.execute();
+
+        String query = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "select * where { <http://example/book3> ?p ?o. }";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(4, tupleHandler.getCount());
+        
+        tupleHandler = new CountTupleHandler();
+        conn.clear(new URIImpl("http://example/addresses#G2";));
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(2, tupleHandler.getCount());
+
+        tupleHandler = new CountTupleHandler();
+        conn.clear(new URIImpl("http://example/addresses#G1";));
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(0, tupleHandler.getCount());
+
+        conn.close();
+    }
+    
+    public void testClearAllGraph() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+
+        String insert = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "PREFIX ex: <http://example/addresses#>\n" +
+                "INSERT DATA\n" +
+                "{ GRAPH ex:G1 {\n" +
+                "<http://example/book3> dc:title    \"A new book\" ;\n" +
+                "                         dc:creator  \"A.N.Other\" .\n" +
+                "}\n" +
+                "}";
+        Update update = conn.prepareUpdate(QueryLanguage.SPARQL, insert);
+        update.execute();
+
+        insert = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "PREFIX ex: <http://example/addresses#>\n" +
+                "INSERT DATA\n" +
+                "{ GRAPH ex:G2 {\n" +
+                "<http://example/book3> dc:title    \"A new book\" ;\n" +
+                "                         dc:creator  \"A.N.Other\" .\n" +
+                "}\n" +
+                "}";
+        update = conn.prepareUpdate(QueryLanguage.SPARQL, insert);
+        update.execute();
+
+        String query = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "select * where { <http://example/book3> ?p ?o. }";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(4, tupleHandler.getCount());
+        
+        tupleHandler = new CountTupleHandler();
+        conn.clear();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(0, tupleHandler.getCount());
+
+        conn.close();
+    }
+    
+    public void testDropGraph() throws Exception {
+        RepositoryConnection conn = repository.getConnection();
+
+        String insert = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "PREFIX ex: <http://example/addresses#>\n" +
+                "INSERT DATA\n" +
+                "{ GRAPH ex:G1 {\n" +
+                "<http://example/book3> dc:title    \"A new book\" ;\n" +
+                "                         dc:creator  \"A.N.Other\" .\n" +
+                "}\n" +
+                "}";
+        Update update = conn.prepareUpdate(QueryLanguage.SPARQL, insert);
+        update.execute();
+
+        insert = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "PREFIX ex: <http://example/addresses#>\n" +
+                "INSERT DATA\n" +
+                "{ GRAPH ex:G2 {\n" +
+                "<http://example/book3> dc:title    \"A new book\" ;\n" +
+                "                         dc:creator  \"A.N.Other\" .\n" +
+                "}\n" +
+                "}";
+        update = conn.prepareUpdate(QueryLanguage.SPARQL, insert);
+        update.execute();
+
+        String query = "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
+                "select * where { <http://example/book3> ?p ?o. }";
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query);
+        CountTupleHandler tupleHandler = new CountTupleHandler();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(4, tupleHandler.getCount());
+        
+        tupleHandler = new CountTupleHandler();
+        String drop = "PREFIX ex: <http://example/addresses#>\n" +
+                "DROP GRAPH ex:G2 ";
+        update = conn.prepareUpdate(QueryLanguage.SPARQL, drop);
+        update.execute();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(2, tupleHandler.getCount());
+
+        tupleHandler = new CountTupleHandler();
+        drop = "PREFIX ex: <http://example/addresses#>\n" +
+                "DROP GRAPH ex:G1 ";
+        update = conn.prepareUpdate(QueryLanguage.SPARQL, drop);
+        update.execute();
+        tupleQuery.evaluate(tupleHandler);
+        assertEquals(0, tupleHandler.getCount());
+
+        conn.close();
+    }
+
+    public static class CountTupleHandler implements TupleQueryResultHandler {
+
+        int count = 0;
+
+        @Override
+        public void startQueryResult(List<String> strings) throws 
TupleQueryResultHandlerException {
+        }
+
+        @Override
+        public void endQueryResult() throws TupleQueryResultHandlerException {
+        }
+
+        @Override
+        public void handleSolution(BindingSet bindingSet) throws 
TupleQueryResultHandlerException {
+            count++;
+        }
+
+        public int getCount() {
+            return count;
+        }
+
+        @Override
+        public void handleBoolean(boolean arg0) throws 
QueryResultHandlerException {
+        }
+
+        @Override
+        public void handleLinks(List<String> arg0) throws 
QueryResultHandlerException {
+        }
+    }
+
+    private static class PrintTupleHandler implements TupleQueryResultHandler {
+        
+
+        @Override
+        public void startQueryResult(List<String> strings) throws 
TupleQueryResultHandlerException {
+        }
+
+        @Override
+        public void endQueryResult() throws TupleQueryResultHandlerException {
+        }
+
+        @Override
+        public void handleSolution(BindingSet bindingSet) throws 
TupleQueryResultHandlerException {
+            System.out.println(bindingSet);
+        }
+
+        @Override
+        public void handleBoolean(boolean arg0) throws 
QueryResultHandlerException {
+        }
+
+        @Override
+        public void handleLinks(List<String> arg0) throws 
QueryResultHandlerException {
+        }
+    }
+
+    public class MockRdfCloudStore extends RdfCloudTripleStore {
+
+        public MockRdfCloudStore() {
+            super();
+            Instance instance = new MockInstance();
+            try {
+                AccumuloRdfConfiguration conf = new AccumuloRdfConfiguration();
+                setConf(conf);
+                Connector connector = instance.getConnector("", "");
+                AccumuloRyaDAO cdao = new AccumuloRyaDAO();
+                cdao.setConf(conf);
+                cdao.setConnector(connector);
+                setRyaDAO(cdao);
+                inferenceEngine = new InferenceEngine();
+                inferenceEngine.setRyaDAO(cdao);
+                inferenceEngine.setRefreshGraphSchedule(5000); //every 5 sec
+                inferenceEngine.setConf(conf);
+                setInferenceEngine(inferenceEngine);
+                internalInferenceEngine = inferenceEngine;
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}

Reply via email to