Preservation

  • PDF / 5,370,157 Bytes
  • 208 Pages / 547.087 x 737.008 pts Page_size
  • 109 Downloads / 210 Views

DOWNLOAD

REPORT


Definition P/FDM [5–7] integrated a functional data model with the logic programming language Prolog for general-purpose computation. The data model can be seen as an Entity-Relationship diagram with sub-types, much like a UML Class Diagram. The idea was for the user to be able to define a computation over objects in the diagram, instead of just using it as a schema design aid. Later versions of P/FDM included a graphic interface [2,4] to build queries in DAPLEX syntax by clicking on the diagram and filling in values from menus. P/FDM was subsequently extended with constraints [3] and with alternative back-ends to remote databases [6], in the spirit of the original MULTIBASE system. P/FDM is a vehicle to test a system designed on the principle of Data Independence, whereby Functions represent computations that are expressed in a way that is completely independent of data storage (arrays, lists of objects, indexed files etc.). Functions can be sent across the internet and applied to data in a different form, which was very useful for federated data.

Key Points In P/FDM, the DAPLEX language was deliberately altered from its original specification so that its semantics could be defined by equivalent Comprehensions [1]. In particular, simple assignment operations, if present, could only take place within the innermost loop. Based on this, a very successful early optimizer was written in Prolog by Paton, and used in several bioinformatics applications [6,8]. In P/FDM, data independence is ensured by using a small sparse set of built-in predicates getentity #

2009 Springer ScienceþBusiness Media, LLC

(entity-type, key, instance-variable) and getfunctionval (function-name, argument-variable, value-variable). The first of these predicates requires that abstract entities be identifiable by unique, possibly compound, scalar keys [7]. The keys help with object identity and are very important when accessing or loading bulk data. This is a feature first used in ADAPLEX and EFDM, though P/FDM extends it to allow composed (single-valued) functions, which aids in forming hierarchical keys. P/FDM queries are written in DAPLEX and translated into Prolog for evaluation. Backtracking in Prolog is used to give the effect of lazy evaluation in a functional programming language, accessing tuples or objects on demand. For example, assuming the following P/FDM declarations: declare student ->> entity declare name(student) -> string key_of student is name declare course ->> entity declare cname(course) -> string key_of course is cname declare attends(student) ->> course to print all the courses attended by Fred Jones, the DAPLEX query is: for each F in student such that name (F)="Fred Jones" for each C in attends(F) print(cname(C)); which generates the following Prolog: getentity(student,‘Fred Jones’,F), getfunctionval(attends,F,C), getfunctionval(cname,C,N), write(N), fail; true.

Cross-references ▶ Comprehensions ▶ Federated Database

2012

P

P@n

▶ Functional Query Language ▶ Query Languages and Evaluation Techniques for Biological

Data Loading...