Inter4QL 3.1

  • Inter4QL 3.1, prepared by Łukasz Białek, is a corrected version of interpreter for a strongly typed version of 4QL. Its version 3.0 has been deveoped by Aleksander Bułanowski, versions 2.0 – 2.3 and 2.5 have been developed by Łukasz Białek and version 2.4 has been developed by Łukasz Makar. They extend Inter4QL 1.0 developed by Patryk Spanily. For a discussion of Inter4QL 2.0 see the paper by Ł. Białek. For a discussion of Inter4QL 1.0 see the paper by P. Spanily.
  • The interpreter has been developed for experimental/educational purposes.
  • The package you can download contains:
    • binaries for Windows and Linux
    • sources in C++ ready for compilation under Windows and Linux
    • documentation
    • examples of simple 4QL programs, illustrating the syntax accepted by Inter4QL 3.1.
  • Inter4QL 3.1 is a command line interpreter, allowing one to use the following commands:

    • import “program.4ql”. – imports a 4QL program from text file “program.4ql”
    • print module. – prints information about module named “module”
    • module.relation(param1, …, paramk). – returns the truth value of fact “relation(param1,…, paramk)” as defined in module named “module”
    • modules. – prints all modules
    • clear. – clears the interpreter
    • quit. – exits the interpreter.
  • Licence

  • General

    • The contents of the Inter4QL 3.1 software including source code is covered under the GNU GPL 3 license.
    • The Inter4QL 3.1 project copyrights belong to Patryk Spanily, Łukasz Białek, Łukasz Makar and Aleksander Bułanowski in respective parts. All rights reserved.
    • The program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
    • This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
    • Full details of the GNU GPL 3 license are available from the GNU project site.
    • A copy of the GNU General Public License is available by writing to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  • How does the GNU license affect developers who want to modify Inter4QL?

    • Inter4QL 3.1 is open source software — under the GNU GPL 3. This gives you legal permission to copy,
      distribute and/or modify the software. Open source software is free to use and free to change. The developers of Inter4QL 3.1 accept no responsibility for any data lost while using this program.
    • Any application using Inter4QL must bet released your under the GNU GPL 3. It can also be sold but the source code has to be released for free.

If you accept the above terms and conditions, please click here to download the package

 
 

Further information

  • Trademarks

    • GNU Bison is a part of GNU Project is released under GNU General Public License.
    • Flex: The Fast Lexical Analyzer is copyrighted by The Flex Project and is released under the BSD License.
    • Doxygen is copyrighted by Dimitri van Heesch and is released under GNU General Public License.
    • Windows is a trademark of Microsoft Corporation, registered in the United States and other countries.
    • Linux is a registered trademark of Linus Torvalds.
  • Frequently asked questions

    • Q: Example files do not load on Linux operating system (strange error at the end of the first line). What is wrong?
      A: Those files are saved in Windows format. Change it to Linux format by using a tool like “unix2dos”.
  • Revision History

    • 28 July 2016: Inter4QL 3.1: bugfixes by Łukasz Bialek.
    • 18 May 2016: Inter4QL 3.0 bugfix by Aleksander Bulanowski.
    • 30 March 2016: Inter4QL 3.0 by Aleksander Bulanowski:

      • Features:
        • Constructs of groups of modules and means for fusing knowledge from modules in groups are introduced (on the basis of belief structures).
        • Arbitrary Boolean combinations of literals in queries allowed.
        • Simplification of fragments of code.
        • Performance improvements.
      • Bugfixes:
        • Corrections of evaluation of well supported models.
    • 22 December 2014: Inter4QL 2.5 by Łukasz Białek:
      • Features:
        • Domains correspond to one-argument relations.
    • 4 September 2014: Inter4QL 2.4 by Łukasz Makar:
      • Features:
        • Identifiers can include the ‘_’ sign.
      • Bugfixes:
        • Corrected comparison relations for REAL and LOGIC.
        • Corrected reasoning with the ‘in’ clause in the contexts like ‘-m.rel(X) in {…}’.
        • other minor fixes.
    • 4 March 2014: Inter4QL 2.3 by Łukasz Białek:
      • Features:
        • Major optimization pack for 4QL interpreter:
          • Improved data structures for fact storage – facts are stored in groups indexed with relation names.
          • Unknown facts are stored separately and also in groups.
          • Main fact-generation algorithm is refactored and optimized.
    • 4 November 2013: Inter4QL 2.2 by Łukasz Białek:
      • Features:
        • Unknown facts are generated only for relations which are used in “unknown” set query (in {…, unknown, …}).
      • Bugfixes:
        • Fixed bug causing Segmentaion Fault while using modules undefined in program file.
        • Fixed set queries, that query internal and external modules.
        • Fixed handling of negated set queries.
    • 26 September 2013: Inter4QL 2.1 by Łukasz Białek:
      • Features:
        • domains are kept separate also when they contain elements of the same type.
      • Bugfixes:
        • Clearing domains in error mode does not turn interpreter off.
        • Variable space is reinitialized after ‘clear’ command.
    • 20 August 2013: Inter4ql 2.0 by Łukasz Białek.
      • The source code of inter4ql v2.0 is strongly based on the first version of code. It is rather difficult to draw a strict border between versions 1.0 and 2.0. The following description is very shallow and for sure does not give full account about what was done in second version and what was done before. The best way to find out is to compare 1.0 and 2.0 zip packages.
        • The directory structure is practically unchanged. The only difference is that directories “sqlite3” and “tinyxml” have been removed (with all files inside – sqlite and tinyxml are not used in current varsion). However, a new directory, “plugins”, has been added. It contains only newly implemented files.
        • In the main source code directory (“src/”) most of files were originally created in version 1.0. Files “SQL_SQLite.cc”, “SQL_SQLite.h” and “SQLWrapper.h” have been removed and replaced by new files “ReasoningModule.cc”, ReasoningModule.h” and “ReasoningWrapper.h”, fully implemented in version 2.0. The same applies to files: “Disposable.cc”, “Disposable.h”. All files from “/src/modules/” were deleted and replaced by new implementations of modules.
        • Almost all other files have been modified. All destructors are newly implemented as well as almost all “delete” instructions. Some custom constructors and comparator functions (like “compare” in Result class) were added. Scanner.l and LineParser.y files (inputs for Flex and Bison) have memory management added. Moreover, 4QL grammar has changed a bit in LineParser.y (removal of “external” tokens) as well as token recognition in Scanner.l (negative integers and reals were introduced). “Module*.cc” files were modified to match new module implementations from “/src/modules/” (new way of asking for facts).
    • 10 March 2012: Inter4ql 1.0 with a patch by Grzegorz Jaśkiewicz (concerning SQL queries).
    • 20 August 2011: Inter4ql 1.0 by Patryk Spanily.