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
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?