]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop.mapping/src/org/simantics/interop/mapping/SplittingWriteGraph.java
refs #3483
[simantics/interop.git] / org.simantics.interop.mapping / src / org / simantics / interop / mapping / SplittingWriteGraph.java
diff --git a/org.simantics.interop.mapping/src/org/simantics/interop/mapping/SplittingWriteGraph.java b/org.simantics.interop.mapping/src/org/simantics/interop/mapping/SplittingWriteGraph.java
new file mode 100644 (file)
index 0000000..fb73ebd
--- /dev/null
@@ -0,0 +1,6167 @@
+package org.simantics.interop.mapping;\r
+\r
+import java.util.Collection;\r
+import java.util.Set;\r
+import java.util.TreeMap;\r
+\r
+import org.simantics.databoard.accessor.Accessor;\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.databoard.type.Datatype;\r
+import org.simantics.databoard.util.binary.RandomAccessBinary;\r
+import org.simantics.db.Metadata;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.Session;\r
+import org.simantics.db.Statement;\r
+import org.simantics.db.VirtualGraph;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.common.request.ReadRequest;\r
+import org.simantics.db.common.request.WriteRequest;\r
+import org.simantics.db.common.request.WriteResultRequest;\r
+import org.simantics.db.exception.AdaptionException;\r
+import org.simantics.db.exception.AssumptionException;\r
+import org.simantics.db.exception.BindingException;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.exception.DoesNotContainValueException;\r
+import org.simantics.db.exception.ManyObjectsForFunctionalRelationException;\r
+import org.simantics.db.exception.NoInverseException;\r
+import org.simantics.db.exception.NoSingleResultException;\r
+import org.simantics.db.exception.ResourceNotFoundException;\r
+import org.simantics.db.exception.ServiceException;\r
+import org.simantics.db.exception.ServiceNotFoundException;\r
+import org.simantics.db.exception.ValidationException;\r
+import org.simantics.db.procedure.AsyncListener;\r
+import org.simantics.db.procedure.AsyncMultiListener;\r
+import org.simantics.db.procedure.AsyncMultiProcedure;\r
+import org.simantics.db.procedure.AsyncProcedure;\r
+import org.simantics.db.procedure.AsyncSetListener;\r
+import org.simantics.db.procedure.Listener;\r
+import org.simantics.db.procedure.MultiListener;\r
+import org.simantics.db.procedure.MultiProcedure;\r
+import org.simantics.db.procedure.Procedure;\r
+import org.simantics.db.procedure.SetListener;\r
+import org.simantics.db.procedure.SyncListener;\r
+import org.simantics.db.procedure.SyncMultiListener;\r
+import org.simantics.db.procedure.SyncMultiProcedure;\r
+import org.simantics.db.procedure.SyncProcedure;\r
+import org.simantics.db.procedure.SyncSetListener;\r
+import org.simantics.db.request.AsyncMultiRead;\r
+import org.simantics.db.request.AsyncRead;\r
+import org.simantics.db.request.DelayedWrite;\r
+import org.simantics.db.request.DelayedWriteResult;\r
+import org.simantics.db.request.ExternalRead;\r
+import org.simantics.db.request.MultiRead;\r
+import org.simantics.db.request.Read;\r
+import org.simantics.db.request.ReadInterface;\r
+import org.simantics.db.request.Write;\r
+import org.simantics.db.request.WriteInterface;\r
+import org.simantics.db.request.WriteOnly;\r
+import org.simantics.db.request.WriteOnlyResult;\r
+import org.simantics.db.request.WriteResult;\r
+import org.simantics.db.request.WriteTraits;\r
+import org.simantics.scl.types.Type;\r
+import org.simantics.utils.datastructures.Callback;\r
+\r
+/**\r
+ * This is insane.\r
+ * \r
+ * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
+ *\r
+ */\r
+public class SplittingWriteGraph implements WriteGraph {\r
+       \r
+       protected Session session;\r
+       \r
+       \r
+       @Override\r
+       public <T> T getRelatedValue2(final Resource subject, final Resource relation)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(new Read<T>() {\r
+                       @Override\r
+                       public T perform(ReadGraph graph) throws DatabaseException {\r
+                               return graph.getRelatedValue2(subject, relation);\r
+                       }\r
+               });\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public <T> T getRelatedValue2(final Resource subject, final Resource relation, final Binding binding) throws DatabaseException {\r
+               return session.syncRequest(new Read<T>() {\r
+                       @Override\r
+                       public T perform(ReadGraph graph) throws DatabaseException {\r
+                               return graph.getRelatedValue2(subject, relation, binding);\r
+                       }\r
+               });\r
+       }\r
+       \r
+       @Override\r
+       public <T> T getRelatedValue2(final Resource subject, final Resource relation, final Object context) throws DatabaseException {\r
+               return session.syncRequest(new Read<T>() {\r
+                       @Override\r
+                       public T perform(ReadGraph graph) throws DatabaseException {\r
+                               return graph.getRelatedValue2(subject, relation, context);\r
+                       }\r
+               });\r
+       }\r
+       \r
+       @Override\r
+       public <T> T getRelatedValue2(final Resource subject, final Resource relation, final Object context, final Binding binding) throws DatabaseException {\r
+               return session.syncRequest(new Read<T>() {\r
+                       @Override\r
+                       public T perform(ReadGraph graph) throws DatabaseException {\r
+                               return graph.getRelatedValue2(subject, relation, context, binding);\r
+                       }\r
+               });\r
+       }\r
+       \r
+       @Override\r
+       public <T> T getPossibleRelatedValue2(final Resource subject, final Resource relation)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(new Read<T>() {\r
+                       @Override\r
+                       public T perform(ReadGraph graph) throws DatabaseException {\r
+                               return graph.getPossibleRelatedValue2(subject, relation);\r
+                       }\r
+               });\r
+       }\r
+       \r
+       @Override\r
+       public <T> T getPossibleRelatedValue2(final Resource subject, final Resource relation, final Binding binding) throws DatabaseException {\r
+               return session.syncRequest(new Read<T>() {\r
+                       @Override\r
+                       public T perform(ReadGraph graph) throws DatabaseException {\r
+                               return graph.getPossibleRelatedValue2(subject, relation, binding);\r
+                       }\r
+               });\r
+       }\r
+       \r
+       @Override\r
+       public <T> T getPossibleRelatedValue2(final Resource subject, final Resource relation, final Object context) throws DatabaseException {\r
+               return session.syncRequest(new Read<T>() {\r
+                       @Override\r
+                       public T perform(ReadGraph graph) throws DatabaseException {\r
+                               return graph.getPossibleRelatedValue2(subject, relation, context);\r
+                       }\r
+               });\r
+       }\r
+       \r
+       @Override\r
+       public <T> T getPossibleRelatedValue2(final Resource subject, final Resource relation, final Object context, final Binding binding) throws DatabaseException {\r
+               return session.syncRequest(new Read<T>() {\r
+                       @Override\r
+                       public T perform(ReadGraph graph) throws DatabaseException {\r
+                               return graph.getPossibleRelatedValue2(subject, relation, context, binding);\r
+                       }\r
+               });\r
+       }\r
+       \r
+       @Override\r
+       public <T> void async(final ReadInterface<T> r, final AsyncListener<T> procedure) {\r
+               session.async(r, procedure);\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public <T> void async(final ReadInterface<T> r, final AsyncProcedure<T> procedure) {\r
+               session.async(r, procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void async(final ReadInterface<T> r, final Listener<T> procedure) {\r
+               session.async(r, procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void async(final ReadInterface<T> r, final Procedure<T> procedure) {\r
+               session.async(r, procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void async(final ReadInterface<T> r, final SyncListener<T> procedure) {\r
+               session.async(r, procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void async(final ReadInterface<T> r, final SyncProcedure<T> procedure) {\r
+               session.async(r, procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void async(final WriteInterface<T> r) {\r
+               session.async(r);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void async(final WriteInterface<T> r, final Procedure<T> procedure) {\r
+               session.async(r, procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> T sync(final ReadInterface<T> r) throws DatabaseException {\r
+               return session.sync(r);\r
+       }\r
+       \r
+       @Override\r
+       public <T> T sync(final WriteInterface<T> r) throws DatabaseException {\r
+               return session.sync(r);\r
+       }\r
+       \r
+       @Override\r
+       public Resource getRootLibrary() {\r
+               try {\r
+                       return session.syncRequest(new Read<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getRootLibrary();\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       return null;\r
+               }\r
+       }\r
+       \r
+       \r
+       @Override\r
+       public void clearUndoList(final WriteTraits writeTraits) {\r
+               throw new RuntimeException("Not supported.");\r
+       }\r
+       \r
+       @Override\r
+       public void combineWithPrevious(WriteTraits writeTraits) {\r
+               throw new RuntimeException("Not supported.");\r
+       }\r
+       \r
+       @Override\r
+       public TreeMap<String, byte[]> getMetadata() {\r
+               try {\r
+                       return session.syncRequest(new WriteResultRequest<TreeMap<String, byte[]>>() {\r
+                               \r
+                               @Override\r
+                               public TreeMap<String, byte[]> perform(WriteGraph graph) throws DatabaseException {\r
+                                       return graph.getMetadata();\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       return null;\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public <T extends Metadata> T getMetadata(final Class<T> clazz)\r
+                       throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new WriteResultRequest<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(WriteGraph graph) throws DatabaseException {\r
+                                       return graph.getMetadata(clazz);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public Type getRelatedValueType(final Resource subject, final Resource relation)\r
+                       throws DatabaseException {\r
+\r
+               return session.syncRequest(new Read<Type>() {\r
+                       \r
+                       @Override\r
+                       public Type perform(ReadGraph graph) throws DatabaseException {\r
+                               return graph.getRelatedValueType(subject, relation);\r
+                       }\r
+               });\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void deny(final Resource subject, final Resource predicate, final Resource inverse, final Resource object, final VirtualGraph vgraph) throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.deny(subject, predicate, inverse, object, vgraph);\r
+                                       \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       \r
+       \r
+       \r
+       @Override\r
+       public <T> T adaptRelated(final Resource resource, final Resource relation,\r
+                       final Class<T> clazz) throws AdaptionException, NoSingleResultException,\r
+                       ValidationException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.adaptRelated(resource, relation, clazz);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public <T> T getPossibleRelatedAdapter(final Resource resource,\r
+                       final Resource relation, final Class<T> clazz) throws ValidationException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getPossibleRelatedAdapter(resource, relation, clazz);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ValidationException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void inc() {\r
+               throw new RuntimeException("Not supported.");\r
+       }\r
+       \r
+       @Override\r
+       public void dec() {\r
+               throw new RuntimeException("Not supported.");\r
+       }\r
+       \r
+       @Override\r
+       public Collection<Resource> getObjects(final Resource subject, final Resource relation) throws ServiceException \r
+                       {\r
+               try {\r
+                       return session.syncRequest(new Read<Collection<Resource>>() {\r
+                               \r
+                               @Override\r
+                               public Collection<Resource> perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getObjects(subject, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public <T extends Accessor> T newLiteral(final Resource resource,\r
+       final Resource predicate, final Datatype datatype, final Object initialValue)\r
+       throws DatabaseException {\r
+               return session.syncRequest(new WriteResultRequest<T>() {\r
+                       \r
+                       @Override\r
+                       public T perform(WriteGraph graph) throws DatabaseException {\r
+                               return graph.newLiteral(resource, predicate, datatype, initialValue);\r
+                       }\r
+               });\r
+       }\r
+\r
+    @Override\r
+    public RandomAccessBinary newLiteral4RandomAccessBinary\r
+    (final Resource resource, final Resource predicate, final Datatype datatype, final Object initialvalue)\r
+    throws DatabaseException {\r
+        return session.syncRequest(new WriteResultRequest<RandomAccessBinary>() {\r
+            @Override\r
+            public RandomAccessBinary perform(WriteGraph graph) throws DatabaseException {\r
+                return graph.newLiteral4RandomAccessBinary(resource, predicate, datatype, initialvalue);\r
+            }\r
+        });\r
+    }\r
+\r
+       public <T, C> T adaptContextual(final Resource resource, final  C context, final java.lang.Class<C> contextClass, final java.lang.Class<T> clazz) throws AdaptionException ,NoSingleResultException ,ValidationException ,ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.adaptContextual(resource, context, contextClass, clazz);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       };\r
+       \r
+       public <T, C> T getPossibleContextualAdapter(final Resource resource, final C context, final java.lang.Class<C> contextClass, final java.lang.Class<T> clazz) throws ValidationException ,ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getPossibleContextualAdapter(resource, context, contextClass, clazz);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       };\r
+       \r
+       \r
+       public SplittingWriteGraph(Session session) {\r
+               this.session = session;\r
+       }\r
+       \r
+       @Override\r
+       public Resource newResource() throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new WriteResultRequest<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(WriteGraph graph) throws DatabaseException {\r
+                                       return graph.newResource();\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+                \r
+       }\r
+       \r
+       @Override\r
+       public Resource newResource(final long clusterId) throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new WriteResultRequest<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(WriteGraph graph) throws DatabaseException {\r
+                                       return graph.newResource(clusterId);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public <T> T adapt(final Resource resource, final Class<T> clazz)\r
+                       throws AdaptionException, ValidationException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.adapt(resource, clazz);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public <T> T adaptUnique(final Resource resource, final Class<T> clazz)\r
+                       throws AdaptionException, ValidationException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.adaptUnique(resource, clazz);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void addLiteral(final Resource resource, final Resource predicate,\r
+                       final Resource inverse, final Object value, final Binding binding)\r
+                       throws BindingException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.addLiteral(resource, predicate, inverse, value, binding);\r
+                                       \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void addLiteral(final Resource resource, final Resource predicate,\r
+                       final Resource inverse, final Resource type, final Object value, final Binding binding)\r
+                       throws BindingException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.addLiteral(resource, predicate, inverse, type, value, binding);\r
+                                       \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public <T> void addMetadata(Metadata data) throws ServiceException {\r
+               throw new RuntimeException("Not supported.");\r
+       }\r
+       \r
+       @Override\r
+       @Deprecated\r
+       public void addValue(final Resource resource, final Resource predicate,\r
+                       final Resource inverse, final Resource type, final Object value, final Binding binding)\r
+                       throws BindingException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.addValue(resource, predicate, inverse, type, value, binding);\r
+                                       \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(final AsyncMultiRead<T> request) {\r
+               session.asyncRequest(request);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncMultiRead<T> request,\r
+                       AsyncMultiListener<T> procedure) {\r
+               session.asyncRequest(request,procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncMultiRead<T> request,\r
+                       AsyncMultiProcedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncMultiRead<T> request,\r
+                       MultiListener<T> procedure) {\r
+               session.asyncRequest(request,procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncMultiRead<T> request,\r
+                       MultiProcedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncMultiRead<T> request,\r
+                       SyncMultiListener<T> procedure) {\r
+               session.asyncRequest(request,procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncMultiRead<T> request,\r
+                       SyncMultiProcedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncRead<T> request) {\r
+               session.asyncRequest(request);  \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncRead<T> request,\r
+                       AsyncListener<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncRead<T> request,\r
+                       AsyncProcedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncRead<T> request, Listener<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncRead<T> request,\r
+                       Procedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncRead<T> request,\r
+                       SyncListener<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(AsyncRead<T> request,\r
+                       SyncProcedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public void asyncRequest(DelayedWrite request) {\r
+               session.asyncRequest(request);  \r
+       }\r
+       \r
+       @Override\r
+       public void asyncRequest(DelayedWrite request,\r
+                       Callback<DatabaseException> callback) {\r
+               session.asyncRequest(request,callback); \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(DelayedWriteResult<T> r,\r
+                       Procedure<T> procedure) {\r
+               session.asyncRequest(r,procedure);      \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(ExternalRead<T> request) {\r
+               session.asyncRequest(request);  \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(ExternalRead<T> request,\r
+                       Listener<T> procedure) {\r
+               session.asyncRequest(request,procedure);\r
+       }       \r
+       \r
+       @Override\r
+       public <T> void asyncRequest(ExternalRead<T> request,\r
+                       Procedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);\r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(MultiRead<T> request) {\r
+               session.asyncRequest(request);  \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(MultiRead<T> request,\r
+                       AsyncMultiListener<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(MultiRead<T> request,\r
+                       AsyncMultiProcedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(MultiRead<T> request,\r
+                       MultiListener<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(MultiRead<T> request,\r
+                       MultiProcedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(MultiRead<T> request,\r
+                       SyncMultiListener<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(MultiRead<T> request,\r
+                       SyncMultiProcedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(Read<T> request) {\r
+               session.asyncRequest(request);  \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(Read<T> request, AsyncListener<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(Read<T> request,\r
+                       AsyncProcedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(Read<T> request, Listener<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(Read<T> request, Procedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(Read<T> request, SyncListener<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(Read<T> request, SyncProcedure<T> procedure) {\r
+               session.asyncRequest(request,procedure);        \r
+       }\r
+       \r
+       @Override\r
+       public void asyncRequest(Write request) {\r
+               session.asyncRequest(request);  \r
+       }\r
+       \r
+       @Override\r
+       public void asyncRequest(Write request,\r
+                       Callback<DatabaseException> callback) {\r
+               session.asyncRequest(request, callback);        \r
+       }\r
+       \r
+       @Override\r
+       public void asyncRequest(WriteOnly r) {\r
+               session.asyncRequest(r);        \r
+       }\r
+       \r
+       @Override\r
+       public void asyncRequest(WriteOnly r,\r
+                       Callback<DatabaseException> callback) {\r
+               session.asyncRequest(r,callback);       \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(WriteOnlyResult<T> r,\r
+                       Procedure<T> procedure) {\r
+               session.asyncRequest(r,procedure);      \r
+       }\r
+       \r
+       @Override\r
+       public <T> void asyncRequest(WriteResult<T> r, Procedure<T> procedure) {\r
+               session.asyncRequest(r,procedure);      \r
+       }\r
+       \r
+       \r
+       \r
+       @Override\r
+       public void claim(final Resource subject, final Resource predicate,\r
+                       final Resource inverse, final Resource object) throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claim(subject, predicate, inverse, object);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void claim(final Resource subject, final Resource predicate, final Resource object)\r
+                       throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claim(subject, predicate, object);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+\r
+       @Override\r
+       public void claimLiteral(final Resource resource, final Resource predicate,\r
+                       final Object value) throws ManyObjectsForFunctionalRelationException,\r
+                       ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claimLiteral(resource, predicate, value);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void claimLiteral(final Resource resource, final Resource predicate,\r
+                       final Object value, final Binding binding) throws BindingException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claimLiteral(resource, predicate, value, binding);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void claimLiteral(final Resource resource, final Resource predicate,\r
+                       final Resource inverse, final Resource type, final Object value)\r
+                       throws BindingException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claimLiteral(resource, predicate, inverse, type, value);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void claimLiteral(final Resource resource, final Resource predicate,\r
+                       final Resource inverse, final Resource type, final Object value, final Binding binding)\r
+                       throws BindingException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claimLiteral(resource, predicate, inverse, type, value, binding);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void claimLiteral(final Resource resource, final Resource predicate,\r
+                       final Resource type, final Object value) throws BindingException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claimLiteral(resource, predicate, type, value);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void claimLiteral(final Resource resource, final Resource predicate,\r
+                       final Resource type, final Object value, final Binding binding)\r
+                       throws BindingException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claimLiteral(resource, predicate, type, value, binding);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void claimValue(final Resource resource, final Object value)\r
+                       throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claimValue(resource, value);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void claimValue(final Resource resource, final Object value, final Binding binding)\r
+                       throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claimValue(resource, value, binding);     \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @SuppressWarnings("deprecation")\r
+       @Override\r
+       public void claimValue(final Resource resource, final Resource predicate,\r
+                       final Object value) throws ManyObjectsForFunctionalRelationException,\r
+                       ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claimValue(resource, predicate, value);   \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @SuppressWarnings("deprecation")\r
+       @Override\r
+       public void claimValue(final Resource resource, final Resource predicate,\r
+                       final Object value, final Binding binding) throws BindingException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claimValue(resource, predicate, value, binding);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @SuppressWarnings("deprecation")\r
+       @Override\r
+       public void claimValue(final Resource resource, final Resource predicate,\r
+                       final Resource inverse, final Resource type, final Object value, final Binding binding)\r
+                       throws BindingException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.claimValue(resource, predicate, inverse, type, value, binding);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void deny(final Resource subject) throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.deny(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void deny(final Resource subject, final Resource predicate)\r
+                       throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.deny(subject, predicate);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void deny(final Resource subject, final Resource predicate,\r
+                       final Resource inverse, final Resource object) throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.deny(subject, predicate, inverse, object);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void deny(final Resource subject, final Resource predicate, final Resource object)\r
+                       throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.deny(subject, predicate, object);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void deny(final Statement statement) throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.deny(statement);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+\r
+       @Override\r
+       public void denyStatement(final Resource subject, final Resource predicate,\r
+                       final Resource object) throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.denyStatement(subject, predicate, object);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void denyValue(final Resource resource) throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.denyValue(resource);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void denyValue(final Resource resource, final Resource predicate)\r
+                       throws ManyObjectsForFunctionalRelationException,\r
+                       ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.denyValue(resource, predicate);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void flushCluster() throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.flushCluster();\r
+                                       \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void flushCluster(final Resource r) throws ServiceException {\r
+               try {\r
+                       session.syncRequest(new WriteRequest() {\r
+                               \r
+                               @Override\r
+                               public void perform(WriteGraph graph) throws DatabaseException {\r
+                                       graph.flushCluster(r);\r
+                                       \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public <T> void forAdapted(final Resource resource, final Class<T> clazz,\r
+                       final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public <T> void forAdapted(final Resource resource, final Class<T> clazz,\r
+                       final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public <T> void forAdapted(final Resource resource, final Class<T> clazz,\r
+                       final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public <T> void forAdapted(final Resource resource, final Class<T> clazz,\r
+                       final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public <T> void forAdapted(final Resource resource, final Class<T> clazz,\r
+                       final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public <T> void forAdapted(final Resource resource, final Class<T> clazz,\r
+                       final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forAssertedObjectSet(final Resource subject, final Resource relation,\r
+                       final AsyncSetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAssertedObjectSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void forAssertedObjectSet(final Resource subject, final Resource relation,\r
+                       final SetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAssertedObjectSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forAssertedObjectSet(final Resource subject, final Resource relation,\r
+                       final SyncSetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAssertedObjectSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forAssertedStatementSet(final Resource subject,\r
+                       final Resource relation, final AsyncSetListener<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAssertedStatementSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forAssertedStatementSet(final Resource subject,\r
+                       final Resource relation, final SetListener<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAssertedStatementSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forAssertedStatementSet(final Resource subject,\r
+                       final Resource relation, final SyncSetListener<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forAssertedStatementSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forBuiltin(final String id, final AsyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forBuiltin(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void forBuiltin(final String id, final Listener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forBuiltin(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forBuiltin(final String id, final AsyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forBuiltin(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forBuiltin(final String id, final Procedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forBuiltin(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forBuiltin(final String id, final SyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forBuiltin(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forBuiltin(final String id, final SyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forBuiltin(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forDirectSuperrelations(final Resource subject,\r
+                       final AsyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forDirectSuperrelations(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachAssertedObject(final Resource subject, final Resource relation,\r
+                       final AsyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachAssertedObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachAssertedObject(final Resource subject, final Resource relation,\r
+                       final MultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachAssertedObject(subject, relation, procedure);      \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachAssertedObject(final Resource subject, final Resource relation,\r
+                       final SyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachAssertedObject(subject, relation, procedure);      \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachAssertedStatement(final Resource subject,\r
+                       final Resource relation, final AsyncMultiProcedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachAssertedStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachAssertedStatement(final Resource subject,\r
+                       final Resource relation, final MultiProcedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachAssertedStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachAssertedStatement(final Resource subject,\r
+                       final Resource relation, final SyncMultiProcedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachAssertedStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachDirectObject(final Resource subject, final Resource relation,\r
+                       final AsyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachDirectObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachDirectObject(final Resource subject, final Resource relation,\r
+                       final MultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachDirectObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachDirectObject(final Resource subject, final Resource relation,\r
+                       final SyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachDirectObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachDirectPredicate(final Resource subject,\r
+                       final AsyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachDirectPredicate(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachDirectPredicate(final Resource subject,\r
+                       final MultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachDirectPredicate(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachDirectPredicate(final Resource subject,\r
+                       final SyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachDirectPredicate(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachObject(final Resource subject, final Resource relation,\r
+                       final AsyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachObject(final Resource subject, final Resource relation,\r
+                       final MultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachObject(final Resource subject, final Resource relation,\r
+                       final SyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachPredicate(final Resource subject,\r
+                       final AsyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachPredicate(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachPredicate(final Resource subject,\r
+                       final MultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachPredicate(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachPredicate(final Resource subject,\r
+                       final SyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachPredicate(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachPrincipalType(final Resource subject,\r
+                       final AsyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachPrincipalType(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachPrincipalType(final Resource subject,\r
+                       final MultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachPrincipalType(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachPrincipalType(final Resource subject,\r
+                       final SyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachPrincipalType(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachStatement(final Resource subject, final Resource relation,\r
+                       final AsyncMultiProcedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachStatement(final Resource subject, final Resource relation,\r
+                       final MultiProcedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forEachStatement(final Resource subject, final Resource relation,\r
+                       final SyncMultiProcedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forEachStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject,\r
+                       final AsyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject,\r
+                       final AsyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, procedure);      \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject,\r
+                       final Listener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, procedure);      \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject,\r
+                       final Procedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final AsyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation, procedure);    \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final AsyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final Listener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final Procedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation, procedure);    \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final Resource object, final AsyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation, object, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final Resource object, final AsyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation, object, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final Resource object, final Listener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation, object, procedure);    \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final Resource object, final Procedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation, object, procedure);    \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final Resource object, final SyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation, object, procedure);    \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final Resource object, final SyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation, object, procedure);    \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final SyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation,  procedure);   \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject, final Resource relation,\r
+                       final SyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject,\r
+                       final SyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject,  procedure);     \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasStatement(final Resource subject,\r
+                       final SyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasStatement(subject,  procedure);     \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasValue(final Resource subject,\r
+                       final AsyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasValue(final Resource subject,\r
+                       final AsyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasValue(subject, procedure);  \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasValue(final Resource subject, final Listener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasValue(subject, procedure);  \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasValue(final Resource subject, final Procedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasValue(subject, procedure);  \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasValue(final Resource subject,\r
+                       final SyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasValue(subject, procedure);  \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forHasValue(final Resource subject,\r
+                       final SyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forHasValue(subject, procedure);  \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public void forInverse(final Resource relation,\r
+                       final AsyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                               \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> T getService(Class<T> api) throws ServiceNotFoundException {\r
+               return session.getService(api);\r
+       }\r
+\r
+       @Override\r
+       public <T> T peekService(Class<T> api) {\r
+               return session.peekService(api);\r
+       }\r
+\r
+       @Override\r
+       public boolean hasService(Class<?> api) {\r
+               return session.hasService(api);\r
+       }\r
+\r
+       @Override\r
+       public <T> void registerService(Class<T> api, T service) {\r
+               session.registerService(api, service);\r
+       }\r
+\r
+       @Override\r
+       public String getURI(final Resource resource)\r
+                       throws ValidationException,\r
+                       ServiceException, AssumptionException {\r
+               try {\r
+                       return session.syncRequest(new Read<String>() {\r
+                               \r
+                               @Override\r
+                               public String perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getURI(resource);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+               \r
+       }\r
+\r
+       @Override\r
+       public String getPossibleURI(final Resource resource)\r
+                       throws ValidationException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<String>() {\r
+                               \r
+                               @Override\r
+                               public String perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getPossibleURI(resource);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Resource getResource(final String uri)\r
+                       throws ResourceNotFoundException, ValidationException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getResource(uri);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Resource getPossibleResource(final String uri)\r
+                       throws ResourceNotFoundException, ValidationException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getPossibleResource(uri);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Collection<Statement> getStatements(final Resource subject,\r
+                       final Resource relation)\r
+                       throws ManyObjectsForFunctionalRelationException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Collection<Statement>>() {\r
+                               \r
+                               @Override\r
+                               public Collection<Statement> perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getStatements(subject, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Collection<Statement> getAssertedStatements(final Resource subject,\r
+                       final Resource relation)\r
+                       throws ManyObjectsForFunctionalRelationException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Collection<Statement>>() {\r
+                               \r
+                               @Override\r
+                               public Collection<Statement> perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getAssertedStatements(subject, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Collection<Resource> getPredicates(final Resource subject)\r
+                       throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Collection<Resource>>() {\r
+                               \r
+                               @Override\r
+                               public Collection<Resource> perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getPredicates(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Collection<Resource> getPrincipalTypes(final Resource subject)\r
+                       throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Collection<Resource>>() {\r
+                               \r
+                               @Override\r
+                               public Collection<Resource> perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getPrincipalTypes(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Set<Resource> getTypes(final Resource subject) throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Set<Resource>>() {\r
+                               \r
+                               @Override\r
+                               public Set<Resource> perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getTypes(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Set<Resource> getSupertypes(final Resource subject)\r
+                       throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Set<Resource>>() {\r
+                               \r
+                               @Override\r
+                               public Set<Resource> perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getSupertypes(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Set<Resource> getSuperrelations(final Resource subject)\r
+                       throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Set<Resource>>() {\r
+                               \r
+                               @Override\r
+                               public Set<Resource> perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getSuperrelations(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+//     @Override\r
+//     public Collection<Resource> getObjects(final Resource subject,\r
+//                     Resource relation)\r
+//                     throws ManyObjectsForFunctionalRelationException,\r
+//                     ServiceException {\r
+//             return graph.getObjects(subject, relation);\r
+//     }\r
+\r
+       @Override\r
+       public Collection<Resource> getAssertedObjects(final Resource subject, final Resource relation)\r
+                       throws ManyObjectsForFunctionalRelationException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Collection<Resource>>() {\r
+                               \r
+                               @Override\r
+                               public Collection<Resource> perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getAssertedObjects(subject, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Resource getInverse(final Resource relation)\r
+                       throws NoInverseException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getInverse(relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Resource getSingleObject(final Resource subject, final Resource relation)\r
+                       throws NoSingleResultException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getSingleObject(subject, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Statement getSingleStatement(final Resource subject, final Resource relation)\r
+                       throws NoSingleResultException,\r
+                       ManyObjectsForFunctionalRelationException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Statement>() {\r
+                               \r
+                               @Override\r
+                               public Statement perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getSingleStatement(subject, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Resource getSingleType(final Resource subject)\r
+                       throws NoSingleResultException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getSingleType(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Resource getSingleType(final Resource subject, final Resource baseType)\r
+                       throws NoSingleResultException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getSingleType(subject, baseType);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> T getValue(final Resource subject)\r
+                       throws DoesNotContainValueException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getValue(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> T getValue(final Resource subject, final Binding binding)\r
+                       throws DoesNotContainValueException, BindingException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getValue(subject, binding);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> T getRelatedValue(final Resource subject, final Resource relation)\r
+                       throws NoSingleResultException, DoesNotContainValueException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getRelatedValue(subject, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> T getRelatedValue(final Resource subject, final Resource relation,\r
+                       final Binding binding) throws NoSingleResultException,\r
+                       DoesNotContainValueException, BindingException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getRelatedValue(subject, relation, binding);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Resource getPossibleInverse(final Resource relation)\r
+                       throws ManyObjectsForFunctionalRelationException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getPossibleInverse(relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Resource getPossibleObject(final Resource subject, final Resource relation)\r
+                       throws ManyObjectsForFunctionalRelationException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getPossibleObject(subject, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Statement getPossibleStatement(final Resource subject,\r
+                       final Resource relation)\r
+                       throws ManyObjectsForFunctionalRelationException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Statement>() {\r
+                               \r
+                               @Override\r
+                               public Statement perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getPossibleStatement(subject, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Resource getPossibleType(final Resource subject, final Resource baseType)\r
+                       throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getPossibleType(subject, baseType);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> T getPossibleValue(final Resource subject) throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getPossibleValue(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> T getPossibleValue(final Resource subject, final Binding binding)\r
+                       throws BindingException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getPossibleValue(subject, binding);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> T getPossibleRelatedValue(final Resource subject, final Resource relation)\r
+                       throws ManyObjectsForFunctionalRelationException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getPossibleRelatedValue(subject, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> T getPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final Binding binding)\r
+                       throws ManyObjectsForFunctionalRelationException,\r
+                       BindingException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getPossibleRelatedValue(subject, relation, binding);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> T getPossibleAdapter(final Resource resource, final Class<T> clazz)\r
+                       throws ValidationException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getPossibleAdapter(resource, clazz);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> T getPossibleUniqueAdapter(final Resource resource, final Class<T> clazz)\r
+                       throws ValidationException, ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getPossibleUniqueAdapter(resource, clazz);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public boolean isInstanceOf(final Resource resource, final Resource type)\r
+                       throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Boolean>() {\r
+                               \r
+                               @Override\r
+                               public Boolean perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.isInstanceOf(resource, type);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public boolean isInheritedFrom(final Resource resource, final Resource type)\r
+                       throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Boolean>() {\r
+                               \r
+                               @Override\r
+                               public Boolean perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.isInheritedFrom(resource, type);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public boolean isSubrelationOf(final Resource resource, final Resource relation)\r
+                       throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Boolean>() {\r
+                               \r
+                               @Override\r
+                               public Boolean perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.isSubrelationOf(resource, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public boolean hasStatement(final Resource subject) throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Boolean>() {\r
+                               \r
+                               @Override\r
+                               public Boolean perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.hasStatement(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public boolean hasStatement(final Resource subject, final Resource relation)\r
+                       throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Boolean>() {\r
+                               \r
+                               @Override\r
+                               public Boolean perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.hasStatement(subject, relation);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public boolean hasStatement(final Resource subject, final Resource relation,\r
+                       final Resource object) throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Boolean>() {\r
+                               \r
+                               @Override\r
+                               public Boolean perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.hasStatement(subject, relation, object);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public boolean hasValue(final Resource subject) throws ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Boolean>() {\r
+                               \r
+                               @Override\r
+                               public Boolean perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.hasValue(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Datatype getDataType(final Resource subject) throws DatabaseException {\r
+               try {\r
+                       return session.syncRequest(new Read<Datatype>() {\r
+                               \r
+                               @Override\r
+                               public Datatype perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getDataType(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T extends Accessor> T getAccessor(final Resource subject)\r
+                       throws DatabaseException {\r
+               try {\r
+                       return session.syncRequest(new Read<T>() {\r
+                               \r
+                               @Override\r
+                               public T perform(ReadGraph graph) throws DatabaseException {\r
+               return graph.getAccessor(subject);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       throw new ServiceException(e);\r
+               }\r
+       }\r
+\r
+    @Override\r
+    public RandomAccessBinary getRandomAccessBinary(final Resource subject)\r
+    throws DatabaseException {\r
+        try {\r
+            return session.syncRequest(new Read<RandomAccessBinary>() {\r
+                @Override\r
+                public RandomAccessBinary perform(ReadGraph graph) throws DatabaseException {\r
+                    return graph.getRandomAccessBinary(subject);\r
+                }\r
+            });\r
+        } catch (DatabaseException e) {\r
+            throw new ServiceException(e);\r
+        }\r
+    }\r
+\r
+    @Override\r
+       public <T> T syncRequest(Read<T> request) throws DatabaseException {\r
+               return session.syncRequest(request);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(Read<T> request, AsyncListener<T> procedure)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(Read<T> request, SyncListener<T> procedure)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(Read<T> request, Listener<T> procedure)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(Read<T> request, AsyncProcedure<T> procedure)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(Read<T> request, SyncProcedure<T> procedure)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(Read<T> request, Procedure<T> procedure)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(AsyncRead<T> request) throws DatabaseException {\r
+               return session.syncRequest(request);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(AsyncRead<T> request,\r
+                       AsyncListener<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(AsyncRead<T> request, SyncListener<T> procedure)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(AsyncRead<T> request, Listener<T> procedure)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(AsyncRead<T> request,\r
+                       AsyncProcedure<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(AsyncRead<T> request,\r
+                       SyncProcedure<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(AsyncRead<T> request, Procedure<T> procedure)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(MultiRead<T> request)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(MultiRead<T> request,\r
+                       AsyncMultiListener<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(MultiRead<T> request,\r
+                       SyncMultiListener<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(MultiRead<T> request,\r
+                       MultiListener<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(MultiRead<T> request,\r
+                       AsyncMultiProcedure<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(MultiRead<T> request,\r
+                       SyncMultiProcedure<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(MultiRead<T> request,\r
+                       MultiProcedure<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(AsyncMultiRead<T> request)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(AsyncMultiRead<T> request,\r
+                       AsyncMultiListener<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(AsyncMultiRead<T> request,\r
+                       SyncMultiListener<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(AsyncMultiRead<T> request,\r
+                       MultiListener<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(AsyncMultiRead<T> request,\r
+                       AsyncMultiProcedure<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(AsyncMultiRead<T> request,\r
+                       SyncMultiProcedure<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> Collection<T> syncRequest(AsyncMultiRead<T> request,\r
+                       MultiProcedure<T> procedure) throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(ExternalRead<T> request)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(ExternalRead<T> request, Listener<T> procedure)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(ExternalRead<T> request, Procedure<T> procedure)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request, procedure);\r
+       }\r
+\r
+       @Override\r
+       public void syncRequest(Write request) throws DatabaseException {\r
+               session.syncRequest(request);\r
+       }\r
+\r
+       @Override\r
+       public void syncRequest(DelayedWrite request) throws DatabaseException {\r
+               session.syncRequest(request);\r
+       }\r
+\r
+       @Override\r
+       public void syncRequest(WriteOnly r) throws DatabaseException {\r
+               session.syncRequest(r);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(WriteResult<T> request)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(DelayedWriteResult<T> request)\r
+                       throws DatabaseException {\r
+               return session.syncRequest(request);\r
+       }\r
+\r
+       @Override\r
+       public <T> T syncRequest(WriteOnlyResult<T> r) throws DatabaseException {\r
+               return session.syncRequest(r);\r
+       }\r
+\r
+       @Override\r
+       public void forURI(final Resource resource, final AsyncListener<String> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forURI(resource, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forURI(final Resource resource, final SyncListener<String> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forURI(resource, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forURI(final Resource resource, final Listener<String> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forURI(resource, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forURI(final Resource resource, final AsyncProcedure<String> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forURI(resource, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forURI(final Resource resource, final SyncProcedure<String> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forURI(resource, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forURI(final Resource resource, final Procedure<String> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forURI(resource, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forResource(final String id, final AsyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forResource(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forResource(final String id, final SyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forResource(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forResource(final String id, final Listener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forResource(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forResource(final String id, final AsyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forResource(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forResource(final String id, final SyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forResource(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forResource(final String id, final Procedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forResource(id, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forStatementSet(final Resource subject, final Resource relation,\r
+                       final AsyncSetListener<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forStatementSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forStatementSet(final Resource subject, final Resource relation,\r
+                       final SyncSetListener<Statement> procedure) {\r
+               \r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forStatementSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forStatementSet(final Resource subject, final Resource relation,\r
+                       final SetListener<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forStatementSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPredicateSet(final Resource subject,\r
+                       final AsyncSetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPredicateSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPredicateSet(final Resource subject,\r
+                       final SyncSetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPredicateSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPredicateSet(final Resource subject,\r
+                       final SetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPredicateSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPrincipalTypeSet(final Resource subject,\r
+                       final AsyncSetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPrincipalTypeSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPrincipalTypeSet(final Resource subject,\r
+                       final SyncSetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forPrincipalTypeSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPrincipalTypeSet(final Resource subject,\r
+                       final SetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPrincipalTypeSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forTypes(final Resource subject,\r
+                       final AsyncListener<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forTypes(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forTypes(final Resource subject,\r
+                       final SyncListener<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forTypes(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forTypes(final Resource subject, final Listener<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forTypes(subject, procedure);             \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forTypes(final Resource subject,\r
+                       final AsyncProcedure<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forTypes(subject, procedure);             \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forTypes(final Resource subject,\r
+                       final SyncProcedure<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forTypes(subject, procedure);             \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forTypes(final Resource subject,\r
+                       final Procedure<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forTypes(subject, procedure);     \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSupertypes(final Resource subject,\r
+                       final AsyncListener<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSupertypes(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSupertypes(final Resource subject,\r
+                       final SyncListener<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSupertypes(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSupertypes(final Resource subject,\r
+                       final Listener<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSupertypes(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSupertypes(final Resource subject,\r
+                       final AsyncProcedure<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSupertypes(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSupertypes(final Resource subject,\r
+                       final SyncProcedure<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSupertypes(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSupertypes(final Resource subject,\r
+                       final Procedure<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSupertypes(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleSuperrelation(final Resource subject,\r
+                       final AsyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleSuperrelation(subject, procedure);     \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSuperrelations(final Resource subject,\r
+                       final AsyncListener<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSuperrelations(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSuperrelations(final Resource subject,\r
+                       final SyncListener<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSuperrelations(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSuperrelations(final Resource subject,\r
+                       final Listener<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSuperrelations(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSuperrelations(final Resource subject,\r
+                       final AsyncProcedure<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSuperrelations(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSuperrelations(final Resource subject,\r
+                       final SyncProcedure<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSuperrelations(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSuperrelations(final Resource subject,\r
+                       final Procedure<Set<Resource>> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSuperrelations(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forObjectSet(final Resource subject, final Resource relation,\r
+                       final AsyncSetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forObjectSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forObjectSet(final Resource subject, final Resource relation,\r
+                       final SyncSetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forObjectSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forObjectSet(final Resource subject, final Resource relation,\r
+                       final SetListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forObjectSet(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forInverse(final Resource relation,\r
+                       final SyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forInverse(final Resource relation, final Listener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forInverse(final Resource relation,\r
+                       final AsyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forInverse(final Resource relation,\r
+                       final SyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forInverse(final Resource relation, final Procedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleObject(final Resource subject, final Resource relation,\r
+                       final AsyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleObject(final Resource subject, final Resource relation,\r
+                       final SyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleObject(final Resource subject, final Resource relation,\r
+                       final Listener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleObject(subject, relation, procedure);            \r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleObject(final Resource subject, final Resource relation,\r
+                       final AsyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleObject(final Resource subject, final Resource relation,\r
+                       final SyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleObject(final Resource subject, final Resource relation,\r
+                       final Procedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleStatement(final Resource subject, final Resource relation,\r
+                       final AsyncListener<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleStatement(final Resource subject, final Resource relation,\r
+                       final SyncListener<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleStatement(final Resource subject, final Resource relation,\r
+                       final Listener<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forSingleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+                               \r
+       }\r
+\r
+       @Override\r
+       public void forSingleStatement(final Resource subject, final Resource relation,\r
+                       final AsyncProcedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleStatement(final Resource subject, final Resource relation,\r
+                       final SyncProcedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleStatement(final Resource subject, final Resource relation,\r
+                       final Procedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject,\r
+                       final AsyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject,\r
+                       final SyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject, final Listener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject,\r
+                       final AsyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject,\r
+                       final SyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject,\r
+                       final Procedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject, final Resource baseType,\r
+                       final AsyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject, final Resource baseType,\r
+                       final SyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject, final Resource baseType,\r
+                       final Listener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject, final Resource baseType,\r
+                       final AsyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject, final Resource baseType,\r
+                       final SyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forSingleType(final Resource subject, final Resource baseType,\r
+                       final Procedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forSingleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final Binding binding,\r
+                       final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final Binding binding,\r
+                       final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final Binding binding,\r
+                       final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final Binding binding,\r
+                       final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final Binding binding,\r
+                       final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forValue(final Resource subject, final Binding binding,\r
+                       final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forValue(subject, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final Binding binding, final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final Binding binding, final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final Binding binding, final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final Binding binding, final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final Binding binding, final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forRelatedValue(final Resource subject, final Resource relation,\r
+                       final Binding binding, final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forRelatedValue(subject, relation, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forUniqueAdapted(final Resource resource, final Class<T> clazz,\r
+                       final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forUniqueAdapted(final Resource resource, final Class<T> clazz,\r
+                       final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forUniqueAdapted(final Resource resource, final Class<T> clazz,\r
+                       final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forUniqueAdapted(final Resource resource, final Class<T> clazz,\r
+                       final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forUniqueAdapted(final Resource resource, final Class<T> clazz,\r
+                       final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forUniqueAdapted(final Resource resource, final Class<T> clazz,\r
+                       final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleInverse(final Resource relation,\r
+                       final AsyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleInverse(final Resource relation,\r
+                       final SyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleInverse(final Resource relation,\r
+                       final Listener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleInverse(final Resource relation,\r
+                       final AsyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleInverse(final Resource relation,\r
+                       final SyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleInverse(final Resource relation,\r
+                       final Procedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleInverse(relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleObject(final Resource subject, final Resource relation,\r
+                       final AsyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleObject(final Resource subject, final Resource relation,\r
+                       final SyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleObject(final Resource subject, final Resource relation,\r
+                       final Listener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleObject(final Resource subject, final Resource relation,\r
+                       final AsyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleObject(final Resource subject, final Resource relation,\r
+                       final SyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleObject(final Resource subject, final Resource relation,\r
+                       final Procedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleObject(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleStatement(final Resource subject, final Resource relation,\r
+                       final AsyncListener<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleStatement(final Resource subject, final Resource relation,\r
+                       final SyncListener<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleStatement(final Resource subject, final Resource relation,\r
+                       final Listener<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleStatement(final Resource subject, final Resource relation,\r
+                       final AsyncProcedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleStatement(final Resource subject, final Resource relation,\r
+                       final SyncProcedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleStatement(final Resource subject, final Resource relation,\r
+                       final Procedure<Statement> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleStatement(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleType(final Resource subject, final Resource baseType,\r
+                       final AsyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleType(final Resource subject, final Resource baseType,\r
+                       final SyncListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleType(final Resource subject, final Resource baseType,\r
+                       final Listener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleType(final Resource subject, final Resource baseType,\r
+                       final AsyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleType(final Resource subject, final Resource baseType,\r
+                       final SyncProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forPossibleType(final Resource subject, final Resource baseType,\r
+                       final Procedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleType(subject, baseType, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject,\r
+                       final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject,\r
+                       final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject, final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject,\r
+                       final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject,\r
+                       final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject,\r
+                       final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject, final Binding binding,\r
+                       final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject, final Binding binding,\r
+                       final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject, final Binding binding,\r
+                       final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject, final Binding binding,\r
+                       final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject, final Binding binding,\r
+                       final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleValue(final Resource subject, final Binding binding,\r
+                       final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleValue(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final Binding binding, final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final Binding binding, final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final Binding binding, final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final Binding binding, final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final Binding binding, final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleRelatedValue(final Resource subject,\r
+                       final Resource relation, final Binding binding, final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleRelatedValue(subject, relation, binding, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleAdapted(final Resource resource, final Class<T> clazz,\r
+                       final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleAdapted(final Resource resource, final Class<T> clazz,\r
+                       final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleAdapted(final Resource resource, final Class<T> clazz,\r
+                       final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleAdapted(final Resource resource, final Class<T> clazz,\r
+                       final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleAdapted(final Resource resource, final Class<T> clazz,\r
+                       final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleAdapted(final Resource resource, final Class<T> clazz,\r
+                       final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleUniqueAdapted(final Resource resource,\r
+                       final Class<T> clazz, final AsyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleUniqueAdapted(final Resource resource,\r
+                       final Class<T> clazz, final SyncListener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleUniqueAdapted(final Resource resource,\r
+                       final Class<T> clazz, final Listener<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleUniqueAdapted(final Resource resource,\r
+                       final Class<T> clazz, final AsyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleUniqueAdapted(final Resource resource,\r
+                       final Class<T> clazz, final SyncProcedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public <T> void forPossibleUniqueAdapted(final Resource resource,\r
+                       final Class<T> clazz, final Procedure<T> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forPossibleUniqueAdapted(resource, clazz, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInstanceOf(final Resource resource, final Resource type,\r
+                       final AsyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInstanceOf(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInstanceOf(final Resource resource, final Resource type,\r
+                       final SyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInstanceOf(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInstanceOf(final Resource resource, final Resource type,\r
+                       final Listener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInstanceOf(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInstanceOf(final Resource resource, final Resource type,\r
+                       final AsyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInstanceOf(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInstanceOf(final Resource resource, final Resource type,\r
+                       final SyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInstanceOf(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInstanceOf(final Resource resource, final Resource type,\r
+                       final Procedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInstanceOf(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInheritedFrom(final Resource resource, final Resource type,\r
+                       final AsyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInheritedFrom(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInheritedFrom(final Resource resource, final Resource type,\r
+                       final SyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInheritedFrom(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInheritedFrom(final Resource resource, final Resource type,\r
+                       final Listener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInheritedFrom(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInheritedFrom(final Resource resource, final Resource type,\r
+                       final AsyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInheritedFrom(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInheritedFrom(final Resource resource, final Resource type,\r
+                       final SyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInheritedFrom(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsInheritedFrom(final Resource resource, final Resource type,\r
+                       final Procedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsInheritedFrom(resource, type, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsSubrelationOf(final Resource resource, final Resource relation,\r
+                       final AsyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsSubrelationOf(resource, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsSubrelationOf(final Resource resource, final Resource relation,\r
+                       final SyncListener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsSubrelationOf(resource, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsSubrelationOf(final Resource resource, final Resource relation,\r
+                       final Listener<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsSubrelationOf(resource, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsSubrelationOf(final Resource resource, final Resource relation,\r
+                       final AsyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsSubrelationOf(resource, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsSubrelationOf(final Resource resource, final Resource relation,\r
+                       final SyncProcedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsSubrelationOf(resource, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forIsSubrelationOf(final Resource resource, final Resource relation,\r
+                       final Procedure<Boolean> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forIsSubrelationOf(resource, relation, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forOrderedSet(final Resource subject,\r
+                       final AsyncMultiListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forOrderedSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forOrderedSet(final Resource subject,\r
+                       final SyncMultiListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forOrderedSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forOrderedSet(final Resource subject,\r
+                       final MultiListener<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forOrderedSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forOrderedSet(final Resource subject,\r
+                       final AsyncMultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forOrderedSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forOrderedSet(final Resource subject,\r
+                       final SyncMultiProcedure<Resource> procedure) {\r
+               \r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+                                       graph.forOrderedSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void forOrderedSet(final Resource subject,\r
+                       final MultiProcedure<Resource> procedure) {\r
+               try {\r
+                       session.syncRequest(new ReadRequest() {\r
+                               \r
+                               @Override\r
+                               public void run(ReadGraph graph) throws DatabaseException {\r
+               graph.forOrderedSet(subject, procedure);\r
+                               }\r
+                       });\r
+               } catch (DatabaseException e) {\r
+                       \r
+               }\r
+       }\r
+\r
+       @Override\r
+       public int thread() {\r
+               return -1;\r
+       }\r
+\r
+       @Override\r
+       public Session getSession() {\r
+               return session;\r
+       }\r
+\r
+       @Override\r
+       public Resource getBuiltin(final String id) throws ResourceNotFoundException,\r
+                       ServiceException {\r
+               try {\r
+                       return session.syncRequest(new Read<Resource>() {\r
+                               \r
+                               @Override\r
+                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
+                                       return graph.getBuiltin(id);\r
+                               }\r
+                               });\r
+                       } catch (DatabaseException e) {\r
+                               throw new ServiceException(e);\r
+                       }\r
+       }\r
+       \r
+       @Override\r
+       public VirtualGraph getProvider() {\r
+               return null;\r
+       }\r
+\r
+}\r