Index: src/main/java/de/mpiwg/itgroup/annotations/Annotation.java
===================================================================
--- src/main/java/de/mpiwg/itgroup/annotations/Annotation.java	(revision 20)
+++ src/main/java/de/mpiwg/itgroup/annotations/Annotation.java	(revision 40)
@@ -39,5 +39,5 @@
     
     /**
-     * The types of annotation targets.
+     * The types of annotation target fragments.
      *
      */
@@ -50,4 +50,11 @@
      */
     protected FragmentTypes fragmentType;
+    
+    
+    /**
+     * The uri of the resource that is annotated e.g. a book. 
+     * The target is part of this resource e.g. a page of a book.
+     */
+    protected String resourceUri;
     
     /**
@@ -224,4 +231,18 @@
 
     /**
+     * @return the resourceUri
+     */
+    public String getResourceUri() {
+        return resourceUri;
+    }
+
+    /**
+     * @param resourceUri the resourceUri to set
+     */
+    public void setResourceUri(String resourceUri) {
+        this.resourceUri = resourceUri;
+    }
+
+    /**
      * @return the creator
      */
Index: src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java
===================================================================
--- src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java	(revision 34)
+++ src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java	(revision 40)
@@ -41,5 +41,5 @@
 
     public static enum NodeTypes {
-        ANNOTATION, PERSON, TARGET, GROUP, TAG
+        ANNOTATION, PERSON, TARGET, GROUP, TAG, RESOURCE
     }
 
@@ -50,5 +50,5 @@
 
     public static enum RelationTypes implements RelationshipType {
-        ANNOTATES, CREATED, PERMITS_ADMIN, PERMITS_DELETE, PERMITS_UPDATE, PERMITS_READ, MEMBER_OF, HAS_TAG
+        ANNOTATES, CREATED, PERMITS_ADMIN, PERMITS_DELETE, PERMITS_UPDATE, PERMITS_READ, MEMBER_OF, HAS_TAG, PART_OF
     }
 
@@ -65,4 +65,5 @@
         nodeIndexes.add(NodeTypes.GROUP.ordinal(), graphDb.index().forNodes("groups"));
         nodeIndexes.add(NodeTypes.TAG.ordinal(), graphDb.index().forNodes("tags"));
+        nodeIndexes.add(NodeTypes.RESOURCE.ordinal(), graphDb.index().forNodes("resources"));
     }
 
@@ -527,7 +528,8 @@
              */
             String targetBaseUri = annot.getTargetBaseUri();
+            Node targetNode = null;
             if (targetBaseUri != null) {
-                Node target = getOrCreateTargetNode(targetBaseUri);
-                getOrCreateRelation(annotNode, RelationTypes.ANNOTATES, target);
+                targetNode = getOrCreateTargetNode(targetBaseUri, NodeTypes.TARGET);
+                getOrCreateRelation(annotNode, RelationTypes.ANNOTATES, targetNode);
             }
 
@@ -540,4 +542,14 @@
                 annotNode.setProperty("targetFragment", targetFragment);
                 annotNode.setProperty("fragmentType", fragmentType.name());
+            }
+
+            /*
+             * the annotation resource
+             */
+            String resourceUri = annot.getResourceUri();
+            if (resourceUri != null) {
+                Node resource = getOrCreateTargetNode(resourceUri, NodeTypes.RESOURCE);
+                getOrCreateRelation(annotNode, RelationTypes.ANNOTATES, resource);
+                getOrCreateRelation(targetNode, RelationTypes.PART_OF, resource);
             }
 
@@ -711,4 +723,5 @@
      */
     protected Relationship getOrCreateRelation(Node start, RelationshipType type, Node end) {
+        if (start == null || end == null) return null;
         if (start.hasRelationship()) {
             // there are relations
@@ -753,6 +766,6 @@
     }
 
-    protected Node getOrCreateTargetNode(String uri) {
-        Index<Node> idx = getNodeIndex(NodeTypes.TARGET);
+    protected Node getOrCreateTargetNode(String uri, NodeTypes type) {
+        Index<Node> idx = getNodeIndex(type);
         IndexHits<Node> targets = idx.get("uri", uri);
         Node target = targets.getSingle();
@@ -762,5 +775,5 @@
             try {
                 target = graphDb.createNode();
-                target.setProperty("TYPE", NodeTypes.TARGET.name());
+                target.setProperty("TYPE", type.name());
                 target.setProperty("uri", uri);
                 idx.add(target, "uri", uri);
Index: src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotations.java
===================================================================
--- src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotations.java	(revision 37)
+++ src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotations.java	(revision 40)
@@ -24,5 +24,4 @@
 import de.mpiwg.itgroup.annotations.Annotation;
 import de.mpiwg.itgroup.annotations.Person;
-import de.mpiwg.itgroup.annotations.Tag;
 import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
 import de.mpiwg.itgroup.annotations.restlet.utils.JSONObjectComparator;
@@ -56,15 +55,13 @@
         logger.debug("annotation-id=" + id);
 
-        
-        // do authentication
-        Person authUser = Person.createPersonWithId(this.checkAuthToken(entity));
-        logger.debug("request authenticated=" + authUser);
-
         if (id == null) {
             
-            return getAllAnnotations(authUser);
-        }
-
-     
+            return getAllAnnotations();
+        }
+
+        // do authentication
+        Person authUser = Person.createPersonWithId(this.checkAuthToken(entity));
+        logger.debug("request authenticated=" + authUser);
+
         AnnotationStore store = getAnnotationStore();
         Annotation annot = store.getAnnotationById(id);
@@ -85,5 +82,5 @@
     }
 
-    private Representation getAllAnnotations(Person authUser) {
+    private Representation getAllAnnotations() {
     	
     	 Form form = getRequest().getResourceRef().getQueryAsForm();
@@ -100,7 +97,5 @@
        	List<Annotation> annotations = store.getAnnotations(null, null);
         for (Annotation annotation : annotations) {
-          	 //check permission
-			 if (!annotation.isActionAllowed("read", authUser, store)) continue;
-     
+            	
         	 JSONObject jo = createAnnotatorJson(annotation,false);
              results.add(jo);
Index: src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotationsByTags.java
===================================================================
--- src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotationsByTags.java	(revision 37)
+++ src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorAnnotationsByTags.java	(revision 31)
@@ -18,5 +18,4 @@
 import de.mpiwg.itgroup.annotations.Annotation;
 import de.mpiwg.itgroup.annotations.NS;
-import de.mpiwg.itgroup.annotations.Person;
 import de.mpiwg.itgroup.annotations.Tag;
 import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
@@ -39,9 +38,4 @@
         setCorsHeaders();
        
-        // do authentication
-        Person authUser = Person.createPersonWithId(this.checkAuthToken(entity));
-        logger.debug("request authenticated=" + authUser);
-
-        
         String jsonId = (String) getRequest().getAttributes().get("id");
         
@@ -66,8 +60,5 @@
         
 		for (Annotation annot : annotations) {
-			//check permission
-			if (!annot.isActionAllowed("read", authUser, store)) continue;
-            
-			JSONObject jo = createAnnotatorJson(annot,false);
+            JSONObject jo = createAnnotatorJson(annot,false);
             results.add(jo);
         }
Index: src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java
===================================================================
--- src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java	(revision 22)
+++ src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java	(revision 40)
@@ -188,4 +188,7 @@
             jo.put("text", annot.getBodyText());
             jo.put("uri", annot.getTargetBaseUri());
+            if (annot.getResourceUri() != null) {
+                jo.put("resource", annot.getResourceUri());
+            }
 
             /*
@@ -442,4 +445,10 @@
         }
         /*
+         * resource uri
+         */
+        if (jo.has("resource")) {
+            annot.setResourceUri(jo.getString("resource"));
+        }
+        /*
          * annotation text
          */
