1st Edition

LogiQL A Query Language for Smart Databases

By Terry Halpin, Spencer Rugaber Copyright 2015
    352 Pages 19 B/W Illustrations
    by CRC Press

    352 Pages
    by CRC Press

    LogiQL is a new state-of-the-art programming language based on Datalog. It can be used to build applications that combine transactional, analytical, graph, probabilistic, and mathematical programming. LogiQL makes it possible to build hybrid applications that previously required multiple programming languages and databases. In this first book to cover LogiQL, the authors explain how to design, implement, and query deductive databases using this new programming language.

    LogiQL’s declarative approach enables complex data structures and business rules to be simply specified and then automatically executed. It is especially suited to business applications requiring complex rules to be implemented efficiently, for example predictive analytics and supply chain optimization.

    Suitable for both novices and experienced developers, the book is written in easy-to-understand language. It includes many examples and exercises throughout to illustrate the main concepts and consolidate understanding.

    Preface
    Acknowledgment
    Key LogiQL Concepts
    Quick Start
    Authors

    Basics
    Databases, Predicates, and Facts
    Declaring Entity Types and Refmodes
    Entering Facts
    Expressing Domain Relationships with Predicates
    Constraining the Data
    Declaring Functional Predicates
    Declaring Derivation Rules
    Querying a Workspace
    Consolidation Exercise 1
    Part 1: Country of Birth
    Part 2: Birth and Death Dates
    Part 3: Age at Death
    Part 4: Reigns and Ancestry
    Answers to Exercises

    Intermediate Aspects
    Inverse-Functional Predicates
    N-ary Predicates
    Inclusive-or and External Uniqueness Constraints
    Subtyping and Subsetting
    Subtypes
    Subset Constraints
    Recursive Rules and Ring Constraints
    Recursion
    Ring Constraints
    Hard and Soft Constraints
    The Count and Total Functions
    Computing Counts
    Dealing with Empty Predicates
    Computing Totals and Averages
    Consolidation Exercise 2
    Part 1: Books
    Part 2: Book Sales
    Part 3: Personnel
    Answers to Exercises

    Diving Deeper
    The max and min Functions
    Argmin and Argmax
    Summary of Aggregation Functions
    Safety Conditions for Rules and Queries
    Derivation Rule Semantics
    Delta Rules and Pulse Predicates
    Delta Modifiers
    Delta Logic
    Pulse Predicates
    Transaction Processing
    Transactions
    Transaction Processing Example
    Stage Suffixes
    Summary
    Additional Built-in Operators and Functions
    Arithmetic
    String Manipulation
    Aggregate Functions for Ordering
    Consolidation Exercise 3
    Answers to Exercises

    Advanced Aspects
    Emulating Imperative Programming Constructs
    Statements
    Switch Statement
    Iteration Statements
    Further Constraints
    Equality Constraints
    Value Constraints
    Frequency Constraints
    Subset and Exclusion Constraints Involving Join Paths
    Derived Entities and Constructors
    N-ary Constructors
    Program Organization
    Legacy Code
    Program Organization
    Projects
    Modules and Concrete Blocks
    Namespaces Revisited
    Separate Compilation and Libraries
    Summary
    Miscellaneous Topics
    Materialized and Derived-Only Views
    Hierarchical Syntax
    File Predicates
    Consolidation Exercise 4
    Answers to Exercises

    Glossary

    Appendices
    Running Your Programs
    Running the LogiQL REPL
    LogiQL Syntax
    Built-In Operators and Predicates
    Summary of Constraints
    Programming Conventions
    LogiQL and Predicate Logic
    LogiQL and SQL
    Testing Your Programs
    Improving Your Program’s Performance

    Biography

    Spencer Rugaber is a computer scientist who has worked both in industry and in academia as well as serving as program director for the Software Engineering and Languages program at the U.S. National Science Foundation. His research interests are in the area of software engineering, human-computer interaction, and cognitive science. He is the author of the article on program understanding included in the Encyclopedia of Computer Science and Technology and of numerous software engineering articles appearing in technical journals and conference proceedings. He is currently a computer scientist with LogicBlox, Inc. (Atlanta, Georgia) and an adjunct faculty member at the Georgia Institute of Technology (Atlanta). Terry Halpin is a professor in computer science at INTI International University, Malaysia, and a data modeling consultant. He previously held senior faculty positions in computer science at the University of Queensland (Australia) and Neumont University (Salt Lake City, Utah). He previously spent many years in data modeling technology at Asymetrix Corporation, InfoModelers Inc., Visio Corporation, Microsoft Corporation, and LogicBlox. His doctoral thesis formalized object-role modeling (ORM/NIAM), and his current research focuses on conceptual modeling and rule-based technology. He has authored more than 200 technical publications and seven books, and has co-edited nine books on information systems modeling research. He is a regular columnist for the Business Rules Journal, and is a recipient of the DAMA International Achievement Award for Education (2002) and the IFIP Outstanding Service Award (2006).

    "I gladly recommend the LogiQL book to anyone interested in databases. … The book is easy to read, contains many examples and exercises, and offers teachers involved in databases and their applications a very effective tool to get students to understand databases and how to program them."
    —Dr. Herman Balsters, Associate Professor of Information Systems Design and Former Program Director of the Interfaculty of Industrial Engineering, University of Groningen

    "The first mistake people will make is to think that LogiQL is another SQL. No, no. SQL is for accessing data and maintaining data integrity in a relational model. LogiQL discovers and deduces logical relations from predicates by looking at data and a set of predicates that define rules. If you ever worked with the Prolog language, then you know the difference.
    LogiQL has an extensional database (EDB) and intentional database (IDB). EDB predicates normally are used to hold the facts that you explicitly enter into the workspace. In contrast, the facts populating IDB predicates are computed for you by your logic program. Think of SQL as a library and LogiQL is the research librarian.
    This is the only book on LogiQL and it is designed as a textbook with examples and tests for someone who wants to learn this tool. Get the software, open the book, and get started."
    —Joe Celko, Independent Database Consultant