MQL Programmers Guide

  • View
    35

  • Download
    3

Embed Size (px)

DESCRIPTION

MQL Gide

Transcript

  • MQL Programmers Guide

    Ulrik Petersen

    March 17, 2014

  • Copyright (C) 2001-2014 Ulrik Sandborg-Petersen

    This document is made available under the Creative Commons Attribution-Sharealike license version 2.5.

    See

    http://creativecommons.org/licenses/by-sa/2.5/

    for what that means.

    Please visit the Emdros website for the latest news and downloads:

    http://emdros.org

    1

  • Abstract

    This is the MQL Programmers Guide. It documents Emdros version 3.4.0.pre16 and upwards. If you justwish to use Emdros to query your data, then this might not be for you. Instead, you can consult the MQLQuery Guide, which is available from the Emdros website, or with any recent distribution of Emdros.

    In Chapter 1, we discuss some preliminaries, such as the history of Emdros, as well as giving anoverview of the formalism used to define the MQL language, called Backus-Naur Form (or BNF).

    In Chapter 2, we give an overview of the EMdF model, from a users standpoint.In Chapter 3, we describe the bulk of the MQL language.In Chapter 4, we describe the query-subset of MQL. That is, the subset of MQL in which you can

    express queries that look for objects by object type, features, and structural relationships such as embeddingand sequence.

  • Contents

    1 Preliminaries 101.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.2 Origins of MdF, EMdF, and MQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3 Introduction to Backus-Naur Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    1.3.1 Context-Free Grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.3.1.1 Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.3.1.2 Non-terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3.1.3 Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3.1.4 Choice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3.1.5 Concatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3.1.6 Start-symbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    1.3.2 Context-free grammars: Putting it all together . . . . . . . . . . . . . . . . . . . . 121.3.3 BNF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    1.3.3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.3.3.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.3.3.3 Elements of MQL BNF . . . . . . . . . . . . . . . . . . . . . . . . . 14

    1.4 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.4.1 Westminster Hebrew Institute . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.4.2 Regular expression support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    2 The EMdF model 162.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2 Monads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    2.2.1 Monads and textual sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2.2 Granularity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2.3 Text flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    2.3 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3.1 What is an object? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    2.4 Object types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.4.1 Objects are grouped in types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    2.5 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.5.1 What is a feature? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.5.2 Object types have features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.5.3 Features have types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    2.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.7 Other concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    2.7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.7.2 pow_m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.7.3 any_m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.7.4 all_m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.7.5 object ids (id_d, id_m) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    1

  • 2.7.6 self . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.7.7 part_of . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.7.8 gaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.7.9 borders, first, last . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.7.10 consecutive with respect to a set of monads . . . . . . . . . . . . . . . . . . . . . 212.7.11 enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    2.7.11.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.7.11.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.7.11.3 Default constant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.7.11.4 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.7.11.5 Names are identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.7.11.6 Each enumeration is a name-space . . . . . . . . . . . . . . . . . . . . 222.7.11.7 Enumeration constants must be unique . . . . . . . . . . . . . . . . . . 22

    2.7.12 min_m, max_m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.7.13 Arbitrary monad sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.7.14 Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    2.8 Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    3 MQL database manipulation 243.1 Preliminaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    3.1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.2 Terminals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.3 Lexical conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.4 Name-spaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.1.5 Top-level constraints on MQL syntax . . . . . . . . . . . . . . . . . . . . . . . . 26

    3.2 Return types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2.2 Output-formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2.3 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.2.4 Atomic output-types in tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.2.5 Other return values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    3.3 Database manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.3.1 CREATE DATABASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    3.3.1.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.3.1.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.3.1.3 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.3.1.4 Return type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    3.3.2 INITIALIZE DATABASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3.2.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3.2.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3.2.3 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3.2.4 Return type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    3.3.3 USE DATABASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3.3.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3.3.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3.3.3 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3.3.4 Return type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    3.3.4 DROP DATABASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3.4.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3.4.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3.4.3 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3.4.4 Return type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    3.3.5 VACUUM DATABASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3.5.1 Syntax . . . . . . . . . . . .