Frequently Asked Questions

Submit a New Question

  • Question: Under Windows 10 and my 4K laptop display, tiny icons and text appear in the Java application, how could them be enlarged?
  • Answer: There are several alternatives to fix this: 1) Lower the display resolution (which I personally find a resource waste), 2) Apply native scaling in Display Properties (which makes only text scale, not icons), and 3) Apply a registry fix as explained in this link, which allows specific applications to be properly scaled, in this case, javaw.exe as found in the path (this requires Administrative privileges but it seems to run nicely and can be applied to other applications suffering the same issue as well).
  • Question: Sending a query via ODBC to SQL Server returns [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt.
  • Answer: There is no way to control this issue in SICStus distros yet. You have two alternatives: Either configure the ODBC connection to allow for MARS (Multiple Active Results Sets) or use a SWI distro instead. With the first method you can use one of the following:
  • odbcconf /a {CONFIGSYSDSN "SQL Server Native Client 11.0" "DSN=conn_name|MARS_Connection=YES"}
  • in a command console (cmd.exe) with administrative privileges, where conn_name is the name of the ODBC SQL Server connection.
  • With the second method, use regedit.exe to add the key:
  • with the REG_SZ value set to YES, as depicted in the next screenshot, where the connection name in this case is sqlserver:
  • Question: The new Datalog debugger in version 3.11 does not seem to work after an error is issued.
  • Answer: The file was either not included in the distribution or it was in lower case. Current distros fix this.
  • Question: Ubuntu does not find when running the executable. How can I fix it?
  • Answer: Most likely, either unixodbc is not installed or the file is not located in the expected path (/usr/lib or /usr/local/lib). Try:
  • sudo apt-get install unixodbc-dev unixodbc-bin unixodbc
  • Question: I have a 64bit OS and my ODBC connection does not work with the Database panel in ACIDE when I select ODBC panel.
  • Answer: You must ensure that you have the matching JRE framework installed. Otherwise, the architecture might mismatch, i.e., trying to open a 64 bit ODBC connection using a 32 bit JRE will not work. So, if you use a 64 bit ODBC, use a 64 bit JRE.
  • Question: When I submit an OS-related command, the following exception is raised:
    Exception: error(existence_error(source_sink,path(cmd)),existence_error(process_create(path(cmd),[/C,dir],user:[stdin(std),stderr(pipe(_198345)),stdout(pipe(_198357)),cwd(c:/des/des4.0/),process(_198373)]),1,file,path(cmd),0))
    Answer: When working in Windows, most likely this comes from cmd.exe not being found in the path. To fix this, add the path where this executable is located (typically, c:\Windows\System32) to the OS environment variable PATH.
  • Question: How could I help?
  • Answer: If you are using DES for teaching, developing applications, writing a paper or thesis, please drop me a note so that it can be advertised in the DES Facts page. This will help to get funds to further develop this project. You can also contribute with new ideas, as an implementor (and therefore listed as a contributor), and also by donating!
  • Question: Is it possible to programmatically access DES from a C++ or Java program?
  • Answer: There is no API for such, but a textual API (TAPI) is provided, which allows to communicate with DES via OS standard streams (cf. User Manual). See also next question for solving this but resorting to the APIs provided by the underlying Prolog systems.
  • Question: How a Java program as ACIDE can access the deductive database in a direct way?
  • Answer: ACIDE is a GUI we have used to connect to DES and it is written in Java. Communication is via standard input-output, so that there is no need in this case for a more elaborated Java API.
    To access DES from Java  you have to select one of the supported interpreters (SWI-Prolog, SICStus, GNU or Ciao, depending on the system version) which provides Java connections, read the documentation to learn how to access Prolog programs in order to build such a Java connection. Then, in this code you can consult, which in turn will consult other files (you can take a look at the user  manual where the required files are listed for each Prolog system; note that in the systems folder you can find the different files for the  different Prolog systems). In order to avoid to enter the input  processing loop, simply delete the line ":- initialization((start;true))." in, section "Auto-start after  loading". The predicate useful for processing inputs is process_input/2. Forget the second (output) argument and set the first one with a string with your query. This should be your interface predicate with DES. It  will accept any of the allowed inputs (commands, Datalog queries and SQL queries). However, before using it, you have to initialize DES with the predicate init_des/0. Once you have run a query, you can access its  results via the predicate et/2. Assuming you have a predicate  parent(X,Y), the goal et(parent(X,Y),_) gives you all the facts in the answer, one by one via backtracking.
  • Question: The command /dbschema issues MySQL ODBC errors in MS Windows. Are there errors, really?
  • Answer: Install the latest ODBC connector. It seems to be a bug of the  connector. Please recall to, first, delete your connections and, second, uninstall the current connector.
  • Question: Datalog Educational System implements the Magic Sets method/delta rules?
  • Answer: No. It is based on memoization (basic tabling) techniques. The User Manual  briefly explains this and provides some bibliographic references.
  • Question: Why I cannot connect to a PostgreSQL database with SICStus sources?
  • Answer: There is limited functionality in this Prolog system which will be  overcome in future versions. Try the SWI-Prolog version instead. Update: Current port to SICStus Prolog 4.2.0 solves this problem.
  • Question: Can I connect DES to a relational database such as MySQL or Oracle?
  • Answer: Yes, it is possible since version 2.0. This provides a means to access a relational database (with tables and views defining relations) and also to submit queries in both Datalog and SQL languages. When a SQL view is involved in query, its processing occurs at the SQL engine instead of the Datalog engine.
  • Question: How can I trace a Datalog program using DES?
  • Answer: Since version 1.3.0, DES provides declarative debugging capabilities. Also, since version 2.0, DES provides naïve Datalog and SQL tracers. See the User Manual for details.
  • Question: After installing the Windows executable version of DES 1.1 for Windows, I get a message “spcon.dll not found”. What is going wrong?
  • Answer: The DLL library spcon.dll was missed from the first release of DES 1.1. It was fixed on 06/10/2004.
  • Question: When I consult the example file family.dl and try to put in a new predicate, i.e. /assert father(’max josef’, tom), DES breaks down.
  • Answer: This comes from using blanks as part of atoms. This was not incorporated in DES 1.1.1 (cf. Syntax section). It is currently supported since version 1.1.2.
  • Question: I use SICStus Prolog 4.0.1 and when I consult to start DES, an exception regarding the non existence of the predicate working_directory is issued. What is going wrong?
  • Answer: Up to DES 1.8.1, there exist only ports to older versions of SICStus Prolog, namely 3.x. Since DES 2.0, a port to 4.x replaces the old port.