CoLan: A functional constraint language and its implementation

https://doi.org/10.1016/0169-023X(94)00028-DGet rights and content

Abstract

This paper is about the definition of CoLan, a high-level declarative Constraint Description Language, for use with an Object-Oriented Database (OODB). CoLan has features of both first-order logic and functional programming and is based on Daplex. CoLan expressions are translated into Prolog code that implements the operational semantics of the constraint. Pieces of generated code are cached inside the class descriptor of the ‘host’ class attached to appropriate slots. The pieces of code are retrieved along an inheritance path when an update on the database is attempted. If the update violates any of the retrieved constraints then it is rejected with an informative message. Thus constraints are expressed declaratively and they can even be retracted individually. However, they are implemented efficiently as code-generated methods, triggered selectively by an update. The implementation is described for the ADAM OODB, which uses meta-classes of the CoLan system to generate class descriptions.

References (32)

  • O.G. Diaz

    From ADAM to ABEL: Making object-oriented databases more knowledgeable

  • O.G. Diaz et al.

    Generating active rules from high-level specifications

  • S.M. Embury et al.

    Constraint maintenance using generated methods in the P/FDM object-oriented database

  • A. Goldberg et al.

    Smalltalk-80, The Language and Its Implementation

    (1983)
  • P.M.D. Gray et al.

    A prolog interface to a functional data model database

  • P.M.D. Gray et al.

    Object-oriented databases, A Semantic Data Model Approach

    (1992)
  • Cited by (38)

    • A method for the definition of integrity constraints in object-oriented conceptual modeling languages

      2006, Data and Knowledge Engineering
      Citation Excerpt :

      We stress that our use of operations for constraint definition is only as a notational device (hopefully, a convenient one) without assuming any implementation implication. In O-O databases, constraints are often implemented by special operations or by extending existing operations (as is done, for example, in Morse [7], CoLan [1] or in DICE [20]), but our focus here is on conceptual definition, and not on implementation. As we have seen, the main idea of our method for constraints definition in O-O languages consists in defining them as (special) operations that we have called constraint operations.

    • Algorithms for analysing related constraint business rules

      2004, Data and Knowledge Engineering
      Citation Excerpt :

      We express our constraints in a formalism based on predicate logic [14]. Different from other logic based constraint languages [2,29], however, our formalism is designed with two “restrictions”. First, only a (small) set of pre-defined predicates may be used.

    • Constraint capture and maintenance in engineering design

      2008, Artificial Intelligence for Engineering Design, Analysis and Manufacturing: AIEDAM
    View all citing articles on Scopus
    View full text