]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db/src/org/simantics/db/AsyncReadGraph.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db / src / org / simantics / db / AsyncReadGraph.java
diff --git a/bundles/org.simantics.db/src/org/simantics/db/AsyncReadGraph.java b/bundles/org.simantics.db/src/org/simantics/db/AsyncReadGraph.java
new file mode 100644 (file)
index 0000000..ab43142
--- /dev/null
@@ -0,0 +1,1138 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
+ * in Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.db;\r
+\r
+import java.util.Set;\r
+\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.db.exception.DatabaseException;\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.MultiRead;\r
+import org.simantics.db.request.Read;\r
+\r
+/**\r
+ * \r
+ * For accessing and manipulating the graph data in asynchronous manner. A client\r
+ * receives AsyncReadGraph instances for performing requests in {@link Read} and\r
+ * {@link MultiRead} as well as for reacting to request results using\r
+ * {@link AsyncProcedure}, {@link AsyncListener}, {@link AsyncMultiProcedure},\r
+ * {@link AsyncMultiListener} and {@link AsyncSetListener}\r
+ * <p>\r
+ * AsyncReadGraph instances are stateful and may not be stored and used outside the\r
+ * supplier method activation. The methods receiving AsyncReadGraph should not block for long\r
+ * periods of time since that may delay the processing of other requests. For a\r
+ * synchronous counterpart with the same functionality as AsyncReadGraph see\r
+ * {@link ReadGraph}\r
+ * \r
+ * @version 0.7\r
+ * @author Antti Villberg\r
+ * @see RequestProcessor\r
+ * @see AsyncRequestProcessor\r
+ * @see ReadGraph\r
+ * @see Resource\r
+ * @see Statement\r
+ */\r
+public interface AsyncReadGraph extends AsyncRequestProcessor {\r
+\r
+    /**\r
+     * @see ReadGraph#getURI(Resource)\r
+     */\r
+    void forURI(Resource resource, AsyncListener<String> procedure);\r
+    /**\r
+     * @see ReadGraph#getURI(Resource)\r
+     */\r
+    void forURI(Resource resource, SyncListener<String> procedure);\r
+    /**\r
+     * @see ReadGraph#getURI(Resource)\r
+     */\r
+    void forURI(Resource resource, Listener<String> procedure);\r
+    /**\r
+     * @see ReadGraph#getURI(Resource)\r
+     */\r
+    void forURI(Resource resource, AsyncProcedure<String> procedure);\r
+    /**\r
+     * @see ReadGraph#getURI(Resource)\r
+     */\r
+    void forURI(Resource resource, SyncProcedure<String> procedure);\r
+    /**\r
+     * @see ReadGraph#getURI(Resource)\r
+     */\r
+    void forURI(Resource resource, Procedure<String> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getResourceByURI(String)\r
+     */\r
+    void forResource(String id, AsyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getResourceByURI(String)\r
+     */\r
+    void forResource(String id, SyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getResourceByURI(String)\r
+     */\r
+    void forResource(String id, Listener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getResourceByURI(String)\r
+     */\r
+    void forResource(String id, AsyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getResourceByURI(String)\r
+     */\r
+    void forResource(String id, SyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getResourceByURI(String)\r
+     */\r
+    void forResource(String id, Procedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getBuiltin(String)\r
+     */\r
+    void forBuiltin(String id, AsyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getBuiltin(String)\r
+     */\r
+    void forBuiltin(String id, SyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getBuiltin(String)\r
+     */\r
+    void forBuiltin(String id, Listener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getBuiltin(String)\r
+     */\r
+    void forBuiltin(String id, AsyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getBuiltin(String)\r
+     */\r
+    void forBuiltin(String id, SyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getBuiltin(String)\r
+     */\r
+    void forBuiltin(String id, Procedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getStatements(Resource, Resource)\r
+     */\r
+    void forEachStatement(Resource subject, Resource relation, AsyncMultiProcedure<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getStatements(Resource, Resource)\r
+     */\r
+    void forEachStatement(Resource subject, Resource relation, SyncMultiProcedure<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getStatements(Resource, Resource)\r
+     */\r
+    void forEachStatement(Resource subject, Resource relation, MultiProcedure<Statement> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getStatements(Resource, Resource)\r
+     */\r
+    void forStatementSet(Resource subject, Resource relation, AsyncSetListener<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getStatements(Resource, Resource)\r
+     */\r
+    void forStatementSet(Resource subject, Resource relation, SyncSetListener<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getStatements(Resource, Resource)\r
+     */\r
+    void forStatementSet(Resource subject, Resource relation, SetListener<Statement> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getAssertedStatements(Resource, Resource)\r
+     */\r
+    void forEachAssertedStatement(Resource subject, Resource relation, AsyncMultiProcedure<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getAssertedStatements(Resource, Resource)\r
+     */\r
+    void forEachAssertedStatement(Resource subject, Resource relation, SyncMultiProcedure<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getAssertedStatements(Resource, Resource)\r
+     */\r
+    void forEachAssertedStatement(Resource subject, Resource relation, MultiProcedure<Statement> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getAssertedStatements(Resource, Resource)\r
+     */\r
+    void forAssertedStatementSet(Resource subject, Resource relation, AsyncSetListener<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getAssertedStatements(Resource, Resource)\r
+     */\r
+    void forAssertedStatementSet(Resource subject, Resource relation, SyncSetListener<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getAssertedStatements(Resource, Resource)\r
+     */\r
+    void forAssertedStatementSet(Resource subject, Resource relation, SetListener<Statement> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPredicates(Resource)\r
+     */\r
+    void forEachPredicate(Resource subject, AsyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPredicates(Resource)\r
+     */\r
+    void forEachPredicate(Resource subject, SyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPredicates(Resource)\r
+     */\r
+    void forEachPredicate(Resource subject, MultiProcedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPredicates(Resource)\r
+     */\r
+    void forPredicateSet(Resource subject, AsyncSetListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPredicates(Resource)\r
+     */\r
+    void forPredicateSet(Resource subject, SyncSetListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPredicates(Resource)\r
+     */\r
+    void forPredicateSet(Resource subject, SetListener<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPrincipalTypes(Resource)\r
+     */\r
+    void forEachPrincipalType(Resource subject, AsyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPrincipalTypes(Resource)\r
+     */\r
+    void forEachPrincipalType(Resource subject, SyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPrincipalTypes(Resource)\r
+     */\r
+    void forEachPrincipalType(Resource subject, MultiProcedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPrincipalTypes(Resource)\r
+     */\r
+    void forPrincipalTypeSet(Resource subject, AsyncSetListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPrincipalTypes(Resource)\r
+     */\r
+    void forPrincipalTypeSet(Resource subject, SyncSetListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPrincipalTypes(Resource)\r
+     */\r
+    void forPrincipalTypeSet(Resource subject, SetListener<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forTypes(Resource subject, AsyncListener<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forTypes(Resource subject, SyncListener<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forTypes(Resource subject, Listener<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forTypes(Resource subject, AsyncProcedure<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forTypes(Resource subject, SyncProcedure<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forTypes(Resource subject, Procedure<Set<Resource>> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getSupertypes(Resource)\r
+     */\r
+    void forSupertypes(Resource subject, AsyncListener<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getSupertypes(Resource)\r
+     */\r
+    void forSupertypes(Resource subject, SyncListener<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getSupertypes(Resource)\r
+     */\r
+    void forSupertypes(Resource subject, Listener<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getSupertypes(Resource)\r
+     */\r
+    void forSupertypes(Resource subject, AsyncProcedure<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getSupertypes(Resource)\r
+     */\r
+    void forSupertypes(Resource subject, SyncProcedure<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getSupertypes(Resource)\r
+     */\r
+    void forSupertypes(Resource subject, Procedure<Set<Resource>> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getSuperrelations(Resource)\r
+     */\r
+    void forDirectSuperrelations(Resource subject, AsyncMultiProcedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getSuperrelations(Resource)\r
+     */\r
+    void forPossibleSuperrelation(Resource subject, AsyncProcedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getSuperrelations(Resource)\r
+     */\r
+    void forSuperrelations(Resource subject, AsyncListener<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getSuperrelations(Resource)\r
+     */\r
+    void forSuperrelations(Resource subject, SyncListener<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getSuperrelations(Resource)\r
+     */\r
+    void forSuperrelations(Resource subject, Listener<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getSuperrelations(Resource)\r
+     */\r
+    void forSuperrelations(Resource subject, AsyncProcedure<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getSuperrelations(Resource)\r
+     */\r
+    void forSuperrelations(Resource subject, SyncProcedure<Set<Resource>> procedure);\r
+    /**\r
+     * @see ReadGraph#getSuperrelations(Resource)\r
+     */\r
+    void forSuperrelations(Resource subject, Procedure<Set<Resource>> procedure);\r
+\r
+    /**\r
+     * \r
+     * If relation is functional this do one of the following\r
+     * -call execute 0 or 1 times and then call finished\r
+     * -call exception with ManyObjectsForFunctionalRelation\r
+     * \r
+     * @see ReadGraph#getObjects(Resource, Resource)\r
+     */\r
+    void forEachObject(Resource subject, Resource relation, AsyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getObjects(Resource, Resource)\r
+     */\r
+    void forEachObject(Resource subject, Resource relation, SyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getObjects(Resource, Resource)\r
+     */\r
+    void forEachObject(Resource subject, Resource relation, MultiProcedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getObjects(Resource, Resource)\r
+     */\r
+//    void forEachDirectObject(Resource subject, Resource relation, AsyncMultiProcedure<Resource> procedure);\r
+//    /**\r
+//     * @see ReadGraph#getObjects(Resource, Resource)\r
+//     */\r
+//    void forEachDirectObject(Resource subject, Resource relation, SyncMultiProcedure<Resource> procedure);\r
+//    /**\r
+//     * @see ReadGraph#getObjects(Resource, Resource)\r
+//     */\r
+//    void forEachDirectObject(Resource subject, Resource relation, MultiProcedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getObjects(Resource, Resource)\r
+     */\r
+    void forEachDirectPredicate(Resource subject, AsyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getObjects(Resource, Resource)\r
+     */\r
+    void forEachDirectPredicate(Resource subject, SyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getObjects(Resource, Resource)\r
+     */\r
+    void forEachDirectPredicate(Resource subject, MultiProcedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getObjects(Resource, Resource)\r
+     */\r
+    void forObjectSet(Resource subject, Resource relation, AsyncSetListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getObjects(Resource, Resource)\r
+     */\r
+    void forObjectSet(Resource subject, Resource relation, SyncSetListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getObjects(Resource, Resource)\r
+     */\r
+    void forObjectSet(Resource subject, Resource relation, SetListener<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getAssertedObjects(Resource, Resource)\r
+     */\r
+    void forEachAssertedObject(Resource subject, Resource relation, AsyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getAssertedObjects(Resource, Resource)\r
+     */\r
+    void forEachAssertedObject(Resource subject, Resource relation, SyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getAssertedObjects(Resource, Resource)\r
+     */\r
+    void forEachAssertedObject(Resource subject, Resource relation, MultiProcedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getAssertedObjects(Resource, Resource)\r
+     */\r
+    void forAssertedObjectSet(Resource subject, Resource relation, AsyncSetListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getAssertedObjects(Resource, Resource)\r
+     */\r
+    void forAssertedObjectSet(Resource subject, Resource relation, SyncSetListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getAssertedObjects(Resource, Resource)\r
+     */\r
+    void forAssertedObjectSet(Resource subject, Resource relation, SetListener<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getInverse(Resource)\r
+     */\r
+    void forInverse(Resource relation, AsyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getInverse(Resource)\r
+     */\r
+    void forInverse(Resource relation, SyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getInverse(Resource)\r
+     */\r
+    void forInverse(Resource relation, Listener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getInverse(Resource)\r
+     */\r
+    void forInverse(Resource relation, AsyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getInverse(Resource)\r
+     */\r
+    void forInverse(Resource relation, SyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getInverse(Resource)\r
+     */\r
+    void forInverse(Resource relation, Procedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getSingleObject(Resource, Resource)\r
+     */\r
+    void forSingleObject(Resource subject, Resource relation, AsyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleObject(Resource, Resource)\r
+     */\r
+    void forSingleObject(Resource subject, Resource relation, SyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleObject(Resource, Resource)\r
+     */\r
+    void forSingleObject(Resource subject, Resource relation, Listener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleObject(Resource, Resource)\r
+     */\r
+    void forSingleObject(Resource subject, Resource relation, AsyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleObject(Resource, Resource)\r
+     */\r
+    void forSingleObject(Resource subject, Resource relation, SyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleObject(Resource, Resource)\r
+     */\r
+    void forSingleObject(Resource subject, Resource relation, Procedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getSingleStatement(Resource, Resource)\r
+     */\r
+    void forSingleStatement(Resource subject, Resource relation, AsyncListener<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleStatement(Resource, Resource)\r
+     */\r
+    void forSingleStatement(Resource subject, Resource relation, SyncListener<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleStatement(Resource, Resource)\r
+     */\r
+    void forSingleStatement(Resource subject, Resource relation, Listener<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleStatement(Resource, Resource)\r
+     */\r
+    void forSingleStatement(Resource subject, Resource relation, AsyncProcedure<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleStatement(Resource, Resource)\r
+     */\r
+    void forSingleStatement(Resource subject, Resource relation, SyncProcedure<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleStatement(Resource, Resource)\r
+     */\r
+    void forSingleStatement(Resource subject, Resource relation, Procedure<Statement> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, AsyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, SyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, Listener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, AsyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, SyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, Procedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, Resource baseType, AsyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, Resource baseType, SyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, Resource baseType, Listener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, Resource baseType, AsyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, Resource baseType, SyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getSingleType(Resource, Resource)\r
+     */\r
+    void forSingleType(Resource subject, Resource baseType, Procedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, Binding binding, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, Binding binding, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, Binding binding, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, Binding binding, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, Binding binding, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getValue(Resource)\r
+     */\r
+    <T> void forValue(Resource subject, Binding binding, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, Binding binding, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, Binding binding, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, Binding binding, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, Binding binding, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, Binding binding, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forRelatedValue(Resource subject, Resource relation, Binding binding, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forAdapted(Resource resource, Class<T> clazz, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forAdapted(Resource resource, Class<T> clazz, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forAdapted(Resource resource, Class<T> clazz, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forAdapted(Resource resource, Class<T> clazz, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forAdapted(Resource resource, Class<T> clazz, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forAdapted(Resource resource, Class<T> clazz, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forUniqueAdapted(Resource resource, Class<T> clazz, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forUniqueAdapted(Resource resource, Class<T> clazz, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forUniqueAdapted(Resource resource, Class<T> clazz, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forUniqueAdapted(Resource resource, Class<T> clazz, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forUniqueAdapted(Resource resource, Class<T> clazz, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#adapt(Resource, Class)\r
+     */\r
+    <T> void forUniqueAdapted(Resource resource, Class<T> clazz, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPossibleInverse(Resource)\r
+     */\r
+    void forPossibleInverse(Resource relation, AsyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleInverse(Resource)\r
+     */\r
+    void forPossibleInverse(Resource relation, SyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleInverse(Resource)\r
+     */\r
+    void forPossibleInverse(Resource relation, Listener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleInverse(Resource)\r
+     */\r
+    void forPossibleInverse(Resource relation, AsyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleInverse(Resource)\r
+     */\r
+    void forPossibleInverse(Resource relation, SyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleInverse(Resource)\r
+     */\r
+    void forPossibleInverse(Resource relation, Procedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPossibleObject(Resource, Resource)\r
+     */\r
+    void forPossibleObject(Resource subject, Resource relation, AsyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleObject(Resource, Resource)\r
+     */\r
+    void forPossibleObject(Resource subject, Resource relation, SyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleObject(Resource, Resource)\r
+     */\r
+    void forPossibleObject(Resource subject, Resource relation, Listener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleObject(Resource, Resource)\r
+     */\r
+    void forPossibleObject(Resource subject, Resource relation, AsyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleObject(Resource, Resource)\r
+     */\r
+    void forPossibleObject(Resource subject, Resource relation, SyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleObject(Resource, Resource)\r
+     */\r
+    void forPossibleObject(Resource subject, Resource relation, Procedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPossibleStatement(Resource, Resource)\r
+     */\r
+    void forPossibleStatement(Resource subject, Resource relation, AsyncListener<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleStatement(Resource, Resource)\r
+     */\r
+    void forPossibleStatement(Resource subject, Resource relation, SyncListener<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleStatement(Resource, Resource)\r
+     */\r
+    void forPossibleStatement(Resource subject, Resource relation, Listener<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleStatement(Resource, Resource)\r
+     */\r
+    void forPossibleStatement(Resource subject, Resource relation, AsyncProcedure<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleStatement(Resource, Resource)\r
+     */\r
+    void forPossibleStatement(Resource subject, Resource relation, SyncProcedure<Statement> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleStatement(Resource, Resource)\r
+     */\r
+    void forPossibleStatement(Resource subject, Resource relation, Procedure<Statement> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPossibleType(Resource, Resource)\r
+     */\r
+    void forPossibleType(Resource subject, Resource baseType, AsyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleType(Resource, Resource)\r
+     */\r
+    void forPossibleType(Resource subject, Resource baseType, SyncListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleType(Resource, Resource)\r
+     */\r
+    void forPossibleType(Resource subject, Resource baseType, Listener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleType(Resource, Resource)\r
+     */\r
+    void forPossibleType(Resource subject, Resource baseType, AsyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleType(Resource, Resource)\r
+     */\r
+    void forPossibleType(Resource subject, Resource baseType, SyncProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleType(Resource, Resource)\r
+     */\r
+    void forPossibleType(Resource subject, Resource baseType, Procedure<Resource> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource, Binding)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, Binding binding, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource, Binding)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, Binding binding, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource, Binding)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, Binding binding, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource, Binding)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, Binding binding, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource, Binding)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, Binding binding, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleValue(Resource, Binding)\r
+     */\r
+    <T> void forPossibleValue(Resource subject, Binding binding, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, Binding binding, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, Binding binding, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, Binding binding, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, Binding binding, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, Binding binding, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleRelatedValue(Resource, Resource, Binding)\r
+     */\r
+    <T> void forPossibleRelatedValue(Resource subject, Resource relation, Binding binding, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleAdapted(Resource resource, Class<T> clazz, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleAdapted(Resource resource, Class<T> clazz, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleAdapted(Resource resource, Class<T> clazz, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleAdapted(Resource resource, Class<T> clazz, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleAdapted(Resource resource, Class<T> clazz, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleAdapted(Resource resource, Class<T> clazz, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleUniqueAdapted(Resource resource, Class<T> clazz, AsyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleUniqueAdapted(Resource resource, Class<T> clazz, SyncListener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleUniqueAdapted(Resource resource, Class<T> clazz, Listener<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleUniqueAdapted(Resource resource, Class<T> clazz, AsyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleUniqueAdapted(Resource resource, Class<T> clazz, SyncProcedure<T> procedure);\r
+    /**\r
+     * @see ReadGraph#getPossibleAdapter(Resource, Class)\r
+     */\r
+    <T> void forPossibleUniqueAdapted(Resource resource, Class<T> clazz, Procedure<T> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#isInstanceOf(Resource, Resource)\r
+     */\r
+    void forIsInstanceOf(Resource resource, Resource type, AsyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isInstanceOf(Resource, Resource)\r
+     */\r
+    void forIsInstanceOf(Resource resource, Resource type, SyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isInstanceOf(Resource, Resource)\r
+     */\r
+    void forIsInstanceOf(Resource resource, Resource type, Listener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isInstanceOf(Resource, Resource)\r
+     */\r
+    void forIsInstanceOf(Resource resource, Resource type, AsyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isInstanceOf(Resource, Resource)\r
+     */\r
+    void forIsInstanceOf(Resource resource, Resource type, SyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isInstanceOf(Resource, Resource)\r
+     */\r
+    void forIsInstanceOf(Resource resource, Resource type, Procedure<Boolean> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#isInheritedFrom(Resource, Resource)\r
+     */\r
+    void forIsInheritedFrom(Resource resource, Resource type, AsyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isInheritedFrom(Resource, Resource)\r
+     */\r
+    void forIsInheritedFrom(Resource resource, Resource type, SyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isInheritedFrom(Resource, Resource)\r
+     */\r
+    void forIsInheritedFrom(Resource resource, Resource type, Listener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isInheritedFrom(Resource, Resource)\r
+     */\r
+    void forIsInheritedFrom(Resource resource, Resource type, AsyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isInheritedFrom(Resource, Resource)\r
+     */\r
+    void forIsInheritedFrom(Resource resource, Resource type, SyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isInheritedFrom(Resource, Resource)\r
+     */\r
+    void forIsInheritedFrom(Resource resource, Resource type, Procedure<Boolean> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#isSubrelationOf(Resource, Resource)\r
+     */\r
+    void forIsSubrelationOf(Resource resource, Resource relation, AsyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isSubrelationOf(Resource, Resource)\r
+     */\r
+    void forIsSubrelationOf(Resource resource, Resource relation, SyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isSubrelationOf(Resource, Resource)\r
+     */\r
+    void forIsSubrelationOf(Resource resource, Resource relation, Listener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isSubrelationOf(Resource, Resource)\r
+     */\r
+    void forIsSubrelationOf(Resource resource, Resource relation, AsyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isSubrelationOf(Resource, Resource)\r
+     */\r
+    void forIsSubrelationOf(Resource resource, Resource relation, SyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#isSubrelationOf(Resource, Resource)\r
+     */\r
+    void forIsSubrelationOf(Resource resource, Resource relation, Procedure<Boolean> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource)\r
+     */\r
+    void forHasStatement(Resource subject, AsyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource)\r
+     */\r
+    void forHasStatement(Resource subject, SyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Listener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource)\r
+     */\r
+    void forHasStatement(Resource subject, AsyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource)\r
+     */\r
+    void forHasStatement(Resource subject, SyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Procedure<Boolean> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, AsyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, SyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, Listener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, AsyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, SyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, Procedure<Boolean> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, Resource object, AsyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, Resource object, SyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, Resource object, Listener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, Resource object, AsyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, Resource object, SyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasStatement(Resource, Resource, Resource)\r
+     */\r
+    void forHasStatement(Resource subject, Resource relation, Resource object, Procedure<Boolean> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#hasValue(Resource)\r
+     */\r
+    void forHasValue(Resource subject, AsyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasValue(Resource)\r
+     */\r
+    void forHasValue(Resource subject, SyncListener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasValue(Resource)\r
+     */\r
+    void forHasValue(Resource subject, Listener<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasValue(Resource)\r
+     */\r
+    void forHasValue(Resource subject, AsyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasValue(Resource)\r
+     */\r
+    void forHasValue(Resource subject, SyncProcedure<Boolean> procedure);\r
+    /**\r
+     * @see ReadGraph#hasValue(Resource)\r
+     */\r
+    void forHasValue(Resource subject, Procedure<Boolean> procedure);\r
+\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forOrderedSet(Resource subject, AsyncMultiListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forOrderedSet(Resource subject, SyncMultiListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forOrderedSet(Resource subject, MultiListener<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forOrderedSet(Resource subject, AsyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forOrderedSet(Resource subject, SyncMultiProcedure<Resource> procedure);\r
+    /**\r
+     * @see ReadGraph#getTypes(Resource)\r
+     */\r
+    void forOrderedSet(Resource subject, MultiProcedure<Resource> procedure);\r
+\r
+    int thread();\r
+//    void inc();\r
+//    void dec();\r
+    \r
+    boolean isImmutable(Resource resource) throws DatabaseException;\r
+    \r
+}\r