Properties Relationships Modeling is just… Taking a pen Drawing the structures on a whiteboard (i.e. the database) We don‘t need… Foreign keys Tables and schemas Deep knowledge in graph theory Type EXTENDS fqn:org.springframework.samples. petclinic.model.Owner
application using queries Which class extends from another class? Let‘s convert this to ASCII art… () as nodes -[]-> as directed relationships (c1)-[]->(c2)
application using queries Which class extends from another class? Let‘s convert this to ASCII art… () as nodes -[]-> as directed relationships (c1)-[:EXTENDS]->(c2)
extends from another class? Let‘s convert this to ASCII art… () as nodes -[]-> as directed relationships (c1:Class)-[:EXTENDS]->(c2:Type) C2 Type C1 Type Class EXTENDS
extends from another class? Pattern matching is the core principle of Cypher MATCH (c1:Class)-[:EXTENDS]->(c2:Type) RETURN c1.fqn, c2.fqn C2 Type C1 Type Class EXTENDS
Java language element: Package Definition of business modules on „top level“ 34 Shopping Cart „org.jqassistant.demo.cart“ Usermanagement „org.jqassistant.demo.user“
annotated with @javax.persistence.Entity with Jpa and Entity. [source,cypher,role=concept] ---- MATCH (t:Type)-[:ANNOTATED_BY]->()-[:OF_TYPE]->(a:Type) WHERE a.fqn ="javax.persistence.Entity" SET t:Jpa:Entity RETURN t AS Entity ----
in packages named "model". [source,cypher,role=constraint,requiresConcepts="jpa2:Entity"] ---- MATCH (package:Package)-[:CONTAINS]->(entity:Jpa:Entity) WHERE package.name <> "model" RETURN entity AS EntityInWrongPackage ----
system architecture Exploration of existing structures Validation of rules using concepts from architecture & design language Executable architecture and design specification