http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/AbstractRepositoryGraphLike.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/AbstractRepositoryGraphLike.java
 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/AbstractRepositoryGraphLike.java
index 37487b4..2398194 100644
--- 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/AbstractRepositoryGraphLike.java
+++ 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/AbstractRepositoryGraphLike.java
@@ -28,49 +28,48 @@ import org.eclipse.rdf4j.model.Statement;
 import org.eclipse.rdf4j.repository.Repository;
 import org.eclipse.rdf4j.repository.RepositoryConnection;
 
-abstract class AbstractRepositoryGraphLike<T extends TripleLike>
-               implements RDF4JGraphLike<T> {
+abstract class AbstractRepositoryGraphLike<T extends TripleLike> implements 
RDF4JGraphLike<T> {
 
-       protected final Repository repository;
-       protected final boolean includeInferred;
-       protected final boolean handleInitAndShutdown;
-       protected final RDF4J rdf4jTermFactory;
-       protected final UUID salt;
+    protected final Repository repository;
+    protected final boolean includeInferred;
+    protected final boolean handleInitAndShutdown;
+    protected final RDF4J rdf4jTermFactory;
+    protected final UUID salt;
 
-       AbstractRepositoryGraphLike(Repository repository, UUID salt, boolean 
handleInitAndShutdown, boolean includeInferred) {
-               this.repository = repository;
-               this.salt = salt;
-               this.includeInferred = includeInferred;
-               this.handleInitAndShutdown = handleInitAndShutdown;
-               if (handleInitAndShutdown && !repository.isInitialized()) {
-                       repository.initialize();
-               }
-               rdf4jTermFactory = new RDF4J(repository.getValueFactory(), 
salt);
-       }       
-       
-       @Override
-       public void close() throws Exception {
-               if (handleInitAndShutdown) {
-                       repository.shutDown();
-               }
-               // else: repository was initialized outside, so we should not 
shut it
-               // down
-       }
+    AbstractRepositoryGraphLike(Repository repository, UUID salt, boolean 
handleInitAndShutdown,
+            boolean includeInferred) {
+        this.repository = repository;
+        this.salt = salt;
+        this.includeInferred = includeInferred;
+        this.handleInitAndShutdown = handleInitAndShutdown;
+        if (handleInitAndShutdown && !repository.isInitialized()) {
+            repository.initialize();
+        }
+        rdf4jTermFactory = new RDF4J(repository.getValueFactory(), salt);
+    }
 
-       
-       protected abstract T asTripleLike(Statement s);
+    @Override
+    public void close() throws Exception {
+        if (handleInitAndShutdown) {
+            repository.shutDown();
+        }
+        // else: repository was initialized outside, so we should not shut it
+        // down
+    }
 
-       protected RepositoryConnection getRepositoryConnection() {
-               return repository.getConnection();
-       }
+    protected abstract T asTripleLike(Statement s);
 
-       public Optional<Repository> asRepository() {
-               return Optional.of(repository);
-       }
+    protected RepositoryConnection getRepositoryConnection() {
+        return repository.getConnection();
+    }
 
-       @Override
-       public Optional<Model> asModel() {
-               return Optional.empty();
-       }
+    public Optional<Repository> asRepository() {
+        return Optional.of(repository);
+    }
+
+    @Override
+    public Optional<Model> asModel() {
+        return Optional.empty();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/BlankNodeImpl.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/BlankNodeImpl.java 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/BlankNodeImpl.java
index bdb82d1..8c5fc30 100644
--- a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/BlankNodeImpl.java
+++ b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/BlankNodeImpl.java
@@ -25,69 +25,68 @@ import org.apache.commons.rdf.rdf4j.RDF4JBlankNode;
 import org.eclipse.rdf4j.model.BNode;
 import org.eclipse.rdf4j.rio.turtle.TurtleUtil;
 
-final class BlankNodeImpl extends AbstractRDFTerm<BNode>
-       implements RDF4JBlankNode {
-       
-       private transient int hashCode = 0;
-       private long saltUUIDleast;
-       private long saltUUIDmost;
-       
-       BlankNodeImpl(BNode bNode, UUID salt) {
-               super(bNode);                   
-               // Space-efficient storage of salt UUID
-               saltUUIDmost = salt.getMostSignificantBits();
-               saltUUIDleast = salt.getLeastSignificantBits();
-       }
-       
-       public boolean equals(Object obj) { 
-               if (obj == this) { 
-                       return true;
-               }
-               // NOTE: Do NOT use Bnode.equals() as it has a more generous
-               // equality based only on the value.getID();                    
-               if (obj instanceof BlankNode) {
-                       BlankNode blankNode = (BlankNode) obj;
-                       return 
uniqueReference().equals(blankNode.uniqueReference());                          
                                 
-               }
-               return false;
-       }
+final class BlankNodeImpl extends AbstractRDFTerm<BNode> implements 
RDF4JBlankNode {
 
-       @Override
-       public int hashCode() {
-               if (hashCode != 0) {
-                       return hashCode;
-               }
-               return hashCode = uniqueReference().hashCode();
-       }
+    private transient int hashCode = 0;
+    private long saltUUIDleast;
+    private long saltUUIDmost;
 
-       private boolean isValidBlankNodeLabel(String id) {
-               // FIXME: Replace with a regular expression?                    
-               if (id.isEmpty()) { 
-                       return false;
-               }
-               if (! 
TurtleUtil.isBLANK_NODE_LABEL_StartChar(id.codePointAt(0)))  {
-                       return false;
-               }
-               for (int i=1; i<id.length(); i++) { 
-                       if (! 
TurtleUtil.isBLANK_NODE_LABEL_Char(id.codePointAt(i))) { 
-                               return false;
-                       }
-               }
-               return true;
-       }
+    BlankNodeImpl(BNode bNode, UUID salt) {
+        super(bNode);
+        // Space-efficient storage of salt UUID
+        saltUUIDmost = salt.getMostSignificantBits();
+        saltUUIDleast = salt.getLeastSignificantBits();
+    }
 
-       @Override
-       public String ntriplesString() {
-               if (isValidBlankNodeLabel(value.getID())) { 
-                       return "_:" + value.getID();
-               } else {
-                       return "_:" + 
UUID.nameUUIDFromBytes(value.getID().getBytes(StandardCharsets.UTF_8));
-               }
-       }
+    public boolean equals(Object obj) {
+        if (obj == this) {
+            return true;
+        }
+        // NOTE: Do NOT use Bnode.equals() as it has a more generous
+        // equality based only on the value.getID();
+        if (obj instanceof BlankNode) {
+            BlankNode blankNode = (BlankNode) obj;
+            return uniqueReference().equals(blankNode.uniqueReference());
+        }
+        return false;
+    }
 
-       @Override
-       public String uniqueReference() {
-               UUID uuid = new UUID(saltUUIDmost, saltUUIDleast);
-               return "urn:uuid:" + uuid + "#" + value.getID();
-       }
+    @Override
+    public int hashCode() {
+        if (hashCode != 0) {
+            return hashCode;
+        }
+        return hashCode = uniqueReference().hashCode();
+    }
+
+    private boolean isValidBlankNodeLabel(String id) {
+        // FIXME: Replace with a regular expression?
+        if (id.isEmpty()) {
+            return false;
+        }
+        if (!TurtleUtil.isBLANK_NODE_LABEL_StartChar(id.codePointAt(0))) {
+            return false;
+        }
+        for (int i = 1; i < id.length(); i++) {
+            if (!TurtleUtil.isBLANK_NODE_LABEL_Char(id.codePointAt(i))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public String ntriplesString() {
+        if (isValidBlankNodeLabel(value.getID())) {
+            return "_:" + value.getID();
+        } else {
+            return "_:" + 
UUID.nameUUIDFromBytes(value.getID().getBytes(StandardCharsets.UTF_8));
+        }
+    }
+
+    @Override
+    public String uniqueReference() {
+        UUID uuid = new UUID(saltUUIDmost, saltUUIDleast);
+        return "urn:uuid:" + uuid + "#" + value.getID();
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/ConvertedStatements.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/ConvertedStatements.java
 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/ConvertedStatements.java
index 4c8478a..f199b8f 100644
--- 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/ConvertedStatements.java
+++ 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/ConvertedStatements.java
@@ -29,43 +29,43 @@ import org.eclipse.rdf4j.repository.RepositoryConnection;
 import org.eclipse.rdf4j.repository.RepositoryResult;
 
 final class ConvertedStatements<T> implements ClosableIterable<T> {
-       
-       private RepositoryConnection conn;
-       private RepositoryResult<Statement> results;
-       private Function<Statement, T> statementAdapter;
 
-       ConvertedStatements(Supplier<RepositoryConnection> repositoryConnector, 
Function<Statement, T> statementAdapter,
-                       Resource subj, org.eclipse.rdf4j.model.IRI pred, Value 
obj, Resource... contexts) {
-               this.statementAdapter = statementAdapter;
-               this.conn = repositoryConnector.get();
-               this.results = conn.getStatements(subj, pred, obj, contexts);
-       }
+    private RepositoryConnection conn;
+    private RepositoryResult<Statement> results;
+    private Function<Statement, T> statementAdapter;
 
-       @Override
-       public Iterator<T> iterator() {
-               return new ConvertedIterator();
-       }
+    ConvertedStatements(Supplier<RepositoryConnection> repositoryConnector, 
Function<Statement, T> statementAdapter,
+            Resource subj, org.eclipse.rdf4j.model.IRI pred, Value obj, 
Resource... contexts) {
+        this.statementAdapter = statementAdapter;
+        this.conn = repositoryConnector.get();
+        this.results = conn.getStatements(subj, pred, obj, contexts);
+    }
 
-       @Override
-       public void close() {
-               results.close();
-               conn.close();
-       }
+    @Override
+    public Iterator<T> iterator() {
+        return new ConvertedIterator();
+    }
 
-       private final class ConvertedIterator implements Iterator<T> {
-               @Override
-               public boolean hasNext() {
-                       boolean hasNext = results.hasNext();
-                       if (!hasNext) {
-                               close();
-                       }
-                       return hasNext;
-               }
+    @Override
+    public void close() {
+        results.close();
+        conn.close();
+    }
 
-               @Override
-               public T next() {
-                       return statementAdapter.apply(results.next());
-               }
-       }
+    private final class ConvertedIterator implements Iterator<T> {
+        @Override
+        public boolean hasNext() {
+            boolean hasNext = results.hasNext();
+            if (!hasNext) {
+                close();
+            }
+            return hasNext;
+        }
+
+        @Override
+        public T next() {
+            return statementAdapter.apply(results.next());
+        }
+    }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/IRIImpl.java
----------------------------------------------------------------------
diff --git a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/IRIImpl.java 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/IRIImpl.java
index e88ac27..f566c21 100644
--- a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/IRIImpl.java
+++ b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/IRIImpl.java
@@ -19,43 +19,46 @@ package org.apache.commons.rdf.rdf4j.impl;
 
 import org.apache.commons.rdf.rdf4j.RDF4JIRI;
 
-final class IRIImpl extends AbstractRDFTerm<org.eclipse.rdf4j.model.IRI> 
-       implements RDF4JIRI {
-
-       IRIImpl(org.eclipse.rdf4j.model.IRI iri) {
-               super(iri);                     
-       }
-       @Override
-       public boolean equals(Object obj) {
-               if (obj == this) { return true; }
-               if (obj instanceof IRIImpl) {
-                       IRIImpl impl = (IRIImpl) obj; 
-                       return asValue().equals(impl.asValue());
-               }
-               if (obj instanceof org.apache.commons.rdf.api.IRI) {
-                       org.apache.commons.rdf.api.IRI iri = 
(org.apache.commons.rdf.api.IRI) obj;
-                       return value.toString().equals(iri.getIRIString());
-               }
-               return false;
-       }
-
-       @Override
-       public String getIRIString() {
-               return value.toString();
-       }
-
-       public int hashCode() {
-               // Same definition
-               return value.hashCode();
-       }
-
-       @Override
-       public String ntriplesString() {
-               return "<" + value.toString() +  ">";
-       }
-       @Override
-       public String toString() {
-               return value.toString();
-       }
-       
+final class IRIImpl extends AbstractRDFTerm<org.eclipse.rdf4j.model.IRI> 
implements RDF4JIRI {
+
+    IRIImpl(org.eclipse.rdf4j.model.IRI iri) {
+        super(iri);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == this) {
+            return true;
+        }
+        if (obj instanceof IRIImpl) {
+            IRIImpl impl = (IRIImpl) obj;
+            return asValue().equals(impl.asValue());
+        }
+        if (obj instanceof org.apache.commons.rdf.api.IRI) {
+            org.apache.commons.rdf.api.IRI iri = 
(org.apache.commons.rdf.api.IRI) obj;
+            return value.toString().equals(iri.getIRIString());
+        }
+        return false;
+    }
+
+    @Override
+    public String getIRIString() {
+        return value.toString();
+    }
+
+    public int hashCode() {
+        // Same definition
+        return value.hashCode();
+    }
+
+    @Override
+    public String ntriplesString() {
+        return "<" + value.toString() + ">";
+    }
+
+    @Override
+    public String toString() {
+        return value.toString();
+    }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/InternalRDF4JFactory.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/InternalRDF4JFactory.java
 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/InternalRDF4JFactory.java
index b6d6b29..25a7620 100644
--- 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/InternalRDF4JFactory.java
+++ 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/InternalRDF4JFactory.java
@@ -43,8 +43,7 @@ import org.eclipse.rdf4j.repository.Repository;
  * <p>
  * <strong>Internal class:</strong> This "abstract" class is intended for
  * internal use by Commons RDF and may change in any minor update. Use instead
- * {@link RDF4J} methods like
- * {@link RDF4J#createBlankNode()},
+ * {@link RDF4J} methods like {@link RDF4J#createBlankNode()},
  * {@link RDF4J#asRDFTerm(org.eclipse.rdf4j.model.Value)} and
  * {@link RDF4J#asGraph(Repository, Option...)}
  * <p>
@@ -57,128 +56,129 @@ import org.eclipse.rdf4j.repository.Repository;
  */
 public abstract class InternalRDF4JFactory {
 
-       /**
-        * Construct a {@link RDF4JBlankNode} from a RDF4J {@link BNode}.
-        * 
-        * @param bNode
-        *            RDF4J {@link BNode} to adapt
-        * @param salt
-        *            {@link UUID} to use for {@link 
BlankNode#uniqueReference()} in
-        *            combination with {@link BNode#getID()}
-        * @return Adapted {@link RDF4JBlankNode}
-        */
-       public RDF4JBlankNode createBlankNodeImpl(BNode bNode, UUID salt) {
-               return new BlankNodeImpl(bNode, salt);
-       }
+    /**
+     * Construct a {@link RDF4JBlankNode} from a RDF4J {@link BNode}.
+     * 
+     * @param bNode
+     *            RDF4J {@link BNode} to adapt
+     * @param salt
+     *            {@link UUID} to use for {@link BlankNode#uniqueReference()} 
in
+     *            combination with {@link BNode#getID()}
+     * @return Adapted {@link RDF4JBlankNode}
+     */
+    public RDF4JBlankNode createBlankNodeImpl(BNode bNode, UUID salt) {
+        return new BlankNodeImpl(bNode, salt);
+    }
 
-       /**
-        * Construct a {@link RDF4JIRI} from a RDF4J {@link IRI}.
-        * 
-        * @param iri
-        *            RDF4J {@link IRI} to adapt
-        * @return Adapted {@link RDF4JIRI}
-        */
-       public RDF4JIRI createIRIImpl(IRI iri) {
-               return new IRIImpl(iri);
-       }
+    /**
+     * Construct a {@link RDF4JIRI} from a RDF4J {@link IRI}.
+     * 
+     * @param iri
+     *            RDF4J {@link IRI} to adapt
+     * @return Adapted {@link RDF4JIRI}
+     */
+    public RDF4JIRI createIRIImpl(IRI iri) {
+        return new IRIImpl(iri);
+    }
 
-       /**
-        * Construct a {@link RDF4JLiteral} from a RDF4J {@link Literal}.
-        * 
-        * @param literal
-        *            RDF4J {@link Literal}
-        * @return Adapted {@link RDF4JLiteral}
-        */
-       public RDF4JLiteral createLiteralImpl(Literal literal) {
-               return new LiteralImpl(literal);
-       }
+    /**
+     * Construct a {@link RDF4JLiteral} from a RDF4J {@link Literal}.
+     * 
+     * @param literal
+     *            RDF4J {@link Literal}
+     * @return Adapted {@link RDF4JLiteral}
+     */
+    public RDF4JLiteral createLiteralImpl(Literal literal) {
+        return new LiteralImpl(literal);
+    }
 
-       /**
-        * Construct a {@link RDF4JGraph} from a RDF4J {@link Model}.
-        * <p>
-        * Changes in the graph will be reflected in the model, and vice versa.
-        * 
-        * @param model
-        *            RDF4J {@link Model} to adapt
-        * @param rdf4jTermFactory
-        *            factory to use for adapting graph triples
-        * @return Adapted {@link RDF4JGraph}
-        */
-       public RDF4JGraph createModelGraphImpl(Model model, RDF4J 
rdf4jTermFactory) {
-               return new ModelGraphImpl(model, rdf4jTermFactory);
-       }
+    /**
+     * Construct a {@link RDF4JGraph} from a RDF4J {@link Model}.
+     * <p>
+     * Changes in the graph will be reflected in the model, and vice versa.
+     * 
+     * @param model
+     *            RDF4J {@link Model} to adapt
+     * @param rdf4jTermFactory
+     *            factory to use for adapting graph triples
+     * @return Adapted {@link RDF4JGraph}
+     */
+    public RDF4JGraph createModelGraphImpl(Model model, RDF4J 
rdf4jTermFactory) {
+        return new ModelGraphImpl(model, rdf4jTermFactory);
+    }
 
-       /**
-        * Construct a {@link RDF4JQuad} from a RDF4J {@link Statement}.
-        * 
-        * @param statement
-        *            RDF4J {@link Statement} to adapt
-        * @param salt
-        *            {@link UUID} for adapting any {@link BNode}s
-        * @return Adapted {@link RDF4JQuad}
-        */
-       public RDF4JQuad createQuadImpl(Statement statement, UUID salt) {
-               return new QuadImpl(statement, salt);
-       }
+    /**
+     * Construct a {@link RDF4JQuad} from a RDF4J {@link Statement}.
+     * 
+     * @param statement
+     *            RDF4J {@link Statement} to adapt
+     * @param salt
+     *            {@link UUID} for adapting any {@link BNode}s
+     * @return Adapted {@link RDF4JQuad}
+     */
+    public RDF4JQuad createQuadImpl(Statement statement, UUID salt) {
+        return new QuadImpl(statement, salt);
+    }
 
-       /**
-        * Construct a {@link RDF4JDataset} from a RDF4J {@link Repository}.
-        * <p>
-        * Changes in the dataset will be reflected in the repsitory, and vice
-        * versa.
-        * 
-        * @param repository
-        *            RDF4J {@link Repository} to adapt
-        * @param handleInitAndShutdown
-        *            If <code>true</code>, the {@link RDF4JDataset} will 
initialize
-        *            the repository (if needed), and shut it down on
-        *            {@link RDF4JDataset#close()}.
-        * @param includeInferred
-        *            If true, any inferred quads are included in the dataset
-        * 
-        * @return Adapted {@link RDF4JDataset}
-        */
-       public RDF4JDataset createRepositoryDatasetImpl(Repository repository, 
boolean handleInitAndShutdown,
-                       boolean includeInferred) {
-               return new RepositoryDatasetImpl(repository, UUID.randomUUID(), 
handleInitAndShutdown, includeInferred);
-       }
+    /**
+     * Construct a {@link RDF4JDataset} from a RDF4J {@link Repository}.
+     * <p>
+     * Changes in the dataset will be reflected in the repsitory, and vice
+     * versa.
+     * 
+     * @param repository
+     *            RDF4J {@link Repository} to adapt
+     * @param handleInitAndShutdown
+     *            If <code>true</code>, the {@link RDF4JDataset} will 
initialize
+     *            the repository (if needed), and shut it down on
+     *            {@link RDF4JDataset#close()}.
+     * @param includeInferred
+     *            If true, any inferred quads are included in the dataset
+     * 
+     * @return Adapted {@link RDF4JDataset}
+     */
+    public RDF4JDataset createRepositoryDatasetImpl(Repository repository, 
boolean handleInitAndShutdown,
+            boolean includeInferred) {
+        return new RepositoryDatasetImpl(repository, UUID.randomUUID(), 
handleInitAndShutdown, includeInferred);
+    }
 
-       /**
-        * Construct a {@link RDF4JGraph} from a RDF4J {@link Model}.
-        * <p>
-        * Changes in the graph will be reflected in the model, and vice versa.
-        * 
-        * @param repository
-        *            RDF4J {@link Repository} to adapt
-        * @param handleInitAndShutdown
-        *            If <code>true</code>, the {@link RDF4JGraph} will 
initialize
-        *            the repository (if needed), and shut it down on
-        *            {@link RDF4JGraph#close()}.
-        * @param includeInferred
-        *            If true, any inferred quads are included in the dataset
-        * @param contextMask
-        *            Zero or more {@link Resource}s contexts. The array may 
contain
-        *            the value <code>null</code> for the default graph - 
however
-        *            care must be taken to not provide a null-array
-        *            <code>(Resource[]) null</code>.
-        * @return Adapted {@link RDF4JGraph}
-        */
-       public RDF4JGraph createRepositoryGraphImpl(Repository repository, 
boolean handleInitAndShutdown,
-                       boolean includeInferred, Resource... contextMask) {
-               return new RepositoryGraphImpl(repository, UUID.randomUUID(), 
handleInitAndShutdown, includeInferred, contextMask);
-       }
+    /**
+     * Construct a {@link RDF4JGraph} from a RDF4J {@link Model}.
+     * <p>
+     * Changes in the graph will be reflected in the model, and vice versa.
+     * 
+     * @param repository
+     *            RDF4J {@link Repository} to adapt
+     * @param handleInitAndShutdown
+     *            If <code>true</code>, the {@link RDF4JGraph} will initialize
+     *            the repository (if needed), and shut it down on
+     *            {@link RDF4JGraph#close()}.
+     * @param includeInferred
+     *            If true, any inferred quads are included in the dataset
+     * @param contextMask
+     *            Zero or more {@link Resource}s contexts. The array may 
contain
+     *            the value <code>null</code> for the default graph - however
+     *            care must be taken to not provide a null-array
+     *            <code>(Resource[]) null</code>.
+     * @return Adapted {@link RDF4JGraph}
+     */
+    public RDF4JGraph createRepositoryGraphImpl(Repository repository, boolean 
handleInitAndShutdown,
+            boolean includeInferred, Resource... contextMask) {
+        return new RepositoryGraphImpl(repository, UUID.randomUUID(), 
handleInitAndShutdown, includeInferred,
+                contextMask);
+    }
 
-       /**
-        * Construct a {@link RDF4JTriple} from a RDF4J {@link Statement}.
-        * 
-        * @param statement
-        *            RDF4J {@link Statement} to adapt
-        * @param salt
-        *            {@link UUID} for adapting any {@link BNode}s
-        * @return Adapted {@link RDF4JTriple}
-        */
-       public RDF4JTriple createTripleImpl(Statement statement, UUID salt) {
-               return new TripleImpl(statement, salt);
-       }
+    /**
+     * Construct a {@link RDF4JTriple} from a RDF4J {@link Statement}.
+     * 
+     * @param statement
+     *            RDF4J {@link Statement} to adapt
+     * @param salt
+     *            {@link UUID} for adapting any {@link BNode}s
+     * @return Adapted {@link RDF4JTriple}
+     */
+    public RDF4JTriple createTripleImpl(Statement statement, UUID salt) {
+        return new TripleImpl(statement, salt);
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/LiteralImpl.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/LiteralImpl.java 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/LiteralImpl.java
index aef298d..9fa93b1 100644
--- a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/LiteralImpl.java
+++ b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/LiteralImpl.java
@@ -24,62 +24,62 @@ import org.apache.commons.rdf.rdf4j.RDF4JLiteral;
 import org.eclipse.rdf4j.model.vocabulary.XMLSchema;
 import org.eclipse.rdf4j.rio.turtle.TurtleUtil;
 
-final class LiteralImpl 
-       extends AbstractRDFTerm<org.eclipse.rdf4j.model.Literal>
-    implements RDF4JLiteral {          
+final class LiteralImpl extends 
AbstractRDFTerm<org.eclipse.rdf4j.model.Literal> implements RDF4JLiteral {
 
-       private static final String QUOTE = "\"";
-       
-       LiteralImpl(org.eclipse.rdf4j.model.Literal literal) {
-               super(literal);                 
-       }
-       @Override
-       public boolean equals(Object obj) {
-               if (obj == this) { return true; }
-               if (obj instanceof org.apache.commons.rdf.api.Literal) {
-                       org.apache.commons.rdf.api.Literal other = 
(org.apache.commons.rdf.api.Literal) obj;
-                       return getLexicalForm().equals(other.getLexicalForm()) 
&&
-                                       
getDatatype().equals(other.getDatatype()) && 
-                                       
getLanguageTag().equals(other.getLanguageTag());
-                       
-               }
-               return false;
-       }
+    private static final String QUOTE = "\"";
 
-       @Override
-       public org.apache.commons.rdf.api.IRI getDatatype() {
-               return new IRIImpl(value.getDatatype());
-       }
+    LiteralImpl(org.eclipse.rdf4j.model.Literal literal) {
+        super(literal);
+    }
 
-       @Override
-       public Optional<String> getLanguageTag() {
-               return value.getLanguage();
-       }
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == this) {
+            return true;
+        }
+        if (obj instanceof org.apache.commons.rdf.api.Literal) {
+            org.apache.commons.rdf.api.Literal other = 
(org.apache.commons.rdf.api.Literal) obj;
+            return getLexicalForm().equals(other.getLexicalForm()) && 
getDatatype().equals(other.getDatatype())
+                    && getLanguageTag().equals(other.getLanguageTag());
 
-       @Override
-       public String getLexicalForm() {
-               return value.getLabel();
-       }
+        }
+        return false;
+    }
 
-       public int hashCode() {
-               return Objects.hash(value.getLabel(), value.getDatatype(), 
value.getLanguage());
-       }
+    @Override
+    public org.apache.commons.rdf.api.IRI getDatatype() {
+        return new IRIImpl(value.getDatatype());
+    }
 
-       @Override
-       public String ntriplesString() {
-               // TODO: Use a more efficient StringBuffer
-               String escaped = QUOTE + 
TurtleUtil.encodeString(value.getLabel()) + QUOTE;
-               if (value.getLanguage().isPresent()) {
-                       return escaped + "@" + value.getLanguage().get();
-               }
-               if (value.getDatatype().equals(XMLSchema.STRING)) { 
-                       return escaped;
-               }
-               return escaped + "^^<" + 
TurtleUtil.encodeURIString(value.getDatatype().toString()) + ">";
-       }
+    @Override
+    public Optional<String> getLanguageTag() {
+        return value.getLanguage();
+    }
 
-       @Override
-       public String toString() {
-               return ntriplesString();
-       }
+    @Override
+    public String getLexicalForm() {
+        return value.getLabel();
+    }
+
+    public int hashCode() {
+        return Objects.hash(value.getLabel(), value.getDatatype(), 
value.getLanguage());
+    }
+
+    @Override
+    public String ntriplesString() {
+        // TODO: Use a more efficient StringBuffer
+        String escaped = QUOTE + TurtleUtil.encodeString(value.getLabel()) + 
QUOTE;
+        if (value.getLanguage().isPresent()) {
+            return escaped + "@" + value.getLanguage().get();
+        }
+        if (value.getDatatype().equals(XMLSchema.STRING)) {
+            return escaped;
+        }
+        return escaped + "^^<" + 
TurtleUtil.encodeURIString(value.getDatatype().toString()) + ">";
+    }
+
+    @Override
+    public String toString() {
+        return ntriplesString();
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/ModelGraphImpl.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/ModelGraphImpl.java 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/ModelGraphImpl.java
index ced9c99..7debacc 100644
--- a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/ModelGraphImpl.java
+++ b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/ModelGraphImpl.java
@@ -38,121 +38,115 @@ import org.eclipse.rdf4j.model.Resource;
 import org.eclipse.rdf4j.repository.Repository;
 
 final class ModelGraphImpl implements RDF4JGraph {
-       
-       private Model model;
-       private RDF4J rdf4jTermFactory;
-
-       ModelGraphImpl(Model model, RDF4J rdf4jTermFactory) {
-               this.model = model;     
-               this.rdf4jTermFactory = rdf4jTermFactory;
-       }
-       
-       @Override
-       public void add(BlankNodeOrIRI subject, org.apache.commons.rdf.api.IRI 
predicate, RDFTerm object) {
-               model.add(
-                               (Resource)rdf4jTermFactory.asValue(subject), 
-                               
(org.eclipse.rdf4j.model.IRI)rdf4jTermFactory.asValue(predicate), 
-                               rdf4jTermFactory.asValue(object));              
                
-       }
-       
-       @Override
-       public void add(Triple triple) {
-               model.add(rdf4jTermFactory.asStatement(triple));
-       }
-
-       public Optional<Model> asModel() { 
-               return Optional.of(model);
-       }
-
-       @Override
-       public Optional<Repository> asRepository() {
-               return Optional.empty();
-       }
-       
-       @Override
-       public void clear() {
-               model.clear();
-       }
-
-       @Override
-       public boolean contains(BlankNodeOrIRI subject, 
org.apache.commons.rdf.api.IRI predicate, RDFTerm object) {
-               return model.contains(
-                               (Resource)rdf4jTermFactory.asValue(subject), 
-                               
(org.eclipse.rdf4j.model.IRI)rdf4jTermFactory.asValue(predicate), 
-                               rdf4jTermFactory.asValue(object));
-       }
-
-       @Override
-       public boolean contains(Triple triple) {
-               return model.contains(rdf4jTermFactory.asStatement(triple));
-       }
-
-       @Override
-       public void remove(BlankNodeOrIRI subject, 
org.apache.commons.rdf.api.IRI predicate, RDFTerm object) {
-               model.remove(
-                               (Resource)rdf4jTermFactory.asValue(subject), 
-                               
(org.eclipse.rdf4j.model.IRI)rdf4jTermFactory.asValue(predicate), 
-                               rdf4jTermFactory.asValue(object));              
-       }
-
-       @Override
-       public void remove(Triple triple) { 
-               model.remove(rdf4jTermFactory.asStatement(triple));
-       }
-
-       @Override
-       public long size() {
-               int size = model.size();
-               if (size < Integer.MAX_VALUE) {
-                       return size;
-               } else {
-                       // TODO: Check if this can really happen with RDF4J 
models
-                       // Collection.size() can't help us, we'll have to count
-                       return model.parallelStream().count();
-               }                               
-       }
-
-       @Override
-       public Stream<RDF4JTriple> stream() {
-               return model.parallelStream().map(rdf4jTermFactory::asTriple);
-       }
-
-       @Override
-       public Stream<RDF4JTriple> stream(BlankNodeOrIRI subject, 
org.apache.commons.rdf.api.IRI predicate, RDFTerm object) {
-               return model.filter(
-                               (Resource)rdf4jTermFactory.asValue(subject), 
-                               
(org.eclipse.rdf4j.model.IRI)rdf4jTermFactory.asValue(predicate), 
-                               
rdf4jTermFactory.asValue(object)).parallelStream()
-                       .map(rdf4jTermFactory::asTriple);
-       }
-       
-       @Override
-       public Set<RDF4JBlankNodeOrIRI> getContextMask() {
-               // ModelGraph always do the unionGraph
-               return Collections.emptySet();
-               // TODO: Should we support contextMask like in 
RepositoryGraphImpl?
-       }
-
-       @Override
-       public ClosableIterable<Triple> iterate(BlankNodeOrIRI subject, IRI 
predicate, RDFTerm object) {
-               return new ClosableIterable<Triple>() {         
-                       @SuppressWarnings("unchecked")
-                       @Override
-                       public Iterator<Triple> iterator() {
-                               // double-cast to fight Java generics..
-                               Stream<? extends Triple> s = stream(subject, 
predicate, object);
-                               return (Iterator<Triple>) s.iterator();
-                       }
-                       @Override
-                       public void close() throws Exception {
-                               // no-op as Model don't have transaction
-                       }
-               };
-       }
-       
-       @Override
-       public ClosableIterable<Triple> iterate() throws 
ConcurrentModificationException, IllegalStateException {
-               return iterate(null, null, null);
-       }
-       
+
+    private Model model;
+    private RDF4J rdf4jTermFactory;
+
+    ModelGraphImpl(Model model, RDF4J rdf4jTermFactory) {
+        this.model = model;
+        this.rdf4jTermFactory = rdf4jTermFactory;
+    }
+
+    @Override
+    public void add(BlankNodeOrIRI subject, org.apache.commons.rdf.api.IRI 
predicate, RDFTerm object) {
+        model.add((Resource) rdf4jTermFactory.asValue(subject),
+                (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate), rdf4jTermFactory.asValue(object));
+    }
+
+    @Override
+    public void add(Triple triple) {
+        model.add(rdf4jTermFactory.asStatement(triple));
+    }
+
+    public Optional<Model> asModel() {
+        return Optional.of(model);
+    }
+
+    @Override
+    public Optional<Repository> asRepository() {
+        return Optional.empty();
+    }
+
+    @Override
+    public void clear() {
+        model.clear();
+    }
+
+    @Override
+    public boolean contains(BlankNodeOrIRI subject, 
org.apache.commons.rdf.api.IRI predicate, RDFTerm object) {
+        return model.contains((Resource) rdf4jTermFactory.asValue(subject),
+                (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate), rdf4jTermFactory.asValue(object));
+    }
+
+    @Override
+    public boolean contains(Triple triple) {
+        return model.contains(rdf4jTermFactory.asStatement(triple));
+    }
+
+    @Override
+    public void remove(BlankNodeOrIRI subject, org.apache.commons.rdf.api.IRI 
predicate, RDFTerm object) {
+        model.remove((Resource) rdf4jTermFactory.asValue(subject),
+                (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate), rdf4jTermFactory.asValue(object));
+    }
+
+    @Override
+    public void remove(Triple triple) {
+        model.remove(rdf4jTermFactory.asStatement(triple));
+    }
+
+    @Override
+    public long size() {
+        int size = model.size();
+        if (size < Integer.MAX_VALUE) {
+            return size;
+        } else {
+            // TODO: Check if this can really happen with RDF4J models
+            // Collection.size() can't help us, we'll have to count
+            return model.parallelStream().count();
+        }
+    }
+
+    @Override
+    public Stream<RDF4JTriple> stream() {
+        return model.parallelStream().map(rdf4jTermFactory::asTriple);
+    }
+
+    @Override
+    public Stream<RDF4JTriple> stream(BlankNodeOrIRI subject, 
org.apache.commons.rdf.api.IRI predicate,
+            RDFTerm object) {
+        return model.filter((Resource) rdf4jTermFactory.asValue(subject),
+                (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate), rdf4jTermFactory.asValue(object))
+                .parallelStream().map(rdf4jTermFactory::asTriple);
+    }
+
+    @Override
+    public Set<RDF4JBlankNodeOrIRI> getContextMask() {
+        // ModelGraph always do the unionGraph
+        return Collections.emptySet();
+        // TODO: Should we support contextMask like in RepositoryGraphImpl?
+    }
+
+    @Override
+    public ClosableIterable<Triple> iterate(BlankNodeOrIRI subject, IRI 
predicate, RDFTerm object) {
+        return new ClosableIterable<Triple>() {
+            @SuppressWarnings("unchecked")
+            @Override
+            public Iterator<Triple> iterator() {
+                // double-cast to fight Java generics..
+                Stream<? extends Triple> s = stream(subject, predicate, 
object);
+                return (Iterator<Triple>) s.iterator();
+            }
+
+            @Override
+            public void close() throws Exception {
+                // no-op as Model don't have transaction
+            }
+        };
+    }
+
+    @Override
+    public ClosableIterable<Triple> iterate() throws 
ConcurrentModificationException, IllegalStateException {
+        return iterate(null, null, null);
+    }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/QuadImpl.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/QuadImpl.java 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/QuadImpl.java
index 8da29b6..6962803 100644
--- a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/QuadImpl.java
+++ b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/QuadImpl.java
@@ -30,70 +30,69 @@ import org.apache.commons.rdf.rdf4j.RDF4J;
 import org.eclipse.rdf4j.model.Statement;
 
 final class QuadImpl implements Quad, RDF4JQuad {
-               private transient int hashCode = 0;     
-               private UUID salt;
-               private final Statement statement;
-               
-               QuadImpl(Statement statement, UUID salt) {
-                       this.statement = statement;
-                       this.salt = salt;
-               }
-       
-               @Override
-               public Statement asStatement() { 
-                       return statement;
-               }
-               
-               @Override
-               public Triple asTriple() {
-                       return new TripleImpl(statement, salt);
-               }
-       
-               @Override
-               public boolean equals(Object obj) {
-                       if (obj instanceof Triple) {
-                               Triple triple = (Triple) obj;
-                               return getSubject().equals(triple.getSubject()) 
&&
-                                               
getPredicate().equals(triple.getPredicate()) && 
-                                               
getObject().equals(triple.getObject());
-                       }
-                       return false;
-               }
-       
-               @Override
-               public Optional<BlankNodeOrIRI> getGraphName() {
-                       if (statement.getContext() == null) { 
-                               return Optional.empty();
-                       }                       
-                       BlankNodeOrIRI g = (BlankNodeOrIRI) 
RDF4J.asRDFTerm(statement.getContext(), salt);
-                       return Optional.of(g);
-               }
-               
-               @Override
-               public RDFTerm getObject() {
-                       return RDF4J.asRDFTerm(statement.getObject(), salt);
-               }
-       
-               @Override
-               public org.apache.commons.rdf.api.IRI getPredicate() {
-                       return (org.apache.commons.rdf.api.IRI) 
RDF4J.asRDFTerm(statement.getPredicate(), null);
-               }
-               
-               @Override
-               public BlankNodeOrIRI getSubject() {
-                       return (BlankNodeOrIRI) 
RDF4J.asRDFTerm(statement.getSubject(), salt);
-               }
+    private transient int hashCode = 0;
+    private UUID salt;
+    private final Statement statement;
 
-               @Override
-               public int hashCode() {
-                       if (hashCode  != 0) {
-                               return hashCode;
-                       }
-                       return hashCode = Objects.hash(getSubject(), 
getPredicate(), getObject(), getGraphName());
-               }
-               
-               @Override
-               public String toString() {
-                       return statement.toString();
-               }
+    QuadImpl(Statement statement, UUID salt) {
+        this.statement = statement;
+        this.salt = salt;
+    }
+
+    @Override
+    public Statement asStatement() {
+        return statement;
+    }
+
+    @Override
+    public Triple asTriple() {
+        return new TripleImpl(statement, salt);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof Triple) {
+            Triple triple = (Triple) obj;
+            return getSubject().equals(triple.getSubject()) && 
getPredicate().equals(triple.getPredicate())
+                    && getObject().equals(triple.getObject());
+        }
+        return false;
+    }
+
+    @Override
+    public Optional<BlankNodeOrIRI> getGraphName() {
+        if (statement.getContext() == null) {
+            return Optional.empty();
+        }
+        BlankNodeOrIRI g = (BlankNodeOrIRI) 
RDF4J.asRDFTerm(statement.getContext(), salt);
+        return Optional.of(g);
+    }
+
+    @Override
+    public RDFTerm getObject() {
+        return RDF4J.asRDFTerm(statement.getObject(), salt);
+    }
+
+    @Override
+    public org.apache.commons.rdf.api.IRI getPredicate() {
+        return (org.apache.commons.rdf.api.IRI) 
RDF4J.asRDFTerm(statement.getPredicate(), null);
+    }
+
+    @Override
+    public BlankNodeOrIRI getSubject() {
+        return (BlankNodeOrIRI) RDF4J.asRDFTerm(statement.getSubject(), salt);
+    }
+
+    @Override
+    public int hashCode() {
+        if (hashCode != 0) {
+            return hashCode;
+        }
+        return hashCode = Objects.hash(getSubject(), getPredicate(), 
getObject(), getGraphName());
+    }
+
+    @Override
+    public String toString() {
+        return statement.toString();
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryDatasetImpl.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryDatasetImpl.java
 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryDatasetImpl.java
index 64f3bbd..8c266a9 100644
--- 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryDatasetImpl.java
+++ 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryDatasetImpl.java
@@ -41,183 +41,188 @@ import org.eclipse.rdf4j.repository.RepositoryResult;
 
 class RepositoryDatasetImpl extends AbstractRepositoryGraphLike<Quad> 
implements RDF4JDataset, Dataset {
 
-       RepositoryDatasetImpl(Repository repository, UUID salt, boolean 
handleInitAndShutdown, boolean includeInferred) {
-               super(repository, salt, handleInitAndShutdown, includeInferred);
-       }
-
-       @Override
-       public void add(Quad tripleLike) {
-               Statement statement = rdf4jTermFactory.asStatement(tripleLike);
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       conn.add(statement);
-                       conn.commit();
-               }
-       }
-
-
-       @Override
-       public boolean contains(Quad tripleLike) {
-               Statement statement = rdf4jTermFactory.asStatement(tripleLike);
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       return conn.hasStatement(statement, includeInferred);
-               }
-       }
-
-       @Override
-       public void remove(Quad tripleLike) {
-               Statement statement = rdf4jTermFactory.asStatement(tripleLike);
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       conn.remove(statement);
-                       conn.commit();
-               }
-       }
-
-       @Override
-       public void clear() {
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       conn.clear();
-                       conn.commit();
-               }
-       }
-
-       @Override
-       public long size() {
-               if (includeInferred) {
-                       // We'll need to count them all
-                       return stream().count();
-               }
-               // else: Ask directly
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       return conn.size();
-               }
-       }
-
-       @Override
-       public void add(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI 
predicate, RDFTerm object) {
-               Resource context = (Resource) 
rdf4jTermFactory.asValue(graphName);
-               Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
-               org.eclipse.rdf4j.model.IRI pred = 
(org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
-               Value obj = rdf4jTermFactory.asValue(object);
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       conn.add(subj, pred, obj,  context);
-                       conn.commit();
-               }
-       }
-
-       @Override
-       public boolean contains(Optional<BlankNodeOrIRI> graphName, 
BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
-               Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
-               org.eclipse.rdf4j.model.IRI pred = 
(org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
-               Value obj = rdf4jTermFactory.asValue(object);
-               Resource[] contexts = asContexts(graphName);
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       return conn.hasStatement(subj, pred, obj, 
includeInferred, contexts);
-               }
-       }
-
-       private Resource[] asContexts(Optional<BlankNodeOrIRI> graphName) {
-               Resource[] contexts;
-               if (graphName == null) {
-                       // no contexts == any contexts
-                        contexts = new Resource[0];
-               } else {
-                       BlankNodeOrIRI g = graphName.orElse(null);
-                       Resource context = (Resource) 
rdf4jTermFactory.asValue(g);
-                       contexts = new Resource[] { context };
-               }
-               return contexts;
-       }
-
-       @Override
-       public void remove(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI 
subject, IRI predicate, RDFTerm object) {
-               Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
-               org.eclipse.rdf4j.model.IRI pred = 
(org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
-               Value obj = rdf4jTermFactory.asValue(object);
-               Resource[] contexts = asContexts(graphName);
-
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       conn.remove(subj, pred, obj, contexts);
-                       conn.commit();
-               }
-       }
-
-       @Override
-       public Stream<RDF4JQuad> stream() {
-               return stream(null, null, null, null);
-       }
-
-       @Override
-       public Stream<RDF4JQuad> stream(Optional<BlankNodeOrIRI> graphName, 
BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
-               Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
-               org.eclipse.rdf4j.model.IRI pred = 
(org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
-               Value obj = rdf4jTermFactory.asValue(object);
-               Resource[] contexts = asContexts(graphName);
-
-               // NOTE: We can't do the usual try..with closing of the
-               // RepositoryConnection here as it will have to be closed 
outside
-               // by the user of the returned stream
-               RepositoryConnection conn = getRepositoryConnection();
-               Stream<RDF4JQuad> stream = null;
-               try {
-                       RepositoryResult<Statement> statements = 
conn.getStatements(subj, pred, obj, includeInferred, contexts);
-                       // NOTE: Iterations.stream should close 
RepositoryResult as long as our caller closes the stream
-                       stream = 
Iterations.stream(statements).map(rdf4jTermFactory::asQuad);
-               } finally {
-                       if (stream == null) {
-                               // Some exception before we made the stream, 
close connection here
-                               conn.close();
-                       }
-               }
-               // Make sure the RepositoryConnection is closed
-               return stream.onClose(conn::close);
-
-       }
-
-
-       @Override
-       public ClosableIterable<Quad> iterate() throws 
ConcurrentModificationException, IllegalStateException {
-               return iterate(null, null, null, null);
-       }
-       
-       @Override
-       public ClosableIterable<Quad> iterate(Optional<BlankNodeOrIRI> 
graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object)
-                       throws ConcurrentModificationException, 
IllegalStateException {
-               Resource[] contexts = asContexts(graphName);
-               Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
-               org.eclipse.rdf4j.model.IRI pred = 
(org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
-               Value obj = rdf4jTermFactory.asValue(object);
-               return new 
ConvertedStatements<Quad>(this::getRepositoryConnection, 
-                               rdf4jTermFactory::asQuad, subj, pred, obj, 
contexts);
-       }       
-       
-       @Override
-       protected RDF4JQuad asTripleLike(Statement s) {
-               return rdf4jTermFactory.asQuad(s);
-       }
-
-       @Override
-       public Graph getGraph() {
-               // default context only
-               // NOTE: We carry over the 'salt' as the graph's BlankNode 
should be equal to our BlankNodes
-               return new RepositoryGraphImpl(repository, salt, false, 
includeInferred, (Resource)null);
-       }
-
-       @Override
-       public Optional<Graph> getGraph(BlankNodeOrIRI graphName) {
-               // NOTE: May be null to indicate default context
-               Resource context = (Resource) 
rdf4jTermFactory.asValue(graphName);
-               // NOTE: We carry over the 'salt' as the graph's BlankNode 
should be equal to our BlankNodes
-               return Optional.of(new RepositoryGraphImpl(repository, salt, 
false, includeInferred, context));
-       }
-
-       @Override
-       public Stream<BlankNodeOrIRI> getGraphNames() {
-               // FIXME: Will the below close the connection before the stream 
has been consumed outside? 
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       RepositoryResult<Resource> contexts = 
conn.getContextIDs();
-                       // NOTE: connection will be closed outside by the 
Iterations.stream()
-                       return Iterations.stream(contexts).map(g -> 
(BlankNodeOrIRI) rdf4jTermFactory.asRDFTerm(g));
-               }
-       }
+    RepositoryDatasetImpl(Repository repository, UUID salt, boolean 
handleInitAndShutdown, boolean includeInferred) {
+        super(repository, salt, handleInitAndShutdown, includeInferred);
+    }
+
+    @Override
+    public void add(Quad tripleLike) {
+        Statement statement = rdf4jTermFactory.asStatement(tripleLike);
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            conn.add(statement);
+            conn.commit();
+        }
+    }
+
+    @Override
+    public boolean contains(Quad tripleLike) {
+        Statement statement = rdf4jTermFactory.asStatement(tripleLike);
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            return conn.hasStatement(statement, includeInferred);
+        }
+    }
+
+    @Override
+    public void remove(Quad tripleLike) {
+        Statement statement = rdf4jTermFactory.asStatement(tripleLike);
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            conn.remove(statement);
+            conn.commit();
+        }
+    }
+
+    @Override
+    public void clear() {
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            conn.clear();
+            conn.commit();
+        }
+    }
+
+    @Override
+    public long size() {
+        if (includeInferred) {
+            // We'll need to count them all
+            return stream().count();
+        }
+        // else: Ask directly
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            return conn.size();
+        }
+    }
+
+    @Override
+    public void add(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI 
predicate, RDFTerm object) {
+        Resource context = (Resource) rdf4jTermFactory.asValue(graphName);
+        Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+        org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate);
+        Value obj = rdf4jTermFactory.asValue(object);
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            conn.add(subj, pred, obj, context);
+            conn.commit();
+        }
+    }
+
+    @Override
+    public boolean contains(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI 
subject, IRI predicate, RDFTerm object) {
+        Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+        org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate);
+        Value obj = rdf4jTermFactory.asValue(object);
+        Resource[] contexts = asContexts(graphName);
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            return conn.hasStatement(subj, pred, obj, includeInferred, 
contexts);
+        }
+    }
+
+    private Resource[] asContexts(Optional<BlankNodeOrIRI> graphName) {
+        Resource[] contexts;
+        if (graphName == null) {
+            // no contexts == any contexts
+            contexts = new Resource[0];
+        } else {
+            BlankNodeOrIRI g = graphName.orElse(null);
+            Resource context = (Resource) rdf4jTermFactory.asValue(g);
+            contexts = new Resource[] { context };
+        }
+        return contexts;
+    }
+
+    @Override
+    public void remove(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI 
subject, IRI predicate, RDFTerm object) {
+        Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+        org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate);
+        Value obj = rdf4jTermFactory.asValue(object);
+        Resource[] contexts = asContexts(graphName);
+
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            conn.remove(subj, pred, obj, contexts);
+            conn.commit();
+        }
+    }
+
+    @Override
+    public Stream<RDF4JQuad> stream() {
+        return stream(null, null, null, null);
+    }
+
+    @Override
+    public Stream<RDF4JQuad> stream(Optional<BlankNodeOrIRI> graphName, 
BlankNodeOrIRI subject, IRI predicate,
+            RDFTerm object) {
+        Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+        org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate);
+        Value obj = rdf4jTermFactory.asValue(object);
+        Resource[] contexts = asContexts(graphName);
+
+        // NOTE: We can't do the usual try..with closing of the
+        // RepositoryConnection here as it will have to be closed outside
+        // by the user of the returned stream
+        RepositoryConnection conn = getRepositoryConnection();
+        Stream<RDF4JQuad> stream = null;
+        try {
+            RepositoryResult<Statement> statements = conn.getStatements(subj, 
pred, obj, includeInferred, contexts);
+            // NOTE: Iterations.stream should close RepositoryResult as long as
+            // our caller closes the stream
+            stream = 
Iterations.stream(statements).map(rdf4jTermFactory::asQuad);
+        } finally {
+            if (stream == null) {
+                // Some exception before we made the stream, close connection
+                // here
+                conn.close();
+            }
+        }
+        // Make sure the RepositoryConnection is closed
+        return stream.onClose(conn::close);
+
+    }
+
+    @Override
+    public ClosableIterable<Quad> iterate() throws 
ConcurrentModificationException, IllegalStateException {
+        return iterate(null, null, null, null);
+    }
+
+    @Override
+    public ClosableIterable<Quad> iterate(Optional<BlankNodeOrIRI> graphName, 
BlankNodeOrIRI subject, IRI predicate,
+            RDFTerm object) throws ConcurrentModificationException, 
IllegalStateException {
+        Resource[] contexts = asContexts(graphName);
+        Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+        org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate);
+        Value obj = rdf4jTermFactory.asValue(object);
+        return new ConvertedStatements<Quad>(this::getRepositoryConnection, 
rdf4jTermFactory::asQuad, subj, pred, obj,
+                contexts);
+    }
+
+    @Override
+    protected RDF4JQuad asTripleLike(Statement s) {
+        return rdf4jTermFactory.asQuad(s);
+    }
+
+    @Override
+    public Graph getGraph() {
+        // default context only
+        // NOTE: We carry over the 'salt' as the graph's BlankNode should be
+        // equal to our BlankNodes
+        return new RepositoryGraphImpl(repository, salt, false, 
includeInferred, (Resource) null);
+    }
+
+    @Override
+    public Optional<Graph> getGraph(BlankNodeOrIRI graphName) {
+        // NOTE: May be null to indicate default context
+        Resource context = (Resource) rdf4jTermFactory.asValue(graphName);
+        // NOTE: We carry over the 'salt' as the graph's BlankNode should be
+        // equal to our BlankNodes
+        return Optional.of(new RepositoryGraphImpl(repository, salt, false, 
includeInferred, context));
+    }
+
+    @Override
+    public Stream<BlankNodeOrIRI> getGraphNames() {
+        // FIXME: Will the below close the connection before the stream has 
been
+        // consumed outside?
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            RepositoryResult<Resource> contexts = conn.getContextIDs();
+            // NOTE: connection will be closed outside by the
+            // Iterations.stream()
+            return Iterations.stream(contexts).map(g -> (BlankNodeOrIRI) 
rdf4jTermFactory.asRDFTerm(g));
+        }
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryGraphImpl.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryGraphImpl.java
 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryGraphImpl.java
index 55b909e..ca07f9e 100644
--- 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryGraphImpl.java
+++ 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryGraphImpl.java
@@ -43,152 +43,153 @@ import org.eclipse.rdf4j.repository.RepositoryConnection;
 import org.eclipse.rdf4j.repository.RepositoryResult;
 
 class RepositoryGraphImpl extends AbstractRepositoryGraphLike<Triple> 
implements Graph, RDF4JGraph {
-       
-       private final Resource[] contextMask;
-
-       RepositoryGraphImpl(Repository repository, UUID salt, boolean 
handleInitAndShutdown, boolean includeInferred, Resource... contextMask) {
-               super(repository, salt, handleInitAndShutdown, includeInferred);
-               this.contextMask = Objects.requireNonNull(contextMask);
-       }
-
-
-       @Override
-       public void add(Triple tripleLike) {
-               Statement statement = rdf4jTermFactory.asStatement(tripleLike);
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       conn.add(statement, contextMask);
-                       conn.commit();
-               }
-       }
-
-
-       @Override
-       public boolean contains(Triple tripleLike) {
-               Statement statement = rdf4jTermFactory.asStatement(tripleLike);
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       return conn.hasStatement(statement, includeInferred, 
contextMask);
-               }
-       }
-
-       @Override
-       public void remove(Triple tripleLike) {
-               Statement statement = rdf4jTermFactory.asStatement(tripleLike);
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       conn.remove(statement, contextMask);
-                       conn.commit();
-               }
-       }
-
-       @Override
-       public void clear() {
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       conn.clear(contextMask);
-                       conn.commit();
-               }
-       }
-
-       @Override
-       public long size() {
-               if (!includeInferred && contextMask.length == 0) {
-                       try (RepositoryConnection conn = 
getRepositoryConnection()) {
-                               return conn.size();
-                       }
-               } else {
-                       try (Stream<RDF4JTriple> stream = stream()) {
-                               return stream.count();
-                       }
-               }
-       }
-       
-       @Override
-       public void add(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
-               Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
-               org.eclipse.rdf4j.model.IRI pred = 
(org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
-               Value obj = rdf4jTermFactory.asValue(object);
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       conn.add(subj, pred, obj, contextMask);
-                       conn.commit();
-               }
-       }
-
-       @Override
-       public boolean contains(BlankNodeOrIRI subject, IRI predicate, RDFTerm 
object) {
-               Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
-               org.eclipse.rdf4j.model.IRI pred = 
(org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
-               Value obj = rdf4jTermFactory.asValue(object);
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       return conn.hasStatement(subj, pred, obj, 
includeInferred, contextMask);
-               }
-       }
-
-       @Override
-       public void remove(BlankNodeOrIRI subject, IRI predicate, RDFTerm 
object) {
-               Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
-               org.eclipse.rdf4j.model.IRI pred = 
(org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
-               Value obj = rdf4jTermFactory.asValue(object);
-               try (RepositoryConnection conn = getRepositoryConnection()) {
-                       conn.remove(subj, pred, obj, contextMask);
-                       conn.commit();
-               }
-       }
-       
-       @Override
-       public ClosableIterable<Triple> iterate() throws 
ConcurrentModificationException, IllegalStateException {
-               return iterate(null, null, null);
-       }
-       
-       @Override
-       public ClosableIterable<Triple> iterate(BlankNodeOrIRI subject, IRI 
predicate, RDFTerm object)
-                       throws ConcurrentModificationException, 
IllegalStateException {
-               Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
-               org.eclipse.rdf4j.model.IRI pred = 
(org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
-               Value obj = rdf4jTermFactory.asValue(object);
-               return new 
ConvertedStatements<Triple>(this::getRepositoryConnection, 
rdf4jTermFactory::asTriple, 
-                               subj, pred, obj, contextMask);
-       }
-
-       @Override
-       public Stream<RDF4JTriple> stream() {
-               return stream(null, null, null);
-       }
-       
-       @Override
-       public Stream<RDF4JTriple> stream(BlankNodeOrIRI subject, IRI 
predicate, RDFTerm object) {
-               Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
-               org.eclipse.rdf4j.model.IRI pred = 
(org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
-               Value obj = rdf4jTermFactory.asValue(object);
-               
-               // NOTE: We can't do the usual try..with closing of the
-               // RepositoryConnection here as it will have to be closed 
outside
-               // by the user of the returned stream
-               RepositoryConnection conn = getRepositoryConnection();
-               Stream<RDF4JTriple> stream = null;
-               try {
-                       RepositoryResult<Statement> statements = 
conn.getStatements(subj, pred, obj, includeInferred, contextMask);
-                       // NOTE: Iterations.stream should close 
RepositoryResult as long as our caller closes the stream
-                       stream = 
Iterations.stream(statements).map(this::asTripleLike);
-               } finally {
-                       if (stream == null) {
-                               // Some exception before we made the stream, 
close connection here
-                               conn.close();
-                       }
-               }
-               // Make sure the RepositoryConnection is closed
-               return stream.onClose(conn::close);
-       }
-       
-       @Override
-       protected RDF4JTriple asTripleLike(Statement statement) {
-               return rdf4jTermFactory.asTriple(statement);
-       }
-
-       @Override
-       public Set<RDF4JBlankNodeOrIRI> getContextMask() {              
-               Set<RDF4JBlankNodeOrIRI> mask = new HashSet<>();
-               for (Resource s : contextMask) {
-                       mask.add((RDF4JBlankNodeOrIRI) 
rdf4jTermFactory.asRDFTerm(s));
-               }
-               return Collections.unmodifiableSet(mask);
-       }
-       
+
+    private final Resource[] contextMask;
+
+    RepositoryGraphImpl(Repository repository, UUID salt, boolean 
handleInitAndShutdown, boolean includeInferred,
+            Resource... contextMask) {
+        super(repository, salt, handleInitAndShutdown, includeInferred);
+        this.contextMask = Objects.requireNonNull(contextMask);
+    }
+
+    @Override
+    public void add(Triple tripleLike) {
+        Statement statement = rdf4jTermFactory.asStatement(tripleLike);
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            conn.add(statement, contextMask);
+            conn.commit();
+        }
+    }
+
+    @Override
+    public boolean contains(Triple tripleLike) {
+        Statement statement = rdf4jTermFactory.asStatement(tripleLike);
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            return conn.hasStatement(statement, includeInferred, contextMask);
+        }
+    }
+
+    @Override
+    public void remove(Triple tripleLike) {
+        Statement statement = rdf4jTermFactory.asStatement(tripleLike);
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            conn.remove(statement, contextMask);
+            conn.commit();
+        }
+    }
+
+    @Override
+    public void clear() {
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            conn.clear(contextMask);
+            conn.commit();
+        }
+    }
+
+    @Override
+    public long size() {
+        if (!includeInferred && contextMask.length == 0) {
+            try (RepositoryConnection conn = getRepositoryConnection()) {
+                return conn.size();
+            }
+        } else {
+            try (Stream<RDF4JTriple> stream = stream()) {
+                return stream.count();
+            }
+        }
+    }
+
+    @Override
+    public void add(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
+        Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+        org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate);
+        Value obj = rdf4jTermFactory.asValue(object);
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            conn.add(subj, pred, obj, contextMask);
+            conn.commit();
+        }
+    }
+
+    @Override
+    public boolean contains(BlankNodeOrIRI subject, IRI predicate, RDFTerm 
object) {
+        Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+        org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate);
+        Value obj = rdf4jTermFactory.asValue(object);
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            return conn.hasStatement(subj, pred, obj, includeInferred, 
contextMask);
+        }
+    }
+
+    @Override
+    public void remove(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
+        Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+        org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate);
+        Value obj = rdf4jTermFactory.asValue(object);
+        try (RepositoryConnection conn = getRepositoryConnection()) {
+            conn.remove(subj, pred, obj, contextMask);
+            conn.commit();
+        }
+    }
+
+    @Override
+    public ClosableIterable<Triple> iterate() throws 
ConcurrentModificationException, IllegalStateException {
+        return iterate(null, null, null);
+    }
+
+    @Override
+    public ClosableIterable<Triple> iterate(BlankNodeOrIRI subject, IRI 
predicate, RDFTerm object)
+            throws ConcurrentModificationException, IllegalStateException {
+        Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+        org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate);
+        Value obj = rdf4jTermFactory.asValue(object);
+        return new ConvertedStatements<Triple>(this::getRepositoryConnection, 
rdf4jTermFactory::asTriple, subj, pred,
+                obj, contextMask);
+    }
+
+    @Override
+    public Stream<RDF4JTriple> stream() {
+        return stream(null, null, null);
+    }
+
+    @Override
+    public Stream<RDF4JTriple> stream(BlankNodeOrIRI subject, IRI predicate, 
RDFTerm object) {
+        Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+        org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) 
rdf4jTermFactory.asValue(predicate);
+        Value obj = rdf4jTermFactory.asValue(object);
+
+        // NOTE: We can't do the usual try..with closing of the
+        // RepositoryConnection here as it will have to be closed outside
+        // by the user of the returned stream
+        RepositoryConnection conn = getRepositoryConnection();
+        Stream<RDF4JTriple> stream = null;
+        try {
+            RepositoryResult<Statement> statements = conn.getStatements(subj, 
pred, obj, includeInferred, contextMask);
+            // NOTE: Iterations.stream should close RepositoryResult as long as
+            // our caller closes the stream
+            stream = Iterations.stream(statements).map(this::asTripleLike);
+        } finally {
+            if (stream == null) {
+                // Some exception before we made the stream, close connection
+                // here
+                conn.close();
+            }
+        }
+        // Make sure the RepositoryConnection is closed
+        return stream.onClose(conn::close);
+    }
+
+    @Override
+    protected RDF4JTriple asTripleLike(Statement statement) {
+        return rdf4jTermFactory.asTriple(statement);
+    }
+
+    @Override
+    public Set<RDF4JBlankNodeOrIRI> getContextMask() {
+        Set<RDF4JBlankNodeOrIRI> mask = new HashSet<>();
+        for (Resource s : contextMask) {
+            mask.add((RDF4JBlankNodeOrIRI) rdf4jTermFactory.asRDFTerm(s));
+        }
+        return Collections.unmodifiableSet(mask);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/TripleImpl.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/TripleImpl.java 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/TripleImpl.java
index 0526c77..4ed3946 100644
--- a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/TripleImpl.java
+++ b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/TripleImpl.java
@@ -28,52 +28,51 @@ import org.apache.commons.rdf.rdf4j.RDF4JTriple;
 import org.eclipse.rdf4j.model.Statement;
 
 final class TripleImpl implements Triple, RDF4JTriple {
-               private UUID salt;      
-               private final Statement statement;
-               
-               TripleImpl(Statement statement, UUID salt) {
-                       this.statement = statement;
-                       this.salt = salt;
-               }
-       
-               @Override
-               public Statement asStatement() { 
-                       return statement;
-               }
-               
-               @Override
-               public boolean equals(Object obj) {
-                       if (obj instanceof Triple) {
-                               Triple triple = (Triple) obj;
-                               return getSubject().equals(triple.getSubject()) 
&&
-                                               
getPredicate().equals(triple.getPredicate()) && 
-                                               
getObject().equals(triple.getObject());
-                       }
-                       return false;
-               }
-       
-               @Override
-               public RDFTerm getObject() {
-                       return RDF4J.asRDFTerm(statement.getObject(), salt);
-               }
-       
-               @Override
-               public org.apache.commons.rdf.api.IRI getPredicate() {
-                       return (org.apache.commons.rdf.api.IRI) 
RDF4J.asRDFTerm(statement.getPredicate(), null);
-               }
-               
-               @Override
-               public BlankNodeOrIRI getSubject() {
-                       return (BlankNodeOrIRI) 
RDF4J.asRDFTerm(statement.getSubject(), salt);
-               }
-       
-               @Override
-               public int hashCode() {
-                       return Objects.hash(getSubject(), getPredicate(), 
getObject());
-               }
-               
-               @Override
-               public String toString() {
-                       return statement.toString();
-               }
+    private UUID salt;
+    private final Statement statement;
+
+    TripleImpl(Statement statement, UUID salt) {
+        this.statement = statement;
+        this.salt = salt;
+    }
+
+    @Override
+    public Statement asStatement() {
+        return statement;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof Triple) {
+            Triple triple = (Triple) obj;
+            return getSubject().equals(triple.getSubject()) && 
getPredicate().equals(triple.getPredicate())
+                    && getObject().equals(triple.getObject());
+        }
+        return false;
+    }
+
+    @Override
+    public RDFTerm getObject() {
+        return RDF4J.asRDFTerm(statement.getObject(), salt);
+    }
+
+    @Override
+    public org.apache.commons.rdf.api.IRI getPredicate() {
+        return (org.apache.commons.rdf.api.IRI) 
RDF4J.asRDFTerm(statement.getPredicate(), null);
+    }
+
+    @Override
+    public BlankNodeOrIRI getSubject() {
+        return (BlankNodeOrIRI) RDF4J.asRDFTerm(statement.getSubject(), salt);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getSubject(), getPredicate(), getObject());
+    }
+
+    @Override
+    public String toString() {
+        return statement.toString();
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/package-info.java
----------------------------------------------------------------------
diff --git a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/package-info.java 
b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/package-info.java
index f4bfb7a..e40e985 100644
--- a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/package-info.java
+++ b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/package-info.java
@@ -18,39 +18,33 @@
 /**
  * Commons RDF integration with <a href="http://rdf4j.org/";>RDF4J</a>.
  * <p>
- * Use the {@link RDF4J} to convert
- * between Commons RDF and RDF4J types, for instance
- * {@link RDF4J#asQuad(org.eclipse.rdf4j.model.Statement)}
- * converts a RDF4J {@link org.eclipse.rdf4j.model.Statement} to a
+ * Use the {@link RDF4J} to convert between Commons RDF and RDF4J types, for
+ * instance {@link RDF4J#asQuad(org.eclipse.rdf4j.model.Statement)} converts a
+ * RDF4J {@link org.eclipse.rdf4j.model.Statement} to a
  * {@link org.apache.commons.rdf.api.Quad}. Converted RDF terms implement the
- * {@link RDF4JTerm} interface, and converted
- * statements the {@link RDF4JTripleLike}
- * interface, which provide convenience access to the underlying RDF4J
- * implementations.
+ * {@link RDF4JTerm} interface, and converted statements the
+ * {@link RDF4JTripleLike} interface, which provide convenience access to the
+ * underlying RDF4J implementations.
  * <p>
  * RDF4J {@link org.eclipse.rdf4j.model.Model}s and
  * {@link org.eclipse.rdf4j.repository.Repository} instances can be adapted to
- * Commons RDF {@link Graph} and
- * {@link Dataset}, e.g. using
- * {@link RDF4J#asGraph(org.eclipse.rdf4j.model.Model)}
- * or
+ * Commons RDF {@link Graph} and {@link Dataset}, e.g. using
+ * {@link RDF4J#asGraph(org.eclipse.rdf4j.model.Model)} or
  * {@link RDF4J#asDataset(org.eclipse.rdf4j.repository.Repository, 
RDF4J.Option...)}
  * The returned adapted graph/dataset is directly mapped, so changes are
  * propagated both ways. For convenience, the marker interface
- * {@link RDF4JGraph} and
- * {@link RDF4JDataset} provide access to the
- * underlying RDF4J implementations.
+ * {@link RDF4JGraph} and {@link RDF4JDataset} provide access to the underlying
+ * RDF4J implementations.
  * <p>
- * The {@link RDF4JParser} can be used to
- * parse RDF files using RDF4j. It should be most efficient if used with
- * {@link RDF4JParser#target(Dataset)}
- * and an adapted {@link RDF4JDataset}, or
- * {@link RDF4JParser#target(Graph)}
- * and a an adapted {@link RDF4JGraph}
+ * The {@link RDF4JParser} can be used to parse RDF files using RDF4j. It 
should
+ * be most efficient if used with {@link RDF4JParser#target(Dataset)} and an
+ * adapted {@link RDF4JDataset}, or {@link RDF4JParser#target(Graph)} and a an
+ * adapted {@link RDF4JGraph}
  * 
  *
  */
 package org.apache.commons.rdf.rdf4j;
+
 // Imports for Javadoc, do not remove
 import org.apache.commons.rdf.api.Dataset;
 import org.apache.commons.rdf.api.Graph;

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/BlankNodeTest.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/BlankNodeTest.java 
b/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/BlankNodeTest.java
index d31c24d..f068040 100644
--- a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/BlankNodeTest.java
+++ b/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/BlankNodeTest.java
@@ -22,16 +22,16 @@ import org.apache.commons.rdf.api.BlankNode;
 
 public class BlankNodeTest extends AbstractBlankNodeTest {
 
-       RDF4J factory = new RDF4J();
-       
-       @Override
-       protected BlankNode getBlankNode() {
-               return factory.createBlankNode();
-       }
+    RDF4J factory = new RDF4J();
 
-       @Override
-       protected BlankNode getBlankNode(String identifier) {
-               return factory.createBlankNode(identifier);
-       }
+    @Override
+    protected BlankNode getBlankNode() {
+        return factory.createBlankNode();
+    }
+
+    @Override
+    protected BlankNode getBlankNode(String identifier) {
+        return factory.createBlankNode(identifier);
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/GraphTest.java
----------------------------------------------------------------------
diff --git a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/GraphTest.java 
b/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/GraphTest.java
index 4ad8969..81c77da 100644
--- a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/GraphTest.java
+++ b/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/GraphTest.java
@@ -20,11 +20,11 @@ package org.apache.commons.rdf.rdf4j;
 import org.apache.commons.rdf.api.AbstractGraphTest;
 import org.apache.commons.rdf.api.RDF;
 
-public class GraphTest extends AbstractGraphTest{
+public class GraphTest extends AbstractGraphTest {
 
-       @Override
-       public RDF createFactory() {
-               return new RDF4J();
-       }
+    @Override
+    public RDF createFactory() {
+        return new RDF4J();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/MemoryGraphTest.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/MemoryGraphTest.java 
b/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/MemoryGraphTest.java
index ab7a459..9d9c802 100644
--- a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/MemoryGraphTest.java
+++ b/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/MemoryGraphTest.java
@@ -33,57 +33,57 @@ import org.eclipse.rdf4j.sail.memory.model.MemValueFactory;
 
 public class MemoryGraphTest extends AbstractGraphTest {
 
-       public static final class MemoryStoreRDF implements RDF {
-
-               RDF4J rdf4jFactory = new RDF4J(new MemValueFactory());
-
-               public RDF4JBlankNode createBlankNode() {
-                       return rdf4jFactory.createBlankNode();
-               }
-
-               public RDF4JBlankNode createBlankNode(String name) {
-                       return rdf4jFactory.createBlankNode(name);
-               }
-
-               public Dataset createDataset() {
-                       return rdf4jFactory.createDataset();
-               }
-
-               public RDF4JIRI createIRI(String iri) throws 
IllegalArgumentException, UnsupportedOperationException {
-                       return rdf4jFactory.createIRI(iri);
-               }
-
-               public RDF4JLiteral createLiteral(String lexicalForm) {
-                       return rdf4jFactory.createLiteral(lexicalForm);
-               }
-
-               public Literal createLiteral(String lexicalForm, IRI dataType) {
-                       return rdf4jFactory.createLiteral(lexicalForm, 
dataType);
-               }
-
-               public Literal createLiteral(String lexicalForm, String 
languageTag) {
-                       return rdf4jFactory.createLiteral(lexicalForm, 
languageTag);
-               }
-
-               public RDF4JTriple createTriple(BlankNodeOrIRI subject, IRI 
predicate, RDFTerm object) {
-                       return rdf4jFactory.createTriple(subject, predicate, 
object);
-               }
-
-               public Quad createQuad(BlankNodeOrIRI graphName, BlankNodeOrIRI 
subject, IRI predicate, RDFTerm object) {
-                       return rdf4jFactory.createQuad(graphName, subject, 
predicate, object);
-               }
-
-               public RDF4JGraph createGraph() {
-                       Sail sail = new MemoryStore();
-                       Repository repository = new SailRepository(sail);
-                       repository.initialize();
-                       return rdf4jFactory.asGraph(repository);
-               }
-       }
-
-       @Override
-       public RDF createFactory() {
-               return new MemoryStoreRDF();
-       }
+    public static final class MemoryStoreRDF implements RDF {
+
+        RDF4J rdf4jFactory = new RDF4J(new MemValueFactory());
+
+        public RDF4JBlankNode createBlankNode() {
+            return rdf4jFactory.createBlankNode();
+        }
+
+        public RDF4JBlankNode createBlankNode(String name) {
+            return rdf4jFactory.createBlankNode(name);
+        }
+
+        public Dataset createDataset() {
+            return rdf4jFactory.createDataset();
+        }
+
+        public RDF4JIRI createIRI(String iri) throws IllegalArgumentException, 
UnsupportedOperationException {
+            return rdf4jFactory.createIRI(iri);
+        }
+
+        public RDF4JLiteral createLiteral(String lexicalForm) {
+            return rdf4jFactory.createLiteral(lexicalForm);
+        }
+
+        public Literal createLiteral(String lexicalForm, IRI dataType) {
+            return rdf4jFactory.createLiteral(lexicalForm, dataType);
+        }
+
+        public Literal createLiteral(String lexicalForm, String languageTag) {
+            return rdf4jFactory.createLiteral(lexicalForm, languageTag);
+        }
+
+        public RDF4JTriple createTriple(BlankNodeOrIRI subject, IRI predicate, 
RDFTerm object) {
+            return rdf4jFactory.createTriple(subject, predicate, object);
+        }
+
+        public Quad createQuad(BlankNodeOrIRI graphName, BlankNodeOrIRI 
subject, IRI predicate, RDFTerm object) {
+            return rdf4jFactory.createQuad(graphName, subject, predicate, 
object);
+        }
+
+        public RDF4JGraph createGraph() {
+            Sail sail = new MemoryStore();
+            Repository repository = new SailRepository(sail);
+            repository.initialize();
+            return rdf4jFactory.asGraph(repository);
+        }
+    }
+
+    @Override
+    public RDF createFactory() {
+        return new MemoryStoreRDF();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/413dd09a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/MemoryStoreRDFTest.java
----------------------------------------------------------------------
diff --git 
a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/MemoryStoreRDFTest.java 
b/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/MemoryStoreRDFTest.java
index fd4efcb..5954d13 100644
--- a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/MemoryStoreRDFTest.java
+++ b/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/MemoryStoreRDFTest.java
@@ -23,15 +23,15 @@ import org.junit.Assume;
 
 public class MemoryStoreRDFTest extends AbstractRDFTest {
 
-       @Override
-       public RDF createFactory() {
-               return new MemoryGraphTest.MemoryStoreRDF();
-       }
-       
-       @Override
-       public void testInvalidLiteralLang() throws Exception {
-               Assume.assumeTrue("RDF4J doesn't check Lang strings",false);
-               super.testInvalidLiteralLang();
-       }
-       
+    @Override
+    public RDF createFactory() {
+        return new MemoryGraphTest.MemoryStoreRDF();
+    }
+
+    @Override
+    public void testInvalidLiteralLang() throws Exception {
+        Assume.assumeTrue("RDF4J doesn't check Lang strings", false);
+        super.testInvalidLiteralLang();
+    }
+
 }

Reply via email to