http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/query/strategy/wholerow/PoWholeRowTriplePatternStrategyTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/query/strategy/wholerow/PoWholeRowTriplePatternStrategyTest.java
 
b/common/rya.api/src/test/java/org/apache/rya/api/query/strategy/wholerow/PoWholeRowTriplePatternStrategyTest.java
new file mode 100644
index 0000000..1079bf8
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/query/strategy/wholerow/PoWholeRowTriplePatternStrategyTest.java
@@ -0,0 +1,159 @@
+/*
+ * 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.
+ */
+
+//package mvm.rya.api.query.strategy.wholerow;
+
+//
+//import junit.framework.TestCase;
+//import mvm.rya.api.RdfCloudTripleStoreConstants;
+//import mvm.rya.api.domain.*;
+//import mvm.rya.api.resolver.RyaContext;
+//import mvm.rya.api.resolver.triple.TripleRow;
+//import org.apache.accumulo.core.data.Key;
+//import org.apache.accumulo.core.data.Range;
+//import org.apache.hadoop.io.Text;
+//import org.openrdf.model.impl.URIImpl;
+//
+//import java.util.Map;
+//
+///**
+// * Date: 7/14/12
+// * Time: 11:46 AM
+// */
+//public class PoWholeRowTriplePatternStrategyTest extends TestCase {
+//
+//    RyaURI uri = new RyaURI("urn:test#1234");
+//    RyaURI uri2 = new RyaURI("urn:test#1235");
+//    RyaURIRange rangeURI = new RyaURIRange(uri, uri2);
+//    RyaURIRange rangeURI2 = new RyaURIRange(new RyaURI("urn:test#1235"), new 
RyaURI("urn:test#1236"));
+//    PoWholeRowTriplePatternStrategy strategy = new 
PoWholeRowTriplePatternStrategy();
+//    RyaContext ryaContext = RyaContext.getInstance();
+//
+//    RyaType customType1 = new RyaType(new URIImpl("urn:custom#type"), 
"1234");
+//    RyaType customType2 = new RyaType(new URIImpl("urn:custom#type"), 
"1235");
+//    RyaType customType3 = new RyaType(new URIImpl("urn:custom#type"), 
"1236");
+//    RyaTypeRange customTypeRange1 = new RyaTypeRange(customType1, 
customType2);
+//    RyaTypeRange customTypeRange2 = new RyaTypeRange(customType2, 
customType3);
+//
+//    public void testPoRange() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, uri, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.PO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(null, uri, rangeURI, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//
+//        entry = strategy.defineRange(null, uri, rangeURI2, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testPoRangeCustomType() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, customType1, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.PO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(null, uri, customTypeRange1, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//
+//        entry = strategy.defineRange(null, uri, customTypeRange2, null, 
null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testPo() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, uri, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.PO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(null, uri, uri, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//
+//        entry = strategy.defineRange(null, uri, uri2, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testPoCustomType() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, customType1, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.PO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(null, uri, customType1, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//
+//        entry = strategy.defineRange(null, uri, customType2, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testPosRange() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, uri, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.PO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(rangeURI, uri, uri, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//
+//        entry = strategy.defineRange(rangeURI2, uri, uri, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testPRange() throws Exception {
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(null, rangeURI, null, null, null);
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(new RyaStatement(uri, uri, uri, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.PO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//        assertTrue(entry.getValue().contains(key));
+//    }
+//
+//    public void testP() throws Exception {
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(null, uri, null, null, null);
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, uri, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.PO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//        assertTrue(entry.getValue().contains(key));
+//    }
+//
+//    public void testHandles() throws Exception {
+//        //po(ng)
+//        assertTrue(strategy.handles(null, uri, uri, null));
+//        assertTrue(strategy.handles(null, uri, uri, uri));
+//        //po_r(s)(ng)
+//        assertTrue(strategy.handles(rangeURI, uri, uri, null));
+//        assertTrue(strategy.handles(rangeURI, uri, uri, uri));
+//        //p(ng)
+//        assertTrue(strategy.handles(null, uri, null, null));
+//        assertTrue(strategy.handles(null, uri, null, uri));
+//        //p_r(o)(ng)
+//        assertTrue(strategy.handles(null, uri, rangeURI, null));
+//        assertTrue(strategy.handles(null, uri, rangeURI, uri));
+//        //r(p)(ng)
+//        assertTrue(strategy.handles(null, rangeURI, null, null));
+//        assertTrue(strategy.handles(null, rangeURI, null, uri));
+//
+//        //false cases
+//        //sp..
+//        assertFalse(strategy.handles(uri, uri, null, null));
+//        //r(s)_p
+//        assertFalse(strategy.handles(rangeURI, uri, null, null));
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/query/strategy/wholerow/SpoWholeRowTriplePatternStrategyTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/query/strategy/wholerow/SpoWholeRowTriplePatternStrategyTest.java
 
b/common/rya.api/src/test/java/org/apache/rya/api/query/strategy/wholerow/SpoWholeRowTriplePatternStrategyTest.java
new file mode 100644
index 0000000..019a3aa
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/query/strategy/wholerow/SpoWholeRowTriplePatternStrategyTest.java
@@ -0,0 +1,185 @@
+/*
+ * 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.
+ */
+
+//package mvm.rya.api.query.strategy.wholerow;
+
+//
+//import junit.framework.TestCase;
+//import mvm.rya.api.RdfCloudTripleStoreConstants;
+//import mvm.rya.api.domain.*;
+//import mvm.rya.api.resolver.RyaContext;
+//import mvm.rya.api.resolver.triple.TripleRow;
+//import org.apache.accumulo.core.data.Key;
+//import org.apache.accumulo.core.data.Range;
+//import org.apache.hadoop.io.Text;
+//import org.openrdf.model.impl.URIImpl;
+//
+//import java.util.Map;
+//
+///**
+// * Date: 7/14/12
+// * Time: 7:47 AM
+// */
+//public class SpoWholeRowTriplePatternStrategyTest extends TestCase {
+//
+//    RyaURI uri = new RyaURI("urn:test#1234");
+//    RyaURI uri2 = new RyaURI("urn:test#1235");
+//    RyaURIRange rangeURI = new RyaURIRange(uri, uri2);
+//    RyaURIRange rangeURI2 = new RyaURIRange(new RyaURI("urn:test#1235"), new 
RyaURI("urn:test#1236"));
+//    SpoWholeRowTriplePatternStrategy strategy = new 
SpoWholeRowTriplePatternStrategy();
+//    RyaContext ryaContext = RyaContext.getInstance();
+//
+//    RyaType customType1 = new RyaType(new URIImpl("urn:custom#type"), 
"1234");
+//    RyaType customType2 = new RyaType(new URIImpl("urn:custom#type"), 
"1235");
+//    RyaType customType3 = new RyaType(new URIImpl("urn:custom#type"), 
"1236");
+//    RyaTypeRange customTypeRange1 = new RyaTypeRange(customType1, 
customType2);
+//    RyaTypeRange customTypeRange2 = new RyaTypeRange(customType2, 
customType3);
+//
+//    public void testSpo() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, uri, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(uri, uri, uri, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//
+//        entry = strategy.defineRange(uri, uri, uri2, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testSpoCustomType() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, customType1, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(uri, uri, customType1, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//
+//        entry = strategy.defineRange(uri, uri, customType2, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testSpoRange() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, uri, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(uri, uri, rangeURI, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//
+//        entry = strategy.defineRange(uri, uri, rangeURI2, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testSpoRangeCustomType() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, customType1, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(uri, uri, customTypeRange1, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//
+//        entry = strategy.defineRange(uri, uri, customTypeRange2, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testSp() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, uri, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(uri, uri, null, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//        entry = strategy.defineRange(uri, uri2, null, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testSpRange() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, uri, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(uri, rangeURI, null, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//        entry = strategy.defineRange(uri, rangeURI2, null, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testS() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, uri, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(uri, null, null, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//
+//        entry = strategy.defineRange(uri2, null, null, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testSRange() throws Exception {
+//        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize 
= ryaContext.serializeTriple(
+//                new RyaStatement(uri, uri, uri, null));
+//        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+//        Key key = new Key(new Text(tripleRow.getRow()));
+//
+//        Map.Entry<RdfCloudTripleStoreConstants.TABLE_LAYOUT, Range> entry = 
strategy.defineRange(rangeURI, null, null, null, null);
+//        assertTrue(entry.getValue().contains(key));
+//
+//        entry = strategy.defineRange(rangeURI2, null, null, null, null);
+//        assertFalse(entry.getValue().contains(key));
+//    }
+//
+//    public void testHandles() throws Exception {
+//        //spo(ng)
+//        assertTrue(strategy.handles(uri, uri, uri, null));
+//        assertTrue(strategy.handles(uri, uri, uri, uri));
+//        //sp(ng)
+//        assertTrue(strategy.handles(uri, uri, null, null));
+//        assertTrue(strategy.handles(uri, uri, null, uri));
+//        //s(ng)
+//        assertTrue(strategy.handles(uri, null, null, null));
+//        assertTrue(strategy.handles(uri, null, null, uri));
+//        //sp_r(o)(ng)
+//        assertTrue(strategy.handles(uri, uri, rangeURI, null));
+//        assertTrue(strategy.handles(uri, uri, rangeURI, uri));
+//        //s_r(p)(ng)
+//        assertTrue(strategy.handles(uri, rangeURI, null, null));
+//        assertTrue(strategy.handles(uri, rangeURI, null, uri));
+//        //r(s)
+//        assertTrue(strategy.handles(rangeURI, null, null, null));
+//
+//        //fail
+//        //s_r(p)_r(o)
+//        assertFalse(strategy.handles(uri, rangeURI, rangeURI, null));
+//
+//        //s==null
+//        assertFalse(strategy.handles(null, uri, uri, null));
+//
+//        //s_r(o)
+//        assertFalse(strategy.handles(uri, null, rangeURI, null));
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/resolver/RyaContextTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/resolver/RyaContextTest.java 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/RyaContextTest.java
new file mode 100644
index 0000000..4363fd3
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/RyaContextTest.java
@@ -0,0 +1,86 @@
+package mvm.rya.api.resolver;
+
+/*
+ * 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 java.util.Map;
+
+import junit.framework.TestCase;
+import mvm.rya.api.RdfCloudTripleStoreConstants.TABLE_LAYOUT;
+import mvm.rya.api.domain.RyaStatement;
+import mvm.rya.api.domain.RyaType;
+import mvm.rya.api.domain.RyaURI;
+import 
mvm.rya.api.query.strategy.AbstractTriplePatternStrategyTest.MockRdfConfiguration;
+import mvm.rya.api.query.strategy.wholerow.MockRdfCloudConfiguration;
+import mvm.rya.api.resolver.triple.TripleRow;
+
+import org.openrdf.model.impl.URIImpl;
+
+/**
+ */
+public class RyaContextTest extends TestCase {
+ 
+    public void testDefaultSerialization() throws Exception {
+        RyaContext instance = RyaContext.getInstance();
+        //plain string
+        RyaType ryaType = new RyaType("mydata");
+        byte[] serialize = instance.serialize(ryaType);
+        assertEquals(ryaType, instance.deserialize(serialize));
+
+        //uri
+        RyaURI ryaURI = new RyaURI("urn:test#1234");
+        serialize = instance.serialize(ryaURI);
+        RyaType deserialize = instance.deserialize(serialize);
+        assertEquals(ryaURI, deserialize);
+
+        //custom type
+        ryaType = new RyaType(new URIImpl("urn:test#customDataType"), 
"mydata");
+        serialize = instance.serialize(ryaType);
+        assertEquals(ryaType, instance.deserialize(serialize));
+    }
+
+    public void testTripleRowSerialization() throws Exception {
+        RyaURI subj = new RyaURI("urn:test#subj");
+        RyaURI pred = new RyaURI("urn:test#pred");
+        RyaType obj = new RyaType("mydata");
+        RyaStatement statement = new RyaStatement(subj, pred, obj);
+        RyaTripleContext instance = RyaTripleContext.getInstance(new 
MockRdfCloudConfiguration());
+
+        Map<TABLE_LAYOUT, TripleRow> map = instance.serializeTriple(statement);
+        TripleRow tripleRow = map.get(TABLE_LAYOUT.SPO);
+        assertEquals(statement, instance.deserializeTriple(TABLE_LAYOUT.SPO, 
tripleRow));
+    }
+    
+    public void testHashedTripleRowSerialization() throws Exception {
+        RyaURI subj = new RyaURI("urn:test#subj");
+        RyaURI pred = new RyaURI("urn:test#pred");
+        RyaType obj = new RyaType("mydata");
+        RyaStatement statement = new RyaStatement(subj, pred, obj);
+       MockRdfCloudConfiguration config = new MockRdfCloudConfiguration();
+       config.set(MockRdfCloudConfiguration.CONF_PREFIX_ROW_WITH_HASH, 
Boolean.TRUE.toString());
+       RyaTripleContext instance = RyaTripleContext.getInstance(config);
+
+        Map<TABLE_LAYOUT, TripleRow> map = instance.serializeTriple(statement);
+        TripleRow tripleRow = map.get(TABLE_LAYOUT.SPO);
+        assertEquals(statement, instance.deserializeTriple(TABLE_LAYOUT.SPO, 
tripleRow));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/CustomDatatypeResolverTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/CustomDatatypeResolverTest.java
 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/CustomDatatypeResolverTest.java
new file mode 100644
index 0000000..0126414
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/CustomDatatypeResolverTest.java
@@ -0,0 +1,40 @@
+package mvm.rya.api.resolver.impl;
+
+/*
+ * 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 junit.framework.TestCase;
+import mvm.rya.api.domain.RyaType;
+import org.openrdf.model.impl.URIImpl;
+
+/**
+ * Date: 7/16/12
+ * Time: 2:47 PM
+ */
+public class CustomDatatypeResolverTest extends TestCase {
+
+    public void testCustomDataTypeSerialization() throws Exception {
+        RyaType ryaType = new RyaType(new URIImpl("urn:test#datatype"), 
"testdata");
+        byte[] serialize = new CustomDatatypeResolver().serialize(ryaType);
+        RyaType deserialize = new 
CustomDatatypeResolver().deserialize(serialize);
+        assertEquals(ryaType, deserialize);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/DateTimeRyaTypeResolverTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/DateTimeRyaTypeResolverTest.java
 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/DateTimeRyaTypeResolverTest.java
new file mode 100644
index 0000000..899bbcf
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/DateTimeRyaTypeResolverTest.java
@@ -0,0 +1,177 @@
+package mvm.rya.api.resolver.impl;
+
+/*
+ * 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 org.junit.Assert.*;
+
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import mvm.rya.api.domain.RyaType;
+import mvm.rya.api.resolver.RdfToRyaConversions;
+import mvm.rya.api.resolver.RyaTypeResolverException;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openrdf.model.impl.CalendarLiteralImpl;
+import org.openrdf.model.vocabulary.XMLSchema;
+
+/**
+ * Test serializing and deserializing.
+ * Notes:
+ * The serialization, deserialization fills in some information:
+ * If preserving uncertainty, or preserving the source timezone, then don't 
use XML type tag.
+ *             - uncertainty: missing time hh:mm:ss becomes 00:00:00 
+ *             - uncertainty: missing milliseconds (.123) become .000.
+ *             - uncertainty: missing timezone becomes the system local 
timezone.
+ *             - timezone: converted to the equivalent Z timezone.  
+ *             - a type XMLSchema.DATE become XMLSchema.DATETIME after 
deserialized
+ * 
+ *             ex: run in timezone eastern time (GMT-5:00): 
+ *                     before=       2000-02-02                 type = 
XMLSchema.DATE
+ *                     deserialized= 2000-02-02T05:00:00.000Z   type = 
XMLSchema.DATETIME
+ */
+public class DateTimeRyaTypeResolverTest {
+       @Test
+    public void testDateTime() throws Exception {
+        long currentTime = 1342182689285l;
+        Date date = new Date(currentTime);
+        GregorianCalendar gc = new GregorianCalendar();
+        gc.setTimeInMillis(date.getTime());
+        XMLGregorianCalendar xmlGregorianCalendar = 
DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
+        CalendarLiteralImpl literal = new 
CalendarLiteralImpl(xmlGregorianCalendar);
+        byte[] serialize = new 
DateTimeRyaTypeResolver().serialize(RdfToRyaConversions.convertLiteral(literal));
+        RyaType deserialize = new 
DateTimeRyaTypeResolver().deserialize(serialize);
+        assertEquals("2012-07-13T12:31:29.285Z", deserialize.getData());
+        assertEquals(XMLSchema.DATETIME, deserialize.getDataType());
+    }
+       @Test
+    public void testFull() throws Exception {
+        String currentTime = "2000-01-01T00:00:01.111Z";
+               assertSerializeAndDesDateTime("2000-01-01T00:00:01.111Z");
+               
+    }
+       @Test
+    public void testNoMilliSeconds() throws Exception {
+               
assertSerializeAndDesDateTime("2000-01-01T00:00:01Z","2000-01-01T00:00:01.000Z");
+               
+    }
+       @Test
+    public void testDateNoTimeNoZone() throws Exception {
+        String beforeDate = "2000-02-02";
+       String afterDate="2000-02-0(1|2|3)T\\d\\d:\\d\\d:00\\.000Z";
+       RyaType deserialize = serializeAndDeserialize(beforeDate, 
XMLSchema.DATE);
+           final String afterActual = deserialize.getData();
+               assertTrue("Before='"+beforeDate+"'; Expected should match 
actual regex after='"+afterDate+"' deserialized:"+afterActual, 
afterActual.matches(afterDate));
+        assertEquals(XMLSchema.DATETIME, deserialize.getDataType());
+    }
+       @Test
+    public void testDateZoneNoTime() throws Exception {
+               // if you see this:
+               //java.lang.IllegalArgumentException: Invalid format: 
"2000-02-02Z" is malformed at "Z"
+               // use this: "2000-02-02TZ";
+        String currentTime = "2000-02-02TZ";
+       RyaType deserialize = serializeAndDeserialize(currentTime, 
XMLSchema.DATE);
+        assertEquals("Before expected should match after actual 
deserialized:","2000-02-02T00:00:00.000Z", deserialize.getData());
+        assertEquals(XMLSchema.DATETIME, deserialize.getDataType());
+    }
+       @Test
+    public void testNoZone() throws Exception {
+               String beforeDate = "2000-01-02T00:00:01";
+       String afterDate="2000-01-0(1|2|3)T\\d\\d:\\d\\d:01\\.000Z";
+       RyaType deserialize = serializeAndDeserialize(beforeDate, 
XMLSchema.DATE);
+           final String afterActual = deserialize.getData();
+               assertTrue("Before='"+beforeDate+"'; Expected should match 
actual regex after='"+afterDate+"' deserialized:"+afterActual, 
afterActual.matches(afterDate));
+        assertEquals(XMLSchema.DATETIME, deserialize.getDataType());
+               
+    }
+    @Test
+       public void testMilliSecondsNoZone() throws Exception {
+       String beforeDate="2002-02-02T02:02:02.222";
+       String afterDate="2002-02-0(1|2|3)T\\d\\d:\\d\\d:02\\.222.*";
+               RyaType deserialize = serializeAndDeserialize(beforeDate, 
XMLSchema.DATETIME);
+           final String afterActual = deserialize.getData();
+               assertTrue("Before='"+beforeDate+"'; Expected should match 
actual regex after='"+afterDate+"' deserialized:"+afterActual, 
afterActual.matches(afterDate));
+           assertEquals(XMLSchema.DATETIME, deserialize.getDataType());
+               
+       }
+    @Test
+       public void testHistoryAndFuture() throws Exception {
+               
assertSerializeAndDesDateTime("-2000-01-01T00:00:01Z","-2000-01-01T00:00:01.000Z");
+               
assertSerializeAndDesDateTime("111-01-01T00:00:01Z","0111-01-01T00:00:01.000Z");
+               
assertSerializeAndDesDateTime("12345-01-01T00:00:01Z","12345-01-01T00:00:01.000Z");
+       }
+
+    @Test
+       public void testTimeZone() throws Exception {
+               assertSerializeAndDesDateTime(    "2000-01-01T00:00:01+01:00", 
"1999-12-31T23:00:01.000Z");
+               assertSerializeAndDesDateTime(    "2000-01-01T00:00:01+02:30", 
"1999-12-31T21:30:01.000Z");
+               assertSerializeAndDesDateTime("2000-01-01T00:00:01.123-02:00", 
"2000-01-01T02:00:01.123Z");
+               assertSerializeAndDesDateTime(     "111-01-01T00:00:01+14:00", 
"0110-12-31T10:00:01.000Z" );
+               assertSerializeAndDesDateTime(   
"12345-01-01T00:00:01-14:00","12345-01-01T14:00:01.000Z");
+               assertSerializeAndDesDateTime(       "1-01-01T00:00:01+14:00", 
"0000-12-31T10:00:01.000Z" ); 
+       }
+
+    @Test
+    public void testGarbageIn() throws Exception {
+        String currentTime = "Blablabla";
+               RyaType ryaType = new RyaType(XMLSchema.DATETIME, currentTime );
+               Throwable threw=null;
+               try {
+                       new DateTimeRyaTypeResolver().serialize(ryaType);
+               } catch (java.lang.IllegalArgumentException exception) {
+                       threw = exception;
+               }
+               assertNotNull("Expected to catch bad format message.",threw);
+               assertEquals("Caught bad format message.","Invalid format: 
\"Blablabla\"", threw.getMessage());
+    }
+       /**
+        * Do the test on the DateTime
+        * @param dateTimeString
+        * @throws RyaTypeResolverException
+        */
+       private void assertSerializeAndDesDateTime(String dateTimeString) 
throws RyaTypeResolverException {
+               assertSerializeAndDesDateTime(dateTimeString, dateTimeString); 
+       }
+       private void assertSerializeAndDesDateTime(String beforeDate, String 
afterDate ) throws RyaTypeResolverException {
+               RyaType deserialize = serializeAndDeserialize(beforeDate, 
XMLSchema.DATETIME);
+           assertEquals("Before='"+beforeDate+"'; Expected should match actual 
after deserialized:",afterDate, deserialize.getData());
+           assertEquals(XMLSchema.DATETIME, deserialize.getDataType());
+       }
+       /**
+        * Serialize a datetime string, then deserialize as a ryaType.
+        * @param dateTimeString
+        * @param type if null , use default: XMLSchema.DATETIME
+        * @return
+        * @throws RyaTypeResolverException
+        */
+       private RyaType serializeAndDeserialize(String dateTimeString, 
org.openrdf.model.URI type ) throws RyaTypeResolverException {
+               if (type == null) 
+                       type = XMLSchema.DATETIME;
+               RyaType ryaType = new RyaType(type, dateTimeString ); 
+           byte[] serialize = new DateTimeRyaTypeResolver().serialize(ryaType);
+           return new DateTimeRyaTypeResolver().deserialize(serialize);
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/DoubleRyaTypeResolverTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/DoubleRyaTypeResolverTest.java
 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/DoubleRyaTypeResolverTest.java
new file mode 100644
index 0000000..2c5f43d
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/DoubleRyaTypeResolverTest.java
@@ -0,0 +1,46 @@
+package mvm.rya.api.resolver.impl;
+
+/*
+ * 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 junit.framework.TestCase;
+import mvm.rya.api.domain.RyaType;
+import org.openrdf.model.vocabulary.XMLSchema;
+
+import java.util.Random;
+
+/**
+ * Date: 7/20/12
+ * Time: 9:43 AM
+ */
+public class DoubleRyaTypeResolverTest extends TestCase {
+
+    public void testDoubleSerialization() throws Exception {
+        Double d = randomDouble();
+        RyaType ryaType = new RyaType(XMLSchema.DOUBLE, d.toString());
+        byte[] serialize = new DoubleRyaTypeResolver().serialize(ryaType);
+        assertEquals(d, Double.parseDouble(new 
DoubleRyaTypeResolver().deserialize(serialize).getData()));
+    }
+
+    private double randomDouble() {
+        return new Random(System.currentTimeMillis()).nextDouble();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/IntegerRyaTypeResolverTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/IntegerRyaTypeResolverTest.java
 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/IntegerRyaTypeResolverTest.java
new file mode 100644
index 0000000..60cded0
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/IntegerRyaTypeResolverTest.java
@@ -0,0 +1,44 @@
+package mvm.rya.api.resolver.impl;
+
+/*
+ * 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 junit.framework.TestCase;
+import mvm.rya.api.domain.RyaType;
+import org.openrdf.model.vocabulary.XMLSchema;
+
+import java.util.Random;
+
+/**
+ * Date: 7/20/12
+ * Time: 10:17 AM
+ */
+public class IntegerRyaTypeResolverTest extends TestCase {
+    public void testIntegerSerialization() throws Exception {
+        Integer i = randomInt();
+        byte[] serialize = new IntegerRyaTypeResolver().serialize(new 
RyaType(XMLSchema.INTEGER, i.toString()));
+        assertEquals(i, new Integer(new 
IntegerRyaTypeResolver().deserialize(serialize).getData()));
+    }
+
+    private int randomInt() {
+        return new 
Random(System.currentTimeMillis()).nextInt(Integer.MAX_VALUE);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/LongRyaTypeResolverTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/LongRyaTypeResolverTest.java
 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/LongRyaTypeResolverTest.java
new file mode 100644
index 0000000..3dfb9c4
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/LongRyaTypeResolverTest.java
@@ -0,0 +1,49 @@
+package mvm.rya.api.resolver.impl;
+
+/*
+ * 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 mvm.rya.api.domain.RyaType;
+import org.junit.Test;
+import org.openrdf.model.vocabulary.XMLSchema;
+
+import java.util.Random;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * Date: 9/7/12
+ * Time: 2:53 PM
+ */
+public class LongRyaTypeResolverTest {
+
+    @Test
+    public void testSerialization() throws Exception {
+        Long i = randomLong();
+        byte[] serialize = new LongRyaTypeResolver().serialize(new 
RyaType(XMLSchema.LONG, i.toString()));
+        assertEquals(i, new Long(new 
LongRyaTypeResolver().deserialize(serialize).getData()));
+    }
+
+    private long randomLong() {
+        return new Random(System.currentTimeMillis()).nextLong();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/RyaURIResolverTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/RyaURIResolverTest.java
 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/RyaURIResolverTest.java
new file mode 100644
index 0000000..f962b88
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/impl/RyaURIResolverTest.java
@@ -0,0 +1,40 @@
+package mvm.rya.api.resolver.impl;
+
+/*
+ * 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 junit.framework.TestCase;
+import mvm.rya.api.domain.RyaType;
+import mvm.rya.api.domain.RyaURI;
+
+/**
+ * Date: 7/16/12
+ * Time: 2:51 PM
+ */
+public class RyaURIResolverTest extends TestCase {
+
+    public void testSerialization() throws Exception {
+        RyaURI ryaURI = new RyaURI("urn:testdata#data");
+        byte[] serialize = new RyaURIResolver().serialize(ryaURI);
+        RyaType deserialize = new RyaURIResolver().deserialize(serialize);
+        assertEquals(ryaURI, deserialize);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/resolver/triple/impl/HashedWholeRowTripleResolverTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/resolver/triple/impl/HashedWholeRowTripleResolverTest.java
 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/triple/impl/HashedWholeRowTripleResolverTest.java
new file mode 100644
index 0000000..2baa92d
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/triple/impl/HashedWholeRowTripleResolverTest.java
@@ -0,0 +1,124 @@
+package mvm.rya.api.resolver.triple.impl;
+
+/*
+ * 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 java.util.Map;
+
+import junit.framework.TestCase;
+import mvm.rya.api.RdfCloudTripleStoreConstants;
+import mvm.rya.api.domain.RyaStatement;
+import mvm.rya.api.domain.RyaURI;
+import mvm.rya.api.resolver.triple.TripleRow;
+
+/**
+ * Date: 7/25/12
+ * Time: 10:52 AM
+ */
+public class HashedWholeRowTripleResolverTest extends TestCase {
+
+       WholeRowHashedTripleResolver tripleResolver = new 
WholeRowHashedTripleResolver();
+
+    public void testSerialize() throws Exception {
+        //no context
+        RyaURI subj = new RyaURI("urn:test#1234");
+        RyaURI pred = new RyaURI("urn:test#pred");
+        RyaURI obj = new RyaURI("urn:test#obj");
+        RyaURI cntxt = new RyaURI("urn:test#cntxt");
+        final RyaStatement stmt = new RyaStatement(subj, pred, obj, null, 
null, null, null, 100l);
+        final RyaStatement stmtContext = new RyaStatement(subj, pred, obj, 
cntxt, null, null, null, 100l);
+
+        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize = 
tripleResolver.serialize(stmt);
+        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+        RyaStatement deserialize = 
tripleResolver.deserialize(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO, 
tripleRow);
+        assertEquals(stmt, deserialize);
+
+        //context
+        serialize = tripleResolver.serialize(stmtContext);
+        tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+        deserialize = 
tripleResolver.deserialize(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO, 
tripleRow);
+        assertEquals(stmtContext, deserialize);
+    }
+
+    public void testSerializePO() throws Exception {
+        RdfCloudTripleStoreConstants.TABLE_LAYOUT po = 
RdfCloudTripleStoreConstants.TABLE_LAYOUT.PO;
+        //no context
+        RyaURI subj = new RyaURI("urn:test#1234");
+        RyaURI pred = new RyaURI("urn:test#pred");
+        RyaURI obj = new RyaURI("urn:test#obj");
+        RyaURI cntxt = new RyaURI("urn:test#cntxt");
+        final RyaStatement stmt = new RyaStatement(subj, pred, obj, null, 
null, null, null, 100l);
+        final RyaStatement stmtContext = new RyaStatement(subj, pred, obj, 
cntxt, null, null, null, 100l);
+        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize = 
tripleResolver.serialize(stmt);
+        TripleRow tripleRow = serialize.get(po);
+        RyaStatement deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmt, deserialize);
+
+        //context
+        serialize = tripleResolver.serialize(stmtContext);
+        tripleRow = serialize.get(po);
+        deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmtContext, deserialize);
+    }
+
+    public void testSerializeOSP() throws Exception {
+        RdfCloudTripleStoreConstants.TABLE_LAYOUT po = 
RdfCloudTripleStoreConstants.TABLE_LAYOUT.OSP;
+        //no context
+        RyaURI subj = new RyaURI("urn:test#1234");
+        RyaURI pred = new RyaURI("urn:test#pred");
+        RyaURI obj = new RyaURI("urn:test#obj");
+        RyaURI cntxt = new RyaURI("urn:test#cntxt");
+        final RyaStatement stmt = new RyaStatement(subj, pred, obj, null, 
null, null, null, 100l);
+        final RyaStatement stmtContext = new RyaStatement(subj, pred, obj, 
cntxt, null, null, null, 100l);
+        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize = 
tripleResolver.serialize(stmt);
+        TripleRow tripleRow = serialize.get(po);
+        RyaStatement deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmt, deserialize);
+
+        //context
+        serialize = tripleResolver.serialize(stmtContext);
+        tripleRow = serialize.get(po);
+        deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmtContext, deserialize);
+    }
+
+    public void testSerializeOSPCustomType() throws Exception {
+        RdfCloudTripleStoreConstants.TABLE_LAYOUT po = 
RdfCloudTripleStoreConstants.TABLE_LAYOUT.OSP;
+        //no context
+        RyaURI subj = new RyaURI("urn:test#1234");
+        RyaURI pred = new RyaURI("urn:test#pred");
+        RyaURI obj = new RyaURI("urn:test#obj");
+        RyaURI cntxt = new RyaURI("urn:test#cntxt");
+        final RyaStatement stmt = new RyaStatement(subj, pred, obj, null, 
null, null, null, 100l);
+        final RyaStatement stmtContext = new RyaStatement(subj, pred, obj, 
cntxt, null, null, null, 100l);
+        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize = 
tripleResolver.serialize(stmt);
+        TripleRow tripleRow = serialize.get(po);
+        RyaStatement deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmt, deserialize);
+
+        //context
+        serialize = tripleResolver.serialize(stmtContext);
+        tripleRow = serialize.get(po);
+        deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmtContext, deserialize);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/resolver/triple/impl/WholeRowTripleResolverTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/resolver/triple/impl/WholeRowTripleResolverTest.java
 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/triple/impl/WholeRowTripleResolverTest.java
new file mode 100644
index 0000000..30409ff
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/resolver/triple/impl/WholeRowTripleResolverTest.java
@@ -0,0 +1,127 @@
+package mvm.rya.api.resolver.triple.impl;
+
+/*
+ * 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 junit.framework.TestCase;
+import mvm.rya.api.RdfCloudTripleStoreConstants;
+import mvm.rya.api.domain.RyaStatement;
+import mvm.rya.api.domain.RyaURI;
+import mvm.rya.api.resolver.triple.TripleRow;
+import mvm.rya.api.resolver.triple.TripleRowRegex;
+
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Date: 7/25/12
+ * Time: 10:52 AM
+ */
+public class WholeRowTripleResolverTest extends TestCase {
+
+    WholeRowTripleResolver tripleResolver = new WholeRowTripleResolver();
+
+    public void testSerialize() throws Exception {
+        //no context
+        RyaURI subj = new RyaURI("urn:test#1234");
+        RyaURI pred = new RyaURI("urn:test#pred");
+        RyaURI obj = new RyaURI("urn:test#obj");
+        RyaURI cntxt = new RyaURI("urn:test#cntxt");
+        final RyaStatement stmt = new RyaStatement(subj, pred, obj, null, 
null, null, null, 100l);
+        final RyaStatement stmtContext = new RyaStatement(subj, pred, obj, 
cntxt, null, null, null, 100l);
+
+        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize = 
tripleResolver.serialize(stmt);
+        TripleRow tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+        RyaStatement deserialize = 
tripleResolver.deserialize(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO, 
tripleRow);
+        assertEquals(stmt, deserialize);
+
+        //context
+        serialize = tripleResolver.serialize(stmtContext);
+        tripleRow = 
serialize.get(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO);
+        deserialize = 
tripleResolver.deserialize(RdfCloudTripleStoreConstants.TABLE_LAYOUT.SPO, 
tripleRow);
+        assertEquals(stmtContext, deserialize);
+    }
+
+    public void testSerializePO() throws Exception {
+        RdfCloudTripleStoreConstants.TABLE_LAYOUT po = 
RdfCloudTripleStoreConstants.TABLE_LAYOUT.PO;
+        //no context
+        RyaURI subj = new RyaURI("urn:test#1234");
+        RyaURI pred = new RyaURI("urn:test#pred");
+        RyaURI obj = new RyaURI("urn:test#obj");
+        RyaURI cntxt = new RyaURI("urn:test#cntxt");
+        final RyaStatement stmt = new RyaStatement(subj, pred, obj, null, 
null, null, null, 100l);
+        final RyaStatement stmtContext = new RyaStatement(subj, pred, obj, 
cntxt, null, null, null, 100l);
+        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize = 
tripleResolver.serialize(stmt);
+        TripleRow tripleRow = serialize.get(po);
+        RyaStatement deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmt, deserialize);
+
+        //context
+        serialize = tripleResolver.serialize(stmtContext);
+        tripleRow = serialize.get(po);
+        deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmtContext, deserialize);
+    }
+
+    public void testSerializeOSP() throws Exception {
+        RdfCloudTripleStoreConstants.TABLE_LAYOUT po = 
RdfCloudTripleStoreConstants.TABLE_LAYOUT.OSP;
+        //no context
+        RyaURI subj = new RyaURI("urn:test#1234");
+        RyaURI pred = new RyaURI("urn:test#pred");
+        RyaURI obj = new RyaURI("urn:test#obj");
+        RyaURI cntxt = new RyaURI("urn:test#cntxt");
+        final RyaStatement stmt = new RyaStatement(subj, pred, obj, null, 
null, null, null, 100l);
+        final RyaStatement stmtContext = new RyaStatement(subj, pred, obj, 
cntxt, null, null, null, 100l);
+        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize = 
tripleResolver.serialize(stmt);
+        TripleRow tripleRow = serialize.get(po);
+        RyaStatement deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmt, deserialize);
+
+        //context
+        serialize = tripleResolver.serialize(stmtContext);
+        tripleRow = serialize.get(po);
+        deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmtContext, deserialize);
+    }
+
+    public void testSerializeOSPCustomType() throws Exception {
+        RdfCloudTripleStoreConstants.TABLE_LAYOUT po = 
RdfCloudTripleStoreConstants.TABLE_LAYOUT.OSP;
+        //no context
+        RyaURI subj = new RyaURI("urn:test#1234");
+        RyaURI pred = new RyaURI("urn:test#pred");
+        RyaURI obj = new RyaURI("urn:test#obj");
+        RyaURI cntxt = new RyaURI("urn:test#cntxt");
+        final RyaStatement stmt = new RyaStatement(subj, pred, obj, null, 
null, null, null, 100l);
+        final RyaStatement stmtContext = new RyaStatement(subj, pred, obj, 
cntxt, null, null, null, 100l);
+        Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> serialize = 
tripleResolver.serialize(stmt);
+        TripleRow tripleRow = serialize.get(po);
+        RyaStatement deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmt, deserialize);
+
+        //context
+        serialize = tripleResolver.serialize(stmtContext);
+        tripleRow = serialize.get(po);
+        deserialize = tripleResolver.deserialize(po, tripleRow);
+        assertEquals(stmtContext, deserialize);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.api/src/test/java/org/apache/rya/api/utils/RdfIOTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/utils/RdfIOTest.java 
b/common/rya.api/src/test/java/org/apache/rya/api/utils/RdfIOTest.java
new file mode 100644
index 0000000..db377e1
--- /dev/null
+++ b/common/rya.api/src/test/java/org/apache/rya/api/utils/RdfIOTest.java
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+
+//package mvm.rya.api.utils;
+
+//
+//import junit.framework.TestCase;
+//import mvm.rya.api.RdfCloudTripleStoreUtils;
+//import org.openrdf.model.Statement;
+//import org.openrdf.model.impl.StatementImpl;
+//
+//import static mvm.rya.api.RdfCloudTripleStoreConstants.*;
+//
+///**
+// * Class RdfIOTest
+// * Date: Mar 8, 2012
+// * Time: 10:12:00 PM
+// */
+//public class RdfIOTest extends TestCase {
+//
+//    Statement st = new StatementImpl(RTS_SUBJECT, RTS_VERSION_PREDICATE, 
VERSION);
+//    int num = 100000;
+//
+//    public void testPerf() throws Exception {
+//
+//        long start = System.currentTimeMillis();
+//        for(int i = 0; i < num; i++) {
+//              byte[] bytes = 
RdfCloudTripleStoreUtils.writeValue(st.getSubject());
+////            byte[] bytes = RdfIO.writeStatement(st);
+////            Statement retSt = 
RdfIO.readStatement(ByteStreams.newDataInput(bytes), VALUE_FACTORY);
+//        }
+//        long dur = System.currentTimeMillis() - start;
+//        System.out.println("RdfCloudTripleStoreUtils: " + dur);
+//
+//
+//    }
+//
+//    public void testPerf2() throws Exception {
+//        long start = System.currentTimeMillis();
+//        for(int i = 0; i < num; i++) {
+//            byte[] bytes = RdfIO.writeValue(st.getSubject());
+//
+////            byte[] bytes = 
RdfCloudTripleStoreUtils.buildRowWith(RdfCloudTripleStoreUtils.writeValue(st.getSubject()),
+////                    RdfCloudTripleStoreUtils.writeValue(st.getPredicate()),
+////                    RdfCloudTripleStoreUtils.writeValue(st.getObject()));
+////            Statement retSt = 
RdfCloudTripleStoreUtils.translateStatementFromRow(ByteStreams.newDataInput(bytes),
 TABLE_LAYOUT.SPO, VALUE_FACTORY);
+//        }
+//        long dur = System.currentTimeMillis() - start;
+//        System.out.println("RdfIO: " + dur);
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/LoggingProvenanceCollector.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/LoggingProvenanceCollector.java
 
b/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/LoggingProvenanceCollector.java
deleted file mode 100644
index 2ef279a..0000000
--- 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/LoggingProvenanceCollector.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package mvm.rya.rdftriplestore.provenance;
-
-/*
- * 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 org.apache.log4j.Logger;
-
-/**
- * Provenance collector that logs queries
- */
-public class LoggingProvenanceCollector implements ProvenanceCollector {
-       
-    private static final Logger log = 
Logger.getLogger(LoggingProvenanceCollector.class);
-
-       /* (non-Javadoc)
-        * @see 
mvm.rya.rdftriplestore.provenance.ProvenanceCollector#recordQuery(java.lang.String)
-        */
-       public void recordQuery(String query) {
-               log.debug("User entered query: " + query);
-       }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/ProvenanceCollectionException.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/ProvenanceCollectionException.java
 
b/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/ProvenanceCollectionException.java
deleted file mode 100644
index a0bd896..0000000
--- 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/ProvenanceCollectionException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package mvm.rya.rdftriplestore.provenance;
-
-/*
- * 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 org.openrdf.repository.RepositoryException;
-
-/**
- *  Exception for errors in collecting provenance data
- */
-public class ProvenanceCollectionException extends Exception {
-
-       public ProvenanceCollectionException(RepositoryException e) {
-               super(e);
-       }
-
-       /**
-        * 
-        */
-       private static final long serialVersionUID = 1L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/ProvenanceCollector.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/ProvenanceCollector.java
 
b/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/ProvenanceCollector.java
deleted file mode 100644
index a4ff829..0000000
--- 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/ProvenanceCollector.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package mvm.rya.rdftriplestore.provenance;
-
-/*
- * 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.
- */
-
-
-/**
- *  Collects/records provenance data
- */
-public interface ProvenanceCollector {
-
-       /**
-        * Records appropriate metadata about a query
-        * @param query the query being recorded.  cannot be null
-        * @throws ProvenanceCollectionException
-        */
-       public void recordQuery(String query) throws 
ProvenanceCollectionException;
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/TriplestoreProvenanceCollector.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/TriplestoreProvenanceCollector.java
 
b/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/TriplestoreProvenanceCollector.java
deleted file mode 100644
index e283f2c..0000000
--- 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/TriplestoreProvenanceCollector.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package mvm.rya.rdftriplestore.provenance;
-
-/*
- * 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 java.util.List;
-
-import mvm.rya.rdftriplestore.provenance.rdf.BaseProvenanceModel;
-import mvm.rya.rdftriplestore.provenance.rdf.RDFProvenanceModel;
-
-import org.openrdf.model.Statement;
-import org.openrdf.repository.RepositoryException;
-import org.openrdf.repository.sail.SailRepository;
-
-/**
- * Records provenance data to an external rdf triplestore
- */
-public class TriplestoreProvenanceCollector implements ProvenanceCollector {
-
-       private RDFProvenanceModel provenanceModel;
-       private SailRepository provenanceRepo;
-       private String user;
-       private String queryType;
-       
-       /**
-        * @param repo the repository to record to
-        * @param user the user issuing the query
-        * @param queryType the type of query (SPARQL, etc.)
-        */
-       public TriplestoreProvenanceCollector(SailRepository repo, String user, 
String queryType){
-               provenanceRepo = repo;
-               provenanceModel = new BaseProvenanceModel();
-               this.user = user;
-               this.queryType = queryType;
-       }
-       
-       /* (non-Javadoc)
-        * @see 
mvm.rya.rdftriplestore.provenance.ProvenanceCollector#recordQuery(java.lang.String)
-        */
-       public void recordQuery(String query) throws 
ProvenanceCollectionException {
-               List<Statement> provenanceTriples = 
provenanceModel.getStatementsForQuery(query, user, queryType);
-               try {
-                       provenanceRepo.getConnection().add(provenanceTriples);
-               } catch (RepositoryException e) {
-                       throw new ProvenanceCollectionException(e);
-               }
-
-       }
-
-       
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/rdf/BaseProvenanceModel.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/rdf/BaseProvenanceModel.java
 
b/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/rdf/BaseProvenanceModel.java
deleted file mode 100644
index b8c5f32..0000000
--- 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/rdf/BaseProvenanceModel.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package mvm.rya.rdftriplestore.provenance.rdf;
-
-/*
- * 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 java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
-
-import org.openrdf.model.Resource;
-import org.openrdf.model.Statement;
-import org.openrdf.model.URI;
-import org.openrdf.model.ValueFactory;
-import org.openrdf.model.impl.ValueFactoryImpl;
-import org.openrdf.model.vocabulary.RDF;
-
-/**
- * Basic representation of Provenance data capture in RDF.
- */
-public class BaseProvenanceModel implements RDFProvenanceModel {
-       
-       private static final ValueFactory vf = ValueFactoryImpl.getInstance();
-       private static final Resource queryEventType = 
vf.createURI("http://rya.com/provenance#QueryEvent";);
-       private static final URI atTimeProperty = 
vf.createURI("http://www.w3.org/ns/prov#atTime";);
-       private static final URI associatedWithUser = 
vf.createURI("http://rya.com/provenance#associatedWithUser";);
-       private static final URI queryTypeProp = 
vf.createURI("http://rya.com/provenance#queryType";);
-       private static final URI executedQueryProperty = 
vf.createURI("http://rya.com/provenance#executedQuery";);
-       private static final String queryNameSpace = 
"http://rya.com/provenance#queryEvent";;
-
-       /* (non-Javadoc)
-        * @see 
mvm.rya.rdftriplestore.provenance.rdf.RDFProvenanceModel#getStatementsForQuery(java.lang.String,
 java.lang.String, java.lang.String)
-        */
-       public List<Statement> getStatementsForQuery(String query, String user, 
String queryType) {
-               List<Statement> statements = new ArrayList<Statement>();
-               // create some statements for the query
-               Resource queryEventResource = vf.createURI(queryNameSpace + 
UUID.randomUUID().toString());
-               Statement queryEventDecl = 
vf.createStatement(queryEventResource, RDF.TYPE, queryEventType);
-               statements.add(queryEventDecl);
-               Statement queryEventTime = 
vf.createStatement(queryEventResource, atTimeProperty, vf.createLiteral(new 
Date()));
-               statements.add(queryEventTime);
-               Statement queryUser = vf.createStatement(queryEventResource, 
associatedWithUser, vf.createLiteral(user));
-               statements.add(queryUser);
-               Statement executedQuery = 
vf.createStatement(queryEventResource, executedQueryProperty, 
vf.createLiteral(query));
-               statements.add(executedQuery);
-               Statement queryTypeStatement = 
vf.createStatement(queryEventResource, queryTypeProp, 
vf.createLiteral(queryType));
-               statements.add(queryTypeStatement);
-               return statements;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/rdf/RDFProvenanceModel.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/rdf/RDFProvenanceModel.java
 
b/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/rdf/RDFProvenanceModel.java
deleted file mode 100644
index c5495f2..0000000
--- 
a/common/rya.provenance/src/main/java/mvm/rya/rdftriplestore/provenance/rdf/RDFProvenanceModel.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package mvm.rya.rdftriplestore.provenance.rdf;
-
-/*
- * 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 java.util.List;
-
-import org.openrdf.model.Statement;
-
-
-public interface RDFProvenanceModel {
-
-       List<Statement> getStatementsForQuery(String query, String user, String 
queryType);
-
-       
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/LoggingProvenanceCollector.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/LoggingProvenanceCollector.java
 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/LoggingProvenanceCollector.java
new file mode 100644
index 0000000..2ef279a
--- /dev/null
+++ 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/LoggingProvenanceCollector.java
@@ -0,0 +1,41 @@
+package mvm.rya.rdftriplestore.provenance;
+
+/*
+ * 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 org.apache.log4j.Logger;
+
+/**
+ * Provenance collector that logs queries
+ */
+public class LoggingProvenanceCollector implements ProvenanceCollector {
+       
+    private static final Logger log = 
Logger.getLogger(LoggingProvenanceCollector.class);
+
+       /* (non-Javadoc)
+        * @see 
mvm.rya.rdftriplestore.provenance.ProvenanceCollector#recordQuery(java.lang.String)
+        */
+       public void recordQuery(String query) {
+               log.debug("User entered query: " + query);
+       }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/ProvenanceCollectionException.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/ProvenanceCollectionException.java
 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/ProvenanceCollectionException.java
new file mode 100644
index 0000000..a0bd896
--- /dev/null
+++ 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/ProvenanceCollectionException.java
@@ -0,0 +1,39 @@
+package mvm.rya.rdftriplestore.provenance;
+
+/*
+ * 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 org.openrdf.repository.RepositoryException;
+
+/**
+ *  Exception for errors in collecting provenance data
+ */
+public class ProvenanceCollectionException extends Exception {
+
+       public ProvenanceCollectionException(RepositoryException e) {
+               super(e);
+       }
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = 1L;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/ProvenanceCollector.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/ProvenanceCollector.java
 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/ProvenanceCollector.java
new file mode 100644
index 0000000..a4ff829
--- /dev/null
+++ 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/ProvenanceCollector.java
@@ -0,0 +1,34 @@
+package mvm.rya.rdftriplestore.provenance;
+
+/*
+ * 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.
+ */
+
+
+/**
+ *  Collects/records provenance data
+ */
+public interface ProvenanceCollector {
+
+       /**
+        * Records appropriate metadata about a query
+        * @param query the query being recorded.  cannot be null
+        * @throws ProvenanceCollectionException
+        */
+       public void recordQuery(String query) throws 
ProvenanceCollectionException;
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/TriplestoreProvenanceCollector.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/TriplestoreProvenanceCollector.java
 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/TriplestoreProvenanceCollector.java
new file mode 100644
index 0000000..e283f2c
--- /dev/null
+++ 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/TriplestoreProvenanceCollector.java
@@ -0,0 +1,68 @@
+package mvm.rya.rdftriplestore.provenance;
+
+/*
+ * 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 java.util.List;
+
+import mvm.rya.rdftriplestore.provenance.rdf.BaseProvenanceModel;
+import mvm.rya.rdftriplestore.provenance.rdf.RDFProvenanceModel;
+
+import org.openrdf.model.Statement;
+import org.openrdf.repository.RepositoryException;
+import org.openrdf.repository.sail.SailRepository;
+
+/**
+ * Records provenance data to an external rdf triplestore
+ */
+public class TriplestoreProvenanceCollector implements ProvenanceCollector {
+
+       private RDFProvenanceModel provenanceModel;
+       private SailRepository provenanceRepo;
+       private String user;
+       private String queryType;
+       
+       /**
+        * @param repo the repository to record to
+        * @param user the user issuing the query
+        * @param queryType the type of query (SPARQL, etc.)
+        */
+       public TriplestoreProvenanceCollector(SailRepository repo, String user, 
String queryType){
+               provenanceRepo = repo;
+               provenanceModel = new BaseProvenanceModel();
+               this.user = user;
+               this.queryType = queryType;
+       }
+       
+       /* (non-Javadoc)
+        * @see 
mvm.rya.rdftriplestore.provenance.ProvenanceCollector#recordQuery(java.lang.String)
+        */
+       public void recordQuery(String query) throws 
ProvenanceCollectionException {
+               List<Statement> provenanceTriples = 
provenanceModel.getStatementsForQuery(query, user, queryType);
+               try {
+                       provenanceRepo.getConnection().add(provenanceTriples);
+               } catch (RepositoryException e) {
+                       throw new ProvenanceCollectionException(e);
+               }
+
+       }
+
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/rdf/BaseProvenanceModel.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/rdf/BaseProvenanceModel.java
 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/rdf/BaseProvenanceModel.java
new file mode 100644
index 0000000..b8c5f32
--- /dev/null
+++ 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/rdf/BaseProvenanceModel.java
@@ -0,0 +1,68 @@
+package mvm.rya.rdftriplestore.provenance.rdf;
+
+/*
+ * 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 java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+import org.openrdf.model.Resource;
+import org.openrdf.model.Statement;
+import org.openrdf.model.URI;
+import org.openrdf.model.ValueFactory;
+import org.openrdf.model.impl.ValueFactoryImpl;
+import org.openrdf.model.vocabulary.RDF;
+
+/**
+ * Basic representation of Provenance data capture in RDF.
+ */
+public class BaseProvenanceModel implements RDFProvenanceModel {
+       
+       private static final ValueFactory vf = ValueFactoryImpl.getInstance();
+       private static final Resource queryEventType = 
vf.createURI("http://rya.com/provenance#QueryEvent";);
+       private static final URI atTimeProperty = 
vf.createURI("http://www.w3.org/ns/prov#atTime";);
+       private static final URI associatedWithUser = 
vf.createURI("http://rya.com/provenance#associatedWithUser";);
+       private static final URI queryTypeProp = 
vf.createURI("http://rya.com/provenance#queryType";);
+       private static final URI executedQueryProperty = 
vf.createURI("http://rya.com/provenance#executedQuery";);
+       private static final String queryNameSpace = 
"http://rya.com/provenance#queryEvent";;
+
+       /* (non-Javadoc)
+        * @see 
mvm.rya.rdftriplestore.provenance.rdf.RDFProvenanceModel#getStatementsForQuery(java.lang.String,
 java.lang.String, java.lang.String)
+        */
+       public List<Statement> getStatementsForQuery(String query, String user, 
String queryType) {
+               List<Statement> statements = new ArrayList<Statement>();
+               // create some statements for the query
+               Resource queryEventResource = vf.createURI(queryNameSpace + 
UUID.randomUUID().toString());
+               Statement queryEventDecl = 
vf.createStatement(queryEventResource, RDF.TYPE, queryEventType);
+               statements.add(queryEventDecl);
+               Statement queryEventTime = 
vf.createStatement(queryEventResource, atTimeProperty, vf.createLiteral(new 
Date()));
+               statements.add(queryEventTime);
+               Statement queryUser = vf.createStatement(queryEventResource, 
associatedWithUser, vf.createLiteral(user));
+               statements.add(queryUser);
+               Statement executedQuery = 
vf.createStatement(queryEventResource, executedQueryProperty, 
vf.createLiteral(query));
+               statements.add(executedQuery);
+               Statement queryTypeStatement = 
vf.createStatement(queryEventResource, queryTypeProp, 
vf.createLiteral(queryType));
+               statements.add(queryTypeStatement);
+               return statements;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/rdf/RDFProvenanceModel.java
----------------------------------------------------------------------
diff --git 
a/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/rdf/RDFProvenanceModel.java
 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/rdf/RDFProvenanceModel.java
new file mode 100644
index 0000000..c5495f2
--- /dev/null
+++ 
b/common/rya.provenance/src/main/java/org/apache/rya/rdftriplestore/provenance/rdf/RDFProvenanceModel.java
@@ -0,0 +1,33 @@
+package mvm.rya.rdftriplestore.provenance.rdf;
+
+/*
+ * 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 java.util.List;
+
+import org.openrdf.model.Statement;
+
+
+public interface RDFProvenanceModel {
+
+       List<Statement> getStatementsForQuery(String query, String user, String 
queryType);
+
+       
+}

Reply via email to