anchor.diff:    n.firstName, n.lastName;
   ----
   
  -If a entity has a label it can be assumed that this entity represents some specific type of data which enforces the presence of specific properties and relationships (e.g. firstName, lastName for persons).
  +If a node has a label it can be assumed that this entity represents some specific type of data which enforces the
  +presence of specific properties and relationships (e.g. firstName, lastName for persons).
   
  -:numbered:
  -
  -The First Section
  ------------------
  -Article sections start at level 1 and can be nested up to four levels
  -deep.
  -footnote:[An example footnote.]
  -indexterm:[Example index entry]
  -
  -And now for something completely different: ((monkeys)), lions and
  -tigers (Bengal and Siberian) using the alternative syntax index
  -entries.
  -(((Big cats,Lions)))
  -(((Big cats,Tigers,Bengal Tiger)))
  -(((Big cats,Tigers,Siberian Tiger)))
  -Note that multi-entry terms generate separate index entries.
  -
  -Here are a couple of image examples: an image:images/smallnew.png[]
  -example inline image followed by an example block image:
  -
  -.Tiger block image
  -image::images/tiger.png[Tiger image]
  -
  -Followed by an example table:
  -
  -.An example table
  -[width="60%",options="header"]
  -|==============================================
  -| Option          | Description
  -| -a 'USER GROUP' | Add 'USER' to 'GROUP'.
  -| -R 'GROUP'      | Disables access to 'GROUP'.
  -|==============================================
  -
  -.An example example
  -===============================================
  -Lorum ipum...
  -===============================================
  -
  -[[X1]]
  -Sub-section with Anchor
  -~~~~~~~~~~~~~~~~~~~~~~~
  -Sub-section at level 2.
  -
  -A Nested Sub-section
  -^^^^^^^^^^^^^^^^^^^^
  -Sub-section at level 3.
  -
  -Yet another nested Sub-section
  -++++++++++++++++++++++++++++++
  -Sub-section at level 4.
  -
  -This is the maximum sub-section depth supported by the distributed
  -AsciiDoc configuration.
  -footnote:[A second example footnote.]
  -
  -
  -The Second Section
  -------------------
  -Article sections are at level 1 and can contain sub-sections nested up
  -to four deep.
  -
  -An example link to anchor at start of the <<X1,first sub-section>>.
  -indexterm:[Second example index entry]
  -
  -An example link to a bibliography entry <<taoup>>.
  -
  -
  -:numbered!:
  -
  -[appendix]
  -Example Appendix
  -----------------
  -AsciiDoc article appendices are just just article sections with
  -'specialsection' titles.
  -
  -Appendix Sub-section
  -~~~~~~~~~~~~~~~~~~~~
  -Appendix sub-section at level 2.
  -
  -
  -[bibliography]
  -Example Bibliography
  ---------------------
  -The bibliography list is a style of AsciiDoc bulleted list.
  -
  -[bibliography]
  -- [[[taoup]]] Eric Steven Raymond. 'The Art of Unix
  -  Programming'. Addison-Wesley. ISBN 0-13-142901-9.
  -- [[[walsh-muellner]]] Norman Walsh & Leonard Muellner.
  -  'DocBook - The Definitive Guide'. O'Reilly & Associates. 1999.
  -  ISBN 1-56592-580-7.
  -
  -
  -[glossary]
  -Example Glossary
  -----------------
  -Glossaries are optional. Glossaries entries are an example of a style
  -of AsciiDoc labeled lists.
  -
  -[glossary]
  -A glossary term::
  -  The corresponding (indented) definition.
  -
  -A second glossary term::
  -  The corresponding (indented) definition.
  -
  -
  -ifdef::backend-docbook[]
  -[index]
  -Example Index
  --------------
  -////////////////////////////////////////////////////////////////
  -The index is normally left completely empty, it's contents being
  -generated automatically by the DocBook toolchain.
  -////////////////////////////////////////////////////////////////
  -endif::backend-docbook[]
  
positive.code: ==============================
  Dirk Mahler <dirk.mahler@buschmais.com>
  
  This document describes the Java language binding of Composite Data Objects for the graph database Neo4j.
  
  :numbered!:
  [abstract]
  Composite Data Objects
  ----------------------
  Modeling data objects in various domains often requires common properties (e.g. lastChangedBy, created, name, id, etc.)
  to be present in several data types. This is commonly solved by defining abstract base types representing a specific
  aspect or role and defining these properties here. Concrete data types may derive from these base types if the
  information is needed. This approach comes to its limits if more than one aspect shall be re-used in one
  Java POJO as multiple inheritance is not supported for classes in the Java language.
  
  Composite Data Objects (CDO) allow modeling the types as interfaces by only specifying the required accessor methods
  (i.e. getter and setter) and composing these types:
  
  Person.java
  [source,java]
  
negative.code:    String getName();
     void setName();
   }
  
  Actor.java
  [source,java]
   public interface Actor extends Person {
     List<Movie> getActedIn();
   }
  
  Director.java
  [source,java]
   public interface Director extends Person {
     List<Movie> getDirected();
   }
  
  Movie.java
  [source,java]
   public interface Movie {
     String getTitle();
     void setTitle();
  
     Director getDirectedBy();
     void setDirectedBy(Director directedBy);
  
     List<Actors> getActors();
   }
  
  Using the CDO API the following use case can be implemented:
  
  IndianaJones.java
  [source,java]
   public class IndianaJones {
  
     public static void main(String[] args) {
       CdoManagerFactory cmf = Cdo.createCdoManagerFactory("movies");
       CdoManager cm = cmf.createCdoManager();
       cm.currentTransaction.begin();
       Actor harrison = cm.create(Actor.class);
       harrison.setName("Harrison Ford");
       Directory steven = cm.create(Director.class);
       steven.setName("Steven Spielberg");
       Movie raiders = cm.create(Movie.class);
       raiders.setTitle("Raiders Of The Lost Ark");
       raiders.getActors().add(harrison);
       raiders.setDirectedBy(steven);
       cm.currentTransaction.commit();
       cmf.close();
     }
   }
  
  The types Actor and Director use a static composition as they extend from the type Person. But what happens if a person
  works as both an actor and director? Using static composition a new type would be created:
  
  DirectingActor.java
  [source,java]
   public interface DirectingActor extends Director, Actor {
   }
  
  
  Mapping Composite Data Objects to Neo4j
  ---------------------------------------
  
  As a graph database Neo4j provides very good capabilities to model highly interconnected data structures consisting as
  nodes and relationships between them. With release 2.0 the concept of labels has been introduced. One or more number of
  labels can be added to a node:
  
  [source]
  ----
  