DDI & Model-View-Controller:
 An Architectural Perspective
    Dennis Wegener, Matthäus
   Zloch, Thomas Bosch (GESIS)
          Dagstuhl, 23.10.2012
Overview Architecture Missy/StarDat
   Presentation                         MVC




  Business Logic




Abstract Persistence




    Persistence
                                        Page 2
Software Management - Maven & GIT
• Apache Maven
   – software project management and comprehension tool
• Maven Modules for data modelling in our projects:
   – Abstract module for DDI (based on DDI ontology)               DDI model
   – Concrete modules for each project that
       • Inherit from abstract ddi module             DDI model                DDI model
       • Add project-specific data fields              + Missy                  + StarDat
                                                      Extensions               Extensions
• Sharing via VersionControlSystem
   – Project sources in internal VCS (GESIS-SVN)
   – Data Module shared externally (GIT)
       • https://github.com/missy-project/ddi-model
Missy Maven Structure
Data model & presentation - MVC
• MVC design pattern
• Model
   – Domain classes
   – Attributes
   – Relations
• View
   – Representation
   – JSP, Velocity, XML, JSON, …
• Controller
   – Commands
   – RESTful interface
RESTful interface
• Well-defined interface based on HTTP
   – With few basic methods: GET, POST, PUT, DELETE
   – Response codes (e.g. 200 OK, 404 Not Found)
   – Data supported described by MIME types (e.g. text/xml,
     application/json)
• Resources are identified using URIs
   – Collection URI (like http://missy.org/studies)
   – Element URI (like http://missy.org/studies/studyZA1000)
• Resources could map to domain classes / entities of the
  DDI ontology
Data model & persistance – API
• Once you have the model you can…
  – Generate views / user interfaces
  – Generate storage model (in RDB via hibernate)
• Abstract persistance API
  – To be published …
• Concrete Implementations
  – Relational DB
  – DDI XML files
  –…
Missy Example
• Question:
   – DDI Ontology: class Question,
     fields like dcterms_identifier, …, field question text
• Variable:
   – DDI Ontology: class Variable,
     fields like dcterms_identifier,…
   – Missy: inherits class Variable,
     adds fields variable name, variable label, classification, …
• Relation:
   – Variable * hasQuestion 1 Question
   – Defined at level of DDI Ontology
Missy Extension




  DDI Ontology


                  Page 9
Key Messages & Questions
• DDI model implemented as abstract data model in OO
  programming language
   – According to MVC - domain classes with attributes & relations
   – Do we need a standard REST interface?
• DDI model not directly based on XML representation
   – „Data model vs. Data format“
   – Export mechanisms for XML based representation
• DDI model integrated into project‘s architectures
   – Does it make sense to create a reference architecture?
• Reuse of software modules is possible
   – We already share modules/code between internal projects Missy & StarDat
   – Is anyone else interested in sharing?

2012.10 - DDI Lifecycle - Moving Forward - 3

  • 1.
    DDI & Model-View-Controller: An Architectural Perspective Dennis Wegener, Matthäus Zloch, Thomas Bosch (GESIS) Dagstuhl, 23.10.2012
  • 2.
    Overview Architecture Missy/StarDat Presentation MVC Business Logic Abstract Persistence Persistence Page 2
  • 3.
    Software Management -Maven & GIT • Apache Maven – software project management and comprehension tool • Maven Modules for data modelling in our projects: – Abstract module for DDI (based on DDI ontology) DDI model – Concrete modules for each project that • Inherit from abstract ddi module DDI model DDI model • Add project-specific data fields + Missy + StarDat Extensions Extensions • Sharing via VersionControlSystem – Project sources in internal VCS (GESIS-SVN) – Data Module shared externally (GIT) • https://github.com/missy-project/ddi-model
  • 4.
  • 5.
    Data model &presentation - MVC • MVC design pattern • Model – Domain classes – Attributes – Relations • View – Representation – JSP, Velocity, XML, JSON, … • Controller – Commands – RESTful interface
  • 6.
    RESTful interface • Well-definedinterface based on HTTP – With few basic methods: GET, POST, PUT, DELETE – Response codes (e.g. 200 OK, 404 Not Found) – Data supported described by MIME types (e.g. text/xml, application/json) • Resources are identified using URIs – Collection URI (like http://missy.org/studies) – Element URI (like http://missy.org/studies/studyZA1000) • Resources could map to domain classes / entities of the DDI ontology
  • 7.
    Data model &persistance – API • Once you have the model you can… – Generate views / user interfaces – Generate storage model (in RDB via hibernate) • Abstract persistance API – To be published … • Concrete Implementations – Relational DB – DDI XML files –…
  • 8.
    Missy Example • Question: – DDI Ontology: class Question, fields like dcterms_identifier, …, field question text • Variable: – DDI Ontology: class Variable, fields like dcterms_identifier,… – Missy: inherits class Variable, adds fields variable name, variable label, classification, … • Relation: – Variable * hasQuestion 1 Question – Defined at level of DDI Ontology
  • 9.
    Missy Extension DDI Ontology Page 9
  • 10.
    Key Messages &Questions • DDI model implemented as abstract data model in OO programming language – According to MVC - domain classes with attributes & relations – Do we need a standard REST interface? • DDI model not directly based on XML representation – „Data model vs. Data format“ – Export mechanisms for XML based representation • DDI model integrated into project‘s architectures – Does it make sense to create a reference architecture? • Reuse of software modules is possible – We already share modules/code between internal projects Missy & StarDat – Is anyone else interested in sharing?