Unifying and Generalizing Relations in Role-Based Data Modeling and Navigation

Object-oriented programming languages support concise navigation of relations represented by references. However, relations are not first-class citizens and bidirectional navigation is not supported. The relational paradigm provides first-class relations, but with bidirectional navigation through verbose queries. We present a systematic analysis of approaches to modeling and navigating relations. By unifying and generalizing the features of these approaches, we developed the design of a data modeling language that features first-class relations, n-ary relations, native multiplicities, bidirectional relations and concise navigation. The language static and dynamic semantics are formally specified and the language is implemented in the Spoofax language workbench. Evaluation of this implementation shows the language is concise and has good usability but lacks expressiveness.

[1]  David J. Pearce,et al.  Implementing relationships using Affinity , 2009 .

[2]  Eelco Visser,et al.  Static consistency checking of web applications with WebDSL , 2011, J. Symb. Comput..

[3]  Klaus R. Dittrich,et al.  Object-Oriented Database Systems: The Notion and the Issue , 1986, OODBS.

[4]  William M. Waite Code Generation , 1976, Compiler Construction.

[5]  M. F.,et al.  Bibliography , 1985, Experimental Gerontology.

[6]  Gavin M. Bierman,et al.  First-Class Relationships in an Object-Oriented Language , 2005, ECOOP.

[7]  Daco Harkes Relations: a first class relationship and first class derivations programming language , 2014, MODULARITY.

[8]  Mira Mezini,et al.  Reactive behavior in object-oriented applications: an analysis and a research roadmap , 2013, AOSD.

[9]  E. F. Codd,et al.  A relational model of data for large shared data banks , 1970, CACM.

[10]  Eelco Visser,et al.  The spoofax language workbench: rules for declarative specification of languages and IDEs , 2010, OOPSLA.

[11]  Inderpal Singh Mumick,et al.  The Stanford Data Warehousing Project , 1995 .

[12]  Alisdair Stuart Wren,et al.  Relationships for object-oriented programming languages , 2007 .

[13]  Eelco Visser,et al.  WebDSL: A Case Study in Domain-Specific Language Engineering , 2007, GTTSE.

[14]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

[15]  Herman Lam,et al.  OQL: A Query Language for Manipulating Object-oriented Databases , 1989, VLDB.

[16]  Erik Ernst,et al.  ECOOP 2007 - Object-Oriented Programming, 21st European Conference, Berlin, Germany, July 30 - August 3, 2007, Proceedings , 2007, ECOOP.

[17]  Terry Halpin,et al.  Object-Role Modeling (ORM/NIAM) , 2006, Handbook on Architectures of Information Systems.

[18]  David J. Pearce,et al.  Unifying and Generalizing Relations in Role-Based Data Modeling and Navigation , 2015 .

[19]  Andrew P. Black ECOOP 2005 - Object-Oriented Programming, 19th European Conference, Glasgow, UK, July 25-29, 2005, Proceedings , 2005, ECOOP.

[20]  Laurian M. Chirica,et al.  The entity-relationship model: toward a unified view of data , 1975, SIGF.

[21]  Charles W. Bachman,et al.  Data structure diagrams , 1969, DATB.

[22]  Patrick Th. Eugster,et al.  A Relational Model of Object Collaborations and Its Use in Reasoning About Relationships , 2007, ECOOP.

[23]  Ivar Jacobson,et al.  The unified software development process - the complete guide to the unified process from the original designers , 1999, Addison-Wesley object technology series.

[24]  Peter D. Mosses,et al.  Implicit Propagation in Structural Operational Semantics , 2009, SOS@ICALP.

[25]  Peter Bernus,et al.  Handbook on Architectures of Information Systems , 1999 .

[26]  James E. Rumbaugh,et al.  Relations as semantic constructs in an object-oriented language , 1987, OOPSLA '87.

[27]  Philippe Roussel,et al.  The birth of Prolog , 1993, HOPL-II.

[28]  Jos Warmer,et al.  The object constraint language , 1998 .

[29]  Martin Odersky,et al.  Programming in Scala , 2008 .

[30]  James Noble,et al.  Relationship aspects , 2006, AOSD.

[31]  Martin Odersky,et al.  Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition , 2010 .

[32]  Dan Suciu,et al.  Comprehension syntax , 1994, SGMD.

[33]  James Noble,et al.  Efficient Object Querying for Java , 2006, ECOOP.

[34]  Scott F. Smith,et al.  Interaction-based programming with classages , 2005, OOPSLA '05.

[35]  Abraham Silberschatz,et al.  Extended algebra and calculus for nested relational databases , 1988, TODS.

[36]  K. Rustan M. Leino,et al.  Declaring and checking non-null types in an object-oriented language , 2003, OOPSLA 2003.

[37]  James Noble Basic Relationship Patterns , 1997 .

[38]  Dirk Riehle,et al.  Pattern Languages of Program Design 3 , 1997 .

[39]  Il-Yeol Song,et al.  A Comparative Analysis of Entity-Relationship Diagrams , 1995 .

[40]  Stephanie Balzer,et al.  Rumer: A programming language and modular verification technique based on relationships , 2011 .

[41]  Renzo Orsini,et al.  A Relationship Mechanism for a Strongly Typed Object-Oriented Database Programming Language , 1991, VLDB.

[42]  Dave Thomas,et al.  ECOOP 2006 - Object-Oriented Programming , 2006 .

[43]  Brian Beckman,et al.  LINQ: reconciling object, relations and XML in the .NET framework , 2006, SIGMOD Conference.

[44]  Donald D. Chamberlin XQuery: An XML query language , 2002, IBM Syst. J..

[45]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[46]  David J. Pearce,et al.  Implementing First Class Relationships in Java , 2008 .

[47]  S. C. Kleene,et al.  Introduction to Metamathematics , 1952 .

[48]  Friedrich Steimann,et al.  Content over container: object-oriented programming with multiplicities , 2013, Onward!.