Home

Datalog Educational System V3.10 User`s Manual

image

Contents

1. answer 1 Info 1 tuple computed On the other hand enabling duplicates both tuples in the relation t are counted unless count distinct is used DES duplicates on DES count t X Y C Info Processing answer C count t X Y 1 C answer 2 Info 1 tuple computed DES gt count_distinct t X Y C Info Processing answer C count distinct t X Y C answer 1 Info 1 tuple computed Note that subtle behaviours may arise when duplicates are disabled For instance let s assume the relation employee from the file examples aggregates dl and that we want to know how many employees are above the average salary minus 20 We can submit the following goal to display the salaries that meet this condition DES avg employee S S A employee S1 S1 A 20 Info Processing answer A S1 avg employee S S A employee S1 S1 gt A 20 answer 1031 4285714285713 1020 answer 1031 4285714285713 1200 Info 2 tuples computed However if we count them DES count avg employee _ _ S S A employee _ _ S1 S1 gt A 20 C Info Processing answer C in the program context of the exploded query answer C count p2 C p2 Fernando S enz P rez 51 274 Universidad Complutense de Madrid Datalog Educational System avg employee S S A employee S1 S1 gt A 20 answer 1 Info 1 t
2. eene 229 5 20 4 3 Non recursive Predicates optimize_nrp sessesseseerseesisrreeeresees 230 S2044 Sanm opt IMLE SE eperen EE EER 231 5205 Indexing Tes Tf Jeroan aE ON 232 5 20 6 Porting to Unsupported Syste nS sses 233 o M 234 Ol Relational Operations iles xelop 1dl sSql 8 scio tbeniertras sons 234 6 2 Pathe in a Graph files paths THL sql 32 oociesnitenadiu itii eiie 237 po Shortest Paths ile Spots 100 801 68 DFaesenzulakovenskbcuend bog ct bii 238 of Family Tree files tami lo dil el E usce tit repr eoe PIRE 240 65 Basic Recursion Problem file recurs15u cd cehb te bete rrinie bete betp 242 6 6 Transitive Closure files tranclosure d1l sql ra eene 242 67 Mutual Recursion files mutrecursion dl sql ra reete 243 68 Farmer Wolf Goat Cabbage Puzzle file puzz1e d1 244 65 D aling with patbsthlepus2elel e assiawedenddeeckre bel te sse re bot etes 246 Oo JqurngdowesHiesp ussollildl S90l ra euceiapebins Medio incited 248 6 10 Parity fle Dae ih T messes n adsis Vider eas pia NADA nud dnos 251 GIL Xramiar le ee ats 1 acesandenzizec pape er coron rto XERF Ke ORE DT bana 252 612 pibonaed dile fb dl Sq 8 aeee RUF HR EUH pap E 252 e Hanoi Towers file hanoi d E aie s peesrieei beet bip o PP DHRERE ria pe bu AR dpa ERE 253 6TA PU dir ocio M reU ECT 254 7e Contributions cabo eint dr qiiae ioi ee
3. 5 17 10 Settings e check Display whether integrity constraint checking is enabled e check Switch Enable or disable integrity constraint checking on or off resp e compact listings Display whether compact listings are enabled e compact listings Switch Enable or disable compact listings on or off resp e des sql solving Display whether DES is forced to solve SOL queries for external DBs If enabled this allows to experiment with more expressive queries as e g hypothetical and non linear recursive queries targeted at an external DBMS e des sql solving Switch Enable or disable DES solving for SOL queries when the current database is an open ODBC connection on or off resp e display_banner Display whether the system banner is displayed at startup e display_banner Switch Enable or disable the display of the system banner at startup on or of f resp Only useful in a batch file des ini or des cnf e duplicates Display whether duplicates are enabled e duplicates Switch Enable or disable integrity constraint checking on or of f resp e fp info Display whether fixpoint information is to be displayed e fp info Switch Enable or disable display of fixpoint information as the ET entries deduced for the current iteration on or off resp e hypothetical Fernando S enz P rez 196 274 Universidad Complutense de Madrid Datalog Educational System Display whether hy
4. A clause containing an aggregate predicate is transformed into an executable form including grouping criterion e A clause containing the goal not is null 4 Term is transformed into a clause with this goal replaced by is not null Term 5 7 Multi line Mode By default DES command prompt reads single line inputs and therefore ending termination character is optional as the dot in Datalog and the semicolon in SOL and RA But when writing a long query as usual in SOL breaking down the sentence along several lines enhances readability This is also possible in DES by enabling multi line mode with the command multiline on However in this scenario the terminating character must be issued in order to know when to finish parsing the input query Returning to single line mode is just by issuing multiline off With multi line input multi line remarks enclosed between and are also allowed Note that nested remarks are supported too as First remark Second nested remark 5 8 Development Mode This section is focused at those interested in modifying and extending the system So from a system implementor viewpoint it is handy to show several implementation specific issues such as source to source transformations and internal representation of null values To this end the command development on off has been made available Let s consider the following system session DES development off
5. Universidad Complutense de Madrid Datalog Educational System Offending values in database ic a ic b ic d Observe that since the path relation is now complete all the nodes in the cycle are displayed a b and c The considered constraint is not yet enough to ensure a directed tree defined by edge facts Two conditions remain First a given node cannot have more than one incoming edge and second a tree must be a connected graph If the first condition is imposed it suffices for the second to check that the number of nodes is the number of edges plus 1 So DES assert node N edge N A edge A N Info Computing predicate dependency graph Info Computing strata Info Rule asserted DES count edge A B Es count node N Ns D is Ns Es D 1 Info Parsing query Info Constraint successfully parsed Info Computing predicate dependency graph Info Computing strata Info Checking user defined integrity constraint over database count edge A B Es count node N Ns D is Ns Es D 1 Info Computing by stratum of edge A B node A Info Computing predicate dependency graph Info Computing strata DES assert edge e f An unconnected component Info Checking user defined integrity constraint over database count edge A B Es count node N Ns D is Ns Es D ye 1 Info Computing by stratum of edge A B node A Info Computing predicate depende
6. DES gt assert q 2 DES p X q Y X Y Fernando S enz P rez 137 2 14 Universidad Complutense de Madrid Datalog Educational System Info Processing answer X Y p X q x x lt Y answer 1 2 Info 1 tuple computed where q 2 is in the meaning of q 1 Also you can use SQL or RA languages to query such persistent predicates as in DES type q a int DES select from p q where p a q a answer p a int q a int gt answer 1 2 Info 1 tuple computed DES p zjoin p a q a q answer p a int q a int gt answer 1 2 Info 1 tuple computed Submitting the same query to the SOL ODBC bridge and to the deductive engine returns the same result DES show compilations on DES show sql on DES prompt des db DES access select from q void answer 1 Info 1 tuple computed DES access gt des select from q Info SELECT FROM q Info SQL statement compiled to answer A q A answer q a int gt answer 1 Info 1 tuple computed The first query is completely processed by the external database The second one is submitted to the deductive engine which translates the SQL query to a Datalog Fernando S enz P rez 138 274 Universidad Complutense de Madrid Datalog Educational System goal and program under which the result is computed This amounts to query the external database with the SOL statement built for
7. Info No integrity constraints To list all the opened connections use the command DES gt show_dbs des access csv db2 excel Fernando S enz P rez 128 274 Universidad Complutense de Madrid Datalog Educational System mysql oracle postgresql sqlserver where you can see the list of opened connections starting with des which is the default database DES deductive engine You can close all connections but the default one As the names suggest you can open a wide range of data sources not only from database management systems as DB2 Oracle SQL Server but also from other sources as datasheets Excel and text files CSV comma separated values files For defining a table in MS Excel you should use Insert gt Name gt Define where you specify the name of the table and the cell range it covers where first row can be used as field names optionally Types are inferred by the Excel system Similarly when defining a connection to a text file field names can be those in the first line of explicitly given Again types are inferred In both cases you can inspect the database schema and query them with either SQL statements or Datalog queries or RA expressions Note that some data sources do neither creating views nor constraints such as datasheets and text files A warning for newbies You have to define connection names following ODBC installation do not expect the ones listed above are provid
8. Since DES is implemented with extension tables computing high Fibonacci numbers is possible with linear complexity DES fib 1000 F 17 Taken from FD92 18 Taken from FD92 Fernando S enz P rez 252 274 Universidad Complutense de Madrid Datalog Educational System fib 1000 7033036771142281582183525487718354977018126983635873274 2604905087154537118196933579742249494562611733487750449241765991 0881863632654502236471060120533741212738673391111981393731255987 67690091902245245323403501 Info 1 tuple computed Also it is possible to formulate this in SQL even when the next view features non linear recursion file fib sql create view fib n f as select 0 1 union select 1 1 union select fibl nt1 fibl f fib2 f from fib fibl fib fib2 where fibl n fib2 n 1 and fibl n 10 As well next there is a possible RA formulation file fib ra fib n f project 0 1 dual union project 1 1 dual union project fibl nt 1 fibl f fib2 f rename fibl n1 f1 fib zjoin nl n2 1 and n1 10 rename fib2 n2 f2 fib 6 13 Hanoi Towers file hanoi d1 Another well known toy puzzle is the towers of Hanoi which can be coded as hanoi 1 A B C hanoi N A B C N gt 1 N1 is N 1 hanoi N1 A C B hanoi N1 C B A We can submit the following query for 10 discs DES hanoi 10 a b c hanoi 10 a b c Info 1 tuple computed Note that the answer to this query does not reflect
9. Universidad Complutense de Madrid Datalog Educational System 4 1 1 Syntax Definitions for Datalog mainly come from the field of Logic Programming following Lloyd87 referring the reader to this book for a more general presentation of Logic Programming Next some definitions for understanding the syntax of programs queries and views are introduced Numbers Integers and float numbers are allowed A number is a float whenever the number contains a dot between two digits The range depends on the Prolog platform being used Negative numbers are identified by a preceding minus as usual Scientific notation is supported as aEb where a is a fractional number always including a dot and b is an integer which may start with or but it is not required Examples of numbers are 1 1 1 1 0 1 2E34 1 2E 34 and 1 2E 34 Note that 1 1 1 1 E23 and 1E23 are not valid numbers A plus sign is not part of a positive number however both a plus and a minus sign can be used as a prefix unary operator in arithmetical expressions cf Section 4 5 4 1 and also following the symbol E in scientific notation as already seen Constants A constant can be o A number integer or float o Any sequence of alphanumeric characters including the underscore _ starting with a lowercase letter o Any sequence of characters delimited by single quotes If the sequence contains a single quote it can be either escaped or t
10. Fernando S enz P rez 62 2 14 Universidad Complutense de Madrid Datalog Educational System DES type p a int b int c int DES assert p 1 1 1 DES assert p 1 2 3 DES fd p a c1 Error Functional dependency violation p a gt p c Offending values in database fd 1 1 1 f d 1 2 3 Info Constraint has not been asserted 4 1 15 7 User defined Integrity Constraints Users can also define their own integrity constraints A user defined integrity constraint is represented with a rule without head The rule body is an assertion that specifies inconsistent data i e should this body can be proved an inconsistency is detected and reported to the user Declaring such integrity constraints implies to change your mind w r t usual consistency constraints as domain constraints in SQL For instance to specify that a column c of a table t can take values between two integers one can use the SOL clause CHECK in the creation of the table as follows CREATE TABLE t c INT CHECK c BETWEEN 0 AND 10 In contrast in Datalog you can submit the following constraints DES type t c int DES t X X lt 0 X gt 10 Notice that the rule body succeeds for values in t out of the interval 0 10 So an integrity constraint specifies unfeasible values rather than feasible Also note that whilst several predefined constraints are allowed in a constraint only one user defined integrity constraint is all
11. answer al al answer al b2 answer a2 b2 Info 3 tuples computed DES RA Projection DES RA project a c answer c a string gt answer al answer a2 Info 2 tuples computed DES RA Selection DES RA select a a2 a answer a a string gt answer a2 Info 1 tuple computed DES RA Cartesian product DES RA a product b answer a a string b b string gt answer al al answer al b1 answer al b2 answer a2 al answer a2 b1 answer a2 b2 answer a3 al answer a3 b1l answer a3 b2 Info 9 tuples computed DES RA Union DES RA a union b answer a a string gt answer al answer a2 answer a3 answer b1 answer b2 Fernando S enz P rez 25 274 Universidad Complutense de Madrid Datalog Educational System Info 5 tuples computed DES RA Difference DES RA a difference b answer a a string gt answer a2 answer a3 Info 2 tuples computed DES RA gt Intersection DES RA gt a intersect b answer a a string gt answer al Info 1 tuple computed DES RA Theta Join DES RA select a a b b a product b answer a a string b b string gt answer a1 a1 Info 1 tuple computed DES RA a zjoin a a b b b answer a a string b b string gt answer al al1 Info 1 tuple computed DES RA Natural Inner Join DES RA a njoin c answer a a string c
12. answer D R group by employee N D S D R count S R gt 1 answer accounting 3 answer sales 3 Info 2 tuples computed Conditions including no aggregates on tuples of the input relation cf SQL FROM clause can also be used cf WHERE conditions in SQL For instance the following query computes the number of employees whose salary is greater than 1 000 Fernando S enz P rez 47 274 Universidad Complutense de Madrid Datalog Educational System DES group by employee N D S S 1000 D R count S Info Processing answer D R in the program context of the exploded query answer D R group by p2 S D N D R count S p2 S D N employee N D S S 1000 answer accounting 2 answer sales 1 Info 2 tuples computed Note that the following query is not equivalent to the former since variables in the input relation are not bound after a grouping computation The following query illustrates this situation which generates a syntax error DES group_by employee N D S D R count S S gt 1000 Error Incorrect use of shared set variables in metapredicate N S The predicate group by admits a more compact representation than its SOL counterpart Let s consider the following Datalog session DES assert p 1 1 DES assert p 2 2 DES assert q X C group by p X Y X C2count C sum Y DES q X C Info Computing by stratum
13. e NY Vertical tab ASCII character code 11 e xhex digit A character code represented by the hexadecimal digits 5 20 Notes about the Implementation of DES DES is implemented with the original ideas found in Diet87 TS86 FD92 that deal with termination issues of Prolog programs These ideas have been already used in the deductive database community Our implementation uses extension tables for achieving a top down driven bottom up approach In its current form it can be seen as an extension of the work in Diet87 FD92 in the sense that in addition we deal with negation undefined although incomplete information nulls and aggregates also providing a more efficient tabled mechanism Also the implementation follows a different approach Instead of translating rules we interpret them DES does not pretend to be an efficient system but a system capable of showing the nice aspects of the more powerful form of logic we can find in Datalog systems wrt relational database systems Fernando S enz P rez 223 274 Universidad Complutense de Madrid Datalog Educational System 5 20 1 Tabling DES uses an extension table which stores answers to goals previously computed as well as their calls For the ease of the introduction we assume an answer table and a call table to store answers and calls respectively Answers may be positive or negative that is if a call to a positive goal p succeeds then the fact p is a
14. o No database updates via Datalog rules are allowed Fernando S enz P rez 258 2 14 Universidad Complutense de Madrid Datalog Educational System O Rules in consulted files must end with a dot in contrast to command prompt inputs in single line mode where the dot is optional Rules in a consulted file may span on multiple lines and an ending dot is mandatory irrespective of the multi line mode User identifiers including tables views column names are case sensitive but for external relations Case sensitiveness for external databases depends on the RDBMS and its ODBC connection e g DB2 uses uppercase user identifiers even when they are declared in lowercase No Datalog built in predicate is allowed as an SQL identifier for a relation with the same arity as e g the table name count with two columns Computable SOL statements follow the grammar in Section 4 2 9 of this manual The current grammar parses extra clauses which cannot be computed yet e g ANY By default a numeric constant is assumed to be float if it includes a decimal part and integer otherwise This may lead to type errors as for instance in DES select 1 union select 1 0 Error Type mismatch number integer vs number float However if automatic type casting is enabled with type casting on DES behaves similar to SOL systems therefore allowing queries as above Batch updates and deletions are not atomic Nulls and
15. Fernando S enz P rez 114 274 Universidad Complutense de Madrid Datalog Educational System raises an input error because an arithmetic expression can only occur as the right argument of is Another example is DES X is e 2 718281828459045 is exp 1 Info 1 tuple computed DES e is e Info 0 tuples computed This means that the built in arithmetic constant e cannot be used outside of an arithmetic expression and it is otherwise understood as a user defined relation Here an input error is not raised since e could be a user defined relation In fact this should raise a type error but they are not currently controlled In addition note that arithmetic expressions are compound terms which are translated into an internal equivalent representation The last example shows this since the constant e is translated to exp 1 Concluding the infix infinite relation is is understood as the set of pairs V E such that V is the equivalent value to the evaluation of the arithmetical expression E Note that since this relation is infinite we may reach non termination Let s consider the following program loop dl in the distribution directory with the query loop X loop 0 loop X loop Y X is Y 1 Evaluating that query results in a non terminating cycle because unlimited tuples is N N 1 become computed To show it try the query press Ctrl C and type listing et at the Prolog prompt
16. Info 1 tuple inserted DES insert into c values al al Fernando S enz P rez 20 274 Universidad Complutense de Madrid Datalog Educational System Info 1 tuple inserted DES insert into c values a2 b2 Info 1 tuple inserted DES Testing the just inserted values DES select from a answer a a gt answer al answer a2 answer a3 Info 3 tuples computed DES gt select from b answer b b answer al answer b1 answer b2 Info 3 tuples computed DES select from c answer c a c b answer al al answer al b2 answer a2 b2 Info 3 tuples computed DES gt Projection DES select a from c answer c a answer al answer a2 Info 2 tuples computed DES gt Selection DES gt select a from a where a a2 answer a a gt answer a2 Info 1 tuple computed DES gt Cartesian product DES gt select from a b answer a a b b answer al al answer al b1 answer al b2 answer a2 al answer a2 b1 answer a2 b2 answer a3 al Fernando S enz P rez 21 274 Universidad Complutense de Madrid Datalog Educational System answer a3 b1 answer a3 b2 Info 9 tuples computed DES gt Inner Join DES gt select a from a inner join b on a a b b answer a answer al Info 1 tuple computed DES gt Left Join DES gt select from a left joi
17. Leftjoin It stands for the left outer join of the relations Left Relation and relations RightRelation under the condition JoinCondition expressed as literals cf Section 4 1 1 as understood in extended relational algebra LeftRelationD lt JoinCondition Right Relation e rj LeftRelation RightRelation JoinCondition Right join It stands for the right outer join of the relations LeftRelation and relations RightRelation under the condition JoinCondition expressed as literals cf Section 4 1 1 as understood in extended relational algebra LeftRelation PX JoinCondition RightRelation e fj LeftRelation RightRelation JoinCondition Full join It stands for the full outer join of the relations Left Relation and relations RightRelation under the condition JoinCondition expressed as literals cf Section 4 1 1 as understood in extended relational algebra LeftRelation JoinCondition RightRelation 4 5 7 Datalog Aggregates 4 5 7 1 Aggregate Functions Aggregate functions can only occur in the context of a group by aggregate predicate see next section and apply to the result set for its input relation e count Variable Return the number of tuples so that the value for Variable is not null e count Return the number of tuples of the result set e sum Variable Return the sum of possible values for Variable ignoring nulls e times Variable Return the product of possible values for Variable ignoring nulls
18. Universidad Complutense de Madrid Datalog Educational System DES p X Info Parsing query Info Query successfully parsed Info Solving query p X Info Displaying query answer Info Sorting answer p 1 Info 1 tuple computed Info Fixpoint iterations 0 Info EDB retrievals 0 Info IDB retrievals 0 Info ET retrievals 2 Info ET look ups 2 Info CT look ups 0 Info CF look ups 1 then as the computation for the goal p X is complete then no fixpoint iterations are needed For the same reason no EDB retrievals are needed as just the contents of the memo table are returned This illustrates point 2 above 5 20 4 2 Extensional Predicates optimize ep Extensional predicates are not needed to be iteratively computed So no fixpoint computation is needed for them They are known from the predicate dependency graph simply because they occur in the graph without incoming arcs For them a linear fetching is enough to derive their meanings ep stands for extensional predicates In the following system session we illustrate this with the fact p 1 DES p X Info Parsing query Info Query successfully parsed Info Solving query p X Info Displaying query answer Info Sorting answer p 1 Info 1 tuple computed Info Fixpoint iterations 1 Info EDB retrievals 1 Info IDB retrievals 0 Info ET retrievals 22 Info ET look ups es Info CT look ups 0 Info CF look ups
19. eot Remarks Return relation schema of relation name First line in the answer is the kind of relation either table for a table or view for a view followed by its name in the second line Next and successive pair of lines contain the column name and column type Example Input tapi relation schema t Output table t a int eot e Command tapi drop ic constraint Arguments constraint Constraint following Datalog syntax cf Section 4 1 15 8 Answer Regular Example Input tapi drop_ic pk s b Output Fernando S enz P rez 217 274 Universidad Complutense de Madrid Datalog Educational System success e Command tapi dbschema view name Arguments view name View name as an SQL identifier which needs to be enclosed between SOL delimiters if needed Answer relation kind relation name column name type column name type SQL SQL Datalog Datalog eot Remarks First line in the answer is the kind of relation view followed by its name in the second line Next and successive pair of lines contain the column name and its type Next lines contain the SOL definition of the view starting with a line containing the delimiter Next lines contain the Datalog definition of the view starting with a line containing the delimiter Finally end of transmission is the last line Both Datalog and SOL outputs are displayed depending on whether
20. fk p a q a Error Foreign key violation p a gt q a Offending values in database fk 1 Info Constraint has not been asserted 4 1 15 6 Functional Dependency A functional dependency constraint specifies that given a set of attributes A of a relation R they functionally determine another set A i e each tuple of values of A in R is associated with precisely one tuple of values A in the same tuple of R DES fd p a c Error Relation p has not been typed yet DES type p a int b int DES fd p a c Error Unknown column c DES fd p a b DES gt dbschema p Info Table p a int b int FD a gt b By asserting the fact p 1 2 it must hold that any other tuple with 1 in its first attribute must have the value 2 in its second attribute DES assert p 1 2 DES assert p 1 3 Error Functional dependency violation p a gt p b in table p a b when trying to insert p 1 3 Witness tuple p 1 2 Several functional dependency constraints can be imposed on a given relation They can be deleted either with the command drop ic or when an SOL DROP TABLE or DROP DATABASE statements are issued Trivial functional dependencies are rejected DES fd p a a Warning Trivial functional dependency Not asserted A relation already defined with facts or rules is checked for consistency when trying to assert a new functional dependency constraint
21. syntax colouring and parsing on the fly which informs of syntax errors when editing programs prior to the compilation License GPL Project Web Page http acide sourceforge net e Emacs development environment Author Markus Triska Date 2 22 2007 Description Provides an integration of DES into Emacs Once a Datalog file has been opened you can consult it by pressing F1 and submit queries and commands from Emacs This works at least in combination with SWI Prolog it depends on the s switch other systems may require slight modifications License GPL Project Web Page http stud4 tuwien ac at e0225855 index html Contact markus triska gmx at Installation Copy des e1 in the contributors web page to your home directory and add to your emacs load des adapt the following path as necessary setq des prolog file des systems swi des p1 add to list auto mode alist d1 des mode Restart Emacs open a d1 file to load it into a DES process this currently only works with SWI Prolog If the region is active F1 consults the text in the region You can then interact with DES as on a terminal Fernando S enz P rez 255 2 14 Universidad Complutense de Madrid Datalog Educational System 8 Related Work There has been a high amount of work around deductive databases RU95 its interest delivered many workshops and conferences for this subject which dealt to several syste
22. 1 tuple computed See also Section 4 1 12 for discarding duplicates in aggregates 4 1 10 Null Values The null value is included in each program signature for denoting unknowns in a similar way it is an inherent part of current relational database systems Comparing null values in Datalog opens a new scenario Two null values are not known to be equal and are not known to be distinct The following illustrates this expected behaviour DES gt null null Info 0 tuples computed DES null null Info 0 tuples computed However for the same null value the equality should succeed as in the conjunctive query X null X X A null value is internally represented as S NULL ID where ID is a unique identifier an integer Development listings enabled via the command development on allow to inspect these identifiers such as in DES gt development on DES p X Y X null Y null X Y Info Processing p X Y pr X SNULL 14 Y SNULL 15 X Y Info 0 tuples computed DES p X Y X null Y null X Y Info Processing Fernando S enz P rez 42 274 Universidad Complutense de Madrid Datalog Educational System p X Y X NULL 16 Y NULL 17 X Y Info 0 tuples computed The built in predicate is nu11 1 tests whether its single argument is a null value DES is null null is_null null Info 1 tuple computed DES
23. DES Prolog datalog projection X f projection al projection a2 Info 2 tuples computed The execution of this goal allows to noting the basic differences between Prolog and Datalog engines First the former searches for solutions one by one that satisfy the goal projection X The latter gives the whole meaning of the user defined relation projection with the query projection X at a time And second note the default set oriented behaviour of the Datalog engine which discards duplicates in the answer 3 5 Caveats Since the Datalog mode prompt accepts Datalog SOL and RA queries a given query can be interpreted in more than one language Let s consider the following system session in which a table is created and an RA query is submitted DES create table t a int DES insert into t values 1 DES distinct t Info Processing answer distinct t Warning Undefined predicate s t 0 Info 0 tuples computed Here we get a missing answer as we d expect the tuple t 1 in the result set However this query has been processed as a Datalog one where distinct t computes the different tuples for the relation t 0 which is not defined To overcome such situations simply precede the query by the language selection command as follows DES ra distinct t answer t a int Info 0 tuples computed Alternatively switch to the other query processor DES ra DES RA distinct
24. File tranclosure sql contains the SQL counterpart code which can be executed with process tranclosure sql create table p x y insert into p values a b insert into p values c d create table q x y insert into q values b c insert into q values d e create view pqs x y as select from p union select from q union select pqs x p y from pqs p where pqs y p x union select pqs x q y from pqs q where pqs y q x The query select from pqs returns the same answer as before File tranclosure ra contains the RA formulation pqs x y P union q union project pqs x p y pqs zjoin pqs y p x p union project pqs x q y pqs zjoin pqs y q x q ra select true pqs 6 7 Mutual Recursion files mutrecursion dl sql ra The following program shows a basic example about mutual recursion p a p b q c q d p X q X q X p X Submitting the goal p X we get p a p b Fernando S enz P rez 243 274 Universidad Complutense de Madrid Datalog Educational System P c p d Info 4 tuples computed which is the same set of values for arguments for the query q X The file mrtc dl isa combination of this example and that of the previous section The file mutrecursion sql contains the SOL counterpart code which can be executed with process mutrecursion sql sql assert p a assert p b assert q c assert q d View q must be g
25. Info Solving query answer A answer p a int gt Info Fixpoint iterations 500 Info EDB retrievals 500 Info IDB retrievals 1000 Info ET retrievals 627246 Info ET look ups 252999 Info CT look ups 1500 Info CF look ups 0 Info Total elapsed time 02 755 s DES optimize st on DES select from p Info Solving query answer A Info Computing by stratum of p A answer p a int gt Info Fixpoint iterations 2 Info EDB retrievals 502 Info IDB retrievals 504 Info ET retrievals 381248 Info ET look ups 128757 Info CT look ups 1006 Info CF look ups 0 Info Total elapsed time 01 888 s Fernando S enz P rez 231 274 Universidad Complutense de Madrid Datalog Educational System With this optimization enabled less extension table lookups are needed and the result is therefore computed faster However note that non termination might raise when breaking strata if using the metapredicate top This is because top requires the amount of tuples as indicated from its goal argument If this goal is isolated in a higher stratum no top constraint is propagated to the lower stratum as in DES type p a int DES assert p 1 DES assert p X p Y X Y 1 DES select top 2 from p answer p a int gt answer 1 answer 2 Info 2 tuples computed DES optimize st on DES select top 2 from p non terminating query That is as the SOL query has been compiled
26. OR REPLACE TABLE TableName Columni Typel ColumnConstrainti ColumnN TypeN ColumnConstraintN TableConstraints Fernando S enz P rez 78 274 Universidad Complutense de Madrid Datalog Educational System This statement defines the table schema with name TableName and column names Columni ColumnN with types Typel TypeN respectively If the optional clause OR REPLACE is used the table is dropped if existed already deleting all of its tuples A second form of this statement allows to create a table with the same schema of an existing table following SOL standard optional feature T171 CREATE TABLE TableName LIKE ExistingTableName Parentheses are not mandatory though This version copies the complete schema including all integrity constraints both predefined and user defined There is provision for several column constraints e NOT NULL Existency constraint forbiding null values e PRIMARY KEY Primary key constraint for only one column e UNIQUE Uniqueness constraint for only one column Also allowed the alternative syntax CANDIDATE KEY REFERENCES TableName Column J Referential integrity constraint for only one column DETERMINED BY Column Functional dependency If this constraint is applied to the column Column1 then Column Column1 Non Standard Check constraints are not supported in this syntax up to now However they can be imposed via Datalog user defined constrain
27. Other terminal symbols are completely written in capitals as SELECT Alternations are grouped with brackets instead of parentheses Percentage symbols start line comments User identifiers must start with a letter and consist of letters and numbers otherwise a user identifier can be enclosed between quotation marks both square brackets and double quotes are supported and contain any character Next SQLstmt stands for a valid SQL statement SQLstmt DDLstmt DMLstmt DOQLstmt ISLstmt Fernando S enz P rez 97 274 Universidad Complutense de Madrid Datalog Educational System CESEEEEEEEEEEEEEEEEEEECEEECEEECEEEEEEEEEESEEESS DDL Data Definition Language statements CESEEEEEEEEEEEEEEEEEEECEEECEEEEEEEEEECEEEESEEESS DDLstmt CREATE OR REPLACE TABLE CompleteConstrainedSchema oe OR REPLACE TABLE TableName LIKE TableName anes OR REPLACE VIEW Schema AS DQLstmt nd TABLE TableName ADD DROP CONSTRAINT TableConstraint x TABLE TableName TO TableName ln VIEW ViewName TO ViewName LT TABLE IF EXISTS TableName LAS VIEW IF EXISTS ViewName DATABASE DOLstmt Addition to support HR SQL syntax Schema RelationName RelationName Att Att CompleteConstrainedSchema RelationName Att Type ColumnConstraint ColumnConstraint Att Type ColumnConstraint ColumnConstraint TableConstraints CompleteSchema RelationName Att Type
28. R Caballero Y Garc a Ruiz and F S enz P rez A New Proposal for Debugging Datalog Programs 16th International Workshop on Functional and Constraint Logic Programming 2007 R Caballero Y Garc a Ruiz and F S enz P rez A Theoretical Framework for the Declarative Debugging of Datalog Programs In International Workshop on Semantics in Data and Knowledge Bases SDKB 2008 LNCS 4925 pp 143 159 Springer 2008 R Caballero Y Garc a Ruiz and F S enz P rez Applying Constraint Logic Programming to SQL Test Case Generation In 10th International Symposium on Functional and Logic Programming FLOPS 2010 2010 R Caballero Y Garc a Ruiz and F S enz P rez Algorithmic Debugging of SOL Views Eigth Ershov Informatics Conference PSI 11 Novosibirsk Akademgorodok Russia June 2011 Fernando S enz P rez 271 274 Universidad Complutense de Madrid Datalog Educational System CGS12a Chan78 Diet87 Diet01 DMP93 Drax92 FD92 FHH04 FP96 GR68 GTZ05 GUW02 HA92 HS15 IRIS2008 ISO00 R Caballero Y Garc a Ruiz and F S enz P rez Declarative Debugging of Wrong and Missing Answers for SOL Views In 11th International Symposium on Functional and Logic Programming FLOPS 2012 Springer Lecture Notes in Computer Science Kobe Japan May 2012 C L Chang Deduce 2 Further Investigations of Deduction in Relational Databases
29. Universidad Complutense de Madrid Datalog Educational System DES listing t 1 2 3 4 t X Y Z U 1 r r G NH x WN Production rules i e those defining the intensional database are not checked for primary key and foreign key constraints Note that it is possible to have tuples already stored in the database prior to its corresponding table creation This means that the CREATE TABLE statement can fail if any of those tuples does not meet all the constraints stated for the table For instance let s consider DES assert t null DES create table t a int primary key Error Null values found for t a Offending values in database nn NULL 0 Info Constraint has not been asserted Error Imposing constraints DES dbschema Info Database des Info No tables Info No views Info No integrity constraints Next a very simple example is reproduced to illustrate basic constraint handling DES create or replace table u b int primary key c int DES create or replace table s a int b int primary key a b DES create or replace table t a int b int c int d int primary key a c foreign key b d references s a b foreign key b references u b DES insert into t values 1 2 3 4 Error Foreign key violation t b d gt s a b when trying to insert t 1 2 3 4 Info 0 tuples inserted DES insert into s values 2 4 Info 1 tuple inserted DES insert into t values 1 2
30. X null is null X Info Processing answer X X null is null X answer null Info 1 tuple computed Its counterpart predicate is also provided is not nu11 1 which is true if its argument is not a null value Note that from a system implementor viewpoint nulls can never unify because they are represented by different ground terms On the other hand disequality is explicitly handled in order to fail when comparing nulls Evaluation of a given expression including at least one null value always returns the same concrete null value Thus two expressions including null values are considered equivalent if they are syntactically equal w r t ground instantiations for null values in particular For instance X null X 1 X 1 succeeds whereas X null Y null X 1 Y 1andX null X 1 1 xX do not 4 1 11 Outer Joins Three outer join operations are provided cf Section 4 5 6 following relational database query languages SQL extended relational algebra left right and full outer join Having loaded the example program relop dl we can submit the following queries DES gt c relop DES listing a a al a a2 a a3 DES listing b b al Fernando S enz P rez 43 274 Universidad Complutense de Madrid Datalog Educational System b b1 b b2 DES 1j a X b Y X Y Info Processing answer X Y 1j a X b Y X Y answer al al answer a2 null answer a3 null Info 3
31. al answer a2 Info 3 tuples computed DES RA distinct project a c answer c a string gt answer al rename Fernando S enz P rez 2914 Universidad Complutense de Madrid Datalog Educational System answer al answer a2 Info 3 tuples computed As well you can see both the equivalent Datalog rules and SOL statement for a given RA query by enabling compilation listings and SOL display as in DES show compilations on DES show sql on DES a union b Info Equivalent SQL query SELECT ALL FROM a UNION ALL SELECT ALL FROM b Info RA expression compiled to answer A a A answer A b A answer a a string gt answer al answer a2 answer a3 answer b1 answer b2 Info 5 tuples computed 3 4 Prolog Mode This mode is enabled via the command prolog and goals are sent to the Prolog processor This is the only language mode in which Prolog inputs can be processed Assuming that the file relop d1 has been already consulted let s consider the following example DES Prolog projection X projection a1 type for more solutions Intro to continue projection al type for more solutions Intro to continue projection a2 type for more solutions Intro to continue no Fernando S enz P rez 28 2 14 Universidad Complutense de Madrid Datalog Educational System
32. and null in the target column a 4 2 5 2 Deleting Tuples DELETE FROM TableName AS Identifier WHERE Condition This statement deletes all the tuples of the table TableName that fulfil Condition It does not delete production rules asserted via assert Examples DELETE FROM t which deletes all tuples from table t DELETE FROM t WHERE a 0 which only deletes tuples from table t such that the value for the field a is greater than 0 Aliases can be used in correlated subqueries as in DELETE FROM Contracts C WHERE NOT EXISTS SELECT FROM Contains WHERE Reference C Reference 4 2 5 3 Updating Tuples UPDATE TableName AS Identifier SET Atti Expril AttN ExprN WHERE Condition Fernando S enz P rez 85 274 Universidad Complutense de Madrid Datalog Educational System This statement updates each field Atti with the values computed for each Expri for all the tuples of the table TableName that fulfil Condition Example UPDATE Employees SET Salary Salary 1 1 WHERE Id IN SELECT Id from Promoted WHERE Year 2015 which increases in a 1076 the salaries of the employees which have been promoted in 2015 4 2 6 Data Query Language There are three main types of SOL query statements SELECT statements set statements UNION INTERSECT and EXCEPT and WITH statements for building recursive queries 4 2 6 1 Basic SOL Queries The syntax of the basic SOL query statement is SELECT DISTI
33. enabled by default Memoing is only performed for top level goals optimize_st Display whether stratum optimization is enabled optimize_st Switch Enable or disable stratum optimization on or off resp and enabled by default Extensional table lookups are saved for non recursive predicates calling to recursive ones but more tuples might be computed if the non recursive call is filtered as in this case an open call is submitted instead i e not filtered spy Pred Arity Fernando S enz P rez 202 274 Universidad Complutense de Madrid Datalog Educational System Set a spy point on the given predicate in the host Prolog interpreter e system Goal Submit Goal to the underlying Prolog system e terminate Terminate the current DES session without halting the host Prolog system Synonym t e write String Write String to console St ring can contain system variables as stopwatch which holds the current stopwatch time and total elapsed time which holds the last total elapsed time Strings are not needed to be delimited the text after the command is considered as the string See Subsection 5 15 for system variables e writeln String As write but adding a new line at the end of the string e write to file File String Write String to File If File does not exist it is created otherwise previous contents are not deleted and String is simply appended to File String can contain system variab
34. show_compilations on DES gt select from a union all select from b Info SQL statement compiled to answer A a A answer A b A answer a a string gt answer al answer a2 answer a3 answer b1 answer b2 Info 5 tuples computed 3 3 Relational Algebra Mode In this mode queries are sent to the Relational Algebra RA processor whereas commands cf Section 5 17 are sent to the command processor RA queries can end with an optional semicolon in single line mode Multi line mode requires the ending semicolon RA mode is enabled via the command ra Datalog and SQL queries cannot be handled by this mode Recall however that the Datalog mode is able to reckon RA inputs and handle them without the need for turning on the SQL mode The relational algebra mode is provided for a single language input cf Section 3 5 Fernando S enz P rez 23 274 Universidad Complutense de Madrid Datalog Educational System If we want to develop an analogous RA example session to the former examples we can submit the first inputs also available in the file examples relop ra listed below Now answer relations to RA queries are denoted by the relation name answer As before lines starting by either or are simply remarks If you wish to automatically reproduce the following interactive session of inputs you can type process examples relop ra notice that you must omit examples if you are in this
35. t The meaning of a relation is the set of facts inferred both extensionally and intensionally from the program Fernando S enz P rez 29 274 Universidad Complutense de Madrid Datalog Educational System Another example is the division operator DES create table t a int b int DES create table s a int DES t division s Error Incompatible schemas in division operation t division s DES ra t division s answer t b int Info 0 tuples computed As the query t division s is firstly interpreted as a Datalog query both t and s are assumed to be predicates of arity 0 which obviously are not compatible for the operation Prepending the command ra forces the system to interpret the input as an RA query providing the expected result 3 6 Getting Help You can get useful information with the following commands e help Shows the list of available commands which are explained in Section 5 17 e help Keyword To request help on a given keyword command or built in e builtins Shows the list of built ins which are explained in Section 4 5 Also visit the URL for last information http des sourceforge net Finally you can contact the author via the e mail address fernan sip ucm es 4 Query Languages DES has evolved from a quite simple Datalog interpreter to its current state which relies on a deductive database engine which can be queried with either Datalog SQL or RA languages I
36. the next section 2 2 2 Linux 22 2 1 Executable Distribution You can create a script or an alias for executing the file des at the distribution root This executable has been generated under SICStus Prolog so that all SICStus notes in the rest of this document also apply to these executables In addition since it is a portable application it needs to be started from its distribution directory 2 2 2 2 Source Distribution You can write a script for starting DES according to the selected Prolog interpreter as follows a SICStus Prolog SICSTUS 1 des pl Provided that SICSTUS is the variable which holds the absolute filename of the SICStus Prolog executable b SWI Prolog Fernando S enz P rez 15 274 Universidad Complutense de Madrid Datalog Educational System SWI g ensure loaded des Provided that SWI is the variable which holds the absolute filename of the SWI Prolog executable 2 3 3 Starting DES from a Prolog interpreter Besides the methods just described you can start DES from a Prolog interpreter disregarding the OS and platform first changing to the distribution directory and then submitting des Or better if the system does support it ensure loaded des If the system does not start by itself then type start 3 Getting Started Whichever method you use to start DES a script batch file or shortcut as described in Section 2 2 you get the following
37. you can use relative or absolute pathnames In general you can use a slash as a directory delimiter but depending on the platform you can also use the backslash X Also it might be needed to enclose pathnames between single quotes See Section 4 1 2 for information about DES queries Some commands are labelled with TAPI enabled which means that they can be submitted to the textual application programming interface TAPI There is additional information for such commands in Section 5 18 2 Next commands are described where italics indicate a parameter which must be supplied by the user Square brackets indicate an optional keyword or parameter excepting the first two DES Database commands for consulting and reconsulting files following Prolog syntax If a parameter is not accepted please try again enclosing it between single quotes 5 17 1 DES Database e FileNames Load the Datalog programs found in the comma separated list Filenames discarding both rules already loaded integrity constraints and SQL table and view definitions The extension table is cleared and the predicate dependency graph and strata are recomputed Examples Assuming we are on the examples distribution directory we can write DES mutrecursion family TAPI enabled See also consult Filename e FileNames Load the Datalog programs found in the comma separated list Filenames keeping rules already loaded integrity c
38. 1 y n a yl y Input Should standard include a tuple of the form Anna 2 1 y n a yl y Input Should standard include a tuple of the form Anna 3 0 y n a y y Info Buggy view found intensive The first answer m Anna indicates that Anna is missing in the view awards Next the user indicates that view intensive should not include Anna The debugger then asks three simple questions involving the view standard After checking the information for Anna the user indicates that the listed tuples are correct Then the tool points out intensive as the buggy view after only three simple questions Observe that intermediate views can contain hundreds of thousands of tuples but the slicing mechanism helps to focus only on the source of the error 5 11 22 Wrong Tuples Let s consider a modification of the database defined in awards1 sql as found in file awards2 sql where the view basicLevelStudents has been incorrectly defined We process this file inspect the outcome of awards and notice that Anna should not be in the result set Then we proceed with the debugging session as follows DES process examples SQLDebugger awards2 DES debug sql awards Info Debugging view awards 1 awards Ana 2 awards Mica Input Is this the expected answer for view awards y n m mT w wN a h n wl Fernando S enz P rez 173 2 14 Universidad Complutense de Madrid Datalog Educational S
39. 2 2 Mam Features M 77 TUM NBC cA fe RPM A E 78 4 24 Das Definito Lepgtlapu orsus tle terri MA rh oder teeter miri btt in 78 A241 Creatine Tablesasscs sebo ines pactis EEE ol cbr o PEN ADR 78 A242 EI AUD M 82 42 140 Droppie ADCS uto ease tabes erinnern Red Und CURE A 83 22123 IMODDUDE VIONSsaecneipeiset druide A sii her o a rode I n E 83 4245 Renaming TdbleS uiassenssetegnit k pui eni ei esr ENEEIER 83 4246 M uod m 83 A247 Droppie Databases uudeqaeeiet bdo pedir RTR RRT 83 225 Data Manipulation Language nsere ren aai aa eei a a 84 425 1 Inserts Dupl s ienecetsn uitia ien E A ra DE 84 425 2 Deleting Vales M 85 22555 Updanng Tes dascdepesdipo titus eie MH PEE UdeMM di eeu upin 85 426 Data Query Language sc coniinnatiane nanan ene es 86 4204 BasicoOlzOUEfI6S sro rere e erm D ere regias 86 42611 TOP N COURS 89 42012 CI aL cio T euameaseanee eee tee 89 2257 Mult Set ESS IOS craccincree inosine e E EE 90 4271 Relational Division in SOL Non SfanPard os secessit e ient 91 424 Set SO MICU Mes casei nennt EE 91 427 9 WITE SOL OUerleSs e e tiis tree ree Fere rere sti trien eet rer ds 92 42 4 Hypothebcal SOL Oueries Nom Standard ausssetaviarazksetixcene esit 93 42 9 Information Schema Language ISL ues teet tre trant tet tabs t 97 ADD SOV GEHE edi bcd cece cec uricon ertet eno e EHE a eute tene uei eese en aue vae ten mons 97 25 Extend
40. 3 4 Error Foreign key violation t b gt u b when trying to insert t 1 2 3 4 Info 0 tuples inserted DES insert into u values 2 2 Info 1 tuple inserted Fernando S enz P rez 81 274 Universidad Complutense de Madrid Datalog Educational System DES insert into t values 1 2 3 4 Info 1 tuple inserted DES listing s 2 4 t 1 2 3 4 u 2 2 4 2 4 2 Creating Views CREATE OR REPLACE VIEW ViewName Columnl ColumnN AS SQLStatement This statement defines the view schema in a similar way as defining tables If the optional clause OR REPLACE is used the view is dropped if existed already Other tuples or rules asserted with the command assert are not deleted The view is created with the SQL statement SQLStatement as its definition Note that column names are mandatory Examples DES dbschema Info Table s s a int b int PK a b u b int c int PK b t a int b int c int d int PK a c FK t b d s a b FK t b gt u b Info View s v a int b int c int d int Defining SQL Statement SELECT ALL FROM E WHERE a gt 1 Datalog equivalent rules v A B C D t A B C D A gt 1 w a int b int Defining SQL Statement SELECT ALL t a s b FROM t s WHERE t a gt s a Datalog equivalent rules w A B t A C D E s F B Fernando S enz P rez 82 274 Universidad Complutense de Madrid Datalog Educat
41. 5 EAL IE TCA CUO PR X 160 5b Seurce to Source Transf ormatiOnS irenstea R E 161 WM GU roi T n anni E E 161 MER dcn Idi o TT 161 5 9 Datos and SOL Trabet us suspen re etia p cru eti TEENE EDU a EU EUN 164 5 9 1 Tracing Datalog OUGOPIGS ionic entree tttbbe Eee ets appa uer te EeUE rte enian 165 59 2 Traan PSP E RE 165 5 10 Datalog Declarative D DUBP BE eeeehi tii rb refe heap re nro tees 167 2511 SQL Declarative Debupbet code cds bud oc tonii Duns publ eus bel Gr LORD ERE 168 511 1 Trusted Ssecihcallibauo napi bar Hebr ME Roseto UH brisa io NEU E ia DOE 170 5 LL2 Nlssing and Wrone TUIS ssudidbseutipos e vo Er ELM rose RA RUPES HERE BE ERU 172 SITAL Missing TUPlES rrenen a R E ETE neers 172 51122 Wrong DHOleBssseuiessiienie reborn Feccebrueaita EE EI e t rae 173 5 11 23 Displaying Extended Informal Om iesistie 174 512 SOL Test Case Generator ciii iecit cine bc teh eeee icti cadent bete te 174 S13 Batch ProcesSiN peerage ores ee 176 n1 Connguraton Pileri vbi pb c0 Matta AA nets 178 515 System uris m 178 Slo Messages e 180 D17 COMPAN C n 181 5 17 t DES Data oo c n 182 5 172 ODBC Data c 186 5 17 3 Debugging and Test Case erent iaidaucinnmauniiciraionuiimnencadis 187 eb m opi D Ts 188 51759 Operating OUS II s aede a te CuISF
42. A B Max LO Max L is LO 1 Sp X Y L min path X Y Z2 Z2 L Note that the infinite computation that may raise from using the built in is 2 is avoided by limiting the total length of a path to the number of edges in the graph The following query returns all the possible paths and their corresponding minimal distances DES sp X Y L sp a a 2 sp a b 1 sp a c 1 sp a d 2 sp b a 1 sp b b 2 sp b c 2 sp b d 1 Info 8 tuples computed Below is the SQL formulation for the same problem file spaths sql DES create or replace view spaths origin destination length as with recursive path origin destination length as select edge 1 from edge union select path origin edge destination path length 1 from path edge where path destination edge origin and path length lt select count from edge select origin destination min length from path group by origin destination DES gt select from spaths answer spaths origin spaths destination spaths length gt answer a a 2 answer a b 1 answer a c 1 answer a d 2 answer b a 1 answer b b 2 answer b c 2 answer b d 1 Fernando S enz P rez 239 2 14 Universidad Complutense de Madrid Datalog Educational System Info 8 tuples computed A possible RA formulation follows max length max length group by count true edge path origin destination length
43. An arc P Q means that there exists a rule such that P is the predicate for its head and Q is the predicate for one of its literals If the literal is negated the arc is negative which is expressed as P Q The graph for this program can be depicted as in Figure 1 wet Va b Z bu a d Figure 1 Predicate Dependency Graph for negation dl The second command shows the stratum assigned to each predicate This assignment is computed by following an algorithm based on UlIm95 but modified for taking advantage of the predicate dependency graph Strata are shown as a list of pairs P S where P is a predicate and S is its assigned stratum In this example all of the program predicates are in stratum 1 but a which is assigned to stratum 2 This means that if the meaning of a is to be computed then the meanings of predicates in lower strata and only those predicates a depends on have to be firstly computed Since the algorithm strata does not follow a naive bottom up solving only the meanings of required predicates are computed To illustrate this consider the query b for the same program DES computes the predicate dependency subgraph for b i e all of the predicates which are reachable from b and then a stratification is computed Notice the different information given by the system for solving the queries a and b here verbose output is currently enabled with the command verbose on DES a Info Computing by stratum b Fern
44. Att Type Type CHAR n fixed length string of n characters CHARACTER n equivalent to the former CHAR fixed length string of 1 character VARCHAR n variable length string of up to n characters VARCHAR2 n Oracle s variable length string of up to n characters VARCHAR variable length string of up to the maximum length of the underlying Prolog atom Fernando S enz P rez 98 274 jg H Universidad Complutense de Madrid USES buf Datalog Educational System STRING As VARCHAR CHARACTER VARYING n equivalent to the former INT INTEGER equivalent to the former SMALLINT NUMERIC p d a total of p digits where d of those are in he decimal place DECIMAL p d Synonymous for NUMERIC NUMBER p d Synonymous for NUMERIC For supporting Oracle NUMBER REAL FLOAT Synonymous for REAL DECIMAL Synonymous for REAL added to support DECIMAL LogiOL Type Not SOL standard oe oe oe ct oe oe oe DOUBLE PRECISION equivalent to the former as with precision of at least n digits T four digit year month and day i hours minutes and seconds combination of date and time ColumnConstraint NOT NULL iE KEY T KEY Not in the standard poni TableName Att CHECK CheckConstraint TableConstraints TableConstraint TableConstraint TableConstraint NOT NULL Att Not in the standard Ferna
45. Datalog rules to SQL statements 5 2 10 2 Opening and Closing Connections Each time a persistent assertion is issued over a given connection this connection is opened although the current database is not changed to it In addition its is not closed although a drop assertion command was issued A connection cannot be closed if any persistent predicate remains on it 5 2 10 3 Abolishing Predicates The command abolish not only abolishes rules in the deductive database but also those predicates that have been persistent in the external database dropping their table and view definitions Fernando S enz P rez 152 274 Universidad Complutense de Madrid Datalog Educational System 5 2 10 4 Null Values Processing of null values involving LDB and EDB is not still supported as they have different representations So outer joins are not supported up to now 5 2 10 5 External Database Processing Only the transferred rules of persistent predicates can be processed by the EDB In particular neither Datalog queries nor SOL queries submitted from des are translated into external SOL and therefore processed by such EDB Only SOL queries in the same connection as the persistent predicate are processed by the EDB However future releases might translate queries submitted from des 5 2 10 6 Supported Platforms A limited number of systems have been tested including MySOL MS Access IBM DB2 and others However test suites ar
46. Fernando S enz P rez 178 2 14 Universidad Complutense de Madrid Datalog Educational System development Flag indicating a development session Listings and consultings show source and compiled rules display_answer Flag indicating whether answers are to be displayed upon solving on or off display nbr of tuples Flag indicating whether the number of tuples are to be displayed upon solving on or of S duplicates Flag indicating whether duplicates are enabled Sedb retrievals Flag indicating the number of EDB retrievals during fixpoint computation editor Flag indicating the current external editor if defined already Set flag Extension Table flag Set lookups Flag indicating the number of ET lookups Sextensional predicates List of extensional predicates format_timing Flag indicating whether formatting of time is enabled or disabled on or off fp iterations Flag indicating the number of iterations during fixpoint computation S host statistics Flag for host statistics Shypothetical Flag indicating whether hypothetical queries are enabled on or of indexing Flag indicating whether indexing on extension table is enabled on or of language Flag indicating the current default query language last_autoview Flag indicating the last autoview executed This autoview should be retracted upon exceptions multiline Flag indicating whether multiline i
47. Fernando S enz P rez 194 274 Universidad Complutense de Madrid Datalog Educational System 5 17 8 5 17 9 version Display the current DES system version Query Languages datalog Switch to Datalog interpreter all queries are parsed and executed first by Datalog engine If it is not a Datalog query then it is tried first as an SQL statement If it is neither SQL finally it is tried as an RA expression datalog Query Trigger Datalog resolution for the query Query the query is parsed and executed in Datalog but if a parsing error is found it is tried first as an SQL statement and second as an RA expression prolog Switch to Prolog interpreter all queries are parsed and executed in Prolog prolog Goal Trigger Prolog s SLD resolution for the goal Goal ra Switch to RA interpreter all queries are parsed and executed in RA ra RA expression Trigger RA evaluation for the query RA expression sql Switch to SQL interpreter all queries are parsed and executed in SQL sql SQL statement Trigger SOL resolution for SQL statement TAPI related See also Section 5 18 2 for more information tapi Input Process Input and format its output for TAPI communication Only a limited set of possible inputs are allowed cf Section 5 18 e test tapi Test the current TAPI connection TAPI enabled Fernando S enz P rez 195 274 Universidad Complutense de Madrid Datalog Educational System
48. Goat to north shore state n n n s Farmer takes Wolf to south shore state s s s n Farmer takes Goat to north shore state s s n s Farmer returns to north shore state n s n s Farmer takes Goat to south shore gt state s s s s Final safe state 6 8 1 Dealing with paths file puzz1e1 d1l As just illustrated the sequence of movements needed to find a feasible solution can be inferred from the answer table Nonetheless it is possible to outcome such sequences even when there is no provision for data structures The idea is to code sequences of movements into a single plain type as an integer We can resort for 15 Remember that the system returns all of the possible solutions Fernando S enz P rez 246 2 14 Universidad Complutense de Madrid Datalog Educational System instance to build a decimal number whose digits as read from right to left indicate the selected movement in the sequence If we number the movement alternatives from 1 to 4 in the same order as rules occur at the program text the first solution above can be coded as 2412342 and the second one as 2432142 Modeling in this way we can rewrite the predicate state by adding a first argument as the sequence needed to reach a given state and the stetps already performed This is useful to build the code as adding a number identifying the alternative rule multiplied by the n th power of ten where n is the number of steps already d
49. H Gallaire and J Minker eds Logic and Databases Plenum Press 1978 S W Dietrich Extension Tables Memo Relations in Logic Programming IV IEEE Symposium on Logic Programming 1987 S W Dietrich Understanding Relational Database Query Languages Prentice Hall 2001 M Derr S Morishita and G Phipps Design and Implementation of the Glue NAIL Database System In Proc of the ACM SIGMOD International Conference on Management of Data pp 147 167 1993 Draxler Chr A Powerful Prolog to SOL Compiler CIS Bericht 92 61 Centrum fiir Informations und Sprachverarbeitung Ludwig Maximilians Universit t M nchen 1992 C Fan and S W Dietrich Extension Table Built ins for Prolog Software Practice and Experience Vol 22 7 pp 573 597 July 1992 R Fikes P J Hayes and I Horrocks OWL OL a language for deductive query answering on the Semantic Web J Web Sem 2 1 19 29 2004 Wolfgang Faber and Gerald Pfeifer DLV homepage since 1996 url http www dlvsystem com C C Green and B Raphael The Use of Theorem Proving Techniques in Question Answering Systems Proceedings of the 23 44 ACM National Conference Washington D C 1968 S Greco I Trubitsyna and E Zumpano NP Datalog A Logic Language for NP Search and Optimization Queries Database Engineering and Applications Symposium International 0 344 353 2005 H Garcia Molina J D Ullman J Widom Database Systems The Complet
50. Plenum Press 1981 J Lloyd Foundations of Logic Programming Springer Verlag 1987 J Minker Perspectives in Deductive Databases Technical Report CS TR 1799 University of Maryland at College Park March 1987 J Minker and J M Nicolas On Recursive Axioms in Deductive Databases Information Systems 16 4 670 702 1991 J Matuszynski and A Szalas Living with Inconsistency and Taming Nonmonotonicity To appear in Datalog 2 0 G Gottlob G Grasso O de Moor and A Sellers eds LNCS 6702 334 398 Springer Verlag 2011 G Phipps M A Derr and K A Ross Glue NAIL A Deductive Database System In Proc of the ACM SIGMOD Conference on Management of Data pp 308 317 1991 J A Robinson A Machine Oriented Logic Based on the Resolution Principle Journal of the ACM 12 23 41 1965 R Ronen and O Shmueli Evaluating very large Datalog queries on social networks In EDBT 09 Proceedings of the 12th International Conference on Extending Database Technology pages 577 587 New York NY USA 2009 ACM R Ramakrishnan D Srivastava S Sudarshan and P Seshadri The Coral deductive system VLDB Journal 3 2 161 210 1994 P Rao Konstantinos F Sagonas Terrance Swift David Scott Warren and Juliana Freire XSB A System for Efficiently Computing WFS Logic Programming and Non monotonic Reasoning 1997 R Ramakrishnan and J D Ullman A Survey of Research on Deductive Database Systems Jo
51. SOL view text is listed along with the metadata available with the command dbschema On another subject it is now possible to inspect an equivalent SOL formulation for RA expressions in addition to the already available Datalog compilations So students can examine different but equivalent formulations automatically generated in different query languages Some optimizations have been added to enhance performance a bit as the incremental building of the dependency graph the EDB optimization applied to external relations and fixpoint computation of external relations Also some new commands have been added to provide better batch processing control and parameters to scripts have been included Last but not the least both the printed and online manual have been coloured with respect to system keywords and messages The complete list of enhancements changes and fixed bugs are listed in Section 11 1 A novel contribution implemented in this system is a declarative debugger of Datalog queries CGS07 CGS08 which relies on program semantics rather than on the computation mechanism The debugging process is usually started when the user detects an unexpected answer to a query By asking questions about the intended semantics the debugger looks for incorrect program relations See Section 5 10 for Fernando S enz P rez 8 2 14 Universidad Complutense de Madrid Datalog Educational System details Also a similar declarative appr
52. System DES insert into s values 2 Insert s 2 in EDB Info 1 tuple inserted Select data from EDB DES select from s answer a integer 4 gt Note the different type w r t DDB answer 2 Info 1 tuple computed DES t X s Y Join t 1 DDB with Info Processing s 1 EDB answer X Y t X s Y answer 1 2 Info 1 tuple computed 5 1 8 Solving Engine and ODBC Connections When the current database is an open ODBC connection any statement is submitted to the external database for its solving by default However this behavior can be changed by forcing DES to solve SQL DQL queries submitted to an external database This allows to experiment with more expressive forms of SQL queries as allowed by the local deductive engine as hypothetical queries non linear and mutually recursive queries To force a single SQL DQL query to be processed by DES simply use the command des followed by the query Note however that DML and DDL queries are still sent to the external DBMS Let s consider MySQL which does not support recursive queries up to its current version 5 6 If we had available the table edge a int b int we can compute its transitive closure as follows DES open db mysql DES select from edge answer a integer 4 b integer 4 gt answer 1 2 answer 2 3 answer 3 4 Info 3 tuples computed DES gt des assume select el a e2 b from edge el edge e2 wh
53. Wiele However adapting the code in the file des glue pl it could be ported to any other Prolog system See Section 5 20 3 for porting to unsupported systems We have tested DES under SICStus Prolog 4 2 3 and SWI Prolog 6 6 6 and several operating systems MS Windows XP Vista 7 Ubuntu 10 04 1 Ubuntu 12 04 and MacOSX Snow Leopard The source distribution comes in a single archive file containing the following e readmeDES lt version gt txt A quick installation guide and file release contents e des pl Core of DES including Datalog processor e des atts pl Attributed variables of the host Prolog system des commands pl System commands e des dcg p1l DCG expansion e des dl debug p1l Datalog declarative debugger e des glue pl Contains particular code for the selected host Prolog system des help pl Help system e des modes pl Modes for Datalog predicates and rules des_persistence pl Persistence for Datalog predicates e des_ra pl RA processor e des_sql pl SQL processor e des sql debug pl SQL declarative debugger e des_tc pl Test case generator for SOL views e des trace pl Tracers for SOL and Datalog e des types pl Type inferrer and checker for SOL RA and Datalog e doc manualDES3 10 pdf This manual e doc release notes history DES pdf Releases notes history of previous versions e examples Example files which will be discussed in Section 6 e license A verbatim copy of the GNU Lesser General Public License for thi
54. a primary key for matching columns raises an error DES fk p a q b1 Error Referenced column list q b is not a primary key DES pk q b DES fk p a q b1 The same constraint cannot be reasserted DES fk p a q b Error Trying to reassert an existing constraint DES dbschema Info Table s p a int FK p a gt q b q b int PK b Info No views DES assert p 1 Error Foreign key violation p a gt q b when trying to insert p 1 DES assert q 1 DES assert p 1 DES listing pu q 1 Info 2 rules listed Several foreign keys may exist for the same relation DES type p a int DES type q b int DES type r a int b int c string DES pk p al pk q b DES fk r a p a f k r b q b DES gt dbschema r Info Table r a int b int c string FK r a gt p a FK r b gt q b Referenced columns have to match the types of foreign key columns otherwise an error is raised Fernando S enz P rez 61 274 Universidad Complutense de Madrid Datalog Educational System DES fk r cl q b Error Type mismatch r c string varchar q b number integer A relation already defined with facts or rules is checked for consistency when trying to assert a new foreign key constraint DES type p a int DES type q a int DES assert p 1 DES pk q al DES
55. ancestor X Y parent X Z ancestor Z Y The query ancestor tom X yields the following answer that is it computes the set of descendants of tom ancestor tom amy ancestor tom carolIII ancestor tom fred Info 3 tuples computed Solving the view SOn S F M father F S mother M S yields the following answer computing the set of sons Info Processing son S F M father F S mother M S son amy tom grace son carolII tony carolI son carolIII fred carolII son fred jack amy Info 4 tuples computed The file family sql contains the SQL counterpart code which can be executed with process family sql create table father father child insert into father values tom amy insert into father values jack fred insert into father values tony carolII insert into father values fred carolIII create table mother mother child insert into mother values grace amy insert into mother values amy fred insert into mother values carolI carolII insert into mother values carolII carolIII Fernando S enz P rez 241 2 14 Universidad Complutense de Madrid Datalog Educational System create view parent parent child as select from father union select from mother create or replace view ancestor ancestor descendant as select parent child from parent union select parent descendant from parent ancestor where parent child ance
56. are not in this standard as hypothetical views and the division relational algebra operator Section titles include the notice Non Standard to refer to such extra features This section describes the main limitations features and decisions taken in designing SOL which coexists with Datalog Also we describe four parts of the supported subset of the SOL language DDL Data Definition Language for defining the database schema DOL Data Query Language for listing contents of the database and DML Data Manipulation Language for inserting and deleting tuples and ISL Information Schema Language Section 4 2 9 resumes the SOL grammar As ODBC connections are allowed some DBMS specific features have been added as well as features in ISL which are not covered in the standard 4 2 1 Main Limitations The projection list consists of column references column table column alias column wildcards table alias alias references arithmetic expressions and SQL statements Other expressions might be supported in further releases e Noinsertions deletions updates into views e Limited syntax error reports However syntax errors from ODBC connections are displayed as generated by the external database e Strings in displayed outputs are not enclosed between aposthrophes unless they begin with upper case 4 2 2 Main Features As main features we highlight e Data query data definition data manipulation and information
57. b This program comes with ABSOLUTELY NO WARRANTY is B Columns free software and you are welcome to redistribute it asstring under certain conditions Type license for details bint EEEEEEEHEHEREREROHOOOOOOOHOHHRERHEREREEREEREEPEROHPOUN S n 1 a 5 SQL Text 8 100 oP Labels SELECT ALL departrr 33 Datalog Text Vien i9 9 S E Su sce xs DEG Annronatac E Jexamples aggregates sql Grammar bytes Lexicon Configuration sql 11 1 NumLines 50 INS 22 21 16 I 2 1 2 4 Mac OS X From the same URL above you can download a Mac OS X executable distribution in a single archive file containing the following e des Console executable file e doc manualDES3 10 pdf This manual e doc release_notes_history DES pdf Releases notes history of previous versions e examples Example files which will be discussed in Section 6 Fernando S enz P rez 13 274 Universidad Complutense de Madrid Datalog Educational System e license A verbatim copy of the GNU Lesser General Public License for this distribution e readmeDES3 10 txt A quick installation guide and release notes The following screenshot has been taken in Mac OS X Snow Leopard DES Datalog Educational System v 3 10 Type help for help about commands Fernando Saenz Perez c 2004 2015 DISIA GPD UCM Please send comments questions etc to fernan sip ucm es Web site http des so
58. b string gt answer al al answer al b2 answer a2 b2 Info 3 tuples computed DES RA Left Outer Join DES RA a ljoin a a b b b answer a a string b b string gt answer al al answer a2 null answer a3 null Info 3 tuples computed DES RA Right Outer Join DES RA a rjoin a a b b b answer a a string b b string gt answer al al answer null b1 answer null b2 Fernando S enz P rez 26 274 Universidad Complutense de Madrid Datalog Educational System Info 3 tuples computed DES RA Full Outer Join DES RA a fjoin a a b b b answer a a string b b string gt answer al al answer a2 null answer a3 null answer null b1 answer null b2 Info 5 tuples computed DES RA Grouping DES RA group by a a count true c answer c a string a3 int gt answer a1 2 answer a2 1 Info 2 tuples computed DES RA Renaming DES RA select al a lt a2 a rename al a a product a2 a a answer al a string a2 a string gt answer al a2 answer al a3 answer a2 a3 Info 3 tuples computed DES RA gt Duplicate elimination DES RA duplicates off Info Duplicates are already disabled DES RA project a c answer c a string gt answer al answer a2 Info 2 tuples computed DES RA duplicates on DES RA project a c answer c a string gt answer al answer
59. be either simply an expression or an expression followed by the ordering criterium ASC or ASCENDING for ascending and DESC or DESCENDING for descending Answers are ordered by default see order_answer but this order is overrided if the ORDER BY clause is either directly used in a query or in the definition of a view the query refers to Fernando S enz P rez 86 274 Universidad Complutense de Madrid Datalog Educational System Examples Given the tables CREATE TABLE s a int b int CREATE TABLE t a int b int CREATE TABLE v a int b int We can submit the following queries SELECT distinct a FROM t SELECT t s b FROM t s v WHERE t a s a AND v b t b SELECT t a s b t ats b FROM t s WHERE t a s a SELECT FROM SELECT from t as rl SELECT from s as r2 WHERE rl a r2 b SELECT FROM s WHERE s a NOT IN SELECT a FROM t SELECT FROM s WHERE EXISTS SELECT a FROM t WHERE t a s a SELECT FROM s WHERE s a SELECT a FROM t SELECT 1 alta2 atl AS al a 2 AS a2 FROM t SELECT 1 SELECT a FROM t ORDER BY a Notes e SQL arithmetic expressions follow the same syntax as Datalog e An SQL arithmetic expression can be renamed and used in other expressions e Circular definitions will yield exceptions at run time as in a a3 AS a3 Fernando S enz P rez 87 274 Universidad Complutense de Madrid Datalog Educational System A join relation is either of
60. be evaluated by the RA processor you can either switch to RA with ra or prepend the query with ra as follows DES Either switch to RA DES gt ra DES RA distinct project a c DES gt datalog DES gt Or simply add ra DES gt ra distinct project a c Left outer join Ri Ply Ro Includes all tuples of Ri joined with matching tuples of R2 w r t condition Those tuples of Ri which do not have matching tuples of R are also included in the result and columns corresponding to R are filled with null values Concrete syntax Relation1 ljoin Condition Relation2 Example Fernando S enz P rez 108 274 Universidad Complutense de Madrid Datalog Educational System a ljoin a b b Right outer join Ri XC R2 Equivalent to R2 Xp Ri Ri Dp R2 Concrete syntax Relationl rjoin Condition Relation2 Example a rjoin a b b Full outer join Ri Dy Ro Equivalent to Ri Dg R2 U Ri PL Ro Concrete syntax Relationl fjoin Condition Relation2 Example a fjoin a b b Natural left outer join Ri PX Ro Similar to left outer join but with no condition Return tuples of Ri joined with R such that common attributes are pair wise equal and occur only once in the output relation Concrete syntax Relationl nljoin Relation2 Example a nljoin c Natural right outer join RibC R2 Equivalent to R2 P4 Ri Concrete syntax Relationl nrjoin Relation2 Example a nrjoin c Natural full outer join Ri PC
61. by the external RDBMS DES select distinct from v answer a varchar b varchar gt answer 1 1 answer 1 2 Info 2 tuples computed Nonetheless these external objects can be accessed from Datalog as well please remember to enable duplicates to get the expected result DES gt duplicates on Info Duplicates are on DES s X t X Info Processing answer X s X t X answer 1 answer 1 Info 2 tuples computed This is equivalent to the following SQL statement DES select s a from s t where s a t a answer a varchar gt answer 1 answer 1 Info 2 tuples computed However whilst the former has been processed by the Datalog engine the latter has been processed by the external RDBMS So some complex SQL statements might be more efficiently processed by the external RDBMS Duplicates are relevant in a number of situations For instance consider the following where duplicates are initially disabled DES group by v X Y X Y Cz 2count Info Processing answer X Y C group by v X Y X Y C count answer 1 1 1 answer 1 2 1 Fernando S enz P rez 127 2 14 Universidad Complutense de Madrid Datalog Educational System Info 2 tuples computed Although there are a couple of tuples for each group see the table contents above only one is returned in the count because they are indistinguishable in a set Now if
62. c d Info 1 tuple computed where negated calls to c1osed 1 occur in the first rule of 1ight travel 2 We can also ask for the opposite Which are the flight travels which are not possible for that assumption DES flight travel X Y closed b gt not flight travel X Y Info Processing answer X Y flight travel X Y closed b gt not flight travel X Y answer a b answer a c answer a d answer b c answer b d Info 5 tuples computed Fernando S enz P rez 75 274 Universidad Complutense de Madrid Datalog Educational System Note that first we ask for all the possible flights first goal flight travel X Y and then we restrict to those flights which are not possible under the assumption The first goal is needed for the query to be safe Recall that Datalog with negation is not constructive variables in the negated goal are not instantiated unless their values are already provided by a positive goal and answers must be ground Note also that the meaning of the first occurrence of goal flight travel X Y in this last query is the very same as the meaning of the first query However the meaning of the second occurrence of that goal restricts the answer to those flights for which involved airports are not closed because of the assumption Another alternative for such assumption would be to discard those flights with either its origin or destination at airport b and then assuming
63. can download a bundle including both DES and the integrated development environment ACIDE preconfigured to work with DES and including the configuration file des cnf for DES The following figure is a snapshot of the system File Edit Project View Configuration Help e L Y E Le E C8 9 consult process listing dbschema pdg strata abolish list et clear et cd Is pwd verbose noverbose x family E amp amp aggregates dl amp aggregates ra EB aggregates sql al relop dl B bom di E B DES T family ra family sql aggregates dl aggregates ra Line Predicates v Aggregates bom di UMS 9 family di 9 family ra 9 family sql relop dl 4 SOL Formulation 7 multiline on S create or replace table employee name string department string salary int 1 Database J Console jparking anderson a 1 4 Databases a 4 des B B Tables e 3 employee name departmen Columns name string department string 9 salary int 73 parking name lot Views amp ds a b D Columns SQL Text SELECT ALL departme 5 Datalog Text ds AB group by D Integrity Constraints a ii parking name string lot string Info View s ds a string b int Defining SQL statement SELECT ALL department MAX salary FROM employee GROUP BY department Datalog equivalent rules ds A B group by employee _C A D 2 A B max D
64. column is arbitrarily chosen a Set union R U Ro Concrete syntax Relation1 union Relation2 Example a union b Set difference R Ro Concrete syntax Relationl difference Relation2 Example a difference b Cartesian product Ri x Ro Concrete syntax Relationl product Relation2 Example a product b Renaming gra A R1 Rename Ri to Rz and also arguments of Ri to A1 An Concrete syntax rename Schema Relation Example project v b rename v b select true a Note The new name of a renamed relation must be different from the relation Fernando S enz P rez 106 274 Universidad Complutense de Madrid Datalog Educational System Assignment Ri A1 An lt Ro Create a new relation Ri with argument names AT An as a copy of R2 It allows defining new views Concrete syntax Relationl Relation2 Example v c select true a 4 3 1 2 Additional operators These operators can be expressed in terms of basic operators and include Set intersection Ri A Ro Concrete syntax Relationl intersect Relation2 Example a intersect b Theta join Ri 45 R Equivalent to cR x R Concrete syntax Relationl zjoin Condition Relation2 Example a zjoin a a b b b Natural inner join Ri P4 R2 Return tuples of Ri joined with R such that common attributes are pair wise equal and occur only once in the output relation Concrete syntax Relationl njoin
65. current database is access DBMS access DES r X r 2 r 3 Fernando S enz P rez 151 274 Universidad Complutense de Madrid Datalog Educational System Info 2 tuples computed As well you can have a local relation with the same name of an external relation as r in the example above on which a persistent predicate depends on as p In such a case local data is not visible for the persistent predicate as its meaning is externally computed To avoid this issue simply make persistent the relation Finally in general there are missing tuples for a persistent predicate p that depend on others for which some rule can not be externally processed In the following example as p is completely processed by the external DBMS the meaning of q is not joined with the results from the deductive engine unless q X was issued at the top level DES assert r 1 DES assert q X distinct r X DES assert p X q X DES p X p 1 Info 1 tuple computed DES persistent p a int access DES p X Info 0 tuples computed DES q X q 1 Info 1 tuple computed Note that the metapredicate distinct is responsible of this issue as it precludes the single rule for q to be projected to the external database This incomplete behaviour is expected to be fixed in a forthcoming release In addition more built ins as distinct and top are expected to be supported for the translation from
66. db Name Make Name the current ODBC connection If it is not open already it is automatically opened TAPI enabled use ddb Shorthand for use db des TAPI enabled Debugging and Test Case Generation debug datalog Goal Level Start the debugger for the basic goal Goa1 at predicate or clause levels which is indicated with the options p and c for Level respectively Default is p debug sql View Options Debug an SQL view where Options trust tables yes no trust file FileName Defaults are trust tables and no trust file It might be needed to enclose FileName between single quotes trace datalog Goal Order Trace a Datalog goal in the given order postorder or the default preorder trace sql View Order Trace an SQL view in the given order postorder or the default preorder Fernando S enz P rez 187 274 Universidad Complutense de Madrid Datalog Educational System 5 17 4 5 17 5 test case View Options Generate test case classes for the view View Options may include a class and or an action parameters The test case class is indicated by the values a11 positive negative the default positive or negative in the class parameter The action is indicated by the values display only display tuples the default replace replace contents of the involved tables by the computed test case or add add the computed test case to the contents of the involved tables in the action parame
67. dbschema des Info Database des Info Table s p a int t a int Info View s r coll int Defining SQL statement CREATE VIEW r AS SELECT ALL FROM r_des table Info No integrity constraints DES gt dbschema access Info Database access Info Table s dual void INTEGER 4 p des metadata txtrule LONGCHAR 2147483646 p des table a INTEGER 4 r des metadata txtrule LONGCHAR 2147483646 r des table coll INTEGER 4 Info View s p a INTEGER 4 x coll INTEGER 4 Info No integrity constraints 5 2 8 Schema and Data Visibility The default database DDB is called des and it contains metadata of each predicate for which either a type assertion or an SQL table creation statement has been issued If one makes a predicate persistent in an external database EDB its metadata as well as its data is visible both to DDB and EDB The following session illustrates this DES use db des DES persistent p a int mysql DES assert p 1 DES show compilations on DES select from p Info SQL statement compiled to answer A p A answer p a int gt answer 1 Info 1 tuple computed DES gt use_db mysql DES gt select from p answer a integer 4 gt answer 1 Info 1 tuple computed Fernando S enz P rez 147 274 Universidad Complutense de Madrid Datalog Educational System Note that in the first case firs
68. duplicates are allowed we get the expected result DES duplicates on Info Duplicates are on DES group by v X Y X Y Cz 2count Info Processing answer X Y C group by v X Y X Y C count answer 1 1 2 answer 1 2 2 Info 2 tuples computed Note that even when you can access SQL objects from Datalog the contrary is not allowed because there is nor Datalog metadata information for the external SQL engine neither access to Datalog data The data bridge is only opened from DES to the external DBMS not the other way round This is in contrast to the SQL database internally provided by DES which allows a bidirectional communication since type information is supported for Datalog predicates The only way to access a predicate from a DBMS is to make it persistent in the same DBMS cf Section 5 2 though this has some limitations if not all the rules of the predicate can be made persistent 5 1 3 Opening Several Connections From release 3 0 on several OCBC connections can be opened simultaneously Each time a new connection is opened it becomes the new current connection and all query processing is related to it by default For instance to inspect a rather limited set of metadata one can submit the following command DES gt open_db mysql DES gt dbschema Info Database mysql Info Table s s a varchar 20 t a integer 4 w a varchar 20 Info View s v a varbinary 20
69. e avg Variable Return the average of possible values for Variable ignoring nulls e min Variable Return the minimum value for Variable ignoring nulls e max Variable Fernando S enz P rez 118 274 Universidad Complutense de Madrid Datalog Educational System Return the maximum value for Variable ignoring nulls 4 5 7 2 Predicate group by e group_by Query Variables GroupConditions Solve GroupConditions in the context of Query building groups w r t the possible values the variables in the list Variables This list is specified as a Prolog list i e a sequence of comma separated values enclosed between brackets If this list is empty there is only one group the answer set for Query The possibly compound goal GroupConditions can contain aggregate functions ranging over set variables 4 5 7 3 Aggregate Predicates e count Query Variable Result Count in Result the number of tuples in the result set for the query Query so that Variable is a variable of Query an attribute of the result relation set and this attribute is not null It returns 0 if no tuples are found in the result set e count Query Result Count in Result the total number of tuples in the result set for the query Query disregarding whether they contain nulls or not It returns 0 if no tuples are found in the result set e sum Query Variable Result Sum in Result the numbers in the result set for the query Query and the a
70. error is submitted Error Unknown table or view a Following the second alternative and after consulting the file relop dl we can declare types for a DES datalog type a a varchar DES select from a answer a a answer al answer a2 answer a3 Fernando S enz P rez 236 274 Universidad Complutense de Madrid Datalog Educational System Info 3 tuples computed 6 2 Paths in a Graph files paths d1 sql ra This program introduces the use of recursion in DES by defining the graph in Figure 2 and the set of tuples origin destination such that there is a path from origin to destination Figure 2 Paths in a Graph The file paths d1 contains the following Datalog code which can be consulted with c paths Paths in a Graph edge a b edge a c edge b a edge b d path X Y path X Z edge Z Y path X Y edge X Y The query path X Y yields the following answer path a a path a b path a c path a d path b a path b b path b c path b d Info 8 tuples computed The file paths sql contains the SQL counterpart code which can be executed with process paths sql create table edge origin destination insert into edge values a b insert into edge values a c 1 Adapted from TS86 Fernando S enz P rez 237 274 Universidad Complutense de Madrid Datalog Educational System insert into
71. files 1 If the file des ini is located at the distribution directory its contents are interpreted as input prompts and executed before giving control to the user at start up of the system 2 If the file des cnf is located at the distribution directory its contents are processed as before but producing no output It is intended for configuring system settings though it can be used for other purposes too 3 Thecommand process Filename Parameters or p as a shorthand allows to process each line in the file as it was an input the same way as above If no file extension is given and Filename does not exists then ini sql and ra are appended in turn to filename and tried in that order for finding an existing matching file The optional argument Parameters allows to pass parameters to the file to be processed A parameters is a string delimited by either blanks or double quotes if the parameter contains a blank The same is applied to Filename The value for each parameter is retrieved by the tokens parv1 parv2 for the first second parameter respectively If no value as a parameter is provided for a token occurring in a batch file an exception is raised The command set_defatult_param can be used to set default values por parameters A different parameter vector exists for each call to the command process When processing batch files prompt inputs starting with either the symbol or are interpreted a
72. first argument the integer 1 has been converted the the float 1 0 the integer 2 has been converted to Fernando S enz P rez 58 274 Universidad Complutense de Madrid Datalog Educational System a string and so the last argument which in addition has been truncated to fit the type string length constraint Also strings can be converted to numbers if they are read as a valid number following the syntax in Section 4 1 1 as in DES assert t 4 5 0E10 DES listing t 4 5 0E 10 Info 1 rule listed If a conversion is not possible an error is raised DES type p a int DES assert p foo Error Impossible conversion of foo to number integer Note that the conversion proceeds only on tuple facts insertions but neither on retractions nor on rules DES retract t 1 5 1 2 123 Warning Nothing retracted DES assert p X X 1 Error Type mismatch number integer vs string varchar 1 p a number integer declared types 4 1 15 2 Nullability Existency Constraint Columns can be imposed to contain a concrete value rather than a null The next system session shows an example DES type p a int b string DES nn p a The list of column names specifies the columns for which null values are not allowed Thus trying to assert a tuple such as the following will raise an error DES assert p null Error Not null violation p a Subsequent exi
73. for a current connection other than des as they are submitted for processing to the external database In the following system session one creates a table in the default database of DES DDB inserts a value opens a connection and realize that the table schema is not visible but its data do This comes from the fact that first SOL data is translated by DES to Datalog data and second Datalog data can be seamlessly combined with external databases EDB DES create table t a int Create table t in DDB DES insert into t values 1 Insert t 1 in DDB Info 1 tuple inserted DES gt select from t Select data from DDB answer t a int gt answer 1 Info 1 tuple computed DES gt open_db mysql Open an EDB DES gt select from t Select data from EDB Error ODBC Code 1146 As t is not defined in MySQL ODBC 5 1 Driver mysqld EDB then error 5 5 9 Table test t doesn t exist DES t X Predicate t is known to DDB and so it can be 1 queried from Datalog Info 1 tuple computed In this way you can also combine data from DES and the external data source Next system session example shows this by creating a new table in the external database and combining above predicate t 1 defined in DDB with a new table s created in EDB DES create table s a int Create table s in EDB Fernando S enz P rez 130 274 Universidad Complutense de Madrid Datalog Educational
74. from external developers up to now e Test Case Generator Authors Rafael Caballero Rold n Yolanda Garc a Ruiz and Fernando S enz P rez Fernando S enz P rez 254 2 14 Universidad Complutense de Madrid Datalog Educational System Date 10 2009 upgraded version supported since DES 1 8 0 Description Tool for generating test cases for SOL views License LGPL Contact Yolanda Garc a Ruiz Implementor e Datalog Declarative Debugger Authors Rafael Caballero Rold n Yolanda Garc a Ruiz and Fernando S enz P rez Date 5 2007 Description Tool for the declarative debugging of Datalog programs License LGPL Contact Yolanda Garc a Ruiz Implementor e ACIDE A Configurable Development Environment Authors Diego Cardiel Freire Juan Jos Ortiz S nchez Delf n Rup rez Cafias SI 2006 2007 Miguel Mart n L zaro SI 2007 2008 and Javier Salcedo G mez SI 2010 2011 Pablo Guti rrez Garc a Pardo Elena Tejeiro P rez de greda Andr s Vicente del Cura SI 2012 2013 led by Fernando S enz Date 3 2007 ACIDE 0 1 first version 11 2008 ACIDE 0 7 7 2011 ACIDE 0 8 12 2012 ACIDE 0 9 current version Description This project is aimed to provide a multiplatform configurable integrated development environment which can be configured in order to be used with any development system such as interpreters compilers and database systems Features of this system include project management multifile editing
75. have passed a basic level course level 0 View intensive defines as intensive students those in the table allInOneCourse together with the students that have completed the three initial levels However this view definition is erroneous We have forgotten to check that the courses have been completed flag pass Finally the main view awards selects the students in the basic but not in the intensive courses Suppose that we try the query select from awards and that in the result we notice that the student Anna is missing We know that Anna completed the basic course and that Fernando S enz P rez 172 2 14 Universidad Complutense de Madrid Datalog Educational System although she registered in the three initial levels she did not complete one of them and hence she is not an intensive student Thus the result obtained by this query is nonvalid So the user starts the debugger as Anna is not among the possibly large list of student names produced by view awards The debugging session proceeds as follows DES process examples SQLDebugger awardsl DES debug sql awards Info Debugging view awards 1 awards Carla Input Is this the expected answer for view awards y n m mT w wN a h n m Anna Info Debugging view intensive Input Should intensive include a tuple of the form Anna y n a y n Info Debugging view standard Input Should standard include a tuple of the form Anna 1
76. intensionally assumed As an example let s suppose that the Fernando S enz P rez 94 274 Universidad Complutense de Madrid Datalog Educational System relation light is as previously defined and a view connect that displays locations connected by direct flights DES CREATE VIEW connect origin destination AS SELECT origin destination FROM flight DES SELECT FROM connect answer connect origin string connect destination string gt answer lon ny answer mad par answer par ny Info 3 tuples computed Then if we assume that connections are allowed with transits we can submit the following hypothetical query note that the assumed SQL statement is recursive DES gt ASSUME SELECT flight origin connect destination FROM flight connect WHERE flight destination connect origin IN connect origin destination SELECT FROM connect answer connect origin string connect destination string gt answer lon ny answer mad ny answer mad par answer par ny Info 4 tuples computed In addition to this one can use a WITH statement instead of an ASSUME statement by simply stating an existing relation in the definition of the local view For instance for the last example we can write DES WITH connect origin destination AS SELECT flight origin connect destination FROM flight connect WHERE flight destination connect origin SELECT FROM connect answer co
77. is the one you want to use for declaring predicate persistence as in DES current db Info Current database is mysql DBMS mysql DES persistent p a int You can confirm that predicate p has been declared as persistent with DES list persistent mysql p a int where the connection name is shown followed by a semicolon and the predicate schema Also if you have type information declared already you can simply refer to the predicate with its name and arity in the persistence assertion DES use db des DES create table p a int DES use db mysql DES persistent p 1 DES list persistent mysql p a int The general form of a persistence assertion is as follows persistent PredSpec Connection This assertion makes a predicate to persist on an external RDBMS via an ODBC connection PredSpec can be either the pattern PredName Arity or PredName Schema where Schema can be either ArgNamel ArgNameN or ArgNamel Typel ArgNameN TypeN If a connection name is not provided the current open database is used The local default database des cannot be used to persist but an ODBC connection 5 2 2 Using Persistent Predicates You can assert facts as usual and query the persistent predicate p 1 as the following example shows DES gt assert p 1 DES gt p X p 1 Info 1 tuple computed And as expected it can seamlessly be combined with other non persistent predicates as in
78. is used to close the current ODBC connection cf Section 5 17 2 Example Input tapi close db Output success e Command tapi current db Fernando S enz P rez 212 274 Universidad Complutense de Madrid Datalog Educational System Answer Two lines the first one containing the current ODBC connection name and the second one the external DBMS cf Section 5 17 2 Remarks This command is used to get the current ODBC connection name cf Section 5 17 2 Example Input assuming that the ODBC connection test is already opened tapi current_db Output test access e Command tapi relation_exists relation_name Arguments relation_name Relation table view or predicate name which must be enclosed between delimiters if needed Answer Boolean Remarks This command returns true if the given relation exists and false otherwise Example Input tapi relation_exists v Output true e Command tapi ddl_query Answer Regular Remarks This DDL statement returns success upon a successful processing Fernando S enz P rez 213 274 Universidad Complutense de Madrid Datalog Educational System Example Input tapi create table t a int Output success e Command tapi dependent relations pattern Where pattern can be either relation name or relation name arity where relation name stands for a relation name and arity for its ari
79. it under certain conditions Type license for details The same Windows ACIDE bundle can be downloaded for Linux and including the configuration file des cnf for DES The following snapshot shows this running on Ubuntu 10 04 ACIDE 0 16 DES3 10 t J Ll gy A amp LP y El 49 consult process listing dbschema pdg strata abolish list et clear et cd ls gt E family dl 5 family ra amp family sal amp relop dl BG i3 z DES3 10 x agoregat s dl aggregates dl amp i aggregates ra x aggregates sql z bom d E employee 3 parking 2 aggregates ra af A v saareaetes sal 2 Aggregates x family dl SQL Formulation x family ra x family sql 6 b relop dl 7 multiline on B gs 2 S create or replace table employee name string department string o salary int d It Jc cz mS P m my VEECHHHOHEHEEEHEEREREEEERRRHERREEEEREREHEERHERERERRREERE ET Bj tapers 100 eb I a X amp Databases AR 9 des Si P Table etare rer employee name departr Type help for help about commands B Columns Fernando Saenz Perez c 2004 2015 DISIA GPD UCM Please send comments questions etc to fernan sip ucm es name string department string salary int G parking name lot Columns Trace Datalog Trace SQL Web site ds 2 employee 3 http des sourceforge net amp views P 4 od ds a
80. only when DES has been started from a Prolog interpreter 4 5 3 SOL Arithmetic Arithmetic expressions are constructed with the arithmetic operators listed in the next section They are used in projection lists and conditions 4 5 4 Arithmetic Built ins This section contains the listings for the supported arithmetic operators constants and functions 4 5 4 1 Arithmetic Operators The following operators are the only ones allowed in arithmetic expressions where X and Y stand also for arithmetic expressions Fernando S enz P rez 115 274 Universidad Complutense de Madrid Datalog Educational System e AX Bitwise negation ISO Bitwise negation of the integer X e X Negative value ISO Negative value of its single argument X e X Y Power ISO X raised to the power of Y e X Y Power SynonymforX Y e X Y Multiplication ISO X multiplied by v e X Y Real division ISO Float quotient of X and Y X Y Addition ISO Sum of Xand Y e X Y Subtraction ISO Difference of X and Y e X X Integer quotient ISO Integer quotient of X and Y The result is always truncated towards zero e X rem Y Integer remainder ISO The value is the integer remainder after dividing X by Y i e integer X integer Y X Y The sign of a nonzero remainder will thus be the same as that of the dividend e X V Y Bitwise disjunction ISO Bitwise disjunction of the integers X and Y X Y Bi
81. order to provide data sources for relations This means that a relation defined in a RDBMS as a view or table is allowed as any other relation defined via a predicate in the deductive database Then computing a query can involve computations both in the deductive inference engine and in the external RDBMS SOL engine Such relations become first class citizens in the deductive database and therefore can be queried in Datalog and RA If the relation is a view it will be processed by the SOL engine When an ODBC connection is opened all SOL statements are redirected to such connection so DES does not longer process such statements This means that all the SOL features of the connected RDBMS are available Almost any relational database RDB can be accessed from DES using an ODBC connection Relational database management system RDBMS manufacturers provide ODBC implementations which run on many operating systems Microsoft Windows Linux Mac OS X RDBMSs include enterprise RDBMS as Oracle MySQL DB2 and desktop RDBMS as MS Access and FileMaker ODBC drivers are usually bundled with OS platforms as Windows OS s ODBC implementation Linux OS distributions as Ubuntu Red Hat and Mandriva UnixODBC implementation and Mac OSs 10x iODBC implementation However additional drivers for specific databases are needed to be installed Since each RDBMS provides an ODBC driver and each OS an ODBC implementation details on how to confi
82. over database path X X Info Computing predicate dependency graph Info Computing strata Error Integrity constraint violation ic X path X X Offending values in database ic b ic a Info Constraint has not been asserted The constraint path X X specifies that a path from a node to itself is not allowed As the consulted program contains a cycle involving nodes a and b the constraint is violated and therefore it is not asserted Offending values are listed in this case all the values involved in any cycle you can try out other edges and see the outcome Another use is to first specify the constraint and then a graph However don t be tempted to submit the constraint and consult the program the constraint will be removed since consulting a program amounts to erase the existing database including user defined integrity constraints Instead use the reconsult command DES verbose on Info Verbose output is on DES cd examples Info Current directory is c fernan research bddeduc des des3 10 examples DES path X X Info Parsing query Info Constraint successfully parsed Info Checking user defined integrity constraint over database Fernando S enz P rez 64 274 Universidad Complutense de Madrid Datalog Educational System path X X Info Computing predicate dependency graph Warning Undefined predicate s path 2 Info Computing strata DES reconsult path
83. points This way the user can inspect each point and decide whether Fernando S enz P rez 164 274 Universidad Complutense de Madrid Datalog Educational System its outcome is correct or not This approach will allow to examine the syntactical graph of a query which possibly depends on other views or predicates SOL or Datalog resp This graph may be cyclic when recursive views or predicates are involved However a given node in the graph will be traversed only once In the case of Datalog queries this graph contains the nodes and edges in the dependency graph restricted to the query ignoring other nodes which do not take part in its computation In the case of SQL the graph shows the dependencies between a view and its data sources in the FROM clause Next tracing for both Datalog queries and SOL views are explained and illustrated with examples 5 9 1 Tracing Datalog Queries The command trace datalog Goal Order allows to trace a Datalog goal in the given order postorder or the default preorder Goals should be basic ie no conjunctive or disjunctive goals are allowed For instance let s consider the program in the file negation dl and its dependency graph shown in Figure 1 page 38 A tracing session could be as follows DES c negation Warning Undefined predicate s d 0 DES trace datalog a Info Tracing predicate a a Info 1 tuple in the answer table Info Remaining predicates b 0 c
84. predicate warnings singleton variable warnings and set variable errors 5 5 1 Safety By default safety warnings are issued when inserting rules which are not classical safe set variable safe and duplicate elimination safe see Section 5 3 If a query is not safe an error is displayed and the query is not executed This warning is enabled by default To remove undefined predicate warnings use the command safety_warnings off However an unsafe query will still raise an error 5 5 2 Undefined Predicates An undefined predicate is a predicate for which there are no rules defining it and has no type declaration Undefined predicates are signals of possible program errors So each time the database is changed by asserting or retracting rules undefined predicates are listed as a warning As well when submitting a query containing calls to undefined predicates such a warning is also issued This warning is enabled by default To remove undefined predicate warnings use the command undef_pred_warnings off 5 5 3 Singleton Variables A singleton variable is a variable occurring once in a rule Such variables are usually warned in Prolog systems as they can be signaling a program error Following SWI Prolog both syntactic singletons and semantic singletons are detected in DES when consulting a file and asserting rules While a syntactic singleton denotes a single occurrence of a variable in a rule as inp q X a semantic singleton
85. pretty print is disabled or not cf Section 5 17 7 i e each statement or rule can be ina single line or multiple lines Example Input tapi dbschema v Output view v a int b Fernando S enz P rez 218 274 Universidad Complutense de Madrid Datalog Educational System varchar 20 SELECT ALL FROM t NATURAL INNER JOIN s eot e Command tapi is empty relation name Arguments relation name Relation name either a table or a view which must be enclosed between SQL delimiters if needed Answer Boolean Remarks Return true is relation relation name is empty i e it contains no tuples in its meaning and false otherwise Example Input tapi is_empty t Output false e Command tapi pdg optional argument Arguments optional argument An optional argument either a predicate name or name arity pattern Answer node node kind node node eot Remarks Fernando S enz P rez 219 274 Universidad Complutense de Madrid Datalog Educational System Return nodes in the current PDG one per line then arcs An arc is output as three consecutive lines the first one kind is the type of the arc or and the second and third are the ending and starting nodes resp Example Input tapi pdg Output a 0 b 0 c 0 d o b 0 c 0 b 0 d O c 0 b 0 a 0 b 0 Seot 5 18 3 TAPI enabled Queries Thi
86. program ZCF 97 A stratification collects predicates into numbered strata 1 N A basic bottom up computation would solve all of the predicates in stratum 1 then 2 and so on until the meaning of the whole program is found With our approach we only resort to compute by stratum when a negative dependency occurs in the predicate dependency graph restricted to the query nevertheless each predicate that is actually needed is solved by means of the extension table mechanism described in the previous section As a consequence many computations are avoided w r t a naive bottom up implementation See also next section on optimizations Outer join and aggregate goals are also collected into strata as if they were negative atoms in order to have their answer set completely defined and therefore ensure termination of the computation algorithm in presence of null values for outer joins and incomplete set of values for aggregates 5 20 4 Optimizations DES is not targeted at performance by any means it is implemented on top of Prolog it uses the slower in most systems Prolog dynamic database it does not allow user defined indexes implemented algorithms are not the best ones several tasks are redone sparingly although they can be actually saved and so on Once that said there has been still a minor room for optimizing performance so that projects of the size DES is intended for can be successfully achieved Below we list some of such op
87. project origin destination 1 edge union project path origin edge destination path length 1 path zjoin path destination edge origin and path length lt max_length edge product max_length spaths origin destination length group_by origin destination origin destination min length true path And its query ra select true spaths 6 4 Family Tree files family d1 sql ra This yet another classic program defines the family tree shown in Figure 3 the set of tuples lt parent child gt such that parent is a parent of child the relation parent the set of tuples lt ancestor descendant gt such that ancestor is an ancestor of descendant the relation ancestor the set of tuples lt father child gt such that father is the father of child the relation father and the set of tuples lt mother child gt such that mother is the mother of child the relation mother tom grace fred carolll a d carollII Figure 3 Family Tree The file family dl contains the following Datalog code which can be consulted with c family Fernando S enz P rez 240 274 Universidad Complutense de Madrid Datalog Educational System father tom amy father jack fred father tony carolII father fred carolIII mother grace amy mother amy fred mother carolI carolII mother carolII carolIII parent X Y father X Y parent X Y mother X Y ancestor X Y parent X Y
88. queries and SQL views test case generation for SOL views modes null values support tabled outer join and aggregate predicates The system is implemented on top of Prolog and it can be used from a Prolog interpreter running on any OS supported by such interpreter Moreover Windows Linux and MacOSX executables are also provided We have developed DES aiming to have a simple interactive multiplatform and affordable system not necessarily efficient for students so that they can get the fundamental concepts behind a deductive database with Datalog Relational Algrebra and SQL as query languages SQL is supported with a reasonable coverage of the standard for teaching purposes Supported extended relational algebra includes duplicates outer joins and recursion Other deductive systems are not fully suited to our needs due to the absence of some characteristics DES does offer for our educational purposes This system is not targeted as a complete deductive database so that it does not provide transactions security and other features present in current database systems Though the current release highlights several enhancements maybe the most important can be the possibility to declaratively debug and trace some external databases including DB2 MySQL Oracle and PostgreSQL whenever the external dialect is recognized by DES As collateral effects first the dependency graph is also available for these external databases and second the
89. query has preceding a gt has preceding a More information yes y no n abort a n y Is the witness query a wrong answer w missing answer m abort a w w Error in relation has_preceding 1 Error in rule has_preceding X br X br Y Y X File c fernan research bddeduc des releases des3 0 des3 0windows32si cstus des examples parity dl Lines 18 19 In this particular case only three questions are necessary to find out that the relation has preceding is incorrectly defined In addition by requesting for more information we can even find out the offending rule in the predicate The complete syntax of the command is debug datalog Goal Level which starts the debugger for the basic goal Goa1 at predicate or clause level Level is indicated with the options p and c for Level respectively Default is p 5 11 SOL Declarative Debugger As in the previous section here we focus on a declarative approach to debugging following CGS12a former version of the debugger is based on CGS11b and subsumed by the current one which is a brand new implementation There possible erroneous objects correspond to views and the debugger looks for erroneous views asking the user whether the result of a given view is as expected When the user starts the debugger for a view with the command debug_sql View the debugger builds internally its computation tree and starts the debugging session The root of th
90. query solving Thus Fernando S enz P rez 40 274 Universidad Complutense de Madrid Datalog Educational System DES t X distinct t X Info Processing answer X t X distinct t X answer 1 answer 1 answer 1 answer 1 answer 1 answer 1 answer 1 answer 1 answer 1 answer 1 Info 10 tuples computed Compare this to the call DES t X t X Info Processing answer X t X t X answer 1 answer 1 Info 100 tuples computed A subset of arguments in an atom can be selected for discarding duplicates To this end the metapredicate distinct 2 is provided Its first argument is the list of variables for which duplicates are not required i e each concrete assignment of values to all variables in the list must be different So let s consider the following session DES gt listing tl t 1 2 t 2 1 Info 3 rules listed DES distinct X t X Y Info Processing answer X distinct X t X Y answer 1 answer 2 Info 2 tuples computed Fernando S enz P rez 41 274 Universidad Complutense de Madrid Datalog Educational System In addition discarding duplicates can be performed in the context of aggregates DES count distinct t X C Info Processing answer C in the program context of the exploded query answer C count p0 X C p0 A distinct t A answer 1 Info
91. results Users of TAPI are expected to ask for other commands and or statements needed for their concrete applications Feedback is welcome 5 18 1 1 Identifiers As SQL identifiers can contain special characters which can be missed with other language constructors they are enclosed between delimiters in such a case This document contains an abbreviated notation name and column name for table and views in the former and columns in the second When an SQL identifier is written as part of a TAPI input they must be enclosed between the characters L and R left and right delimiters respectively Characters for such delimiters depend on the external DBMS For instance MS Access requires and resp but standard SOL defines double quotes for both MS Access does not support this In order to know what are such characters for the current connection one can submit the following commands tapi sql left delimiter tapi sql right delimiter Datalog identifiers suffer a similar situation but they must be enclosed if needed because containing special characters between single quotes For example tapi listing t Datalog identifiers as returned by DES are not delimited though 5 18 1 2 Kinds of Answers Any input can return either a successful answer with a syntax described for each supported command and statement or an error There are several kinds of answers e Regular o Successful answer with no return data suc
92. rule Unless such variable comes bound open tuples might be delivered as a result as in DES assert t 1 2 DES assert v X Y C group_by t X Y X C count X Warning This rule is unsafe if called with nonground variable Y DES v X Y v 1 A Info 1 tuple computed 5 3 3 Unsafe Rules from Compilations Along compilations unsafe rules can be automatically generated as in the translations of outer joins However they are considered safe because of their use unsafe arguments of such rules are always given as input in goals So mode information for predicates is handled throughout program compilations to detect truly unsafe rules avoiding to raise warnings about system generated rules Notice however that you can still manually write an unsafe call to these system generated predicates yielding to incorrect results as the following examples illustrates DES assert t 1 DES assert s 2 DES assert l1 X 1j t X s Y X Y DES development on DES listing p0 X Y Spl X Y p0 X NULL A t X not p1 X Y p1 X Y X Y t X S Y l X 130 50 x Y s 2 t Info 6 rules listed DES p0 X Y p0 1 SNULL 0 Info 1 tuple computed DES list et Answers not p1 1 A Fernando S enz P rez 157 274 Universidad Complutense de Madrid Datalog Educational System t 1 p0 1 NULL 0 Info 3 t
93. s consider the following session DES assert t 1 DES t X t 1 Info 1 tuple computed DES gt select from t Error Unknown table or view t DES gt create table t a int DES gt select from t answer t a int answer 1 Info 1 tuple computed The error above reflects that t is not a known object for SOL statements in the database schema Following the second alternative to access a Datalog relation from SQL DES assert t 1 DES type t a int DES select from t answer t a int answer 1 Info 1 tuple computed 41 Datalog Since Datalog stems from Prolog we have adopted almost all the Prolog syntax conventions for writing Datalog programs the reader is assumed to have basic knowledge about Prolog Syntax follows Prolog ISO standard ISO00 considering its syntax as a subset of Prolog We allow recursive Datalog programs with stratified negation Ullm95 i e normal logic programs without function symbols Stratification is imposed to ensure a clear semantics when negation is involved and function symbols are not allowed in order to guarantee termination of queries a natural requirement with respect to a relational database user who is not able to deal with compound data Commands are somewhat different for Prolog programmers as they are accustomed to see Section 5 17 Also exceptions are noted when necessary Fernando S enz P rez 31 274
94. schema language parts provided e Subqueries nested queries without depth limits e Correlated queries tables and relations in nested subqueries can be referenced by the host query For example SELECT FROM t SELECT a FROM s s WHERE t a s a e Subqueries in expressions as SELECT a FROM t WHERE t a gt SELECT a FROM s e Table relation and expression aliases e Support for duplicates and duplicate elimination which must be explicitly enabled with the command duplicates on by contrast to usual DBMS s in which this is the default and only one mode e Both linear and non linear recursive queries not all current DBMS s support linear queries and no one support non linear ones Fernando S enz P rez 77 274 Universidad Complutense de Madrid Datalog Educational System e Simplified recursive queries are allowed non standard Although supported there is no need for using a WITH clause e Hypothetical queries non standard e Set operators build relations which can be used wherever a data source is expected FROM clause e Null values are supported along with outer joins full left and right e Aggregate functions allowed in expressions at the projection list and HAVING conditions GROUP BY clauses are also allowed e View support Any relation built with an SOL query can be defined as a view e Supported database integrity constraints include type constraints existency nullability pri
95. solve Input If Input is an SQL query DES solves it instead of relying on external DBMS solving This allows to try the more expressive queries which are available in DES as e g hypothetical and non linear recursive queries drop ic Constraint Drop the specified integrity constraint which starts with and can be either one of e type Table Column Type e nn Table Columns e pk Table Columns e ck Table Columns e k Table Columns RTable RColumns e fd Table Columns DColumns e Goal where Goal specifies a user defined integrity constraint Only one constraint can be dropped at a time Alternative syntax for constraint is also allowed TAPI enabled drop assertion Assertion Drop the specified assertion which starts with So far there is only support for persistent Schema Connection Where Schema is the ground atom describing the predicate predicate and argument names as pred name arg namel arg nameN thathas been made persistent on an external DBMS via ODBC and Connection is an optional connection name for the external RDB Only one assertion can be dropped at a time listing List the loaded Datalog rules Neither integrity constraints nor SOL views and metadata are displayed TAPI enabled listing Name List the loaded Datalog rules matching Name Neither integrity constraints nor SQL views and metadata are displayed TAPI enabled listin
96. the restricted atom with a preceding minus sign DES take pete his gt grad S Info Processing answer S take pete his grad S Info 0 tuples computed More than one assumption can be simultaneously stated as in If Tony took eng and Adam took his what are the students that are eligible to graduate DES gt take tony eng take adam his gt grad S Info Processing answer S take tony eng take adam his gt grad S answer adam answer pete answer tony Info 3 tuples computed Another query is Which are the students which would be eligible to graduate if his and lp were enough to get it DES grad S take S his take S lp gt grad S Info Processing answer S grad S take S his take S lp grad S answer pete answer scott Info 2 tuples computed Note that although S occurs in both the antecedent and the consequent they are not actually shared and they simply act as different variables Considering also information about course prerequisites as pre eng lp pre hist eng pre Pre Post pre Pre X pre X Post One might wonder whether adding a new prerequisite implies a cycle so that students cannot fulfil prerequisites at all for the courses in a cycle DES pre lp hist pre X X Info Processing Fernando S enz P rez 71 274 Universidad Complutense de Madrid Datalog Educationa
97. the memo table during Datalog computations and it is not requested anymore until this cache is cleared either explicitly with the command clear_et or because a command or statement invalidating its contents as an SOL update query Therefore it could be possible to access outdated data from a Datalog query Let s consider DES t X t 1 Info 1 tuple computed Then from the MySQL client mysqi insert into t values 2 Query OK 1 row affected 0 06 sec And after in DES the new tuple is not listed via a Datalog query DES t X ECL Info 1 tuple computed However an SQL statement returns the correct answer DES select from t answer a varchar answer 1 answer 2 Info 2 tuples computed In addition it is not recommended to mix Datalog and SOL data unless one is aware of what s going on It is possible to assert tuples with the same name and arity Fernando S enz P rez 134 274 Universidad Complutense de Madrid Datalog Educational System as existing RDBMS s tables and or views Let s consider the same table t as above with the same data two tuples t 1 and t 2 and asserta tuple t 3 as follows DES assert t 3 DES t X 1 2 3 ct ct ct Info 3 tuples computed DES gt select from t answer a varchar gt answer 1 answer 2 Info 2 tuples computed This reveals that althoug
98. the movements of the discs which can be otherwise shown as the intermediate results kept in the extension table Fernando S enz P rez 253 274 Universidad Complutense de Madrid Datalog Educational System DES list et hanoi Answers hanoi 1 a c b hanoi 1 b a c hanoi 1 c b a hanoi 2 a b c hanoi 2 b c a hanoi 2 c a b hanoi 3 a c b hanoi 3 b a c hanoi 3 c b a hanoi 4 a b c hanoi 4 b c a hanoi 4 c a b hanoi 5 a c b hanoi 5 b a c hanoi 5 c b a hanoi 6 a b c hanoi 6 b c a hanoi 6 c a b hanoi 7 a c b hanoi 7 b a c hanoi 7 c b a hanoi 8 a b c hanoi 8 b c a hanoi 8 c a b hanoi 9 a c b hanoi 9 c b a hanoi 10 a b c Info 27 tuples in the answer set 6 14 Other Examples Directory examples include some other examples as the files bom d1 bill of materials and trains d1 train connections which show more example applications including negation Other examples are orbits dl a cosmos tiny database sg dl same generation for a family database tc dl transitive closure and empTraining ra sql taken from Diet01 Also the folder persistent contains examples for persisting predicates the folder ontology includes examples of authoring ontologies including some documentation and folders DLDebugger and SQLDebugger include examples for debugging Datalog programs and SQL views respectively 7 Contributions This section collects the contributions
99. the transitive closure of the relation light with travel DES flight X Y flight X Y X b Y b travel X Y flight X Y flight X 2Z travel Z Y gt travel X Y Info Processing answer X Y flight X Y flight X Y X b Y b travel X Y flight X Y flight X Z travel Z Y gt travel X Y answer c d Info 1 tuple computed But notice that this is not equivalent to overloading the relation flight with its transitive closure as follows DES flight X Y flight X Y X b Y b N flight X Y flight X Y flight X Z flight Z Y gt flight X Y Info Processing answer X Y 7 flight X Y flight X Y X b Y b flight X Y flight X Y flight X 2 flight Z Y gt flight X Y answer a c answer a d answer c d Info 3 tuples computed Indeed for computing the meaning of flight first the meaning of its regular rules are computed which deliver its transitive closure including flights involving airport b and then the meaning of its restrict rules therefore removing from the transitive closure those flights leaving from or arriving at airport b Fernando S enz P rez 76 274 Universidad Complutense de Madrid Datalog Educational System 42 SQL The syntax recognized by the interpreter is borrowed from the SQL standard However the SOL dialect supported by DES includes features which
100. to answer A top 10 p A then predicate answer 1 is located at stratum 2 and predicate p 1 at stratum 1 DES strata p 1 1 answer 1 2 and DES tries to solve first the goal p X not top 10 p A which proves to be non terminating as there is no top constraint on p Further releases might cope with this issue 5 20 5 Indexing indexing There is no provision for user indexes up to now However indexing on memo tables can be enabled or disabled at user request There are three tables which are indexed the answer table the call table and the complete computation table The first one stores the computed results for the calls during query solving and it is used in the tabling scheme for avoiding to recompute already known goals The second one stores the calls so that it is possible to know whether a subsuming call has been done already The third table stores for each call whether its computation has been either completed or not The next system session shows a speed up of almost 3x when enabling indexing DES timing on H And secondly it would try the goal answer X although in this case it is unable because of the non terminating first goal Fernando S enz P rez 232 2 14 Universidad Complutense de Madrid Datalog Educational System DES indexing off DES pretty print off DES display answer off DES p X X 1 p Y Y 500 X Y41 Info Processing p X in the progra
101. to refer to the new name 4 2 4 7 Dropping Databases DROP DATABASE Fernando S enz P rez 83 274 Universidad Complutense de Madrid Datalog Educational System This statement drops the current database dropping all tables views and rules this includes Datalog rules and constraints that may have been asserted or consulted It behaves exactly as the command abolish Example DROP DATABASE 4 2 5 Data Manipulation Language This part of the language deals with inserting and deleting tuples from tables There is no provision for updating tuples 4 2 5 1 Inserting Tuples INSERT INTO TableName Col1l ColN VALUES Ctel CteN Ctel CteN This statement inserts into the table TableName as many tuples as those built with each tuple of values Ctel CteN Coll to ColN are non repeated column names of the table If no column names are given N is expected to be the number of columns of the table If column names are given each value Ctei corresponds to column name Coli For those column names which are not provided in a column name sequence nulls are inserted The next example inserts a single tuple CREATE TABLE t a int b int INSERT INTO t VALUES 1 1 The next one inserts a single tuple into the same table with a null for column a INSERT INTO t b VALUES 2 Which is equivalent to INSERT INTO t b a VALUES 2 null and represents the tuple nu11 2 Note that the order of provided
102. tracer Files des sql debug pl and des dl debug pl contain the SQL and Datalog declarative debuggers File des tc pl contains the SOL test case generator code The last file des glue pl contains Prolog system specific code which vary from a system to another Adapting the predicates found there should not pose problems provided that the Prolog interpreter and operating system feature some required characteristics In particular finite domain constraints with positive and negative integers is a must for supporting several features of DES such as type inference and test case generation Also attributed variables are required Finally file system related built ins If you plan to port DES to other systems not described here you will have to modify the system specific Prolog file to suit your system If so and if you want to figure as one of the system contributors please send an e mail message with the code and reference information to mailto fernan sip ucm es accepting that your contribution will be under the GNU Lesser General Public License See the appendix for details Fernando S enz P rez 233 274 Universidad Complutense de Madrid Datalog Educational System 6 Examples The DES distribution contains the directory examples which shows several features of the system Unless explicitly noted all queries have been solved after the commands verbose off and pretty print off have been executed 6 1 Relational Operations
103. tuples computed DES rj a X b Y X Y Info Processing answer X Y rj a X b Y X Y answer al al answer null b1 answer null b2 Info 3 tuples computed DES fj a X b Y XzY Info Processing answer X Y fj a X b Y X Y answer al al answer al null answer a2 null answer a3 null answer null al answer null b1 answer null b2 Info 7 tuples computed Note that the third parameter is the join condition Be aware and do not miss a where condition with a join condition Let s consider the above query lj a X b Y X Y Do not expect the same result as above for the following query DES 1j a X b X true Info Processing answer X 1j a X b X true answer al Info 1 tuple computed Here the same variable X for the relations a and b means that tuples from a and b with the same value are to be joined as in the next equivalent query DES 1j a X b Y true X Y Fernando S enz P rez 44 274 Universidad Complutense de Madrid Datalog Educational System Info Processing answer X Y 1j a X b Y true X Y answer al al Info 1 tuple computed Outer join relations can be nested as well DES 1j a X rj b Y c U V Y U X Y Info Processing answer X Y U V lj a X rj b Y c U V Y U X Y answer al al al al answer al al al b2 answer a2 null null null answer a
104. 0 where there are 1 fixpoint iteration and only one EDB retrieval This optimization is independent from the completed computations optimization Successive calls will render the same behavior unless the complete computations optimization is enabled Fernando S enz P rez 229 2 14 Universidad Complutense de Madrid Datalog Educational System DES p X Info Parsing query Info Query successfully parsed Info Solving query p X Info Displaying query answer Info Sorting answer p 1 Info 1 tuple computed Info Fixpoint iterations 0 Info EDB retrievals 0 Info IDB retrievals 0 Info ET retrievals 2 Info ET look ups 2 Info CT look ups 0 Info CF look ups 1 where no fixpoint iterations and no EDB retrievals are needed 5 20 4 3 Non recursive Predicates optimize nrp Each non recursive predicate can be extracted out from the fixpoint iterative cycle because its meaning can be computed by requesting all its solutions at once Further fixpoint iterations won t develop new tuples so this would be useless In fact this is true for each non recursive rule of a given predicate Though this optimization is not available yet The following example shows the predicate p as composed of a fact and a rule First it is computed with all optimizations disabled DES assert p 1 DES assert p X X 1 1 DES p X p 1 p 2 Info 2 tuples computed Info Fixpoint iterations 2 In
105. 0 d 0 Input Continue y n y Info Tracing predicate b not b Info 1 tuple in the answer table Info Remaining predicates c 0 d 0 Input Continue y n y Info Tracing predicate c e Info 1 tuple in the answer table Info Remaining predicates d 0 Input Continue y n y Info Tracing predicate d Info No more predicates to trace 5 9 2 Tracing SQL Views Tracing SQL views is similar to tracing Datalog queries but instead of posing a goal involving in general variables and constants to trace only the name of a view Fernando S enz P rez 165 274 Universidad Complutense de Madrid Datalog Educational System should be given For example let s consider the file family sq1 which contains view definitions for ancestor and parent where tables father and mother are involved in the latter view Note that this view is recursive since it depends on itself create view parent parent child as select from father union select from mother create or replace view ancestor ancestor descendant as select parent child from parent union select parent descendant from parent ancestor where parent child ancestor ancestor Then tracing the view ancestor is as follows DES trace sql ancestor Info Tracing view ancestor ancestor amy carolIII ancestor tony carolIII Info 16 tuples in the answer table Info Remaining views parent 2 father 2 moth
106. 3 null null null Info 4 tuples computed Note that compound conditions must be enclosed between parentheses as in DES 1j a X c U V X gt U X gt V Info Processing answer X U V in the program context of the exploded query answer X U V 1j a X c U V X gt U X gt V answer al null null answer a2 al a1 answer a2 al b2 answer a3 al al answer a3 al b2 answer a3 a2 b2 Info 6 tuples computed 4 1 12 Aggregates Aggregates refer to functions and predicates that compute values with respect to a collection of values instead of a single value Aggregates are provided by means of five usual computations sum cumulative sum count element count avg average min minimum element and max maximum element In addition the less usual times cumulative product is also provided They behave close to most SOL implementations i e ignoring nulls Duplicate free counterparts are also provided sum distinct count distinct avg distinct and times distinct Note that for minimum and maximum no counterparts are provided since they would compute the same Fernando S enz P rez 45 274 Universidad Complutense de Madrid Datalog Educational System results These functions behave as the above when duplicates are disabled which is the default mode Any arithmetic expression can be argument of an aggregate function 4 1 12 1 Aggregate Functions An aggregate function can oc
107. 3 tuples computed Note the difference against the next query which does not discard duplicates DES WITH RECURSIVE path a b AS SELECT FROM edge UNION ALL Keeping duplicates Fernando S enz P rez 150 274 Universidad Complutense de Madrid Datalog Educational System SELECT pl a p2 b FROM path pl path p2 WHERE pl b p2 a SELECT FROM path Warning Recursive rule cannot be transferred to external database kept in local database for its processing path A B path A C path C B answer path a int path b int gt answer 1 2 answer 1 3 answer 1 3 answer 2 3 Info 4 tuples computed 5 2 10 Caveats 5 2 10 1 Incomplete Meanings If a predicate p which depends on an external relation r is made persistent then it may be the case that the default database engine cannot get the meaning of r but via p unless this meaning is requested from the current database in which the relation is defined as illustrated in the following example DES current db Info The current database is des DBMS des DES assert p 1 DES assert p X r X Warning Undefined predicate s r 1 DES persistent p a int access DES p X p 1 p 2 p 3 Info 3 tuples computed DES gt For the local database r is not visible DES r X Info 0 tuples computed DES If access is the current database then r is visible DES use db access DES current db Info The
108. A S A C Info Processing answer C in the program context of the exploded query answer C count p2 A S N C p2 A S N employee N D S avg employee N1 D S1 S1 A S gt A answer 3 Info 1 tuple computed Also as a restriction of the current implementation keep in mind that having conditions including aggregates as the one including the average computations above can only occur in the first argument of an aggregate The following query which should be equivalent to the last one would generate a run time exception DES v D avg employee N1 D S1 S1 A count employee N D S S gt A C Error S gt A will raise a computing exception at run time Warning This view is unsafe because of variable s A Finally recall that expressions including aggregate functions are not allowed in conjunction with aggregate predicates but only in the context of a group_by predicate 4 1 12 4 Aggregates and Duplicates When duplicates are disabled default option aggregate functions operate over sets so that if the source relation for an aggregate contains duplicates they are discarded The following system session illustrates this DES duplicates off DES assert t 1 2 DES assert t 1 2 DES count t X Y C Info Processing answer C count t X Y C Fernando S enz P rez 50 274 Universidad Complutense de Madrid Datalog Educational System
109. ARY KEY b STRING CREATE OR REPLACE TABLE s a INT b INT REFERENCES t a PRIMARY KEY a b Note in this last example that if the column name in the referential integrity constraint is missing the referred column of table t is assumed to have the same name that the column of s where the constraint applies i e b So an error is thrown because columns s b and t b have different types DES CREATE OR REPLACE TABLE s a INT b INT REFERENCES t PRIMARY KEY a b Error Type mismatch s b number int t b string varchar Error Imposing constraints A declared primary key or foreign key constraint is checked whenever a new tuple is added to a table following relational databases Note that assertion of rules from the Datalog side are allowed but not checked A Datalog rule should be viewed as a component of the intensional database RDB s avoid to define a view with the same name as a table and therefore there is no way of unexpected behaviours such as the illustrated below DES create or replace table t a int b int c int d int primary key a c DES insert into t values 1 2 3 4 Info 1 tuple inserted DES The following is expected to raise an error DES insert into t values 1 1 3 4 Error Primary key violation when trying to insert t 1 1 3 4 Info 0 tuples inserted DES However the following is allowed DES assert t X Y Z U X 1 Y 2 2 3 U 4 Fernando S enz P rez 80 274
110. DES assert p X X 1 X 2 Fernando S enz P rez 161 274 Universidad Complutense de Madrid Datalog Educational System DES assert c C count p X X C DES gt assert q 1 DES assert l X Y 1j p X q Y X Y DES listing c C count p X X C l X Y 1j p X q Y X Y pix x 1 X 2 qui Info 4 rules listed DES l X Y 1 1 1 1 2 null Info 2 tuples computed Next we enable the development mode for listings DES development on DES l X Y 1 1 1 1 2 SNULL 59 Info 2 tuples computed Here the internal representation of nulls is available If we request the listing of the stored rules in development mode DES gt listing p0 A NULL B p A not p1 A C p0 A B p1 A B p1 A B p A q B A B c C count p X X C 1 X Y p0 X Y pix i x 2 Fernando S enz P rez 162 274 Universidad Complutense de Madrid Datalog Educational System Info 8 rules listed Here we see several source to source transformations First the left join then the aggregate count and finally the disjunctive rule Development listings also allows to inspect the extension table looking at repeated facts involving nulls as follows DES assert q null DES assert q null DES q X q 1 q 3 q SNULL 64 q SNULL 67 Info 4 tuples computed Compar
111. I CODI ocomniitaseluteinpu us nd bU pri bo pM Mn UPS 124 ELI penme an ODBC Commneclifia putetur ipee ib pvp EDD M UE PINE U US tA 124 NM AME Tu RE sci xci T 125 51 9 Opening Several Onmechons quud adds ta kal tud fu ur Mab cM qub fcn bor ERE 128 us Wa Wil 4 ooi MT 129 5 L5 Makinga Connection the Current ONE resserrer rere cd 129 5 1 6 Closing e C Ome Chia T saei n enes EEEE NUSE 129 5 17 Schema and Data Visibilty uicaenttbumed ernocinb ie aa a 129 5 1 8 Solving Engine and ODBC CODRBSEULOEB ioris otio Fo pila irpo EE EF Ene Ep MEER 131 5 19 Integrity Constraints ODBC Connections and Persistence 132 50 10 Caveats and Liniat DOG une recent obe PEE P HREe t che IHRE sederni i enkai FER RM PER EUEE 134 FLIT Cac A 134 Di ODBC ri o T 135 51109 Platorm speciNe ISSUES vss esae fassen Ran etn setis kis aec ect bti 136 5 111 Tested ODBC Drivers cspesciespesso qesrpa cecctpstotcaass nnccsnysssenrsesuvnce A Eesi HR HH ERE 136 c r M 136 mel Declaring a Persistent Predicate essit ede tri REM PUES PPM MEN een 136 mc Using Persistent Predicate sarin waited aman sU E Re Nan ede eU o LA COPS Ea 137 5 2 3 Processing a Persistence A SSEPDODN coarse bert Pe eei i 141 524 Restonne Predicates a tausiaisen acre i NS EUER DU fat x MU SQ Rao DON ukUE 142 520 Schena of Persistent Prediealesuu oienie esa ortrtrtrp etia s
112. Info No integrity constraints DES development off DES multiline off CE fuss Filter 14 rules a Debug Trace Datalog Trace SQL D employee 3 o 2 View ds 100 db T bes Seee8 examples aggregates sq 2 1 2 3 Linux From the same URL above you can download a Linux executable distribution in a single archive file cont Grammar bytes Lexicon Configuration aining the following e des Console executable file e doc manualDES3 10 e doc release_notes_history DES pdf Releases notes history of previous versions pdf This manual sql 5 3 NumLines 50 INS 11 43 00 e examples Example files which will be discussed in Section 6 e license A verbatim copy of the the GNU Lesser General Public License for this distribution e readmeDES3 10 txt A quick installation guide and release notes Fernando S enz P rez 12 274 Universidad Complutense de Madrid Datalog Educational System The following screenshot has been taken in Ubuntu 10 04 1 fernan fernan ubuntu mnt DES DES3 10 Archivo Editar Ver DES Datalog Educational System v 3 10 help for help about commands Fernando Saenz Perez c 2004 2015 DISIA GPD UCM Please send comments questions etc to fernan sip ucm es Web site http des sourceforge net This program comes with ABSOLUTELY NO WARRANTY is free software and you are welcome to redistribute
113. License in the document and put the following copyright and license notices just after the title page Copyright C YEAR YOUR NAME Permission is granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 3 or any later version published by the Free Software Foundation with no Invariant Sections no Front Cover Texts and no Back Cover Texts A copy of the license is included in the section entitled GNU Free Documentation License If you have Invariant Sections Front Cover Texts and Back Cover Texts replace the with Texts line with this with the Invariant Sections being LIST THEIR TITLES with the Front Cover Texts being LIST and with the Back Cover Texts being Lists If you have Invariant Sections without Cover Texts or some other combination of the three merge those two alternatives to suit the situation If your document contains nontrivial examples of program code we recommend releasing these examples in parallel under your choice of free software license such as the GNU General Public License to permit their use in free software Fernando S enz P rez 270 274 Universidad Complutense de Madrid Datalog Educational System Bibliography Agra88 A008 AOTWZ03 BFG07 BPFWD94 Caba05 CGL09 CGS06b CGS07 CGS08 CGS10a CGS11b R Agrawal Alpha An Extension of Relati
114. NCT ALL ProjectionList FROM Relations WHERE Condition ORDER BY OrdExpressions Where e Square brackets indicate that the enclosed text is optional Also the vertical bar is used to denote alternatives e ProjectionList is a list of comma separated columns or arithmetic expressions that will be returned as a tuple result Wildcards are allowed as for referring to all the columns in the data source and Relation for referring to all the columns in the relation Relation The name Relation can be the name of a table or an alias for a table or subquery Clause DISTINCT discards duplicates whereas clause ALL does not this is only noticeable when duplicates are enabled with the command duplicates on e Condition is a logical condition built from comparison operators lt gt lt gt gt and lt Boolean operators AND OR and NOT Boolean constants TRUE FALSE the existence operator EXISTS and the inclusion operator IN See the grammar description in Section 4 2 9 for details Subqueries are allowed with no limitations e Relations is a list of comma separated relation definitions A relation can be either a table name or a view name or a subquery or a join relation They can be renamed via aliases If no FROM clause is provided the built in DUAL relation is used as a data source cf Section 4 2 6 1 2 e OrdExpressions is a list of comma separated ordering expressions An ordering expression can
115. NY WhereExpression Se ee eee AND OR WhereCondition WhereExpression BETWEEN WhereExpression AND WhereExpression WhereExpression Att Cte ArithmeticExpression DOLstmt AggrArithmeticExpression AVG MIN MAX SUM DISTINCT Att COUNT DISTINCT Att AttOrCte Att Cte Operator lt gt lt A v v II Cte Number String NULL Number is an integer or floating point number CESECEEECEEEEEEEEEEEEEEEEECEEEEEEEEEEEEEEEEEESES ISL Information Schema Language statements CESECEEEEEEEEEEEEEEEEEEEEECEEEEEEEEEEEEEEEEEESS ISLstmt SHOW TABLES SHOW VIEWS SHOW DATABASES DESCRIBE TableName ViewName Fernando S enz P rez 104 274 Universidad Complutense de Madrid Datalog Educational System 4 3 Extended Relational Algebra Following the seminal proposal Codd70 there have been some extensions to the basic and additional operators in the original proposal Here we include all the original and extended operators for dealing with outer joins duplicate elimination recursion and grouping with aggregates With respect to textual syntax we follow Diet01 where arguments of functions are enclosed between parentheses as relations and subscripts and superscripts are delimited between blanks Arguments in infix operators are not enclosed between any delimiters Also parentheses can be used to enhance reading Conditions and e
116. R Equivalent to Ri PXA R2 U Ri PCL Ro Concrete syntax Relationl nfjoin Relation2 Example a nfjoin c Grouping with aggregations c1 cn F R Build groups of tuples in R so that first each tuple in the group have the same values for attributes G G second Fernando S enz P rez 109 274 Universidad Complutense de Madrid Datalog Educational System matches condition possibly including aggregate functions and third is projected by expressions F E also possibly including aggregate functions An empty list of grouping attributes G1 G is denoted by an opening and a closing bracket 1 Concrete syntax group by GroupingAtts ProjectingExprs HavingCond Relation Examples Number of employees group by count true employee Employees with a salary greater than average salary grouped by department group_by dept id salary gt avg salary employee Sorting tz R Sort relation R with respect to sequence L GUW02 This sequence contains expressions which can be annotated by an ordering criteria either ascending or descending resp abbreviated by asc and desc Concrete syntax sort Sequence Relation Examples sort salary employee sort dept desc name asc employee Top qx R Return the first N tuples of the relation R Concrete syntax top N Relation Example top 10 hits 4 3 2 Recursion in RA Recursion in RA expressions can be spe
117. Relation2 Example a njoin c Division Ri R2 Return restrictions of tuples in R to the attribute names of Ri which are not in the schema of Rz for which it holds that all their combinations with tuples in R2 are present in Ri The attributes in Rz form a proper subset of attributes in R Concrete syntax Relationl division Relation2 Example Fernando S enz P rez 107 2 14 Universidad Complutense de Madrid Datalog Educational System a division c 4 3 1 3 Extended operators These operators can not be expressed in terms of former operators and include Extended projection expressions and renamings Zt A1 c An R Return tuples of R with a new schema R A A with columns E E where each E is an expression built from constants attributes of R and built in operators If a given A is not provided the name for the column is either the column E if it is a column or it is given an arbitrary new name Concrete syntax project El Al En An Relation Examples type d a string b int project b 1 d project incb project b 1 incb d Duplicate elimination amp R Return tuples in R discarding duplicates Concrete syntax distinct Relation Example distinct project a c Note As distinct is also a Datalog meta predicate the query distinct c from the Datalog prompt would be solved as a Datalog query instead of a RA one Then if you have to ensure your query will
118. Robin Scott 2 Guest 4 Tom Cohen Input Is this the expected answer for view Guest y n m mT w wN a h n n Info view NoCommonName is nonvalid w r t the trusted file Info view LessThan6 is valid w r t the trusted file Info view CatsAndDogsOwner is nonvalid w r t the trusted file Info Debugging view CatsOrDogsOwner CatsOrDogsOwner 1 Kitty cat CatsOrDogsOwner 1 Wilma dog CatsOrDogsOwner 2 Lucky dog CatsOrDogsOwner 2 Wilma cat CatsOrDogsOwner 3 Oreo cat CatsOrDogsOwner 3 Rocky dog O01 WNHE l Fernando S enz P rez 171 274 Universidad Complutense de Madrid Datalog Educational System 7 CatsOrDogsOwner 4 Chelsea dog Input Is this the expected answer for view CatsOrDogsOwner y n m mT w wN a h yl y Info Buggy view found CatsAndDogsOwner Here the debugger traverses the computation tree as before but the user is not asked for views in the set of trusted views and the erroneous view is caught with only one final check compared to the four checks that would be needed otherwise The debugger detects that the new version of CatsAndDogsOwner is erroneous 5 11 2 Missing and Wrong Tuples The debugger also allows the user to specify the error type indicating if there is either a missing answer a tuple was expected but it is not in the result or a wrong answer the result contains an unexpected tuple
119. S SQL Server nor DB2 allow cycles in the above path definition This is not the most important limitation of recursion in current RDBMSs note that stratified recursion is not supported for more than one stratum This means that recursive SQL queries involving EXCEPT NOT IN ageregates are not allowed in current RDBMSs such as SQL Server and DB2 Another limitation is linear recursion the above rules cannot be expressed in a RDMBS s SQL as there are several recursive calls To name another UNION ALL is enforced in those SQLs so that just UNION is not allowed For instance the following query is rejected in any current commercial RDBMS but accepted by DES DES gt duplicates on DES gt multiline on DES gt CREATE TABLE edge a int b int DES INSERT INTO edge VALUES 1 2 Info 1 tuple inserted DES INSERT INTO edge VALUES 2 3 Info 1 tuple inserted DES gt INSERT INTO edge VALUES 1 3 Info 1 tuple inserted DES persistent edge a int b int mysql DES persistent path a int b int mysql DES WITH RECURSIVE path a b AS SELECT FROM edge UNION Discarding duplicates ALL is not required SELECT pl a p2 b FROM path pl path p2 WHERE pl b p2 a SELECT FROM path Warning Recursive rule cannot be transferred to external database kept in local database for its processing path 2 1 A B path A C path C B answer path a int path b int gt answer 1 2 answer 1 3 answer 2 3 Info
120. S gt listing p X X m X m2 Info 1 rule listed DES quit Then we open a new system session and type DES persistent p a int mysql Info Recovering existing data from external database DES listing p A A 2 p A A 1l 2 Info rules listed Fernando S enz P rez 143 274 Universidad Complutense de Madrid Datalog Educational System As can be seen two rules are the result of the compilation of the originally asserted single rule with a disjunctive body Also original variable names only X in tnis case are missing However a next release of DES might deal with this allowing to restore the very same rules as the original ones 5 2 5 Schema of Persistent Predicates You can request the current database schema with DES dbschema Info Database des Info No tables Info View s p a int Defining SQL statement CREATE VIEW p a AS SELECT ALL FROM p des table Datalog equivalent rules Info No integrity constraints where the persistent predicate is listed in the database schema of the default database des and therefore it can be combined in a query with any predicate visible in this database Note that predicate p has been declared as a view depending on a table with the same name as the predicate and view but ending with des table Since predicates are defined in general with intensional rules the view p will contain those intensional rule
121. Tests whether X is less than or equal to Y 4 5 2 Datalog and Prolog Arithmetic Borrowed from most Prolog implementations arithmetic is allowed by using the infix operator is which is used to construct a query with two arguments as follows X is Expression where X is a variable or a number and Expression is an arithmetic expression built from numbers variables built in arithmetic operators constants and functions mainly following ISO for Prolog they are labelled if so in the listings below Availability of arithmetic built ins mainly depends on the underlying Prolog system binary distributions cope with all the listed built ins At evaluation time the expression must be ground i e its variables must be bound to numbers or constants otherwise problems as stated in the previous section may arise Evaluating the above query amounts to evaluate the arithmetic expression according to the usual arithmetic rules which yields a number integer or float and X is bound to this number if it is a variable or tested its equivalence if it is a number Precision depends on the underlying Prolog system Arithmetic built ins have meaning only in the second argument of is they cannot be used elsewhere For example DES X is sqrt 2 1 4142135623730951 is sqrt 2 Info 1 tuple computed Here sqrt 2 is an arithmetic expression that uses the built in function sqrt square root But DES gt sqrt 2 is sqrt 2
122. Texts on the back cover Both covers must also clearly and legibly identify you as the publisher of these copies The front cover must present the full title with all words of the title equally prominent and visible You may add other material on the covers in addition Copying with changes limited to the covers as long as they preserve the title of the Document and satisfy these conditions can be treated as verbatim copying in other respects If the required texts for either cover are too voluminous to fit legibly you should put the first ones listed as many as fit reasonably on the actual cover and continue the rest onto adjacent pages If you publish or distribute Opaque copies of the Document numbering more than 100 you must either include a machine readable Transparent copy along with each Opaque Fernando S enz P rez 265 274 Universidad Complutense de Madrid Datalog Educational System copy or state in or with each Opaque copy a computer network location from which the general network using public has access to download using public standard network protocols a complete Transparent copy of the Document free of added material If you use the latter option you must take reasonably prudent steps when you begin distribution of Opaque copies in quantity to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy directly or
123. This information is used for slicing the associated queries keeping only those parts that might be the cause of the error The validity of the results produced by sliced queries is easier to determine thus facilitating the location of the error 5 11 2 1 Missing Tuples Let s consider another following example located at examples SQLDebugger awards1 sq1 The loyalty program of an academy awards an intensive course for students that satisfy the following constraints e The student has completed the basic level course level 0 e The student has not completed an intensive course e To complete an intensive course a student must either pass the all in one course or the three initial level courses levels 1 2 and 3 The database schema includes three tables courses id level contains information about the standard courses including their identifier and the course level e registration student course pass indicates that the student is in the course with pass taking the value true if the course has been successfully completed e alllInOneCourse student pass contains information about students registered in a special intensive course with pass playing the same role as in registration File awards1 sq1 contains the SQL views selecting the award candidates The first view is standard which completes the information included in the table registration with the course level The view basic selects those standard students that
124. UR EO RR UU CU S N AVR DU E RES Gu ui gppisbk Res 188 5176 ER e 190 XA M e iino T 191 517 8 Query Lang UA ES ciyeri 195 9179 TAP relate enaa i A Or AR E 195 AOR ong E EE T E E E AE E O 196 SA A a ai T E 200 917A Statis NES m 200 517 B Miscellanedssrpimni anna a a iR est bU 201 517 Ad pe mehr eieiei e a A T DUE NU REM Le DU FERAE ERUR 201 5 18 Textual Uu tolences 203 5 15 1 Notes about the TREGETRBO uasa nest d RrURH Pe tr bla dose n HG rS Pa Poen GENER 204 g1 br MSIE e P ica tenner 205 Fernando S enz P rez 6 274 Universidad Complutense de Madrid Datalog Educational System STEL Kinds DE QUARTER ud cessent vierte abito acabas ced inane dtu E 205 5 152 TAPl nabled C OEUEIQDES eio peri Rete petspIERE ERR U ERIS EQHE FREU IEEE EFE pe rUrE HH UL n End 206 5 18 5 TAP enabled OUGEPIGSQu ineiiciitun cic titunci b cnr E vi een eb i cro becoe eret ricis 220 5 19 TISO Escape Character sitet NN TEE 223 5 20 Motes about the Implementation of DES samens 223 V IXMNI DII enueia nin A EEA A EE 224 5 20 2 Pig pout COMPUtA ON n iae EEr ER ER ERR EE 225 5 20 3 Dependency Graphs and Stratification Negation Outer Joins and P aui ur RASKETANK EE NESSES 226 5 20 4 Bri P R 226 5204 1 Complete Computations optimize co 227 5 20 4 2 Fxtensional Predicates optimize ep
125. Universidad Complutense de Madrid Datalog Educational System Datalog Educational System V3 10 User s Manual Fernando S enz P rez Grupo de Programaci n Declarativa GPD Departamento de Ingenier a del Software e Inteligencia Artificial DISIA Universidad Complutense de Madrid UCM January 21st 2015 Fernando S enz P rez 1 274 Universidad Complutense de Madrid Datalog Educational System Copyright C 2004 2015 Fernando S enz P rez Permission is granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 3 or any later version published by the Free Software Foundation with no Invariant Sections no Front Cover Texts and no Back Cover Texts A copy of the license is included in Appendix A in the section entitled Documentation License Fernando S enz P rez 2 2 14 Universidad Complutense de Madrid Datalog Educational System Contents e Introduction T 8 Li Ded ctve Databases me 9 url 9 21 Downloading DES ases rade EN P EIE M nion tin E EUNDI eta Dre e 9 pSNEE Necolii 10 PARCNES o 3 sulcis cct 10 2121 WV unn cc 10 2122 ADES RACTIVE B snra oturbr e EAR rtr tE Cip seruP tiir Pb 12 A a EN UD c eu mete 12 FAT E MaC bp Ae a A 13 2 2 stalling and Executing DES ui etes eetSbi ttl tn PH Eee HERHRE ttr hr r BER etn
126. Value e quit Synonym for halt Shorthand q 5 17 14 Implementor e debug Enable debugging in the host Prolog interpreter e indexing Display whether hash indexing on memo tables is enabled Fernando S enz P rez 201 274 Universidad Complutense de Madrid Datalog Educational System indexing Switch Enable or disable hash indexing on memo tables on or off resp Default is enabled which shows a noticeable speed up gain in some cases nospyall Remove all Prolog spy points in the host Prolog interpreter Disable debugging nospy Pred Arity Remove the spy point on the given predicate in the host Prolog interpreter optimize cc Display whether complete computations optimization is enabled optimize cc Switch Enable or disable complete computations optimization on or off resp and enabled by default Fixpoint iterations and or extensional database retrievals might been saved optimize ep Display whether extensional predicates optimization is enabled optimize ep Switch Enable or disable extensional predicates optimization on or off resp and enabled by default Fixpoint iterations and extensional database retrievals are saved for extensional predicates as a single linear fetching is performed for computing them optimize nrp Display whether non recursive predicates optimization is enabled optimize nrp Switch Enable or disable non recursive predicates optimization on or off resp and
127. Y p Y By switching both goals the query becomes valid DES p Y t X Y division s Y If on the contrary Y does not occur in any other subgoal and neither in the head if considering a rule there is no such demand requirement This issue breaks the Fernando S enz P rez 54 274 Universidad Complutense de Madrid Datalog Educational System declarative nature of the division operator In addition this is not warned to the user yet and will be part of future enhancements 4 1 15 Integrity Constraints Integrity constraints allow to specify valid values for tuples in relations DES provides several predefined constraints stemmed from SQL type primary key and foreign key In addition a predefined functional integrity constraint is also provided Users can also define its own integrity constraints which are called user defined integrity constraints from now on All of them can be declared and the system monitors their fulfilment which is the default behaviour However the command check off allows to disable constraint checking All predefined integrity constraints apply to facts but type constraints which also apply to rules Also user defined constraints apply to facts and rules A comma separated sequence of predefined integrity constraints is allowed to specify multiple constraints in a single input 4 1 15 1 Type A type constraint specifies the values in a domain a predicate argument table column in relat
128. a fact Rule order is irrelevant for Datalog computation The extension table is cleared and the predicate dependency graph and strata are recomputed close persistent Name Close the connection to the persistent predicate Name External relations supporting its persistence are kept but the predicate is no longer visible Its type information is kept in the local database metadata consult FileName Load the Datalog program found in the file Filename discarding the rules already loaded integrity constraints and SOL table and view definitions The extension table is cleared and the predicate dependency graph and strata are recomputed The default extension d1 for Datalog programs can be omitted Examples Assuming we are on the distribution directory we can write DES consult examples mutrecursion which behaves the same as the following DES consult examples mutrecursion dl DES consult examples mutrecursion DES consult c des3 10 examples mutrecursion dl This last command assumes that the distribution directory is c des3 10 Synonyms c restore ddb TAPI enabled check db Check database consistency w r t declared integrity constraints types existency primary key candidate key foreign key functional dependency and user defined Display a report with the outcome Fernando S enz P rez 183 274 Universidad Complutense de Madrid Datalog Educational System des Input Force DES to
129. able contents regarding the relation state 4 with the command list_et state 4 we get for the answers state n n n n state n n n s Fernando S enz P rez 245 274 Universidad Complutense de Madrid Datalog Educational System state n n s n state n s n n state n s n s state s n s n state s n s s state s s n s state s s s n state s s s s Info 10 tuples in the answer set This is the complete set of valid states which includes all of the valid paths from state n n n n to state s s s s However the order of states to reach the latter is not given but we can find it by observing this relation i e state n n n n Farmer takes Goat to south shore gt state s n s n Farmer returns to north shore state n n s n Farmer takes Wolf to south shore state s s s n Farmer takes Goat to north shore gt state n s n n Farmer takes Cabbage to south shore gt state s s n s Farmer returns to north shore state n s n s Farmer takes Goat to south shore gt state s s s s Final safe state Observe that there is two states in the relation state 4 which do not form part of the previous path state s n s s state n n n s These states come from another possible path state n n n n Farmer takes Goat to south shore gt state s n s n Farmer returns to north shore state n n s n Farmer takes Cabbage to south shore state s n s s Farmer takes
130. adrid Datalog Educational System finite number of ground facts which can be used in a given proof and proofs have finite depth provided that tabling prevents recomputations of older nodes in the proof tree On the other hand the number of negative facts which can be inferred is also finite because they are proved using negation as failure Failures are always finite because they are proved trying to get a success Finally there are facts that cannot be proved to be true or false because of recursion These cases are detected by the tabling mechanism which prevent infinite recursion such as inp p It is also possible that both a positive and a negative fact have been inferred for a given call Then an undefined fact replaces the contradictory information The implementation simply removes the contradictory facts and informs about the undefinedness As already indicated see Section 6 8 1 the algorithm for determining undefinedness is incomplete 5 20 3 Dependency Graphs and Stratification Negation Outer Joins and Aggregates Each time a program is consulted or modified i e via submitting a temporary view or changing the database a predicate dependency graph is built ZCF 97 This graph shows the dependencies through positive and negative atoms among predicates in the program Also a negative dependency is added for each outer join goal and aggregate goal This dependency graph is useful for finding a stratification for the
131. ady in the local database A persistent predicate not yet restored in the local database Anon persistent predicate For the first two cases besides making pred persistent nothing else is performed when processing its persistence assertion For the third case a persistent predicate is automatically restored in the local database i e it is made available to the deductive engine For the fourth case each non persistent predicate is automatically made persistent if types match otherwise an error is raised This is needed in order for the external database to be aware of a predicate only known by the deductive engine so far as this database will be eventually involved in computing the meaning of pred However not all rules can be externally processed for a number of reasons including the external database does not support some features and the translations of Fernando S enz P rez 141 274 Universidad Complutense de Madrid Datalog Educational System some built ins are not supported yet In the current state of the implementation the following conditions must hold for a rule to be externally processed The rule does not contain calls to built ins but comparison operators The rule does not form a recursive cycle Nonetheless they are kept in the in memory database for computing the meaning of the predicate when needed This is performed by the deductive engine which couples the processing of the external databa
132. al System Borrowing an example from Bon90 5 we consider an extended and adapted rule based system for describing university policy student S means that S is a student course C that C is a course take S C that student S takes course C and grad S that S is eligible for graduation The extensional database can contain facts as student adam student bob student pete student scott student tony course eng course his course lp take adam eng take pete his take pete eng take scott his take scott 1p take tony his The intensional database can contain rules as grad S take S his take S eng A regular query for students that would be eligible to graduate is DES grad S grad pete Info 1 tuple computed A first hypothetical query for this database asks If Tony took eng would he be eligible to graduate which can be queried with DES gt take tony eng gt grad tony Info Processing answer take tony eng gt grad tony answer Info 1 tuple computed 5 However note that our approach differs from Bon90 in at least the following We allow for rules in the assumption not only facts and variables in any assumed rule are not shared out of the rule Fernando S enz P rez 70 274 Universidad Complutense de Madrid Datalog Educational System Also if Pete did not take his he would not be elibible to graduate notice
133. all the copyright notices of the Document E Add an appropriate copyright notice for your modifications adjacent to the other copyright notices F Include immediately after the copyright notices a license notice giving the public permission to use the Modified Version under the terms of this License in the form shown in the Addendum below G Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document s license notice H Include an unaltered copy of this License I Preserve the section Entitled History Preserve its Title and add to it an item stating at least the title year new authors and publisher of the Modified Version as given on the Title Page If there is no section Entitled History in the Document create one stating the title year authors and publisher of the Document as given on its Title Page then add an item describing the Modified Version as stated in the previous sentence Fernando S enz P rez 266 2 14 Universidad Complutense de Madrid Datalog Educational System J Preserve the network location if any given in the Document for public access to a Transparent copy of the Document and likewise the network locations given in the Document for previous versions it was based on These may be placed in the History section You may omit a network location for a work that was published at least four years before the Document itself or if the
134. an only be used inside SQLStatement These local views are not stored in the database and are rather computed when executing SQLStatement Although they are local they must have different names from existing objects tables or views The syntax of a local view definition is as follows RECURSIVE ViewName Columnl ColumnN AS SQLStatement Here the keyword RECURSIVE for defining recursive views is not mandatory the parser simply ignores it Examples CREATE TABLE flights airline frm to departs arrives WITH RECURSIVE reaches frm to AS SELECT frm to FROM flights UNION SELECT rl frm r2 to FROM reaches AS r1 reaches AS r2 WHERE rl to r2 frm SELECT FROM reaches WITH Triples airline frm to AS SELECT airline frm to FROM flights 6 Adapted from GUW02 Fernando S enz P rez 92 2 14 Universidad Complutense de Madrid Datalog Educational System RECURSIVE Reaches airline frm to AS SELECT FROM Triples UNION SELECT Triples airline Triples frm Reaches to FROM Triples Reaches WHERE Triples to Reaches frm AND Triples airline Reaches airline SELECT frm to FROM Reaches WHERE airline UA EXCEPT SELECT frm to FROM Reaches WHERE airline AA In addition shorter definitions for recursive views are allowed in DES The next view delivers the same result set as the first example above CREATE VIEW reaches frm to AS SELECT frm to FROM flights UNION SELECT rl frm r2 to FROM reach
135. ando S enz P rez 38 2 14 Universidad Complutense de Madrid Datalog Educational System a Info 1 tuple computed DES b Info 0 tuples computed For the goal a the system informs that b is previously computed nevertheless taking advantage of the extension table mechanism whereas for the goal b there is no need of resorting to the stratum by stratum solving Finally consult also Section 5 3 for limitations in the use of negation 4 1 9 Duplicates Duplicates in answers are removed by default However it is also possible to enable them with the command duplicates on This allows to generate answers as multisets instead of as the typical set oriented deductive systems behave Computing the meaning of a relation containing duplicates in the extensional database i e its facts will include all of them in the answer as in DES duplicates on DES assert t 1 DES assert t 1 DES t X t 1 t 1 Info 2 tuples computed Rules can also be source of duplicates as in DES assert s X t X DES s X s 1 s 1 Info 2 tuples computed In addition recursive rules are duplicate sources as in DES assert t X t X DES gt t X t 1 t 1 t 1 t 1 Info 4 tuples computed Fernando S enz P rez 39 2 14 Universidad Complutense de Madrid Datalog Educational System where two tuples directly come from the two facts for t 1 and the othe
136. anslation and the original version of this License or a notice or disclaimer the original version will prevail Fernando S enz P rez 268 2 14 Universidad Complutense de Madrid Datalog Educational System If a section in the Document is Entitled Acknowledgements Dedications or History the requirement section 4 to Preserve its Title section 1 will typically require changing the actual title 9 TERMINATION You may not copy modify sublicense or distribute the Document except as expressly provided under this License Any attempt otherwise to copy modify sublicense or distribute it is void and will automatically terminate your rights under this License However if you cease all violation of this License then your license from a particular copyright holder is reinstated a provisionally unless and until the copyright holder explicitly and finally terminates your license and b permanently if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation Moreover your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means this is the first time you have received notice of violation of this License for any work from that copyright holder and you cure the violation prior to 30 days after your receipt of the notice Termination of your rights under this se
137. at 1 integer 1 sign 1 gcd 2 min 2 max 2 truncate 1 float integer part 1 float fractional part 1 round 1 floor 1 ceiling 1 Aggregate Functions The argument may include a prefix distinct for all but min and max avg 1 count 1 count O max 1 min 1 sum 1 times 1 ArithmeticConstant pile Rels Rel Rel Rel UnrenamedRel RenamedRel UnrenamedRel TableName ViewName Fernando S enz P rez 102 274 Universidad Complutense de Madrid Datalog Educational System DOQLstmt JoinRel DivRel RenamedRel UnrenamedRel AS Identifier JoinRel Rel NATURAL JoinOp Rel JoinCondition JoinOp INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN JoinCondition ON WhereCondition USING Atts DivRel Rel DIVISION Rel Not in the standard WhereCondition BWhereCondition UBWhereCondition HavingCondition As WhereCondition but including aggregate functions BWhereCondition WhereCondition UBWhereCondition TRUE FALSE EXISTS DQLstmt NOT WhereCondition AttOrCte AttOrCte NOT IN DQLstmt Cte Cte Cte Cte Cte Cte Extension for lists of tuples Fernando S enz P rez 103 274 H Universidad Complutense de Madrid Datalog Educational System WhereExpression IS NOT NULL c NOT IN DQLstmt Operator ALL A
138. atalog is less sensitive to operational issues than Prolog and it could be said to be more declarative First because of terminating issues as already introduced and second because the problematic first view can be automatically transformed into the second computation safe one as we explain next Fernando S enz P rez 153 274 Universidad Complutense de Madrid Datalog Educational System We can check whether a rule is safe in the sense that all its variables are range restricted and then reorder the goals for allowing its computation First we need a notion of safety which intuitively seems clear but that actually is undecidable ZCF 97 Some simple sufficient conditions for the safety of Datalog programs can be imposed which means that rules obeying these conditions can be safely computed although there are rules that even violating some conditions can be actually computed We impose the following weak conditions Ullm95 ZCF 97 for safe rules adapted to our context 1 Any variable X in a rule r is safe if a X occurs in some positive goal referring to a user defined predicate b rcontains some equality goal X Y where Y is safe Y can be a constant which obviously makes X safe c A variable X in the goal X is Expression is safe whenever all variables in Expression are safe 2 A rule is safe if all its variables are safe Notice that these conditions currently supported by the system are weak since the
139. blishes copyrightable works and also provides prominent facilities for anybody to edit those works A public wiki that anybody can edit is an example of such a server A Massive Multiauthor Collaboration or MMC contained in the site means any set of copyrightable works thus published on the MMC site CC BY SA means the Creative Commons Attribution Share Alike 3 0 license published by Creative Commons Corporation a not for profit corporation with a principal place of business in San Francisco California as well as future copyleft versions of that license published by that same organization Fernando S enz P rez 269 2 14 Universidad Complutense de Madrid Datalog Educational System Incorporate means to publish or republish a Document in whole or in part as part of another Document An MMC is eligible for relicensing if it is licensed under this License and if all works that were first published under this License somewhere other than this MMC and subsequently incorporated in whole or in part into the MMC 1 had no cover texts or invariant sections and 2 were thus incorporated prior to November 1 2008 The operator of an MMC Site may republish an MMC contained in the site under CC BY SA on the same site at any time before August 1 2009 provided the MMC is eligible for relicensing ADDENDUM How to use this License for your documents To use this License in a document you have written include a copy of the
140. bout compilation of SOL DQL statements to Datalog clauses on or off resp e show sql Display whether SOL compilations are to be displayed e show sql Switch Enable or disable display of SOL compilations on or off resp SOL sentences can come from either RA or Datalog compilations In this last case they are externally processed e simplification Display whether program simplification is enabled e simplification Switch Enable or disable program simplification on or of f resp Rules with equalities true and not BooleanValue are simplified e singleton warnings Display whether singleton warnings are enabled e singleton warnings Switch Enable or disable singleton warnings on or off resp e type casting Display whether automatic type casting is enabled e type casting Switch Enable or disable automatic type casting on or off resp This applies to Datalog fact assertions and SQL insertions and selections Enabling this provides a closer behaviour of SOL statement solving e undef pred warnings Display whether undefined predicate warnings are enabled e undef pred warnings Switch Enable or disable undefined predicate warnings on or of f resp e unfold Display whether program unfolding is enabled e unfold Switch Enable or disable program unfolding on or off resp Unfolding affects to the set of rules which result from the compilation of a single source rule Unfolding is alwa
141. c X C group by t X X C count X C 1 C wl Offending values in database ic 1 2 Error Asserting rules due to integrity constraint violation 4 1 16 Restricted Predicates The meaning of a predicate can be limited by defining restrict rules A restrict rule is a rule for which its head is a restricted atom a regular atom preceded by a minus sign cf Section 4 1 2 The meaning of a predicate is then the tuples deduced from its regular rules minus the tuples deduced from its restrict rules A restrict rule does not represent true negation but a means to discard positive tuples from the meaning of a predicate So both p and p can occur in a program Computing a restricted predicate p can be seen as follows First compute its meaning P from its regular rules Then compute the meaning P of its restrict rules and build the meaning for p as the difference P P Adding a restrict rule for a predicate involves to add a negative dependency q p cf Section 4 1 8 from any other predicate q depending on p Let s consider the following number generator DES assert p X X 1 p Y Y 10 X Y 1 DES p X Fernando S enz P rez 67 274 Universidad Complutense de Madrid Datalog Educational System p 1 p 2 p 10 Info 10 tuples computed Even numbers can be obtained by adding the following restrict rule DES assert p X p X X mod 2 1 DES p X p 2 p 4 p 6 p 8
142. cational System Example tapi list sources father 2 Sasserted 2015 3 121 173 45 19 file c des desdevel examples family dl 8 8 file c des desdevel examples family dl 9 9 file c des desdevel examples family dl 10 10 file c des desdevel examples family dl 11 11 eot e Command tapi sql left delimiter Answer Only one line with a single character corresponding to the SOL left delimiter as defined by the database manager either DES or the external DBMS via ODBC Example assuming an ODBC connection to MS Access Input tapi sql left delimiter Output e Command tapi sql right delimiter Answer Only one line with a single character corresponding to the SOL right delimiter as defined by the database manager either DES or the external DBMS via ODBC Example assuming an ODBC connection to MS Access Input tapi sql_right_delimiter Fernando S enz P rez 209 274 Universidad Complutense de Madrid Datalog Educational System Output e Command tapi cd Answer Only one line with the full path DES was started from Example Input tapi cd Output c des e Command tapi cd Path Answer Only one line with the full new path Example Input tapi cd examples Output c des examples e Command tapi consult File tapi c File tapi File Answer Information about the loaded program and a final line containin
143. cess o Error Fernando S enz P rez 205 2 14 Universidad Complutense de Madrid Datalog Educational System Serror code text text eot Where code is the error code and text is its textual description which can consist of several lines Last line is the text for denoting end of transmission Error codes are digits starting by either 0 denoting an exception error or 1 denoting a warning or 2 denoting an extended informative message e Boolean Only one line either one of the following o true o false If an error occurs it is output as in the regular answer e Defined specifically for a given command or statement If an error occurs it is output as in the regular answer 5 18 2 TAPI enabled Commands This section shows each supported command for TAPI communication e Command tapi listing Answer Loaded rules delimited by separator and a final line containing eot rule 1 1 rule 1 m rule n 1 rule n m eot Remarks Note that a single rule may expand to several lines if pretty print is enabled All forms of this command are supported with arguments name arity Example tapi listing p 0 Fernando S enz P rez 206 274 Universidad Complutense de Madrid Datalog Educational System p X p Y X Y 1 eot e Command tapi listing_asserted Remarks As listing above but only for asserted rules All forms of this command are supported with ar
144. chema relname or dbschema connection relname Another issue is the unsyncing of the part of the predicate dependency graph related to the external metadata Each time an external database is opened or the current database is set to it the PDG is computed Any changes to the external data from an external source are not available until one of these operations are performed with the commands open db and use db respectively or a DDL statement is locally issued It is also possible to refresh the PDG with the command refresh_bd Fernando S enz P rez 135 274 Universidad Complutense de Madrid Datalog Educational System 5 1 10 3 Platform specific Issues ODBC connections are only supported by the provided binaries and the source distributions for SWI Prolog and SICStus Prolog If you use a 64 bit Windows OS notice that you can select to run either a 64 bit version of DES or a 32 bit one In the first case 64 bit you must use the Database Connectivity ODBC Data Source Administrator tool Odbcad32 exe e The 32 bit version of the Odbcad32 exe file is located in the folder systemdrive Windows SysWoW64 Note that this number 64 is correct even when it is intended for the 32 bit version e The 64 bit version of the Odbcad32 exe file is located in the folder systemdrive Windows System32 Note that this number 32 as part of the folder name is correct even when it is intended for the 64 bit version Also notice that a 64 b
145. cified by simply including the name of the view which is being defined in its definition body Solving recursion in RA has been proposed as the application of a fixpoint operator to an RA expression see for instance Agra88 HA92 DES compiles RA expressions to Datalog programs and uses the fixpoint based deductive engine to solve them As an example of recursion in RA let s consider the following classic program for finding paths in a graph create table edge origin string destination string paths origin destination select true edge Fernando S enz P rez 110 274 Universidad Complutense de Madrid Datalog Educational System union project paths origin edge destination select paths destination edge origin edge product paths select true paths As illustrated in this example non linear recursion is allowed as the relation paths is called twice in its definition Note also that the complete schema must be provided in the left hand side of the assignment operator otherwise an unknown relation is raised As well mutually recursive definitions can be specified However the schema of the relations must be known before their use in a recursive RA expression As there is no a context within two or more mutual recursive relations can be encapsulated and defined as the WITH SOL clause one has to define the schema of each involved mutually recursive relation prior to its definition This can be done wi
146. column names are reversed with respect to the table definition For inserting several tuples at a time INSERT INTO t VALUES 1 1 null 2 Another form of the INSERT statement allows to inserting tuples which are the result set from a SELECT statement INSERT INTO TableName Coll ColN SQLStatement This statement inserts into the table TableName as many tuples as returned by the SOL statement SQLStatement This statement has to return as many columns as either the columns of TableName if no column names are given or the number of provided column names N otherwise Fernando S enz P rez 84 274 Universidad Complutense de Madrid Datalog Educational System Examples INSERT INTO t SELECT FROM s You can also insert tuples into a table coming directly or indirectly from the table itself for duplicating rows as in INSERT INTO t SELECT FROM t Note that there is no recursion in this query as the source table t is not changed during solving the SELECT statement For testing the new duplicated contents of t you have to use listing t instead of a SELECT since this statement always returns a set no duplicates when duplicates are disabled cf Section 4 1 9 You can specify columns of the target table as in INSERT INTO t b SELECT a FROM t which inserts as many rows in t as it had before insertion and for each row a new tuple is built with the value of the source column a in the target column b
147. command DES listing a al a a2 a a3 b al b b1 b b2 c al al c al b2 c a2 b2 cartesian X Y a X b Y difference X a X not b X full join X Y fj a X b Y X Y inner join X a X b X left join X Y 1j a X b Y X projection X X Y right join X Y rj a X b Y X Y selection X a X X a2 union X a X Y b X Info 18 rules listed Submitting a query is pretty easy DES a X a al a a2 a a3 Info 3 tuples computed You can interactively add new rules with the command assert as in DES gt assert a a4 Fernando S enz P rez 18 274 Universidad Complutense de Madrid Datalog Educational System DES a X a al a a2 a a3 a a4 Info 4 tuples computed Saving the current database which may include such interactively added or deleted tuples is allowed with the command save_ddb Filename which saves in a plain file the Datalog rules in memory Later they can be restored with restore ddb Filename this command is only an alias for consult In the following session the current database is stored abolished cleared and finally restored All the data including the ones interactively added have been recovered DES save ddb db dl DES abolish DES restore ddb db dl Info 19 rules consulted DES a X a al a a2 a a3 a a4 Info 4 tuples co
148. computed Note that enabling duplicates can lead to non terminating queries For instance let s consider DES duplicates off DES assert p p p DES p P Info 1 tuple computed DES duplicates on DES p Non terminating Here the hypothesis p is recursively added to the database with no end as there is no terminating condition 4 1 17 3 Hypothetical Queries and Negation Implication can also be used in conjunction with negation Let s consider the following example which states flight links 1ight 2 for origin and destination between airports airport and where flight travels 1ight travel 2 also for origin and destination are possible if involved airports are not closed flight travel X Y flight X Y Fernando S enz P rez 74 274 Universidad Complutense de Madrid Datalog Educational System not closed X not closed Y flight travel X Y flight travel X 2 flight travel Z2 Y flight a b flight b c flight c d A regular query for consulting possible travels is DES flight travel X Y flight travel a b flight travel a c flight travel a d flight travel b c flight travel b d flight travel c d Info 6 tuples computed Assuming that airport b is closed we ask for the possible travels with this assumption DES closed b gt flight_travel X Y Info Processing answer X Y closed b gt flight_travel X Y answer
149. condary then it is not allowed to be designated as Invariant The Document may contain zero Invariant Sections If the Document does not identify any Invariant Sections then there are none The Cover Texts are certain short passages of text that are listed as Front Cover Texts or Back Cover Texts in the notice that says that the Document is released under this License A Front Cover Text may be at most 5 words and a Back Cover Text may be at most 25 words A Transparent copy of the Document means a machine readable copy represented in a format whose specification is available to the general public that is suitable for revising the document straightforwardly with generic text editors or for images composed of pixels generic paint programs or for drawings some widely available drawing editor and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters A copy made in an otherwise Transparent file format whose markup or absence of markup has been arranged to thwart or discourage subsequent modification by readers is not Transparent An image format is not Transparent if used for any substantial amount of text A copy that is not Transparent is called Opaque Examples of suitable formats for Transparent copies include plain ASCII without markup Texinfo input format LaTeX input format SGML or XML using a publicly available DTD and standard conforming sim
150. connected time FROM flight connected WHERE flight destination connected origin SELECT FROM connected Here relation flight represents possible direct flights between locations and travel represents possible connections by using one or more direct flights Both include flight time By querying the relation travel we get DES gt SELECT FROM travel answer travel origin string travel destination string travel tim e float gt answer lon ny 9 0 answer mad ny 11 5 answer mad par 1 5 answer par ny 10 0 Info 4 tuples computed Now if we assume that there is a tuple flight mad lon 2 0 we can query the database with this assumption with the following query with multi line input enabled DES gt ASSUME SELECT mad lon 2 0 IN flight origin destination time SELECT FROM travel answer travel origin string travel destination string travel tim e float gt answer lon ny 9 0 answer mad lon 2 0 answer mad ny 11 0 answer mad ny 11 5 answer mad par 1 5 answer par ny 10 0 Info 6 tuples computed Note that the SELECT statement following the keyword ASSUME simply stands for the construction of a single tuple for table flight such statement can be otherwise stated as SELECT mad lon 2 0 FROM dual where dual is the built in table described in Section 4 2 6 1 2 In addition not only tuples can be extensionally assumed but any SQL DQL statement i e tuples
151. ction does not terminate the licenses of parties who have received copies or rights from you under this License If your rights have been terminated and not permanently reinstated receipt of a copy of some or all of the same material does not give you any rights to use it 10 FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new revised versions of the GNU Free Documentation License from time to time Such new versions will be similar in spirit to the present version but may differ in detail to address new problems or concerns See http www gnu org copyleft Each version of the License is given a distinguishing version number If the Document specifies that a particular numbered version of this License or any later version applies to it you have the option of following the terms and conditions either of that specified version or of any later version that has been published not as a draft by the Free Software Foundation If the Document does not specify a version number of this License you may choose any version ever published not as a draft by the Free Software Foundation If the Document specifies that a proxy can decide which future versions of this License can be used that proxy s public statement of acceptance of a version permanently authorizes you to choose that version for the Document 11 RELICENSING Massive Multiauthor Collaboration Site or MMC Site means any World Wide Web server that pu
152. cur in expressions and returns a value as in R 1 sum X where sum is expected to compute the cumulative sum of possible values for X and X has to be bound in the context of a group by predicate cf next section wherein the expression also occur 4 1 12 2 Group by Predicate A group by predicate encloses a query for which a given list of variables builds answer sets groups for all possible values of these variables Then these groups can be aggregated with specific aggregate functions Let s consider the following excerpt from the file aggregates dl employee Name Department Salary employee anderson accounting 1200 employee andrews accounting 1200 employee arlingon accounting 1000 employee nolan null null employee norton null null employee randall resources 800 employee sanders sales null employee silver sales 1000 employee smith sales 1000 employee steel sales 1020 employee sullivan sales null We can count the number of employees for each department with the following query DES group by employee N D S D RZ2count Info Processing answer D R group by employee N D S D R count answer accounting 3 answer null 2 answer resources 1 answer sales 5 Info 4 tuples computed Note that two employees are not assigned to any department yet nolan and norton This query behaves as an SOL user would expect though nulls do not have to represent the same
153. d Datalog Educational System So the system informs that there is an inconsistency when trying to assert such offending fact pre 1p hist which makes prerequisites to form a cycle as shown in the offending value list ic 1p ic eng ic hist The system informs about the rules that cannot be assumed but continues its processing This is also useful to know the result for the admissible assumptions Note that in general offending facts can be a subset of the meaning of an assumed rule in the context of the current database To illustrate this let s consider the following program for throwing a coin Tails win win heads win heads tails Predicate win states that one wins if either heads or tails are got and the constraint states that you have to get tails to win Then the following hypothetical goal states whether assuming heads or tails leads to win DES heads N tails gt win Info Processing answer heads Ntails win Error Integrity constraint violation ic re win heads Info The following rule cannot be assumed heads answer Info 1 tuple computed As informed heads cannot be assumed in order to win 4 1 17 2 Hypothetical Queries and Duplicates Duplicates can also be used along computations involving assumptions Let s consider a variation of the classical Nim game known as the subtraction game Here there is only one heap from which a player can take one or two tokens in his
154. data definition and query language With the increasing interest in semistructured data Florid has been extended for handling semistructured data in the context of Information Integration from the Semantic Web The NAIL project delivered a prototype with stratified negation well founded negation and modularity stratified negation Later it added the language Glue which is essentially single logical rules with SQL statements wrapped in an imperative conventional language PDR91 DMP93 The approach of combining two languages is similar to the aforementioned Coral which uses C It does not run on Windows platforms Another deductive database following this combination of declarative and imperative languages is Rock amp Roll BPFWD94 ADITI 2 VRK 91 is the last version of a deductive database system which uses the logic functional programming language Mercury It does not run on Windows platforms There is no further development planned for Aditi See also the Datalog entry in Wikipedia http en wikipedia org wiki Datalog 8 2 Systems with Formal Relational Query Languages Several implementations of formal relational query languages exist One of the most known is WinRDBI https winrdbi asu edu a system including SOL RA and tuple and domain relational calculi TRC and DRC respectively It includes a GUI and allows the definition of views in each language This system is described in the book DietO1 as a tool
155. data value in spite of this such tuples are collected in the same bag If we rather want to count active employees those with assigned salaries we submit the following query DES group by employee N D S D R2count S Fernando S enz P rez 46 274 Universidad Complutense de Madrid Datalog Educational System Info Processing answer D R group by employee N D S D R count 3S answer accounting 3 answer null 0 answer resources 1 answer sales 3 Info 4 tuples computed Note that null departments have no employee with assigned salary Counting the number of departments from the relation employee needs to discard duplicates as in DES group_by employee N D S R count_distinct D Info Processing answer R group by employee N D S R count_distinct D answer 3 Info 1 tuple computed Conditions including aggregates on groups can be stated as well cf having conditions in SQL For instance the following query lists departments with more than one active employee DES group by employee N D S D count S gt 1 Info Processing answer D group by employee N D S D A count S A gt 1 answer accounting answer sales Info 2 tuples computed Note that the number of employees can also be returned as follows DES group by employee N D S D R count S R gt 1 Info Processing
156. dbschema Inserting values into tables insert into a values al insert into a values a2 insert into a values a3 insert into b values b1 insert into b values b2 insert into b values al insert into c values al b2 insert into c values al al insert into c values a2 b2 Testing the just inserted values select from a select from b Fernando S enz P rez 235 2 14 Universidad Complutense de Madrid Datalog Educational System select from c Projection select a from c Selection select a from a where a a2 Cartesian product select from a b Inner Join select a from a inner join b on a a b b Left Join select from a left join b on a a b b Right Join select from a right join b on a a b b Full Join select from a full join b on a a b b Union select from a union select from b Difference select from a except select from b If we have created the relations in Datalog we cannot access them from SQL unless they had been either defined as tables or views or declared with types For example following the first alternative and after consulting the file relop dl we can submit create table a a varchar And then accessing with an SOL statement the tuples that were asserted in Datalog DES select from a answer a a gt answer al answer a2 answer a3 Info 3 tuples computed Otherwise an
157. dded as an answer to the answer table if a negated goal not p succeeds then the fact not p is added Calls are also added to the call table whenever they are solved This allows us to detect whether a call has been previously solved and we can use the results in the extension table if any The algorithm which implements this idea is depicted next Already called Call table with an entry for the current call memo G build G Q Build in Q the same call with fresh variables called Q Look for a unifiable call in CT for the current call t subsumes Q G Test whether CT call subsumes the current call et lookup G If so use the results in answer table ET New call Call table without an entry for the current call memo G assertz called G Assert the current call to CT et lookup G First call returns all previous answers in ET solve goal G Solve the current call using applicable rules build G Q Build in Q the same call with fresh variables no subsumed by et Q Test whether there is no entry in ET for Q et assert G If so assert the current result in ET et changed Flag the change This algorithm first tests whether there is a previous call that subsumes the current call There are two possibilities 1 there is such a previous call then use the result in the answer table if any It is possible that there is no such a result for instance when computing the goal p in the pro
158. denotes a single occurrence of a variable in a a branch of a rule as inp q X r X As Fernando S enz P rez 159 274 Universidad Complutense de Madrid Datalog Educational System this last rule is translated into p q X and p r X the semantic singleton check resorts to the syntactic singleton check on the translated rules This warning is enabled by default To avoid singleton warnings there are two options Either simply disable this check with the command singleton warnings off or use anonymous variables see Section 4 1 1 DES assert p q X Warning This rule has singleton variable X DES assert p q X DES assert p q X r X Warning This rule has singleton variable X DES singleton warnings off DES assert p q X r X 5 5 4 Set Variables Set variables Section 5 3 2 occurring in more than one metapredicate aggregate or distinct in the context of a query or a rule raise an error When submitting a query with such an error the query is not processed When asserting or consulting a rule with this error the rule is neither asserted nor consulted For instance DES assert v C D count t X C count t X D Error Set variable X is not allowed to occur in different metapredicates In addition a set variable cannot occur in expressions but as an argument of an aggregate For example DES group by t X Y X Czcount X Y Error Ungrouped variab
159. directory already DES Creating tables DES create or replace table a a string DES create or replace table b b string DES create or replace table c a string b string DES Listing the database schema DES dbschema Info Database des Info Table s a a string b b string c a string b string Info No views Info No integrity constraints DES Inserting values into tables DES insert into a values al Info 1 tuple inserted DES insert into a values a2 Info 1 tuple inserted DES insert into a values a3 Info 1 tuple inserted DES insert into b values b1 Info 1 tuple inserted DES insert into b values b2 Info 1 tuple inserted DES insert into b values al Info 1 tuple inserted DES insert into c values al b2 Info 1 tuple inserted DES insert into c values al al Info 1 tuple inserted DES insert into c values a2 b2 Info 1 tuple inserted DES DES ra DES RA DES RA Testing the just inserted values DES RA select true a answer a a string gt answer al answer a2 answer a3 Info 3 tuples computed DES RA select true b answer b b string gt Fernando S enz P rez 24 274 Universidad Complutense de Madrid Datalog Educational System answer al answer b1 answer b2 Info 3 tuples computed DES RA select true c answer c a string c b string gt
160. dot is required in multi line mode Datalog mode is the default and can be anyway enabled via the command datalog The typical way of using the system is to write Datalog program files with default extension dl and consulting them before submitting queries Another alternative is to assert program rules from the system prompt Following the first alternative you write the program in a text file and then change to the path where the file is located by using the command cd Path where Path is the new directory relative or absolute Next the command consult FileName is used to consult the file FileName Provided there are a number or example files in the directory examples at the distribution directory and assuming that the current path is the distribution directory as by default one can use the following commands to consult the example file relop dl DES gt cd examples DES consult relop dl Info 18 rules consulted where the default extension d1 can be omitted Note that rules in files must end with a dot in contrast to command prompt inputs where the dot is optional in single line input Rules in a consulted file may span on multiple lines 1 See section 5 for more details about commands Fernando S enz P rez 17 274 Universidad Complutense de Madrid Datalog Educational System Then one can examine the contents of the database see Section 6 1 for an explanation of the consulted program via the
161. drid Datalog Educational System concrete format for easing their parsing Any input to this interface must be prepended by the command tapi and cannot be spread beyond a single line as shown next Input tapi test tapi Output success Notice that after the command tapi another command follows test tapi which is only intended to test whether a successful connection between the external application and DES can be established If so the answer success is sent to the output stream The usual DES command prompt is not sent as well as no extra blank lines even if compact listings are disabled cf Section 5 17 10 Any input after tapi can also be submitted in the DES command prompt but following the usual DES output instead of the TAPI oriented way A typical scenario for accessing DES from an external application is to start a process from this application and connecting adequately input and output streams If run on Windows use the console application des exe for such process otherwise use des both provided in the binary distribution for your concrete operating system 5 18 1 Notes about the Interface e Text in font Courier New are for textual input and output Italized Courier New stands for input that the TAPI user must provide with a concrete input For example description for dropping a table includes tapi drop table table name where table name is the placeholder for your concrete table to be dropped e Lines s
162. e list modes List the expected modes for unsafe predicates in order to be correctly computed Modes can be i for an input argument and o for an output argument e list modes Name List expected modes if any for predicates with name Name in order to be correctly computed Modes can be i for an input argument and o for an output argument e list modes Name Arity List expected modes if any for the given predicate Name Arity in order to be correctly computed Modes can be i for an input argument and o for an output argument Fernando S enz P rez 185 274 Universidad Complutense de Madrid Datalog Educational System 5 17 2 list persistent List persistent predicates along with their ODBC connection names list sources Name Arity List the sources of the Datalog rules matching the pattern Name Arity TAPI enabled reconsult FileName Load a Datalog program found in the file Filename keeping the rules already loaded The extension table is cleared and the predicate dependency graph and strata are recomputed TAPI enabled See also consult Filename Synonyms r restore ddb Filename Restore the Datalog database in the given file same as consult Constraints type nullability primary key candidate key functional dependency foreign key and user defined are also restored if present in Filename retract Head Body Delete the first Datalog rule that unifies with H
163. e or a view and then submit a query involving such relation The following example illustrates this where we assume that the flight from Madrid to Paris is not available Fernando S enz P rez 96 274 Universidad Complutense de Madrid Datalog Educational System but another flight to London does Then we query what travels are possible in this new scenario DES ASSUME SELECT mad lon 2 0 IN flight SELECT mad par 1 5 NOT IN flight SELECT FROM travel answer travel origin string travel destination string travel tim e float gt answer lon ny 9 0 answer mad lon 2 0 answer mad ny 11 0 answer par ny 10 0 Info 4 tuples computed Finally the command hypothetical Switch allows enabling on and disabling off the redefinition of relations in WITH and ASSUME queries If it is enabled reusing an existing relation causes to overload its definition with the new query Otherwise a redefinition error is raised 4 2 8 Information Schema Language ISL Several non standard statements are provided to display schema information e SHOW TABLES List table names TAPI enabled e SHOW VIEWS List view names TAPI enabled e SHOW DATABASES List database names TAPI enabled e DESCRIBE Relation Display schema for Relation as dbschema 4 2 9 SQL Grammar This grammar follows an EBNF like syntax Here terminal symbols are Parentheses commas semicolons single dots asterisks and apostrophes
164. e Book Prentice Hall 2002 M A W Houtsma and P M G Apers Algebraic optimization of recursive queries Data amp Knowledge Engineering Volume 7 Issue 4 March 1992 T Halpin and S Rugaber LogiOL A Query Language for Smart Databases 2015 IRIS Reasoner http iris reasoner org ISO IEC ISO IEC 132111 2 Prolog Standard 2000 Fernando S enz P rez 272 274 Universidad Complutense de Madrid Datalog Educational System JGJ 95 KLW95 KSSD94 KT81 Lloy87 Mink87 MN82 MS11 PDR91 Robi65 RS09 RSSS94 RSSWE97 RU95 M Jarke R Gallersd rfer M A Jeusfeld M Staudt S Eherer ConceptBase a deductive object base for meta data management In Journal of Intelligent Information Systems Special Issue on Advances in Deductive Object Oriented Databases Vol 4 No 2 167 192 1995 System available at http www i5 informatik rwth aachen de CBdoc M Kifer G Lausen J Wu Logical Foundations of Object Oriented and Frame Based Languages Journal of the ACM vol 42 p 741 843 1995 W Kiessling H Schmidt W Strauss and G D nzinger DECLARE and SDS Early Efforts to Commercialize Deductive Database Technology VLDB Journal 3 pp 211 243 1994 C Kellogg and L Travis Reasoning with Data in a Deductively Augmented Data Management System H Gallaire J Minker and J Nicolas eds Advances in Data Base Theory Volume 1
165. e any of the built in arithmetic operators and functions cf Section 4 5 2 These operators can be o Infix as addition e g 1 2 o Prefix as bitwise negation e g 1 Examples of terms are r p and p X Y and X gt Y Atoms An atom has the form a t1 tn where a is a predicate relation symbol and t i 1 lt i lt n are terms If i is 0 then the atom is simply written as a Positive ground atoms are used to build the Herbrand universe There are several built in predicates is for evaluating arithmetical expressions arithmetic functions infix and prefix operators and constants and comparison operators Comparison operators are infix as less than For example 1 2isa positive atom built from an infix built in comparison operator see Section 4 5 1 Examples of atoms are p r a X 1 lt 2 and X is 1 2 Note that p 142 and p t a are not valid atoms Restricted Atom It has the form A where A is an atom Conditions A condition is a Boolean expression containing conjunctions 2 disjunctions 2 built in comparison operators constants and variables Four examples of conditions are X 1 X Y X gt Y Y gt Z K lt Y Z 0 Note that X gt Y Z is also supported it can be solved whenever the rule where it occurs is safe cf Section 5 3 Relation functions A function has the form al an where f is a function name ai are its arguments and maps to a relation O
166. e rather small up to now Please report any fault for your application in order to be fixed 5 3 Safety and Computability 5 3 1 Classical Safety Built in predicates are appealing but they come at a cost which was already noticed in Section 4 5 The domain of their arguments is infinite in contrast to the finite domains of each argument of any user defined predicate Since it is neither reasonable nor possible to extensionally give an infinite answer when a subgoal involving a built in is going to be computed its arguments need to be range restricted i e the arguments have to take values provided by other subgoals To illustrate this point consider submitting the following view to the program file relop dl less X Y X lt Y c X YX Since the goal is less X Y and the computation is left to right both X and Y are not range restricted when computing the goal X lt Y and therefore this goal ranges over two infinite domains the one for X and the one for Y We do not allow the computation of such rules However if we reorder the two goals as follows less X Y c X Y X lt Y we get the expected result less al b2 less a2 b2 Note then that built in predicates affect declarative semantics ie the intended meaning of the two former views should be the same although actually it is not Declarative semantics is therefore affected by the underlying operational mechanism Notice nonetheless that D
167. e this to the non development mode DES gt development off DES q X q 1 q 3 q null Info 3 tuples computed Also one can be aware from where nulls come because of their IDs as in DES assert p null DES listing p p NULL 70 p X x p X X NIBP Info 3 rules listed DES gt 1 X Y 141 1 1 2 SNULL 72 1 SNULL 70 SNULL 74 Info 3 tuples computed Fernando S enz P rez 163 274 Universidad Complutense de Madrid Datalog Educational System Observe above ID 70 There the data source rule providing such an entry in the answer is the first rule of p As SQL statements and RA expressions are compiled to Datalog programs the command show compilations on enables the display of compilations each time an SQL statement is submitted as the following example illustrates DES show compilations on DES create table t a int b int DES create table s a int b int DES select from t where a 1 union select from s where b 2 Info SQL statement compiled to answer A B distinct answer 2 1 A B answer 2 l A B t A B A gt 1 answer 2 l A B S A B B lt 2 answer t a t b Info 0 tuples computed 5 9 Datalog and SQL Tracers In contrast to imperative programming languages deductive and relational database query languages feature solving procedures which are far from the query languages itself Whilst o
168. e tree is the view under debugging its nodes can be either views or tables and children of a view are all of the views and tables occurring in that view table nodes do not have children This tree is traversed and the validity whether the Fernando S enz P rez 168 274 Universidad Complutense de Madrid Datalog Educational System view outcome matches its intended meaning of each node is asked to the user If a given node is checked as valid its subtree is assumed to be valid and it is no longer traversed Otherwise the node itself or one of its descendants is assumed to be nonvalid In this case the subtree is traversed to find the erroneous node Starting the debugging is with the command debug sql View Opts where Opts trust tables yes no trust file FileName Defaults are trust tables trust tables yes and no trust file Trusting tables means that they are considered correct and no question about their contents are posed to the user Trust files are explained later Let s consider the file pets1 sql in the directory examples SQLDebugger the problem is explained in the same file Here we find that the view Guest returns an unexpected answer DES process examples SQLDebugger pets1 sql DES select from Guest answer Guest id int Guest name varchar 50 answer 1 Mark Costas answer 2 Helen Kaye answer 3 Robin Scott Info 3 tuples computed In fact only Robin Sco
169. e words as a Front Cover Text and a passage of up to 25 words as a Back Cover Text to the end of the list of Cover Texts in the Modified Version Only one passage of Front Cover Text and one of Back Cover Text may be added by or through arrangements made by any one entity If the Document already includes a cover text for the same cover previously added by you or by arrangement made by the same entity you are acting on behalf of you may not add another but you may replace the old one on explicit permission from the previous publisher that added the old one The author s and publisher s of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version 5 COMBINING DOCUMENTS You may combine the Document with other documents released under this License under the terms defined in section 4 above for modified versions provided that you include in the combination all of the Invariant Sections of all of the original documents unmodified and list them all as Invariant Sections of your combined work in its license notice and that you preserve all their Warranty Disclaimers Fernando S enz P rez 267 274 Universidad Complutense de Madrid Datalog Educational System The combined work need only contain one copy of this License and multiple identical Invariant Sections may be replaced with a single copy If there are multiple Invariant Sections w
170. ead Body or simply with Head if Body is not specified In this case only facts are deleted The extension table is cleared and the predicate dependency graph and strata are recomputed retractall Head Delete all the Datalog rules whose heads unify with Head The extension table is cleared and the predicate dependency graph and strata are recomputed save ddb force Filename Save the current Datalog database to the file Filename If option force is included no question is asked to the user should the file exists already Constraints type nullability primary key candidate key functional dependency foreign key and user defined are also saved ODBC Database open db Name Options Open and set the current ODBC connection to Name where Options user Username password Password This connection must be already defined at the OS layer TAPI enabled close db Close the current ODBC connection Fernando S enz P rez 186 274 Universidad Complutense de Madrid Datalog Educational System 5 17 3 TAPI enabled close_db Name Close the given ODBC connection TAPI enabled current_db Display the current ODBC connection name and DSN provider TAPI enabled refresh db Refresh local metadata from the current external database only for external DB s clear the cache and recompute the PDG and strata TAPI enabled show dbs Display the open database connections TAPI enabled use
171. ectly into external tables either by submitting an INSERT INTO statement from the opened connection or by inserting values out of DES is not monitored for constraint consistency However as constraint consistency checking considers all visible data when asserting into the local database data from the current opened connection is also taken into account The following system session shows a possible scenario illustrating these situations DES gt use_db des DES gt create or replace table t a int primary key DES gt dbschema Info Database des Info Table s Fernando S enz P rez 132 274 Universidad Complutense de Madrid Datalog Educational System t a int PK a Info No views Info No integrity constraints DES open db mysql Table t is also an external table in the connection mysql DES dbschema t Info Database mysql Info Table t a integer 4 Retrieve tuples from the external table t DES gt select from t answer a integer 4 gt Info 0 tuples computed The following is inserted in the external table t Recall that SQL statements under an opened connection are submitted directly to the external RDBMS DES gt insert into t values 1 Info 1 tuple inserted DES gt insert into t values 1 Not rejected as it is not monitored by DES Info 1 tuple inserted DES does monitor the following assertion as it is directed to the local database DES g
172. ed Relanonal Algebrassa E 105 AIT OPETI T E T E E O 105 4 311 Basic peratofs T X 105 431 2 Additonal Operators ue ede iustitia cabe a E RR 107 4313 Extended opera tolS infe niic taa t b E AES 108 LEM s silycoE us Pt 110 Fernando S enz P rez 4 274 Universidad Complutense de Madrid Datalog Educational System XM ESL Wen E 111 BEA I O o e E A A 113 ME Don M EREE 113 4S1 Comparson Operators opido ei ien nerra M bao ODE PE UNE OMNE 113 A52 Datalog and Prolog AGES uia uerius Labebiss re ERONIV cL nines 114 LEONE EE Sail d M 115 454 Ane DUNS eae i uere SR EUER d QU RU MEN Recto NE EQ eA ER RIE 115 X541 eH Operators eminere petra e cbledte EE 115 42 PSC CODSdESuuesoeenitker ear c pk axo RE RADO LEE EUR KM RN 116 4543 Arithmetic PUnCHOBS qui ptt ern be eeen EE REPE ere RRE 116 LAO EMIT Coro M 117 45 6 Datalog S o do T 118 A57 Datalop AporecaleSu Cr 118 457 1 Aggregate FuncHonS P 118 4 5 72 Predicate Group Dyson emen iicet aa e Rape 119 E572 eee a ale PICO CAC ac ini iiri rito ima aaa 119 455 Nulbxelated Pretleatbss o adseodeseup eontra edad bas ete esses ener n cesa args 120 45 9 Duplicates e 120 4510 TOP B ola P 120 45 Ir Order ipw T ee 122 p System Desc Oi PENG uui oua voto a ipie oat quu rb 124 mi RDPEMS Connections VI
173. ed both ALL and DISTINCT behave the same i e discarding duplicates 4 2 6 1 1 Top N Queries The number of computed tuples for a select statement can be limited with the so called Top N queries ISO 2008 includes this as a final clause in the select statement SELECT DISTINCT ALL ProjectionList FROM Rels FETCH FIRST Integer ROWS ONLY However DES also provides another non standard but common form in other RDBMS s of such queries SELECT TOP Integer DISTINCT ALL ProjectionList You can switch the order of the top and distinct clauses and even simultaneously specify both forms of Top N queries in the same statement as long as they express the same limit 4 2 6 1 2 The dual table The dual table is a special one row one column table present by default in all Oracle database installations It is suitable for use in selecting a pseudocolumn with no data source As propositional relations are also allowed in DES dual does not need a column at all and it is therefore defined as a single fact without arguments This table can be used to compute arithmetics as e g DES select 141 from dual answer a0 int gt answer 2 Info 1 tuple computed As in MySQL DES also allows to omit the FROM clause in theses cases the compilation from SQL to Datalog adds the dual table as data source DES select 1 1 answer a0 int answer 2 Info 1 tuple computed Although this table is not disp
174. ed by default you need both the ODBC connection and the data provider database server or whatever already installed and configured 5 1 4 Current Connection To find out the current opened ODBC database use the command DES gt current_db 5 1 5 Making a Connection the Current One Making a given connection the current one is simply done with DES gt use_db access where access is an example of an already opened connection name 5 1 6 Closing a Connection Closing the current connection is simply done with DES gt close_db You can also specify to close a given connection as in DES gt close_db access 5 1 7 Schema and Data Visibility Any submitted query or command refer to the current connection if not otherwise specified as an argument of a command When opening a connection and Fernando S enz P rez 129 274 Universidad Complutense de Madrid Datalog Educational System automatically making it the current one their data and schema are visible but not the data and schema of other already opened connections In contrast data from the default deductive database are visible for Datalog and RA queries although its schema does not Recall that you can create tables and views in the default database which will be handled by DES but not projected to any external database unless you persist a predicate see Section 5 2 Anyway data from the default deductive database des are not visible for SOL statements
175. edge values b a insert into edge values b d create view paths origin destination as with recursive path origin destination as select from edge union select path origin edge destination from path edge where path destination edge origin select from path So you can get the same answer as before with the SOL statement DES select from paths answer paths origin paths destination gt answer a a answer a b answer a c answer a d answer b a answer b b answer b c answer b d Info 8 tuples computed Another shorter formulation is allowed in DES with the following view definition create view path origin destination as select from select from edge union select path origin edge destination from path edge where path destination edge origin You can finally compare this with the RA formulation paths origin destination select true edge union project paths origin edge destination edge zjoin paths destination edge origin paths 6 3 Shortest Paths file spaths d1 sql ra Thanks to aggregate predicates one can code the following version of the shortest paths problem file spaths d1 which uses the same definition of edge as the previous example Fernando S enz P rez 238 274 Universidad Complutense de Madrid Datalog Educational System path X Y 1 edge X Y path X Y L path X Z L0 edge Z Y count edge
176. efinition The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document These Warranty Disclaimers are considered to be included by reference in this License but only as regards disclaiming warranties any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License 2 VERBATIM COPYING You may copy and distribute the Document in any medium either commercially or noncommercially provided that this License the copyright notices and the license notice saying this License applies to the Document are reproduced in all copies and that you add no other conditions whatsoever to those of this License You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute However you may accept compensation in exchange for copies If you distribute a large enough number of copies you must also follow the conditions in section 3 You may also lend copies under the same conditions stated above and you may publicly display copies 3 COPYING IN QUANTITY If you publish printed copies or copies in media that commonly have printed covers of the Document numbering more than 100 and the Document s license notice requires Cover Texts you must enclose the copies in covers that carry clearly and legibly all these Cover Texts Front Cover Texts on the front cover and Back Cover
177. em adds to the aggregate predicate an argument with the list of grouping variables which are the ones occurring in the first argument of the aggregate predicate that also occur in the head This code translation is required for the aggregate predicate to be compute although such form has not been made available to the user Having conditions are also allowed including them as another goal of the first argument of the aggregate predicate as for instance in the following view which computes the number of employees that earn more than the average DES count employee N D S avg employee N1 D1 S1 S1 A S gt A C Info Processing answer C in the program context of the exploded query answer C count p2 A S D N C p2 A S D N employee N D S avg employee N1 D1 S1 S1 A S A Fernando S enz P rez 49 274 Universidad Complutense de Madrid Datalog Educational System answer 2 Info 1 tuple computed Note that this query uses different variables in the same argument positions for the two occurrences of the relation employee Compare this to the following query which computes the number of employees so that each one of them earns more than the average salary of his corresponding department Here the same variable name D has been used to refer to the department for which the counting and average are computed DES count employee N D S avg employee N1 D S1 S1
178. er 2 Input Continue y n y Info Tracing view parent parent amy fred parent tony carolII Info 8 tuples in the answer table Info Remaining views father 2 mother 2 Input Continue y n y Info Tracing view father father fred carolIII father tony carolII Info 4 tuples in the answer table Info Remaining views mother 2 Input Continue y n y Info Tracing view mother mother amy fred mother grace amy Info 4 tuples in the answer table Info No more views to trace Fernando S enz P rez 166 274 Universidad Complutense de Madrid Datalog Educational System 5 10 Datalog Declarative Debugger Our approach CGS07 to debug Datalog programs is anchored to the semantic level instead of the computation level We have implemented a novel way of applying declarative debugging also called algorithmic debugging a term first coined in the logic programming field by E H Shapiro Shap83 to Datalog programs With this approach it is possible to debug queries and diagnose missing answers an expected tuple is not computed as well as wrong answers a given computed tuple should not be computed Our system uses a question answering procedure which starts when the user detects an unexpected answer for some query Then if possible it points to the program fragment responsible of the incorrectness The debugging process consists of two phases During the fi
179. ere el b e2 a in edge a b select from edge answer edge a int edge b int gt answer 1 2 answer 1 3 answer 1 4 answer 2 3 Fernando S enz P rez 131 274 Universidad Complutense de Madrid Datalog Educational System answer 2 4 answer 3 4 Info 6 tuples computed Note however that local data is not known by the external database If we assume on an external table and use a view on that table the assumption will not be available to the external database because the assumption is locally added to the deductive database not to the external relational database as in DES open db mysql DES create table t a int DES insert into t values 1 DES create view v as select from t DES select from v answer A INTEGER 4 gt answer 1 Info 1 tuple computed DES gt des assume select 2 in t select from v answer v A int gt answer 1 Info 1 tuple computed However by querying the table for which we assume data we get also the assumption as DES computes the union of the local data and the external data DES des assume select 2 in t select from t answer t a string gt answer 1 answer 2 Info 2 tuples computed 5 1 9 Integrity Constraints ODBC Connections and Persistence Integrity constraints as described in Section 4 1 15 are monitored by DES for the local deductive database This means that inserting values dir
180. ergo 14 221 ICE ID M UT 15 2211 Executable Distib t oreren ian aa E vU rn ot OI 15 2212 Source Dish BOR sssrin ire E T 15 p AME TINUK 15 2221 Executable Distribuo seisena ir orectetis ide E 15 2222 BOE DISUD DID 3 sne oo eee aren ae ee re enter cen rere ar teem trier 15 223 Strune DES froma Prolog interpreter oso csinedseid reni dile nui Len dadd 16 Mot osa ic co T 16 SANE Cu rquufio TT A N 17 32 SQL Mode T9 20 D Relational Algebra Node diciaiinuarnuiniidusenieia ea A RE 23 24 Prolog Mode D asr a AE T E T 28 oE E E E E E E E AEE 29 3 0 Getting Help m 30 be Q ery LAU ARCS snasS 30 XB n E E A 31 CABE I C 32 AN2 RUES ni a a E E 34 Ako Protams man n E E E N M e 34 MPAs CMC LLCS E A OAE AE AE AAE A DUE I E A E OTT 34 415 Temporary VIeWSouseati uidet tbt E E ERRE 35 21 0 Automa Temporary VICW Sudjinntieh winnaar memento 35 41 7 Dnderscored Vanes uenisse ena 36 41 8 cio T M 37 SARANNO TTE 39 4110 NU NY ipi oipe E 42 41 14 uter JONS casae rne E uie aes 43 A112 Pie RTO ou X 45 41 121 Aggregate MUMCHOMS ernn n r A E 46 4 L122 Group py Predicaten naen deii a N 46 XIII personale Predicate Sis onan iana e vac 49 41 124 Aggregates and Duplicates sisirin irienn rE NE NE Ropa tet EEE 50 NM reci ra
181. es AS r1 reaches AS r2 WHERE rl to r2 frm 4 2 7 4 Hypothetical SOL Queries Non Standard A novel addition to SOL in DES includes hypothetical queries Such queries are useful for instance in decision support systems as they allow submitting a query by assuming either some knowledge which is not in the database or some knowledge which must not taken into account Syntax of hypothetical queries is proposed as ASSUME LocalAssumptionl LocalAssumptionN SQLStatement Where SQLStatement is any SOL DQL statement and LocalAssumption1 LocalAssumptionN are of the form DQLStatement NOT IN Relation SQLStatement is solved under the local assumptions LocalAssumptioni A Relation is either a name or a complete schema including attribute names of either an existing relation or a new relation So both tables and views can be overloaded with such local assumptions As an example let s consider a flight database defined by the following CREATE TABLE flight origin string destination string time real INSERT INTO flight VALUES lon ny 9 0 INSERT INTO flight VALUES mad par 1 5 INSERT INTO flight VALUES par ny 10 0 Fernando S enz P rez 93 274 Universidad Complutense de Madrid Datalog Educational System CREATE OR REPLACE VIEW travel origin destination time AS WITH connected origin destination time AS SELECT FROM flight UNION SELECT flight origin connected destination flight timet t
182. essing answer X P X p 1 Info 0 tuples computed A similar situation happens with equality DES p X X 1 Info Processing answer X poU X 1 Info 0 tuples computed Also notice that if simplification mode is enabled with the command simplification on then this conjunctive query is simplified and computed as follows DES p X X 1 Info Processing answer 1 p 1 answer 1 Info 1 tuple computed 5 3 2 Safety for Aggregates and Duplicate Elimination Another source of unsafety departing from the classical notion resides in metapredicates as distinct 2 and aggregates A set variable is any variable occurring in a metapredicate such that it is not bound by the metapredicate For instance Y in the goal distinct X t X Y is a set variable as wel as in group by t X Y X C2count Because computing a goal follows SLD order if a set variable is used after the metapredicate as in distinct X t X Y p Y then this is an unsafe goal as in the call to distinct variable Y is not bound and all tuples in t 2 are considered Fernando S enz P rez 156 274 Universidad Complutense de Madrid Datalog Educational System for computing its outcome Swapping both subgoals yields a safe goal So data providers for set variables are only allowed before their use in such metapredicates Another source of unsafety is placing a set variable in the head of a
183. files relop dl sql ra The program relop dl is intended to show how to mimic with Datalog rules the basic relational operations that can be found in the file relop sql It contains three relations a b and c which are used as arguments of relational operations In order to have loaded this program and be able to submit queries you can consult it with c relop In the remarks below relational operator symbols are represented with ASCII characters as x to denote the left outer join X the letter x to simply denote the Cartesian product and the letter U for the set union Extended Relational Algebra Operations pi X c X Y Projection of the first argument of c projection X c X Y sigma X a2 a Selecting tuples from a such that its first argument is a2 selection X a X X a2 axb Cartesian product of relations a and b cartesian X Y a X b Y a x b Natural inner join of relations a and b inner join X a X b X a x b Left outer join of relations a and b left join X Y 1j a X b Y X Y a x b Right outer join of relations a and b right join X Y rj a X b Y X Y a x b Full outer join of relations a and b full join X Y fj a X b Y X Y 5 aUb Set union of relations a and b union X a X b X a b Set difference of relations a and b difference X a X not b X Once the program is consulted you can query it with for e
184. fo EDB retrievals 2 Info IDB retrievals 2 Info ET retrievals 8 Info ET look ups 8 Info CT look ups 2 Info CF look ups 0 Then enabling non recursive predicates optimization and submitting the same query DES optimize nrp on Info Non recursive predicates optimization is on DES clear et DES p X Fernando S enz P rez 230 274 Universidad Complutense de Madrid Datalog Educational System p 1 p 2 Info 2 tuples computed Info Fixpoint iterations 1 Info EDB retrievals 1 Info IDB retrievals 1 Info ET retrievals 4 Info ET look ups 4 Info CT look ups 0 Info CF look ups 0 In only one fixpoint iteration the meaning is computed for which 1 EDB and 1 IDB retrievals are needed the fact and rule respectively 5 20 4 4 Stratum optimize st A predicates which contain no recursive rules but calls to recursive predicates do not need to be computed in the same iterative fixpoint computation If this optimization is enabled such predicates are isolated from recursive ones in another stratum so that iterative cycles are saved for them This situation occurs for instance when compiling SOL queries to Datalog as the intermediate relation answer is introduced Next system session illustrates this DES type p a int DES display answer off DES display nbr of tuples off DES timing on DES assert p 1 DES assert p X p Y XzY 1 Y 500 DES select from p
185. for learning formal languages Another system is RAT http www slinfo una ac cr rat rat html which allows students to write statements in RA which are translated to SOL in order to verify the correct syntax for these expressions RAT also allows connections to relational databases Also Chris Date and Hugh Darwen proposed a language called Tutorial D intended for use in teaching relational database theory and its query language also draws on ISBL s ideas Rel http reldb org is an implementation of Tutorial D as a true relational database management system LEAP http leap sourceforge net is a relational database Fernando S enz P rez 257 274 Universidad Complutense de Madrid Datalog Educational System management system developen at the Oxford Brookes University UK which includes pure relational algebra Relational Algebra System for Oracle and Microsoft SOL Server http www cse fau edu marty developed by M K Solomon at the Florida Atlantic University USA features relational algebra with division operating on those existing RDBMS s 8 3 Technological Transfers Datalog has been extensively studied and is gaining a renowned interest thanks to their application to ontologies FHH04 semantic web CGLO09 social networks RS09 policy languages BFG07 and even for optimization GTZ05 Companies as LogicBlox Exeura Semmle DLVSYSTEM s r l and Lixto embody Datalog based deductive database technologies i
186. ft alone with the cabbage may result in an eaten cabbage and imposes that there is a previous 14 Adapted from Diet87 Fernando S enz P rez 244 2 14 Universidad Complutense de Madrid Datalog Educational System valid state from which we depart from The arguments of this relation are intended to represent from left to right the position north n or south s shore of the farmer wolf goat and cabbage We use the relation safe 4 to verify that a given configuration of positions is valid The relation opp 2 simply states that north is the opposite shore of south and vice versa Initial state state n n n n Farmer takes Wolf state X X U V safe X X U V opp X X1 state X1 X1 U V Farmer takes Goat state X Y X V safe X Y X V opp X X1 state X1 Y X1 V Farmer takes Cabbage state X Y U X safe X Y U X opp X X1 state X1 Y U X1 Farmer goes by himself state X Y U V safe X Y U V opp X X1 state X1 Y U V Opposite shores n s opp n s opp s n Farmer is with Goat safe X Y X V Farmer is not with Goat safe X X X1 X opp X X1 If we submit the query state s s s s we get the expected result state s s s s Info 1 tuple computed That is the system has proved that there is a serial of transfers between shores which finally end with the asked configuration this problem is not modeled to show this serial If we ask for the extension t
187. g eot Examples Input tapi family Output Info 11 rules consulted Fernando S enz P rez 210 274 Universidad Complutense de Madrid Datalog Educational System eot Input tapi c family fact Output Warning N gt 0 may raise a computing exception if non ground at run time Warning N1 is N 1 may raise a computing exception if non ground at run time Warning F is N Fl may raise a computing exception if non ground at run time Warning Next rule is unsafe because of variable s F N fac N F N gt 0 N1 is N 1 fac N1 F1 F is N F1 Info 13 rules consulted eot e Command tapi reconsult Files tapi r Files tapi Files Answer Information about the loaded program and a final line containing eot Example Input tapi family Output Info 11 rules consulted Seot e Command tapi test_tapi Answer Regular Remarks This command is used to test the current connection Example Fernando S enz P rez 211 274 Universidad Complutense de Madrid Datalog Educational System Input tapi test tapi Output success e Command tapi open db db Arguments db Database connection name Not delimited Answer Regular Remarks This command is used to open an ODBC connection cf Section 5 17 2 Example Input tapi open db test Output success Command tapi close db Answer Regular Remarks This command
188. g Name Arity List the loaded Datalog rules matching the pattern Name Arity Neither integrity constraints nor SOL views and metadata are displayed TAPI enabled listing Head Fernando S enz P rez 184 274 Universidad Complutense de Madrid Datalog Educational System List the Datalog loaded rules whose heads are subsumed by the head Head Neither integrity constraints nor SOL views and metadata are displayed TAPI enabled e listing Head Body List the Datalog loaded rules that are subsumed by Head Body Neither integrity constraints nor SOL views and metadata are displayed TAPI enabled e listing asserted List the Datalog rules that have been asserted with command Rules from consulted files are not listed Neither integrity constraints nor SOL views and metadata are displayed TAPI enabled e listing asserted Name List the Datalog rules that have been asserted with command matching Name Neither integrity constraints nor SOL views and metadata are displayed TAPI enabled e listing asserted Name Arity List the Datalog rules that have been asserted with command matching the pattern Name Arity Neither integrity constraints nor SOL views and metadata are displayed TAPI enabled e listing asserted Head List the Datalog rules that have been asserted with command whose heads are subsumed by the head Head Neither integrity constraints nor SOL views and metadata are displayed TAPI enabled
189. g memoization at stratum St fail Request all alternatives no change If no more alternatives start a new iteration fail Otherwise fail and exit First the call table is emptied in order to allow the system to try to obtain new answers for a given call preserving the previous computed answers Then the memo function is applied possibly providing new answers If the answer table remains the same as before after this last memo function application we are done Otherwise the memo function is reapplied as many times as needed until we find a stable answer table with no changes in the answer table The answer table contains the stable model of the query plus perhaps other stable models for the relations used in the computation of the given query The fixpoint is found in finite time because the memo function is monotonic in the sense that we only add new entries each time it is called while keeping the old ones Repeatedly applying the memo function to the answer table delivers a finite answer table since the number of new facts that can be derived from a Datalog program is finite recall that there are no compound terms such as s z On the one hand the number of positive facts which can be inferred are finite because there is a 10 The contents of the extension table in this case should be restored instead of being cleared left for further improvements Fernando S enz P rez 225 2 14 Universidad Complutense de M
190. ge input cf Section 3 5 If we want to develop an analogous SQL example session to the Datalog example in the last section we can submit the first inputs also available in the file examples relop sql listed below the example is augmented to provide a first glance of SQL Now answer relations to SQL queries are denoted by the relation name answer Also note that lines starting by are simply remarks If you wish to automatically reproduce the following interactive session of inputs you can type process examples relop sql notice that you must omit examples if you are in this directory already Info Processing file relop sql DES Switch to SQL interpreter DES sql DES Creating tables DES create or replace table a a string DES create or replace table b b string DES create or replace table c a string b string DES Listing the database schema DES dbschema Info Table s a a string b b string c a string b string Info No views Info No integrity constraints DES Inserting values into tables DES insert into a values al Info 1 tuple inserted DES insert into a values a2 Info 1 tuple inserted DES insert into a values a3 Info 1 tuple inserted DES insert into b values b1 Info 1 tuple inserted DES insert into b values b2 Info 1 tuple inserted DES insert into b values al Info 1 tuple inserted DES insert into c values al b2
191. ges to valid all the vertices with queries subsumed by Query e Each time the user indicates that a vertex Query FactSet is non valid the tool changes to non valid all the vertices with queries subsumed by Query The last two items help to reduce the number of questions deducing automatically the validity of some vertices from the validity of others As an example we show a debugger session for the query br is even in the program parity dl which has been changed to contain an error in the following rule has preceding X br X br Y Y gt X error Y gt X should be Y lt X In this case the user expects the answer for the query br_is_even to be br is even because the relation br contains two elements a and b However the answer returned by the system is which means that the corresponding query was unsuccessful Fernando S enz P rez 167 2 14 Universidad Complutense de Madrid Datalog Educational System The available command for starting a debugging session is debug datalog Goal where Goal is a basic goal i e no conjunctive or disjunctive goals are allowed Therefore the user can start a typical debugging session as follows DES debug datalog br is even Is br a br a valid v nonvalid n abort a v v Is has preceding a has preceding a valid v nonvalid n abort a v n Is br E br a br b valid v nonvalid n abort a v Error in relation has preceding 1 Witness
192. gn environments It is multiplatform object oriented it enjoys integrity constraints database updates and several other interesting features The LDL project at MCC lead to the LDL system AOTWZOS3 a deductive database system with features such as X Y stratification set and complex terms database updates and aggregates It has been replaced by DeAL The Deductive Application Language DeAL System http wis cs ucla edu deals is a next generation Datalog system The objective of the DeALS project is to extend the power of Datalog with advanced constructs with strong theoretical foundations DeAL supports stratified aggregation negation and XY stratification DeAL also supports new monotonic aggregates that can be used in recursive rules DLV FP96 http www dlvsystem com dlv is a multiplatform system for disjunctive Datalog with constraints true negation la Gelfond amp Lifschitz and queries It includes the K planning system a frontend for abductive diagnosis and Reiter s diagnosis support for inheritance and an SOL front end which prototypes some novel SQL3 features DLV is an extension of DLV which provides interfaces with relational databases taking advantage of their efficient implementations to speed up computations XSB RSSWF97 http xsb sourceforge net is an extended Prolog system that can be used for deductive database applications It enjoys a well founded semantics for rules with negative
193. gram p p and we cannot derive any information 2 otherwise process the new call knowing that there is no call or answer to this call in the extension table So firstly store the current call and then solve the goal with the program rules recursively applying this algorithm Once the goal has been solved if succeeded store the computed answer if there is no any previous answer subsuming the current one note that through recursion we can deliver new answers for the same call This so called memoization process is implemented with the predicate memo 1 in the file des p1 of the distribution and will also be referred to as a memo function in the rest of this manual Negative facts are produced when a negative goal is proved by means of negation as failure closed world assumption In this situation a goal as not p which For a complementary understanding of this section the reader is advised to read Diet87 9 A term T1 subsumes a term T2 if T1 is more general than T2 and both terms are unifiable Eg p X Y subsumes p a Z p X Y subsumes p U V p X Y subsumes p U U but p U U neither subsumes p a b nor p X Y Fernando S enz P rez 224 274 Universidad Complutense de Madrid Datalog Educational System succeeds produces the fact not p which is added to the answer table just the same as proving a positive goal The command 1ist et shows the current state of the extension table both for ans
194. guments name arity e Command tapi list et Answer Extension table contents Each entry is preceded by the separator and follows the relation name and as many lines as tuple arguments i e arity Sanswers name value value calls name value value eot Remarks Note that a single rule may span several lines if pretty print is enabled All forms of this command are supported with arguments name and arity Example tapi list et Sanswers P ra t Fernando S enz P rez 207 274 Universidad Complutense de Madrid Datalog Educational System calls x06 dN nwe 8902 ecu 8910 8911 eot Compare this with the same command with no TAPI DES list et Answers P a t 1 3 t 2 4 Info 2 tuples in the answer table Calls P A t A B Info 2 tuples in the call table e Command tapi list sources Name Arity Answer Rule sources for predicate Name Arity There are two possible sources Consulted from a file and asserted at the prompt Each entry of the former form is preceded by a line containing file followed by the file name the start line and the end line Each entry of the latter form is preceded by a line containing asserted followed by a line with its assertion time asserted time file fileName line line Seot Fernando S enz P rez 208 274 Universidad Complutense de Madrid Datalog Edu
195. gure such connections are out of the scope of this manual However to configure such a connection typically the ODBC driver is looked for and installed in the OS if not yet available Then following the manufacturer recommendations it is configured You can find many web pages with advice on this Here we assume that there are ODBC connections already available 5 1 1 Opening an ODBC Connection To access a RDB in DES first open the connection with the following command where test is the name of a previously created ODBC connection to a database DES gt open_db test You can also provide a user name and password if needed as in DES open db test user smith password my pwd Notice that these values are enclosed between apostrophes Fernando S enz P rez 124 274 Universidad Complutense de Madrid Datalog Educational System Additional ODBC configuration values can be stated as well which must be also enclosed between apostrophes as in DES open db sqlserver MultipleActiveResultSets true Incidentally note that DES requires the support of multiple active result sets for SQL Server connections which is what this configuration value is intended for If you have previously created some database objects tables views in DES without an ODBC connection they are still available and can be queried too for more information see Section 5 1 7 5 1 2 Using a Connection Assuming that the connec
196. h is the default mode Warning A warning message which does not necessarily imply an error but the user is requested to focus on its origin These messages are always shown e Error An error message which requires attention from the user These messages are always shown e Exception An exception message which requires attention from the user These messages are always shown Examples of exception messages include instantiation errors and undefined predicates Prolog exceptions are caught by DES and shown to the user without any further processing Depending on the Prolog platform the system may continue by itself otherwise the user must type des including the ending dot to continue Upon exceptions the extension table is cleared and stratification is recomputed Note that the latter computation may take a long time if there are multiple tables and views typically in opened ODBC connections for DBMS s as Oracle and SQL Server 5 17 Commands The input at the prompt i e commands or queries must be written in a line i e without carriage returns although it can be broken by the DES console due to space limitations and can end with an optional dot Commands are issued by preceding the command with a slash at the DES system prompt Command arguments are not a comma separated list enclosed between brackets as usual but they simply occur separated by at least one blank This enables short typing Command names and bina
197. h on the DES side Datalog data are known they are not on the RDBMS side This is in contrast to the DES management of data if no ODBC connection is opened the DES engine is aware of any changes to data both from Datalog and SQL sides Concluding those updates that are external to DES might not be noticed by the DES engine And also an ODBC connection should be seen as a source of external data that should not be mixed with Datalog data However you can safely use the more powerful Datalog language to query external data and to be sure the current data is retrieved clear the cache with clear et 5 1 10 2 ODBC Metadata When computing the predicate dependency graph and stratification metadata from the external DBMS is retrieved which can be a costly operation if the number of tables and views is large This is the default case when opening connections to DBMSs as SQL Server or Oracle where many views are defined for an empty database Also ODBC connections to Oracle seem to be slow on some platforms It is however possible to restrict the number of retrieved objects from the external database with the settings in the ODBC connection For instance returned schemas in DB2 can be limited to user schemas with the property SchemaList by providing the user name Listing the database schema can suffer this situation as well by issuing the command dbschema Instead it is better to focus on the required object to display as either dbs
198. he command abolish as in DES abolish p DES dbschema Info Database des Info No tables Info No views Info No integrity constraints DES listing p Info 0 rules listed DES use db mysql DES dbschema mysql p Info Database mysql Error No table or view found with name p 5 2 7 Closing a Persistent Predicate Connection It is also possible to close the connection to a persistent predicate with the command close_persistent Name where Name is the name of the predicate This means that the predicate will be no longer visible for the local database though its type information metadata are kept However and by contrast to the command drop_assertion the external relations supporting persistence for the predicate are not dropped and therefore a subsequent persistent assertion can be issued either in the same or in a different session and the predicate is again reconnected Only the connection to the predicate given as argument is closed If it depends on other persistent predicates they will be still persistent after the command execution The following system session illustrates all this DES persistent p a int access DES assert p X r X DES list persistent access p a int access r coll int DES close persistent p DES list persistent access r coll int Fernando S enz P rez 146 274 Universidad Complutense de Madrid Datalog Educational System DES
199. he same type as X i e the result is an integer iff X is an integer e gcd X Y Greatest common divisor Greatest common divisor of the two integers X and Y e min X Y Minimum Least value of X and Y e max X Y Maximum Greatest value of X and Y e truncate X Truncate ISO Closest integer between X and 0 e float integer part X Integer part as a float ISO The same as float integer X float fractional part X Fractional part as a float ISO Fractional part of Xie X float integer part X e round X Closest integer ISO Closest integer to X X has to be a float If X is exactly half way between two integers it is rounded up i e the value is the least integer greater than X e floor X Floor ISO Greatest integer less or equal to X X has to be a float e ceiling X Ceiling ISO Least integer greater or equal to X X has to be a float 4 5 5 Negation e not Query Stratified negation It stands for the complement of the relation Query w r t the meaning of the program i e closed world assumption See Sections 4 1 8 and 5 20 3 If Query is Fernando S enz P rez 117 274 Universidad Complutense de Madrid Datalog Educational System not an atom a new predicate defined by a head Head with relevant variables in Query is built and defined by the single rule Head Query Then not Head replaces not Query 4 5 6 Datalog Outer Joins e lj LeftRelation RightRelation JoinCondition
200. he system at compile time warns about safety and computability as follows 1 Raisean error if A goal involving a comparison operator will be non ground at run time b The expression Ein a goal X is Ewill be non ground at run time c The goal not G contains unsafe variables or its safe variables are not restricted so far 2 Raisea warning if Fernando S enz P rez 154 274 Universidad Complutense de Madrid Datalog Educational System a A goal involving a comparison operator may be non ground at run time b The expression Zina goal X is Emay be non ground at run time This analysis is performed in several cases e Whenever a rule is asserted either manually with the command assert or automatically when consulting programs A rule is always asserted even when it is detected as unsafe or it may raise an exception at run time Recall that safety is undecidable and there are rules detected as unsafe that can be actually and correctly computed e When a query conjunctive query autoview or view is submitted They are rejected and not computed if unsafety or uncomputability is detected and cannot be repaired because program transformation is disabled or there is no way Notice that there can be unsafe or uncomputable rules already consulted than can yield an incorrect result or raise a run time exception Concluding one can expect a correct answer whenever no unsafe uncomputable rule has been asserted to an empty da
201. hen depending on the actual instantiated query along computation this may lead to unexpected non declarative results as in DES assert p X X 0 p Y X Y 1 DES top l p X top 2 p X Info Processing answer X top 1 p X top 2 p X answer 0 Info 1 tuple computed DES top 2 p X top 1 p X Info Processing answer X top 2 p X top 1 p X answer 0 answer 1 Info 2 tuples computed In the last goal solving top 1 p X succeeds for both the instantiated goals top 1 p 0 and top 1 p 1 as top 2 p X firstly delivered two answers This is different to the first goal where there was only one solution for top 1 p X so that the instantiated goal top 2 p 0 returned only one answer Compare this with DES top 2 p X top 1 p Y X Y Info Processing answer X Y top 2 p X top 1 p Y X Y answer 0 0 Info 1 tuple computed Fernando S enz P rez 121 274 Universidad Complutense de Madrid Datalog Educational System Where the call top 1 p Y is not instantiated and succeeds once for Y 0 4 5 11 Order By Predicate e order by Query Expri ExprN e order by Query Expri ExprN Ordl OrdN Order the result tuples for Query following Expri1 ExprN where Expriis an expression and Ordi is the optional ordering criterium which can be either a for ascending order or d for descending order The default ans
202. i P aaan 53 2 1 14 Relational Division m DAtalog ouceicoddtureuarebepxbr Detctc Ri 53 4115 uisa o rl m 55 BA Te SU OE sedente Dutton eo neue nautica canis 55 Fernando S enz P rez 3 274 Universidad Complutense de Madrid Datalog Educational System 21 15 11 Types on the Intensional Database eiiim cibo 58 41 151 2 Types on Propositional Relations sicsccsssssescsssssscnesdsoresnenntessnstsocconcones 58 AA TOO Type IG ri D 58 21152 Nullability Bxistency CORSEGDIBU usos niat tit sorsra 59 4153 JumaryBeysunoasesanatusi n itu deci lv ba vi epe PRI VE NEL peni S 59 41154 Candidate Key Uniqueness Constraint eere eer ttberttnett eee 60 41155 Boren Bey errio is EH S AMET EQNR M Co REN REC Ug 60 4115 6 Functional Depende ycersne inann qe diat oehacbrind e yea bai 62 41157 User defined Integrity Constraints ics coepere ene echas 63 41 159 L oppunp CODSEGIDIS oa reique rer AS tH bo FLOR FERE A UP EERE 66 CANI MEG M 67 41 16 Restricted Predicates maneri tipo n ee rinit t MIRO inet ead rons 67 4117 Hypothelical eres ics snos Een iem E e 69 4 117 1 Hypothetical Queries and Integrity Constraints s 12 4 1 1172 Hypothetical Queries and Duplicates ncccssniiontematcdavenateatanioen 73 ZLIILS Hypothetical Queries and INegallOBla saec esiti bao ite retia co nite 74 So 9 a E E S M 77 421 Maim LIMAN S sessies reisir eE EEE NENE EOE i 4
203. ile executing excluding time spent in memory management tasks or in system calls since the last call to this command For total_runtime this command displays the total CPU time used while executing including memory management tasks such as garbage collection but excluding system calls since the last call to this command Fernando S enz P rez 200 274 Universidad Complutense de Madrid Datalog Educational System e statistics Display whether statistics collection is enabled or not on or off resp It also displays last statistics if enabled e statistics Switch Enable or disable statistics collection on or off resp and disabled by default Statistics include numbers for Fixpoint iterations EDB and IDB retrievals ET retrievals and ET Extension Table CT Call Table and CF complete computations lookups 5 17 13 Miscellanea e exit Synonym for halt Shorthand e e halt Quit the system Synonyms exit quit e process Filename Process the contents of Filename as if they were typed at the system prompt Extensions by default are sq1 and ini When looking for a file f the following filenames are checked in this order f sql and f ini Synonyms p e repeat Number Input Repeat Input as many times as Number where Input can be any legal input at the command prompt e set default parameter Index Value Set the default value for the i th parameter denoted by the number Index to
204. ion executable file as depicted below File Edit Flags Settings Help e e e e e e ee e e e e e e e ee eoe de e e oe oe e e de oe oe e e eve ee e e Pe ee e e dee e e Pe ee eee ee ee es DES Datalog Educational System v 3 10 Type help for help about commands Fernando Saenz Perez c 2004 2015 DISIA GPD UCM Please send comments questions etc to fernan sip ucm es Web site http des sourceforge net o3 This program comes with ABSOLUTELY NO WARRANTY is free software and you are welcome to redistribute it under certain conditions Type license for details e e e e e e ce oe e e e oe e e e e e e dede e e he ee e ce oe Ye Pe e oe oe ee ode oe oe ede e oe ee ee eee Pe e e ee dee oe DES Please note that the menu bar above is inherited from the host Prolog system and all its settings apply to such system not to DES e d11 DLL libraries for the runtime system Fernando S enz P rez 11 274 Universidad Complutense de Madrid Datalog Educational System e doc manualDES3 10 pdf This manual e doc release notes history DES pdf Releases notes history of previous versions e examples dl Example files which will be discussed in Section 6 e license A verbatim copy of the GNU Lesser General Public License for this distribution e readmeDES3 10 txt A quick installation guide and release notes 2 1 2 2 DES ACIDE Bundle From the same URL above you
205. ional System A gt F Info No integrity constraints Note that primary key constraints follow the table schema and inferred types are in the view schema 4 2 4 3 Dropping Tables DROP TABLE IF EXISTS TableName This statement drops the table schema corresponding to TableName deleting all of its tuples whether they were inserted with INSERT or with the command assert and rules which might have been added via assert If the optional clause IF EXISTS is included dropping an inexistent table does not raise an error Example DROP TABLE t 4 2 4 4 Dropping Views DROP VIEW ViewName This statement drops the view with name ViewName deleting all of its tuples whether they were inserted with INSERT or with the command assert and rules which might have been added via assert Other tuples or rules asserted with the command assert are not deleted Example DROP VIEW v 4 2 4 5 Renaming Tables RENAME TABLE TableName TO NewTableName This non standard statement following IBM DB2 allows to change the name of table TableName to NewTableName Foreign keys referring to this table are modified accordingly Also views including referenes to this table are modified to refer to the new name 4 2 4 6 Renaming Views RENAME VIEW ViewName TO NewViewName This non standard statement following IBM DB2 allows to change the name of view ViewName to NewViewName Also views including references to this view are modified
206. ional jargon may take An example of type constraint declaration at the command prompt is as follows DES type p int string This is equivalent to the following alternative syntax DES type p int string Allowed types include the following where each row in the first column contains type synonyms varchar String String of unbounded length char N varchar it String with length up to N char String with length 1 MEC Integer number int float Real number real Precision and range depend on the underlying Prolog system Strings are represented with constants cf Section 4 1 1 A number with a dot between two digits is considered as a float and an integer otherwise Fernando S enz P rez 55 2 14 Universidad Complutense de Madrid Datalog Educational System Subsequent type declarations are allowed for the same predicate and arity the last declaration is the one to persist overriding previous type declarations for such predicate The following session is possible and thus the second declaration persists DES type p string string DES type p int int As well columns can be given names DES type p a int b string which is equivalent to the following alternative syntax DES type p a int b string However a type declaration for a relation already typed with a different arity is not allowed As will be seen in further sec
207. it driver requires also a 64 bit database installation For instance you can define a 32 bit ODBC connection to 32 bit MS Access installation and a 64 bit ODBC connection to a 64 bit Oracle installation In this scenario both connectinos cannot be opened from the same DES instance which is either a 32 bit or 64 bit release 5 1 11 Tested ODBC Drivers Several data sources have been successfully tested on Windows XP Vista 7 32 bit with both SICStus Prolog and SWI Prolog executables and sources IBM DB2 v9 7 200 358 Oracle Database Express Edition 11g Release 2 also tested with Windows 7 64 bit and SWI Prolog 6 0 0 64 bit SQL Server Express 2008 including spatial components MySQL 5 5 9 PostgreSQL 9 1 3 Access 2003 Excel 2003 CSV text files 5 2 Persistence Since DES 3 0 it is possible to use persistent predicates on an external database This section describes how to declare a persistent predicate use it examine its schema and remove its persistence assertion Finally a couple of caveats are included 5 2 1 Declaring a Persistent Predicate An assertion is used to declare a persistent predicate as in DES persistent p a int mysql Fernando S enz P rez 136 274 Universidad Complutense de Madrid Datalog Educational System where its first argument is the predicate and its schema and the second one is the ODBC connection name This name can be omitted if the current connection
208. ith the same name but different contents make the title of each such section unique by adding at the end of it in parentheses the name of the original author or publisher of that section if known or else a unique number Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work In the combination you must combine any sections Entitled History in the various original documents forming one section Entitled History likewise combine any sections Entitled Acknowledgements and any sections Entitled Dedications You must delete all sections Entitled Endorsements 6 COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License and replace the individual copies of this License in the various documents with a single copy that is included in the collection provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects You may extract a single document from such a collection and distribute it individually under this License provided you insert a copy of this License into the extracted document and follow this License in all other respects regarding verbatim copying of that document 7 AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works in or on a volume of a s
209. iven a prototype for view p to be defined create view q x as select from q create or replace view p x as select from q create or replace view q x as select from p Note that it is needed to build a void view for q in order to have it declared when defining the view p The void view is then replaced by its actual definition The contents of both views can be tested to be equal with select from p select from q File mut recursion ra contains the RA formulation View q must be given a prototype for view p to be defined q x select true q p x select true q q x select true p select true p select true q 6 8 Farmer Wolf Goat Cabbage Puzzle file puzzle d1 This example shows the classic Farmer Wolf Goat Cabbage puzzle also Missionaries and Cannibals as another rewritten form The farmer wolf goat and cabbage are all on the north shore of a river and the problem is to transfer them to the south shore The farmer has a boat which he can row taking at most one passenger at a time The goat cannot be left with the wolf unless the farmer is present The cabbage which counts as a passenger cannot be left with the goat unless the farmer is present The following program models the solution to this puzzle The relation state 4 defines the valid states under the specification i e those situations in which there is no danger for any of the characters in our story a state in which the goat is le
210. iversity Complutense of Madrid and the Departments Artificial Intelligence and Software Engineering and Computer Systems and Programming Fernando S enz P rez 262 2 14 Universidad Complutense de Madrid Datalog Educational System 13 License A 1 Software License DES licensing comes from the ideas of the Free Software Foundation Since version 3 0 it is distributed under version 3 of the GNU Lesser General Public License LGPL which supplements version 3 of the GNU General Public License DES 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 DES 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 You should have received a copy of the GNU General Public License along with this program If not see http www gnu org licenses DES versions prior to 3 0 were distributed under GNU General Public License GPL A 2 Documentation License GNU Free Documentation License Version 1 3 3 November 2008 Copyright 2000 2001 2002 2007 2008 Free Software Foundation Inc http fsf org Everyone is permitted to copy and distribute verbatim copies of this license documen
211. iving as many alternatives as true condition instances DES gt select 1 from dual where select a from t gt 0 answer a2 int gt answer 1 answer 1 Info 2 tuples computed In this example following the previous one there are two values for a in t that makes true the select condition Thus two answers are returned If more multiset expressions are included the possible alternatives are the product of their cardinalities as in Fernando S enz P rez 90 274 Universidad Complutense de Madrid Datalog Educational System DES select 1 from dual where select a from t gt select a from t answer a4 int gt answer 1 answer 1 answer 1 Info 3 tuples computed Future work includes to include a flag to commit to SOL standard 4 2 7 1 Relational Division in SOL Non Standard The division operation was originally introduced as a relational operation in Codd s paper about relational model Although it seems to be a practical operation it is not included in current DBMS s However DES includes a DIVISION operator that can be used in the FROM clause of a SELECT statement The next system session illustrates its use DES create table t a int b int DES create table s a int DES insert into t values 1 1 Info 1 tuple inserted DES insert into t values 1 2 Info 1 tuple inserted DES insert into t values 2 1 Info 1 tuple inserted DES insert into s values 1 Inf
212. kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxkkkkkkk DES Datalog Educational System v 3 10 Type help for help about commands Fernando Saenz Perez c 2004 2015 DISIA GPD UCM Please send comments questions etc to fernan sip ucm es Web site http des sourceforge net OR 0X FF 09 00 0X HF X X FF FF FF HF HF HF X This program comes with ABSOLUTELY NO WARRANTY is free software and you are welcome to redistribute it under certain conditions Type license for details KHEKKKKKKKKKKKKKEKKKKEKKKKEKKKKEKKKKEKKKKKKKKKKKKKKKKKKKKKKKKKK DES gt This last line DES gt is the DES system prompt which allows you to write Datalog SQL and Relational Algebra RA queries commands temporary views and conjunctive queries see next sections If an error leads to an exit from DES and you have started from a Prolog interpreter then you can write des without the double quotes and with the dot at the Prolog prompt to continue Although a query in any of the languages above can be submitted from such prompt there are currently four modes available which enable to use a concrete query Fernando S enz P rez 16 274 Universidad Complutense de Madrid Datalog Educational System interpreter for Datalog SOL Relational Algebra and also Prolog The first one is the default mode A mode can be switched via the commands datalog sql ra and prolog respectively Note that commands al
213. l System answer X pre l1p hist pre X X answer eng answer hist answer lp Info 3 tuples computed The answer includes those nodes in the graph that are in a cycle Following the example for even numbers in Section 4 1 16 given the regular rule for p is asserted we can use the following assumption for computing those numbers DES assert p X DES p X p X Info Processing answer X p X p X X mod 2 1 p X 1 p Y Y 10 X Y41 X X mod 2 1 gt p X answer 2 answer 4 answer 6 answer 8 answer 10 Info 5 tuples computed 4 1 17 1 Hypothetical Queries and Integrity Constraints Assumptions can be used in combination with any of the features of DES in particular integrity constraints Following the previous example you can even express it with the aid of integrity constraints Avoiding cycles can be forced by DES pre X X Then if you want to list prerequisites assuming pre lp hist as before DES pre lp hist pre X Y Info Processing answer X Y pre lp hist gt pre X Y Error Integrity constraint violation ic X pre X X Offending values in database ic lp ic eng ic hist Info The following rule cannot be assumed pre lp hist answer eng 1p answer hist eng answer hist lp Info 3 tuples computed Fernando S enz P rez 72 274 Universidad Complutense de Madri
214. lay the N first naturals WITH nat n AS SELECT 1 UNION SELECT n41 FROM nat SELECT TOP parvi FROM nat For instance providing the number 3 as a parameter then parv1 is replaced by 3 DES p numbers 3 Info Processing file numbers sql DES WITH nat n AS SELECT 1 UNION SELECT n 1 FROM nat SELECT TOP 3 FROM nat answer nat n int answer 1 answer 2 answer 3 Info 3 tuples computed Info Batch file processed If we neither provide such a parameter nor specify a default one most likely an error is returned as in DES gt p numbers Info Processing file numbers sql n DES WITH nat n AS SELECT 1 UNION SELECT n 1 FROM nat SELECT TOP FROM nat Error Unknown column TOP Info Batch file processed Fernando S enz P rez 177 274 Universidad Complutense de Madrid Datalog Educational System 5 14 Configuration File DES can be configured at start up by including the file des cnf at the distribution directory Its contents are processed as a batch file with no output being displayed This way DES can be silently configured each time a new session begins Typical commands to be included in this file includes those in the command category Settings cf Section 5 17 10 This file is processed just before des ini For instance the following contents in that file makes DES to show a plain prompt no banner and compacted output no extra blank lines display banner off prom
215. layed with the command dbschema it can be nevertheless dropped with a DROP TABLE SQL statement If it is deleted the just Fernando S enz P rez 89 274 Universidad Complutense de Madrid Datalog Educational System described behaviour is no longer possible In addition it cannot be redeclared with a CREATE TABLE SQL statement but with a type declaration as type dual Both DROP DATABASE statement and abolish command restore this table 4 2 7 Multi Set Expressions Expressions in the projection list and conditions in having and where clauses are scalar following the standard However DES allows non scalar expressions dealing to multisets sets if duplicates are disabled as by default In the following example the table t will contain values 1 and 2 for its single field a By selecting the sum of a from two instances of t we get the different summations 1 1 1 2 2 1 and 2 2 DES create table t a int DES insert into t values 1 2 Info 2 tuples inserted DES select select a from t select a from t from dual answer a4 int gt answer 2 answer 3 answer 4 Info 3 tuples computed DES gt duplicates on DES gt select select a from t select a from t from dual answer a4 int answer 2 answer 3 answer 3 answer 4 Info 4 tuples computed If the multiset expression is located at a condition this condition is examined for each value of the expression g
216. les Y cannot occur in C count X Y out of aggregate functions 5 5 5 Stratification When changing the database by asserting or retracting rules a stratification is computed if it exists see Section 5 20 3 If the current database is not stratifiable a warning is submitted Also if a query involving a cycle with negation for its sub PDG is submitted a warning is issued DES assert t not t Warning Non stratifiable program DES t Warning Unable to ensure correctness completeness for this query Info 0 tuples computed Undefined t Info 1 tuple undefined Fernando S enz P rez 160 274 Universidad Complutense de Madrid Datalog Educational System 5 6 Source to Source Transformations Currently two source to source transformations are possible under demand First as explained in the previous section when safety transformations are enabled via the command safe on rule bodies are reordered to try to produce a safe rule Second when simplification is enabled via the command simplification on rule bodies containing equalities true and not BooleanValue are simplified In addition there is also place for several automatic transformations cf Section 5 8 to know how to display such transformations e A clause containing a disjunctive body is transformed into a sets of clauses with conjunctive bodies A clause containing an outer join predicate is transformed into an executable form
217. les as stopwatch which holds the current stopwatch time and total elapsed time which holds the last total elapsed time Strings are not needed to be delimited the text after File is considered as the string See Subsection 5 15 for system variables e writeln to file File As write to file but writing a new line 5 18 Textual API Rather than providing a Prolog underlying system dependent API DES provides a textual API TAPI Textual Application Programming Interface for its communication to external applications It can used via standard input and output streams as provided by the OS Such interface has been guided by the demands of the ACIDE GUI Graphical User Interface in order to allow users to interact with the system via a Java application This way it is possible to inspect and modify database schema and table contents both those managed by DES and also external data sources as RDBMS s spreadsheets or csv plain files connected by an ODBC connection However this TAPI can be used from any application wrote in any language and running on any platform provided that it can handle input and output standard streams Several existing commands statements and queries can be processed via this interface As well new commands and statements have been added to support the GUI requirements described above Input syntax is as for DES whereas answers follow a Fernando S enz P rez 203 274 Universidad Complutense de Ma
218. ligence applications and the like They are also known as what if queries and help managers to take decisions on scenarios which are somewhat changed with respect to a current state Such queries are used for instance for deciding which resources must be added changed or removed to optimize some criterium cost function also well related to optimization technologies Hypothetical queries in the database arena are typically used for assumptions w r t a current database instance DES includes one form of hypothetical Datalog queries which may serve to answer several questions The syntax of an hypothetical query is as follows Rule1 RuleN gt Goal which means that assuming that the current database is augmented with the rules Rulel RuleN then Goal is computed with respect to the current database which is augmented with these rules which must be safe see Section 5 3 Such query is also understand as a literal in the context of a rule so that any rule can contain hypothetical goals as in a b gt c In turn any Rulei can contain hypothetical goals Variables in Rulei are local to Rulei i e they are neither shared with other rules nor the goal Moreover a hypothetical literal does neither share variables with other literals nor the head of the rule in which it occurs Assumed rules can be either regular or restricted rules Fernando S enz P rez 69 274 Universidad Complutense de Madrid Datalog Education
219. literals in rule bodies and implements tabling mechanisms It runs both on Unix Linux and Windows operating systems Datalog Tang99 is a front end for the XSB system Fernando S enz P rez 256 2 14 Universidad Complutense de Madrid Datalog Educational System bddbddb WL04 http bddbddb sourceforge net stands for BDD Based Deductive DataBase It is an implementation of Datalog that represents the relations using binary decision diagrams BDDs BDDs are a data structure that can efficiently represent large relations and provide efficient set operations This allows bddbddb to efficiently represent and operate on extremely large relations IRIS Integrated Rule Inference System IRIS2008 is a Java implementation of an extensible reasoning engine for expressive rule based languages provided as an API Supports safe or un safe Datalog with locally stratified or well founded negation as failure function symbols and bottom up rule evaluation Coral RSSS94 is a deductive system with a declarative query language that supports general Horn clauses augmented with complex terms set grouping aggregation negation and relations with tuples that contain universally quantified variables It only runs under Unix platforms There is also a version which allows object oriented features called Coral SRSS93 FLORID F LOgic Reasoning In Databases KLW95 is a deductive object oriented database system supporting F Logic as
220. lp for help about commands f v DEMO Trace Datalog Trace SQL psd shied Ashe x el Fernando Saenz Perez c 2004 2015 Y 2 Columns DISIA GPD UCM gt e Please send comments questions etc to name string jr fernan sip ucm es ds 2 employee 3 department strin Web site 2 http des sourceforge net salary int si a i This program comes with ABSOLUTELY NO WARRANTY is parking name lon j free software and you are welcome to redistribute it Y D Views M under certain conditions Type license for details E m A v ds a b BARKER RRR RRR R ERE R EERE ARE EERE ERIE ERNE RRR AOI es 100 S iab V Labels B Columns 4 DES i n easel A Batt t a vete OOO amp DES gt Aggregates MI Jexamples aggregates sql Grammar bytes Lexicon Configuration sql 10 1 NumLines 50 INS 22 01 32 2 2 Installing and Executing DES Unpack the distribution archive file into the directory you want to install DES which will be referred to as the distribution directory from now on This allows you to run the system whether you have a Prolog interpreter or not in this latter case you have to run the system either on MS Windows Linux or MacOS Fernando S enz P rez 14 274 Universidad Complutense de Madrid Datalog Educational System Although there is no need for further setup and you can go directly to Section 2 2 3 you can also co
221. m context of the exploded query p X X 1 p X p Y Y lt 500 X Y 1 Info 500 tuples computed Info Total elapsed time 03 540 s DES p X X 1 p Y Y lt 500 X Y 1 Info Processing p X in the program context of the exploded query p X X 1 p X p Y Y lt 500 X Y 1 Info 500 tuples computed Info Total elapsed time 01 279 s 5 20 6 Porting to Unsupported Systems DES is implemented with several Prolog files des pl des_atts pl des_dcg pl des_sql pl des_ra pl des_commands pl des_help pl des_types pl des modes pl des persistence pl des trace pl des sql debug pl des dl debug pl des tc pl and des glue pl The first file contains the common predicates for all of the platforms both Prolog interpreters and operating systems following the Prolog ISO standard File des dcg pl contains the definition of DCG expansion which varies from one system to another Files des sql pl and des ra pl contain the SOL and RA processor respectively File des commands pl defines system commands whereas des help pl the help system File des types pl contains the type checking inference and casting systems and works together with des atts pl for allowing attributed variables File des modes p1 implements the mode information system for Datalog predicates File des persistence pl implements persistence of Datalog predicates on external SOL databases via ODBC connections File des trace pl implements a naive declarative
222. m than d and it is needed for the computation of d Fernando S enz P rez 250 274 Universidad Complutense de Madrid Datalog Educational System The basic paradox p not p can be found in the file paradox dl whose model is undefined as you can test with the query p 6 10 Parity file parity d1 This example program 6 is intended to compute the parity of a given base relation br X i e it can determine whether the number of elements in the relation cardinality is even or odd by means of the predicates br is even andbr is odd respectively The predicate next defines an ascending chain of elements in br based on their textual ordering where the first link of the chain connects the distinguished node nil to the first element in br The predicates even and odd define the even resp odd elements in the chain The predicate has preceding defines the elements in br such that there are previous elements to a given one the first element in the chain has no preceding elements The rule defining this predicate includes an intended error fourth rule in the example which will be used in Section 6 13 to show how it is caught by the declarative debugger Pairs of non consecutive elements in br between X Z br X br Y br Z X Y Y lt Z Consecutive elements in the sequence starting at nil next X Y br X br Y X Y not between X Y next nil X br X not has preceding X Values having preceding value
223. mary keys candidate keys referential integrity check constraints functional dependencies non standard and user defined constraints e Parentheses can be used elsewhere they are needed and also for easing the reading of statements Also they are not required when they are not needed in contrast to some current DBMS systems e Suggestions are provided for misspelled table view and column names when similar entries are found e Type casting is disabled by default and can be enabled with type casting on Enabling this provides the common behaviour of current DBMS s allowing for instance to insert a string representing a number into a numeric field e SQL statements can end with a semicolon but it is not compulsory unless multiline on is enabled 4 2 3 Datalog vs SOL With respect to Datalog some decisions have been taken e As in Datalog user identifiers are case sensitive table and attribute names This is not the normal behaviour of current relational database systems e In contrast to Datalog built in identifiers are not case sensitive This conforms to the normal behaviour of current SQL database systems 4 2 4 Data Definition Language This part of the language deals with creating or replacing and dropping tables and views There is no provision for updating the schema which can be consulted with the command dbschema 4 2 4 1 Creating Tables The first form of this statement is as follows CREATE
224. mer takes wolf to the South shore North Cabbage South Farmer Goat Wolf 2 Farmer takes goat to the North shore North Farmer Goat Cabbage South Wolf 3 Farmer takes cabbage to the South shore North Goat South Farmer Cabbage Wolf 4 Farmer returns to North shore North Farmer Goat South Cabbage Wolf 2 Farmer takes goat to the South shore North empty South Farmer Goat Cabbage Wolf 6 9 Paradoxes files russell dl sql ra When negation is used we can find paradoxes such as the Russell s paradox the barber in a town shaves every person who does not shave himself shown in the next example please note that this example is not stratified and in general we cannot ensure correctness for non stratifiable programs DES verbose on Info Verbose output is on DES c russell Info Consulting russell shaves barber M man M not shaves M M man barber man mayor shaved M shaves barber M end of file Info 4 rules consulted Info Computing predicate dependency graph Info Computing strata Fernando S enz P rez 248 2 14 Universidad Complutense de Madrid Datalog Educational System Warning Non stratifiable program If we submit the query shaves X Y we get the positive facts as well as a set of undefined inferred information in our example whether the barber shaves himself as follows here verbose output is enabled DES shaves X Y Warning Unable to ens
225. mparison operators are infix and apply to terms For the inequality and disequality operators greater than less than etc numbers are compared in terms of their arithmetical value other terms are compared in Prolog standard order If a compound term is involved in a comparison operator it is evaluated as an arithmetic expression and its result is then compared for all operators by equality or unified for equality All comparison operators but equality demand ground arguments since they are not constraints but test operators and argument domains are infinite If a ground argument is demanded and a variable is received an exception is raised Fernando S enz P rez 113 274 Universidad Complutense de Madrid Datalog Educational System Next we list the available comparison operators where X and Y are terms variables constants or arithmetic expressions e X Y Syntactic equality Tests syntactic equality between X and Y when both arguments are ground It also performs unification when variables are involved This is the only comparison operator that does not demand ground arguments e X Y Syntactic disequality Tests syntactic disequality between X and v e X gt Y Greater than Tests whether X is greater than Y e X gt Y Greater than or equal to Tests whether X is greater than or equal to than Y e X lt Y Less than Tests whether X is less than Y e X lt Y Less than or equal to
226. mporary views are useful for quickly submitting conjunctive queries For instance the view DES d X a X not b X computes the set difference between the sets a and b provided they have been already defined Note that the view is evaluated in the context of the program so if you have more rules already defined with the same name and arity of the rule s head the evaluation of the view will return its meaning under the whole set of rules matching the query For instance DES a X b X computes the set union of the sets a and b provided they have been already defined 4 1 6 Automatic Temporary Views Automatic temporary views shortly autoviews are temporary views which do not need a head and allows you to write conjunctive queries on the fly When you write a conjunctive query a new temporary relation named answer is built with as many arguments as variables occur in the conjunctive query answer is a reserved word and cannot be used for defining any other relation As an example of an autoview let s consider DES a X b Y Info Processing answer X Y a X b Y answer al al answer al b1 answer al b2 answer a2 al Fernando S enz P rez 35 2 14 Universidad Complutense de Madrid Datalog Educational System answer a2 b1 answer a2 b2 answer a3 al answer a3 b1 answer a3 b2 Info 9 tuples computed which computes the Cartesian product of the relations a a
227. mputed In addition to saving all the database Section 5 2 explains how to make single predicates persistentent in external SQL databases Another useful command is 1ist et which lists in particular the answers already computed Following the last series of queries and commands above we submit Answers a al a a2 a a3 a a4 Info 4 tuples in the answer table Calls a A Info 1 tuple in the call table Here we can see that the computed meaning of the queried relation is stored in an extension table as well as the last call cf sections 5 20 1 and 5 20 2 Unless either the database is changed e g via assert or retract commands or a temporary Fernando S enz P rez 19 274 Universidad Complutense de Madrid Datalog Educational System view see Section 4 1 6 executed or the command clear_et is submitted the extension table keeps computed results otherwise it is cleared 3 2 SQL Mode In this mode queries are sent to the SQL processor whereas commands cf Section 5 17 are sent to the command processor SQL queries can end with an optional semicolon in single line mode Multi line mode requires the ending semicolon SQL mode is enabled via the command sql Datalog and RA queries cannot be handled by this mode Recall however that the Datalog mode is able to reckon SQL inputs and handle them without the need for turning on the SQL mode The SQL mode is provided for a single langua
228. ms However to the best of our knowledge there is no a friendly system oriented to introducing deductive databases with several query languages to students Nevertheless on the one hand we can comment some representative deductive database systems On the other hand also some technological transfers to face real world problems 8 1 Deductive Database Systems 4OL MS11 http Agl org is a recent development of a rule based database query language with negation allowed in bodies and heads of rules which is founded on a four valued semantics with truth values true false inconsistent and unknown It provides means for a uniform treatment of Open and Local Closed World other nonmonotonic commonsense formalisms including various variants of default reasoning autoepistemic reasoning and other formalisms application specific disambiguation of inconsistent information including defeasible reasoning Logic Query Language LogiQL http www logicblox com technology html is a declarative programming language derived from Datalog and developed by LogicBlox Inc for their LogicBlox database engine It has been designed including advanced techniques for query evaluation concurrency management network optimization program analysis declarative and reactive programming models ConceptBase JJNS98 http conceptbase sourceforge net is a multi user deductive object manager mainly intended for conceptual modeling and coordination in desi
229. n addition a Prolog interface is also provided in order to highlight the differences between Datalog and Prolog systems Since DES is intended to students it has no full blown features of either state of the art Prolog Datalog or SQL based systems However it has many features that make it appealing as an educational tool along with the novel implementations of declarative debugging sections 5 10 and 5 11 and the test case generator Section 5 12 In this section we describe its four query languages Datalog SQL RA and Prolog The database is shared by all the query languages so that queries or goals can refer to any object defined using any language However there are some dependent issues that must be taken into account For instance once a Datalog fact is loaded into the database the relation it defines can be queried in Datalog But if one wants to access this relation from either SQL or RA two alternatives are provided 1 Define the same relation in SOL via a create table statement Section 4 2 4 1 and 2 Declare Fernando S enz P rez 30 274 Universidad Complutense de Madrid Datalog Educational System types for the table Section 4 1 15 1 This particular issue comes from the fact that Datalog relations have unnamed attributes and a positional reference is used for accessing those relations In turn SOL and RA use a notational syntax giving names to relation arguments To illustrate the first alternative let
230. n b on a a b b answer a a b b answer al al answer a2 null answer a3 null Info 3 tuples computed DES gt Right Join DES gt select from a right join b on a a b b answer a a b b answer al al answer null b1 answer null b2 Info 3 tuples computed DES gt Full Join DES gt select from a full join b on a a b b answer a a b b answer al al answer al null answer a2 null answer a3 null answer null al answer null b1 answer null b2 Info 7 tuples computed DES gt Union DES gt select from a union select from b answer a a gt answer al answer a2 answer a3 answer b1 answer b2 Info 5 tuples computed DES gt Difference Fernando S enz P rez 22 274 Universidad Complutense de Madrid Datalog Educational System DES select from a except select from b answer a a answer a2 answer a3 Info 2 tuples computed Info Batch file processed Duplicates are disabled by default i e answers are set oriented But they can be enabled as well which is useful in Datalog SOL and RA queries see Section 4 1 9 For instance DES duplicates on Info Duplicates are on DES projection X projection al projection al projection a2 Info 3 tuples computed You can see the equivalent Datalog rules for a given query by enabling compilation listings as in DES gt
231. n the solutions they develop The high level expressivity of Datalog and its extensions has therefore been acknowledged as a powerful feature to deal with knowledge based information The first commercial oriented deductive database system was the Smart Data System SDS and its declarative query language Declarative Reasoning DECLARE KSSD94 with support for stratified negation and sets Currently XSB and DLV have been projected to spin off companies and they develop deductive solutions to real world problems 9 Future Enhancements The following list in order of importance suggests some points to address for enhancing DES e Tuple and domain relational calculi query languages e Embed declarative debugging into the GUI ACIDE e Disjunctive heads e Information about cycles involving negation in the loaded program e Complete algorithm for finding undefined information e Constraints reals integers enumerated types e Precise error reporting for SQL and Datalog syntax errors If you find worthwhile for your application either some of the points above or others not listed please inform the author for trying to guide the implementation to the most demanded points 10 Caveats and Limitations e Datalog o Nocompound terms as arguments in user relations o Termination is ensured up to arithmetic and hypotheses There is no provision for numerical bounds although top N queries can be used to limit the number of returned tuples
232. nabled rdg RelName Display the current relation dependency graph restricted to the first relation found with name RelName TAPI enabled rdg RelName Arity Display the current relation dependency graph restricted to the relation with name RelName and Arity TAPI enabled refresh db Refresh local metadata from the current database either the local deductive database or an external DB clear the cache and recompute the PDG and strata TAPI enabled repeat Number Input Repeat Input as many times as Number set default parameter Index Value Set the default value for the i th parameter denoted by the number Index to Value e Changes Q oO System predicates resulting from compilations starting with only appear in development mode this applies to consulting the current PDG and strata and tracing Datalog and local SQL queries Nodes in the PDG include DDB tables Infix comparisons built ins and MS Access system tables are no longer part of the PDG PDG arcs are ordered by nodes previously first were the positive arcs then the negative arcs Warning about undefined predicates are only issued when either inserting the offending rule or recomputing the whole PDG System autorenamings are not shown in displayed SQL statements Built ins in SQL expressions are capitalized in listings Displayed result sets in SQL debugging are ordered Oracle connections are restricted to user tables and views therefore av
233. nal System create or replace view CatsOrDogsOwner id aname specie as select O id P name P specie from Owner O Pet P PetOwner PO where O id PO id and P code PO code and specie cat or specie dog create or replace view CatsAndDogsOwner id aname as select A id A aname from CatsOrDogsOwner A CatsOrDogsOwner B where A id B id and A specie B specie create or replace view LessThan6 id as select id from CatsOrDogsOwner group by id having count lt 6 The intended answer of the views with the same name is kept In the case of CatOrDogOwner its intended answer is the multiset of owners with their pet names and species but limited to cats and dogs The very same computation tree as for pets1 sql results after replacing literals AnimalOwner by CatOrDogOwner However the new set of views is erroneous since the WHERE condition A specie B specie of CatsAndDogsOwner should beA specie B specie in order to ensure that the owner has at least one dog and one cat Now the user again detects an unexpected result from the view Guest since its outcome incorrectly includes the owner with identifier 4 Tom Cohen A new debugging session starts but now the old version of the views in the file pets trust can be used as a trusted specification as follows DES process examples SQLDebugger pets2 sql DES debug sql Guest trust file examples SQLDebugger pets trust Info Debugging view Guest 1 Guest 3
234. ncy graph Info Computing strata Error Integrity constraint violation ic Es Ns D count edge A B Es count node N Ns D is Ns Es D 1 Offending values in database ic 4 6 2 User defined integrity constraints are dropped when abolishing the database or consulting a file 4 1 15 8 Dropping Constraints Any predefined or user defined integrity constraint can be dropped with the command drop ic see Section 5 17 1 followed by the constraint to be dropped with the same syntax as its declaration Fernando S enz P rez 66 274 Universidad Complutense de Madrid Datalog Educational System 4 1 15 9 Caveats Either by consulting a program or by dropping the current database or by abolishing the database all integrity constraints are removed including SOL table and view definitions As rules are not checked for predefined constraints situations like the following may occur DES create table t a int primary key DES insert into t values 1 Info 1 tuple inserted DES assert t X X 1 DES duplicates on DES t X t 1 t 1 Info 2 tuples computed Nonetheless if you also want to monitor rules you can otherwise use a user defined constraint such as DES gt create table t a int DES gt insert into t values 1 Info 1 tuple inserted DES group_by t X X C count X C gt 1 C gt 1 DES assert t X X 1 Error Integrity constraint violation i
235. nd tapi list table constraints table name Arguments table name Table name enclosed between SQL delimiters if needed Answer NN Fernando S enz P rez 215 274 Universidad Complutense de Madrid Datalog Educational System CK FK FK FD FD IC IC eot Where is a delimiter for different kinds of integrity constraints NN is a single line with the names of columns with existency constraint PK is a single line with the primary key constraint CK are candidate keys FK are foreign keys FD are functional dependencies IC are user defined integrity constraints and eot is the end of transmission Remarks List table constraints If there are no constraints of a given type no line is written Example Input tapi list_table_constraints s Output no existency constraint primary key b no candidate key foreign key s a1 t a functional dependency a b and user defined integrity constraint t X s X X a t a Xr 0 xx 0 UH a gt b t X s X X eot Command tapi relation schema relation name Fernando S enz P rez 216 274 Universidad Complutense de Madrid Datalog Educational System Arguments relation name Relation name either a table or view which must be enclosed between SOL delimiters if needed Answer relation kind relation name column name type column name type column name type
236. nd b provided they have been already defined as a al a a2 a a3 b b1 b b2 b a1 4 1 7 Underscored Variables An underscored variable a variable starting with the underscore symbol _ is handled similar to Prolog It is assumed to be of no interest for the answer so that they are discarded from the answer should they occur in the body of a query view or autoview even in its head For instance computing the projection of a relation t with respect to its first argument can be simply done as follows DES assert t 1 2 DES assert t 2 3 DES t X Info Processing answer X E X y answer 1 answer 2 Info 2 tuples computed instead of having to resort to an autoview such as DES p X t X Y Info Processing POO t X Y p 1 p 2 Info 2 tuples computed Also let s consider other situation as follows DES gt duplicates off Fernando S enz P rez 36 274 Universidad Complutense de Madrid Datalog Educational System DES t X Y t 1 1 t 1 2 t 3 3 Info 3 tuples computed DES gt t X X t 1 1 t 3 3 Info 2 tuples computed If you use instead underscored variables you get one answer tuple DES t X X Info Processing answer t X X answer Info 1 tuple computed However if duplicates are enabled you get two answer tuples although the concrete values for the arguments of t are not vi
237. nd views can be accessed from DES as if they were local DES select from s answer a varchar gt answer 1 answer 2 Info 2 tuples computed DES select from t answer a varchar gt answer 1 Info 1 tuple computed DES gt select from v answer a varchar b varchar gt answer 1 1 answer 1 2 Info 2 tuples computed DES insert into t values 1 Exception error odbc 23000 1062 MySQL ODBC 3 51 Driver mysqld 5 0 41 community nt Duplicate entry 1 for key 1 G3 In this example as table t has its single column defined as its primary key trying to insert a duplicate entry results in an exception from the ODBC driver Integrity constraints are handled by the RDBMS connected instead of DES notice that the exception message is different from the one generated by DES Moreover you can submit SOL statements that are not supported by DES but otherwise by the connected RDBMS as DES alter table t drop primary key Then you can insert again and see the result including duplicates DES insert into t values 1 Info 1 tuple inserted DES select from v answer a varchar b varchar gt answer 1 1 answer 1 1 answer 1 2 answer 1 2 Fernando S enz P rez 126 274 Universidad Complutense de Madrid Datalog Educational System Info 4 tuples computed Also duplicate removing is also possible
238. ndo S enz P rez 99 274 Universidad Complutense de Madrid Datalog Educational System UNIQUE Att Att t KEY Att Att Not in the standard KEY Att Att Porn KEY Att Att REFERENCES TableName Att Att CHECK CheckConstraint CheckConstraint WhereCondition Att Att DETERMINED BY Att Att Not in the standard RelationName is a user identifier for naming tables views and aliases TableName is a user identifier for naming tables ViewName is a user identifier for naming views Att is a user identifier for naming relation attributes EESEEEEEEEEEEEEEEEEEEEEEEECEEEEEEEEEESEEESEEEESES DML Data Manipulation Language statements CESESEEEEEEEEEEEEEEESEECESECEEEEEEEEEEEEEEEEEESS DMLstmt INSERT INTO TableName Att Att VALUES Cte Cte Cte Cte INSERT INTO TableName Att Att DOLstmt DELETE FROM TableName AS Identifier WHERE Condition UPDATE TableName AS Identifier SET Att Expr Att Expr WHERE Condition Cte is a constant 9595555955559555555555555595555555955105095050209500950900909 DOL Data Query Language statements 9595555955559555555555955555555550959510095050209500000909 DQLstmt DOLstmt UBSOL UBSQL SELECTstmt DQLstmt UNION ALL DQLstmt DOLstmt EXCEPT DOLstmt Fernando S enz P rez 100 274 Universidad Complutense de Madrid Datalog Educational System DOLstmt MINUS DOQL
239. ne can trace an imperative program by following each statement as it is executed along with the program state this is not feasible in declarative high abstraction languages as Datalog and SQL However this does not apply to Prolog also acknowledged as a declarative language because one can follow the execution of a goal via the SLD resolution tree and use the four port debugging approach Datalog stems from logic programming and Prolog in particular and it can be also understood as a subset of Prolog However its operational behaviour is quite different since the outcome of a query represents all the possible resolutions instead of a single one as in Prolog In addition tabling cf Section 5 6 and program transformations due to outer joins aggregates simplifications disjunctions make tracing cumbersome Similarly SQL represents a true declarative language which is even farthest from its computation procedure than Prolog Indeed the execution plan for a query include transformations considering data statistics to enhance performance These query plans are composed of primitive relational operations such as Cartesian product and specialized operations for which efficient algorithms have been developed containing in general references to index usage Therefore instead of following a more imperative approach to tracing here we focus on a na ve declarative approach which only take into account the outcomes at some program
240. nfigure a more user friendly way for system start In this way you can follow two routes depending on the operating system 2 2 1 MS Windows 2 2 1 1 Executable Distribution Simply create a shortcut in the desktop for executing the executable of your choice either des exe or deswin exe or des_acide jar The former is a console based executable the second is a windows based executable and the latter is a Java application that includes a call to the binary des exe Executables have been generated with SICStus Prolog and SWI Prolog so that all notes relating these systems in the rest of this document also apply to these executables In addition since it is a portable application it needs to be started from its distribution directory which means that the start up directory of the shortcut must be the distribution directory 2 2 1 2 Source Distribution Perform the following steps 1 Create a shortcut in the desktop for running the Prolog interpreter of your choice 2 Modify the start directory in the Properties dialog box of the shortcut to the installation directory for DES This allows the system to consult the needed files at startup 3 Append the following options to the Prolog executable path depending on the Prolog interpreter you use a SICStus Prolog 1 des pl b SWI Prolog g ensure loaded des remove win app if present Another alternative is to write a batch file similar to the script file described in
241. ng it can be distributed under the terms of this License Such a notice grants a world wide royalty free license unlimited in duration to use that work under the conditions stated herein The Document below refers to any such manual or work Any member of the public is a licensee and is addressed as you You accept the license if you copy modify or distribute the work in a way requiring permission under copyright law A Modified Version of the Document means any work containing the Document or a portion of it either copied verbatim or with modifications and or translated into another language A Secondary Section is a named appendix or a front matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document s overall subject or to related matters and contains nothing that could fall directly within that overall subject Thus if the Document is in part a textbook of mathematics a Secondary Section may not explain any mathematics The relationship could be a matter of historical connection with the subject or with related matters or of legal commercial philosophical ethical or political position regarding them The Invariant Sections are certain Secondary Sections whose titles are designated as being those of Invariant Sections in the notice that says that the Document is released under this License If a section does not fit the above definition of Se
242. ning defining the relation as the query a X in the example of Section 3 If a query contains a constant in an argument position it means that the query processing will select the facts from the meaning of the relation such that the argument position matches with the constant i e analogous to a select relational operation This is the case of the query a a3 in the same example Fernando S enz P rez 34 2 14 Universidad Complutense de Madrid Datalog Educational System You can also write conjunctive queries on the fly such as a X b X see Section 4 1 6 Built in comparison operators listed in Section 4 5 1 can be safely used in queries whenever their arguments are ground at evaluation time equality does not require this for atomic arguments as it performs unification cf Section 4 5 1 for more details about equality Disjunctive queries are also allowed too such as a X b X Concluding a query follows the same syntax as rule bodies If only a limited number of tuples in the answer are required one can submit the query as top N Query where N is the maximum number of tuples to be returned See Section 4 5 10 Also query answers can be sorted with order by See Section 4 5 11 4 1 5 Temporary Views Temporary views allow you to write conjunctive queries on the fly A temporary view is a rule which is added to the database its head is considered as a query and executed Afterwards the rule is deleted Te
243. nly built in functions are allowed The current provision of built in functions includes among others o 13 a1 a2 a3 Intended for computing the left outer join of the relations al left relation and a2 right relation committing the condition Boolean expression a3 join condition o rj al a2 a3 Intended for computing the right outer join of the relations al left relation and a2 right relation committing the condition Boolean expression a3 join condition o fj al1 a2 a3 Intended for computing the full outer join of the relations al left relation and a2 right relation committing the condition Boolean expression a3 join condition Note that outer join functions can be nested Literals Literals can be o Positive An atom or restricted atom o Negative A negated body of the form not Body where Body is a body cf next section Negative literals are used to express the negation of a relation either as a query or as a part of a rule body Fernando S enz P rez 33 274 Universidad Complutense de Madrid Datalog Educational System o Disjunctive A disjunctive literal is of the form 1 r where 1 and r are literals o Divided A divided literal is of the form 1 division r where 1 and r are literals Examples of literals are P P r a X not q X b not a b r a X not q X b 1 2 t X Y division s Y X is 1 42 A literal can occur in rule bodies queries and view bodies S
244. nnect origin string connect destination string gt answer lon ny answer mad ny answer mad par answer par ny Info 4 tuples computed Fernando S enz P rez 95 274 Universidad Complutense de Madrid Datalog Educational System One can use several assumptions in the same query but only one for a given relation If needed you can assume several rules by using UNION For example WITH flight origin destination time AS SELECT mad 1on 2 0 UNION SELECT par ber 3 0 SELECT FROM travel which is equivalent to ASSUME SELECT mad 1lon 2 0 UNION SELECT par ber 3 0 IN flight origin destination time SELECT FROM travel Both can be alternatively formulated as follows where several assumptions are made for the same relation and attribute names are dropped WITH flight AS SELECT mad lon 2 0 flight AS SELECT par ber 3 0 SELECT FROM travel ASSUME SELECT mad lon 2 0 IN flight SELECT par ber 3 0 IN flight SELECT FROM travel Note that an assumption for a non existing relation requires its complete schema DES gt ASSUME SELECT 1 IN p SELECT FROM p Error Complete schema required for local view definition p DES gt ASSUME SELECT 1 IN p a SELECT FROM p answer p a int gt answer 1 Info 1 tuple computed It is also possible to assume that some tuples are not in a relation either a tabl
245. nonym for cat Filename 5 176 Log e log Display the current log file if any e log Filename Set the current log to the given filename overwriting the file if exists or creating a new one e log Mode Filename Set the current log to the given filename and mode write overwriting the file if exists or creating a new one or append appending to the contents of the existing file if exists or creating a new one e nolog Disable logging Fernando S enz P rez 190 274 Universidad Complutense de Madrid Datalog Educational System 5 17 7 Informative apropos Keyword Display detailed help about Keyword which can be a command or built in Synonyms help builtins List predefined operators functions and predicates dbschema Display the database schema Database name tables views and Datalog constraints A Datalog integrity constraint is displayed under a table if it only refers to this table and under the Datalog integrity constraints otherwise If a constraint is created with a CREATE TABLE Tablename statement it is listed under the table Tablename even when it refers to other tables or views TAPI enabled Synonyms db schema dbschema Name Display the database schema for the given connection view or table name TAPI enabled Synonyms db schema dbschema Connection Name Display the database schema for the given view or table name in the given connection TAPI enabled Synon
246. not safe a mode assertion is stored indicating the input requirement of offending arguments The assertion has the following syntax mode ModeSchema ModeSchema PredName Mode Mode Mode i The argument must be ground at call time Fernando S enz P rez 158 274 Universidad Complutense de Madrid Datalog Educational System Mode 0 The argument can be a free variable at call time In the example above the automatically stored assertion is mode nat i o This can listed with the command 1ist modes which lists all asserted modes and 1ist modes N A fora give predicate of name Nand arity A Therefore such declarations are understood more from a documentation point of view than from constraints as types referential integrity constraints as mode assertions recall users about expected properties for the queries in addition to the first message they got when compiling an unsafe rule If no mode is asserted for a given predicate it is classical safe Although the user can only examine predicate modes the system keeps track of modes at rule level Each time a rule is asserted or retracted the modes for its predicate are updated with the already stored modes for the rest of the predicate rules if any 5 5 Syntax Checking A number of syntax checks are conducted when asserting rules consulting programs and submitting queries These checks includes safety warnings and errors undefined
247. nput is enabled on or off my odbc query handle Flag indicating the handle to the last ODBC query my_statistics Flag displaying whether statistics are enabled on or off non recursive predicates List of non recursive predicates nr nd predicates List of non recursive predicates which do not depend on any recursive predicates S null id Integer identifier for nulls represented as NULL i where i is the null identifier nulls Hag indicating whether nulls are allowed Soptimize_cc Flag indicating whether complete computation optimization is enabled Soptimize_cf Flag indicating whether complete flag optimization is enabled Fernando S enz P rez 179 274 Universidad Complutense de Madrid Datalog Educational System Soptimize_ep Flag indicating whether extensional predicate optimization is enabled Soptimize_nrp Flag indicating whether non recursive predicate optimization is enabled Soptimize st Flag indicating whether stratum optimization is enabled Sorder_answer Flag indicating whether the answer is to be displayed upon solving on or off Soutput Flag indicating whether output is enabled on or off pdg Predicate Dependency Graph Spretty print Pretty print for listings takes more lines to print prompt Flag indicating the prompt format S recursive predicates List of recursive predicates rule id Integer identifier for rules re
248. nt has been reached The display EDB retrievals shows those two fact reads EDB stands for Extensional Database If the same query is submitted again DES p X Info Parsing query Info Query successfully parsed Info Solving query p X Info Displaying query answer Info Sorting answer p 1 Info 1 tuple computed Info Fixpoint iterations 1 Info EDB retrievals 1 Info IDB retrievals 0 Info ET retrievals 4 Info ET look ups 4 Info CT look ups 1 Info CF look ups 0 then only 1 iteration is needed to reach the fixpoint and only one EDB retrieval is done as the answer table contained an entry for p 1 already for the same call This illustrates point 1 above Now let s enable the optimization previously deleting the contents of the answer table so that we are in the same starting situation again DES clear et Info Extension table cleared DES optimize cc on Info Complete flag optimization is on DES p X Info Parsing query Info Query successfully parsed Info Solving query p X Info Displaying query answer Info Sorting answer p 1 Info 1 tuple computed Info Fixpoint iterations 2 Info EDB retrievals 2 Info IDB retrievals 0 Info ET retrievals 4 Info ET look ups 6 Info CT look ups 2 Info CF look ups 1 As before 2 fixpoint iterations and 2 EDB retrievals are needed But if we submit again the query Fernando S enz P rez 228 2 14
249. nto p values a b Error Type mismatch p 1 number integer vs string char 6937 p 1 number integer 2 string varchar Info 0 tuples inserted Note that columns with automatically given names can be accessed from an SQL statement but enclosed as special user identifiers ISO delimiters double quotes supported by Oracle and SOL Server are supported as well as other vendor specific delimiters MS Access square brackets and MySQL back quotes Otherwise an error is raised DES select 1 from p Error Input not recognized as a valid Datalog query view autoview or command Queries Atom not Atom X Infix Y Views Head Body Autoviews Body Commands Command Argument s Queries views and commands can optionally end with a dot DES select 1 from p answer p 1 int gt answer 1 Info 1 tuple computed A relation already defined is checked for consistency when trying to assert a new type constraint DES assert t 1 DES assert t a DES type t int Error No type tuple covers all the loaded rules for t 1 t 1 t a Info 2 rules listed Should any other constraint remains asserted other than a type constraint a type constraint cannot be changed Fernando S enz P rez 57 274 Universidad Complutense de Madrid Datalog Educational System DES type p a int b string Error Cannot change type assertion while other constraints
250. null related operations do not exactly follow the SOL standard No SQL functions on strings are provided yet Limited set of types e g datetime and boolean are not supported yet See also Section 5 1 10 regarding ODBC connections Test case generator O Test case generation is not supported for ODBC connections up to now e Miscellanea O 9 Transactions are not implemented yet Enabling duplicates can notably harm performance for recursive predicates cf Fibonacci example Users should not write predicate identifiers starting with the symbol Otherwise unexpected behaviour might happen Fernando S enz P rez 259 2 14 Universidad Complutense de Madrid Datalog Educational System e Prolog systems specific issues o SWI Prolog distributions do not allow arithmetic expressions involving 1og 2 11 Release Notes This section lists release notes of the current DES version 11 1 Version 3 10 of DES released on January 21st 2015 e Enhancements O O Tracing and debugging external relations via ODBC is allowed SQL debugging with development mode enabled shows the logic program every time a clause is added The PDG and stratification are also built for external SQL relations when opening an ODBC connection The SQL text which defines an external view is listed for DB2 MySQL Oracle and PostgreSQL whenever it is recognized by the DES SQL dialect other DBMS s might work as well
251. o 1 tuple inserted DES insert into s values 2 Info 1 tuple inserted DES select from t division s answer t b int answer 1 Info 1 tuple computed 4 2 7 2 Set SOL Queries The three set operators defined in the standard are available UNION EXCEPT and INTERSECT Also Oracle s MINUS is allowed as a synonymous for EXCEPT The first one also admits the form UNION ALL for retaining duplicates The syntax of a set SQL query is SQLStatement SetOperator SQLStatement Where SQLStatement is any SQL statement described in the data query part without any limitation SetOperator is any of the abovementioned set operators Examples Fernando S enz P rez 91 274 Universidad Complutense de Madrid Datalog Educational System SELECT FROM s UNION SELECT FROM t SELECT FROM s UNION ALL SELECT FROM t SELECT FROM s INTERSECT SELECT FROM t SELECT FROM s EXCEPT SELECT FROM t Note that parentheses are not mandatory in these cases and are only used for readability 4 2 7 3 WITH SOL Queries The WITH clause as introduced in the SQL 1999 standard and available in several RDBMS as DB2 Oracle and SQL Server is intended in particular to define recursive queries Its syntax is WITH LocalViewDefinitionl LocalViewDefinitionN SQLStatement Where SQLStatement is any SQL statement and LocalViewDefinitionl LocalViewDefinitionl are local view definitions that c
252. o be included as part of the constant Examples of alphanumeric constants are foo oo foo foo foo 2 3 X foo s and foo s The last two ones represent the same sequence foo s Variables Variables are written with alphanumeric characters and alternatively start with either an uppercase or with an underscore Anonymous variables are also allowed which are denoted with a single underscore Each occurrence of an anonymous variable is considered different from any other anonymous variable For instance in the rulea b c both goals do not share variables Any variable starting with an underscore either anonymous or not is removed from a computed query cf Section 4 1 7 Examples of variables are X X var and Unknowns Unknowns are represented as null values and are written alternatively as both null and NULL ID where ID is a unique global identifier The first form is used for normal users whilst the second one is intended for development uses cf development command in Section 5 17 7 Terms Terms can be o Noncompound Variables or constants o Compound As in Prolog they have the form t t1 tn wheret is a function symbol functor and ti 1 lt i lt n are terms Fernando S enz P rez 32 2 14 Universidad Complutense de Madrid Datalog Educational System Up to the current version compound terms can only occur in arithmetic expressions Their function symbols can b
253. o for all of its columns Then each or the tuples in the relation preceded by the record delimiter Last line is the end of transmission Examples Input considering that table s contains tuples 1 abc null def nu11 null tapi select from s Output answer s a int s b varchar 20 1 abc null def null null eot Input considering an empty table s tapi select from s Output answer s a int s b varchar 20 eot Fernando S enz P rez 222 2 14 Universidad Complutense de Madrid Datalog Educational System 5 19 ISO Escape Character Syntax Special characters in constants and user identifiers can be specified by prepending a backslash to an escape sequence This feature depends on its support by the underlying Prolog system so that the reader is referenced to read the corresponding entry in the manual of such system Currently escape sequences can only be specified in files to be consulted but not at the command prompt Common escape sequences are a Alarm ASCII character code 7 e b Backspace ASCII character code 8 e d Delete ASCII character code 127 e e Escape ASCII character code 27 e Nf Form feed ASCII character code 12 e n Line feed Newline ASCII character code 10 e Nr Carriage return ASCII character code 13 Go to the start of the line without feeding a new line e t Horizontal tab ASCII character code 9
254. oach has been used to implement an SOL declarative debugger following CGS11b There possible erroneous objects correspond to views and the debugger looks for erroneous views asking the user whether the result of a given view is as expected In addition trusted views are supported to prune the number of questions This was extended to also include user information about wrong and missing tuples CGS12a See Section 5 11 for details In addition following the need for catching program errors when handling large amounts of data we also include a test case generator for SOL correlated views CGS10a Our tool can be used to generate positive negative and both positive negative test cases cf Section 5 12 13 Deductive Databases The intersection of databases logic and artificial intelligence delivered deductive databases Deductive database systems are database management systems built around a logical model of data and their query languages allow expressing logical queries Relational database languages where SQL is the de facto standard implement a limited form of logic whereas deductive database languages implement advanced forms of logic A deductive database is a system which includes procedures for defining deductive rules which can infer information in the so called intensional database in addition to the facts loaded in the so called extensional database The logic model for deductive databases is closely related to the relati
255. of p A B q 1 1 q 2 1 q 2 2 Info 3 tuples computed An analogous SQL session follows DES gt create table p X int Y int DES create view q X C as select X count Y as C from p group by X union select X sum Y as C from p group by X DES select from q answer q X int q C int gt answer 1 1 answer 2 1 answer 2 2 Info 3 tuples computed Fernando S enz P rez 48 274 Universidad Complutense de Madrid Datalog Educational System 4 1 12 3 Aggregate Predicates An aggregate predicate returns its result in its last argument position as in sum p X X R which binds R to the cumulative sum of values for X provided by the input relation p These aggregate predicates simply allow another way of expressing aggregates in addition to the way explained just above Again with the same file the following queries are allowed DES count employee N D S S T Info Processing answer T count employee N D S S T answer 7 Info 1 tuple computed A group by operation is simply specified by including the grouping variable s in the head of a clause as in the following view which computes the number of active employees by department DES c D C count employee N D S S C Info Processing c D C count employee N D S S D C c accounting 3 c null O0 c resources 1 c sales 3 Info 4 tuples computed Note that the syst
256. og Syntax of Prolog programs and goals is the same as for Datalog including all built in operators cf next Section but aggregates Notice that negation is written as not Goal instead of the usual Goal in Prolog When a goal is solved instead of displaying the variable substitution for the answer the goal is displayed with the substitution applied as in DES Prolog t X t 1 type for more solutions lt Intro gt to continue t 2 type for more solutions lt Intro gt to continue no 4 5 Built ins Most built ins are shared by the four languages For instance w r t comparison operators the only difference is the less or equal lt operator used in Datalog and Prolog This operator is different from the used in SQL and RA which is written as lt The former is written that way since in Prolog and Datalog it is distinguished from the implication to the left operator lt SOL does not provide implications so the SOL syntax seems to be more appealing since the order of the two symbols matches the order of words Arithmetic expressions are constructed with the same built ins in the three languages However in Datalog and Prolog you need to use the infix is cf Section 4 5 2 The built in predicates is null 1and is_not_nu11 1 belong to the Datalog language Also consult Section 5 3 for limitations regarding safety in the use of built ins in Datalog 4 5 1 Comparison Operators All co
257. oiding to retrieve dozens of system relations All identifiers in system messages are enclosed between single quotes The argument of the command process must be enclosed between double quotes if it contains blanks Calls to recursive relations are not unfolded both in the translations from SQL and unfolding user rules when unfold on is submitted Deprecated SOL DROP TABLE Tablenames e Fixed bugs O The SQL Debugger tried to slice tables when they were not trusted Fernando S enz P rez 261 274 Universidad Complutense de Madrid Datalog Educational System o References to attribute names in the GROUP BY clause were not always resolved o SQL listings including the DIVISION operator printed its internal representation o Some metadata for views were retrieved as they were tables for Oracle databases o Some ODBC diag exceptions were not formatted in the display o Persistence in DB2 connections was faulty for SWI Prolog distros o Listings involving the top and sort RA operators failed o The SQL ON clause required a blank after it o Printing expressions in SOL ORDER BY failed in listings o When adding a rule for a new predicate calling a restricted one the PDG did not include the negative dependency between them 12 Acknowledgements The author wishes to thank J Wielemaker for providing such an amazing free Prolog system and supporting help Mats Carlsson and Per Mildner at SICS supported the development
258. onal Algebra to Express a Class of Recursive Queries IEEE Transactions on Software Engineering archive Volume 14 Issue 7 July 1988 P Ammann and J Offutt Introduction to Software Testing Cambridge University Press 2008 F Arni K Ong S Tsur H Wang and C Zaniolo The deductive database system LDL TPLP 3 1 61 94 2003 M Becker C Fournet and A Gordon Design and Semantics of a Decentralized Authorization Language In CSF 07 Proceedings of the 20th IEEE Computer Security Foundations Symposium pages 3 15 Washington DC USA 2007 IEEE Computer Society M L Barja N W Paton A Fernandes M H Williams A Dinn An Effective Deductive Object Oriented Database Through Language Integration In Proc of the 20 VLDB Conference 1994 Caballero R A declarative debugger of incorrect answers for constraint functional logic programs in WCFLP 05 Proceedings of the 2005 ACM SIGPLAN workshop on Curry and functional logic programming 2005 pp 8 13 A Cali G Gottlob and T Lukasiewicz Datalog a unified approach to ontologies and integrity constraints In ICDT 09 Proceedings of the 12th International Conference on Database Theory pages 14 30 New York NY USA 2009 ACM R Caballero Y Garc a Ruiz and F S enz P rez Towards a Set Oriented Calculus for Logic Programming Programaci n y Lenguajes P Lucio y F Orejas editors CIMNE pp 41 50 Barcelona Spain September 2006
259. onal model and in particular with the domain relational calculus Their query languages are related with the Prolog language and mainly with Datalog a Prolog subset without constructed terms in order to avoid infinite terms and other non declarative constructs such as the cut Origins of deductive databases can be found in automatic theorem proving and later in logic programming Minker Mink87 suggested that Green and Raphael GR68 were the pioneers in discovering the relation between theorem proving and deduction in databases They developed several question answer systems using a version of the Robinson resolution principle Robi65 showing that deduction can be systematically performed in a database environment Other pioneer systems were MRPPS MN82 DEDUCE 2 Chan78 and DADM KT81 See Section 8 for references to other current deductive database systems 2 Installation 21 Downloading DES You can download the system from the DES web page via the URL http des sourceforge net There you can find source distributions for several Prolog interpreters and operating systems and executable distributions for MS Windows Linux and Mac OS Fernando S enz P rez 9 274 Universidad Complutense de Madrid Datalog Educational System 2 1 1 Source Distribution Under the source distribution there are several versions depending on the Prolog interpreter you select to run DES either SICStus Prolog SICStus or SWI Prolog
260. one The following two example rules illustrates this 0 Initial state state 0 0 n n n n 1 Farmer takes Wolf State C S X X U V safe X X U V opp X X1 state C1 S1 X1 X1 U V S is S1 1 bound B S B C is C1 1 10 S1 Solving the new program yields DES state C S s s s s state 2412342 0 7 s Ss S Ss state 2432142 0 7 s s Ss s Info 2 tuples computed Which is explained as follows Solution 1 state 2412342 0 7 s s s s 0 Initial state North Farmer Goat Cabbage Wolf South empty 2 Farmer takes goat to the South shore North Cabbage Wolf South Farmer Goat 4 Farmer returns to North shore North Farmer Cabbage Wolf South Goat 3 Farmer takes cabbage to the South shore North Wolf South Farmer Cabbage Goat 2 Farmer takes goat to the North shore North Farmer Goat Wolf South Cabbage 1 Farmer takes wolf to the South shore North Goat South Farmer Cabbage Wolf 4 Farmer returns to North shore Fernando S enz P rez 247 274 Universidad Complutense de Madrid Datalog Educational System North Farmer Goat South Cabbage Wolf 2 Farmer takes goat to the South shore North empty South Farmer Goat Cabbage Wolf Solution 2 state 2432142 0 7 s s s s 0 Initial state North Farmer Goat Cabbage Wolf South empty 2 Farmer takes goat to the South shore North Cabbage Wolf South Farmer Goat 4 Farmer returns to North shore North Farmer Cabbage Wolf South Goat 1 Far
261. onstraint specifies that no two tuples have the same values for a given set of columns Next a system session illustrates the use of a candidate key assertion DES type p a int b string DES ck p al Candidate key constraints are trivially satisfied when duplicates are disabled as relations are considered as sets irrespective of the current database instance that may contain duplicates for the arguments in the candidate key Several candidate key declarations are allowed for the same predicate and arity By contrast to primary keys several candidate key constraints are allowed for the same predicate DES ck p b DES ck p a b DES dbschema p Info Table p a int b string NN a CK a CK b CK a b 4 1 15 5 Foreign Key A foreign key constraint specifies that the values in a given set of columns of a relation must exist already in the columns declared in the primary key constraint of another relation Next an example of a foreign key assertion is shown Fernando S enz P rez 60 274 Universidad Complutense de Madrid Datalog Educational System DES type p a int type q b int pk q b DES fk p a q b However if the relations do not exist an error is raised DES fk p a q b Error Relation p has not been typed yet DES type p a int type q b int Trying to impose a foreign key with a referenced table which does not have
262. onstraints and SQL table and view definitions The extension table is cleared and the predicate dependency graph and strata are recomputed TAPI enabled See also Filenames e abolish Delete the Datalog database This includes all the local rules including those which are the result of SQL compilations and external rules persistent predicates Integrity constraints and SQL table and view definitions are removed The extension table is cleared and the predicate dependency graph and strata are recomputed Fernando S enz P rez 182 274 Universidad Complutense de Madrid Datalog Educational System abolish Name Delete the predicates matching Name This includes all their local rules including those which are the result of SOL compilations and external rules persistent predicates Their integrity constraints and SOL table and view definitions are removed The extension table is cleared and the predicate dependency graph and strata are recomputed abolish Name Arity Delete the predicates matching the pattern Name Arit y This includes all their local rules including those which are the result of SOL compilations and external rules persistent predicates Their integrity constraints and SOL table and view definitions are removed The extension table is cleared and the predicate dependency graph and strata are recomputed assert Head Body Add a Datalog rule If Body is not specified it is simply
263. original publisher of the version it refers to gives permission K For any section Entitled Acknowledgements or Dedications Preserve the Title of the section and preserve in the section all the substance and tone of each of the contributor acknowledgements and or dedications given therein L Preserve all the Invariant Sections of the Document unaltered in their text and in their titles Section numbers or the equivalent are not considered part of the section titles M Delete any section Entitled Endorsements Such a section may not be included in the Modified Version N Do not retitle any existing section to be Entitled Endorsements or to conflict in title with any Invariant Section O Preserve any Warranty Disclaimers If the Modified Version includes new front matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document you may at your option designate some or all of these sections as invariant To do this add their titles to the list of Invariant Sections in the Modified Version s license notice These titles must be distinct from any other section titles You may add a section Entitled Endorsements provided it contains nothing but endorsements of your Modified Version by various parties for example statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard You may add a passage of up to fiv
264. owed A couple of assertions to show the behaviour of the above example follow DES assert t 0 DES assert t 11 Error Integrity constraint violation ic X t X x lt 0 X gt 10 Offending values in database ic 11 Note that to be able to interpret that offending values the integrity constraint is shown as a rule defining a new predicate ic where the rule s head has as many variables as relevant variables in the constraint Then offending values are encapsulated in the meaning of the constraint relation ic A rule body of a constraint is any valid rule body i e goals in constrainsts can refer to other user defined or builtin predicates as well including negation 4 This CHECK SQL clause is not yet supported by DES Fernando S enz P rez 63 274 Universidad Complutense de Madrid Datalog Educational System aggregates etc Let s consider the following session in which we are interested in specifying a directed tree a connected graph with no cycles DES verbose on Info Verbose output is on DES consult paths Info Consulting paths edge a b edge a c edge b a edge b d path X Y path X Z edge Z Y path X Y edge X Y end_of_file Info 6 rules consulted Info Computing predicate dependency graph Info Computing strata DES path X X Info Parsing query Info Constraint successfully parsed Info Checking user defined integrity constraint
265. p 10 Info 5 tuples computed Note that you can also request the meaning of the restricted part of the predicate In general a restricted atom can occur anywhere an atom is allowed and in particular in a top level query as follows DES p X p 1 p 3 p 5 p p 9 Info 5 tuples computed Restrict rules can also be recursive The following example looks also for even numbers DES assert p X X 1 p Y X Y 2 X 10 DES p X p 2 P 4 p 6 p 8 p 10 Info 5 tuples computed As a caveat note that the complete meaning of a predicate can be removed if a regular atom is used incorrectly as in DES assert p X p X DES p X Fernando S enz P rez 68 274 Universidad Complutense de Madrid Datalog Educational System Info 0 tuples computed The rule p X p X represents a tautology AII duplicates in the meaning of a restricted predicate are removed for a single tuple in the meaning of the restricted rules For example DES assert p 1 DES assert p 1 DES assert p 2 DES assert p 2 DES assert p 1 DES duplicates on DES p X P 2 p 2 Info 2 tuples computed Restricted predicates are also useful for hypothetical reasoning a subject covered in the next section 4 1 17 Hypothetical Queries Hypothetical queries are a common need in several scenarios related mainly with business intel
266. play t rue if the given relation is empty and false otherwise TAPI enabled e license Display GPL and LGPL licenses e list table schemas List table schemas TAPI enabled e list_table constraints Name List table constraints for table Name TAPI enabled e list_tables Fernando S enz P rez 192 274 Universidad Complutense de Madrid Datalog Educational System List table names e list view schemas List view schemas TAPI enabled e list views List view names TAPI enabled pdg Display the current predicate dependency graph TAPI enabled e pdg Name Display the current predicate dependency graph restricted to the first predicate found with name Name TAPI enabled e pdg Name Arity Display the current predicate dependency graph restricted to the predicate with name Name and Arity TAPI enabled e rdg Display the current relation dependency graph i e the PDG restricted to show only nodes with type information tables and views TAPI enabled e rdg Name Display the current relation dependency graph restricted to the first relation found with name Name TAPI enabled e rdg Name Arity Display the current relation dependency graph restricted to the relation with name Name and Arity TAPI enabled e referenced relations Relation Display the name of relations that are directly referenced by a foreign key in relation Relation TAPI enabled e referenced relations Relation Arit
267. ple HTML PostScript or PDF designed for human modification Examples of transparent image formats include PNG XCF and JPG Opaque formats include proprietary formats that can be read and edited only by proprietary word processors SGML or XML for which the DTD and or processing tools are not generally available and the machine generated HTML PostScript or PDF produced by some word processors for output purposes only Fernando S enz P rez 264 274 Universidad Complutense de Madrid Datalog Educational System The Title Page means for a printed book the title page itself plus such following pages as are needed to hold legibly the material this License requires to appear in the title page For works in formats which do not have any title page as such Title Page means the text near the most prominent appearance of the work s title preceding the beginning of the body of the text The publisher means any person or entity that distributes copies of the Document to the public A section Entitled XYZ means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language Here XYZ stands for a specific section name mentioned below such as Acknowledgements Dedications Endorsements or History To Preserve the Title of such a section when you modify the Document means that it remains a section Entitled XYZ according to this d
268. ples computed However if you add a new tuple to the relation u in the local deductive database the external database will not be aware of this when computing a query on p as in DES gt assert u 4 DES p X p 1 p 2 p 3 Info 3 tuples computed If you want to mix both databases it is needed to use the metapredicate st 1 as the following session illustrates DES retract p X u X DES assert p X st u X DES p X p 1 p 2 p 3 p 4 Info 4 tuples computed Though this could be automatically provided without resorting to using the metapredicate st 1 this option is left up to the user because mixing both the deductive and the external databases in this way will lead to read all the contents of the external relation Without using st 1 only the needed contents are read for instance selecting only some tuples by a call with ground arguments as posing the query p 2 The metapredicate st 1 enforces that its predicate argument is to be located at a lower strata than the predicate in whose body the metapredicate occurs This forces to solve its argument by using both the external database engine and the deductive engine Thus in the above example u 1 is located at a lower strata than p 1 DES gt strata u 1 1 p 1 2 Fernando S enz P rez 140 274 Universidad Complutense de Madrid Datalog Educational System Recall also that to be able to mix both databa
269. pothetical queries are enabled on or not off e hypothetical Switch Enable or disable hypothetical queries on or off resp e multiline Display whether multi line input is enabled e multiline Switch Enable or disable multi line input on or off resp e nulls Display whether nulls are enabled on or not off e nulls Switch Enable or disable nulls on or off resp e order answer Display whether displayed answers are ordered by default e order answer Switch Enable or disable a default ascending ordering of displayed computed tuples on or off resp This order is overrided if the user query contains either a group by specification or a call to a view with such a specification e output Display whether display output is enabled e output Switch Enable or disable display output on or off resp e pretty print Display whether pretty print listings is enabled e pretty print Switch Enable or disable pretty print for listings on or off resp e prompt Display the prompt format e prompt Option Set the format of the prompt The value des sets the prompt to DES gt The value des db adds the current database name DB as DES DB The value plain sets the prompt to The value prolog sets the prompt to Note that for the Fernando S enz P rez 197 274 Universidad Complutense de Madrid Datalog Educational System values des and des db if a language other than Da
270. presented as datalog Rule NVs i Lines FileId Kind where i is the rule identifier running_info Flag indicating whether running info is to be displayed number of consulted rules safe Flag indicating whether program transformation for safe rules is allowed safety warnings Flag indicating whether safety warnings are enabled show_compilations Flag indicating whether SOL to DL compilations are displayed S show sql1 Flag indicating whether SOL compilations are displayed simplification Flag indicating whether program simplification for performance is allowed start path Path on first initialization state States for various flags to be restored upon exceptions S stopwatch Flag indicating stopwatch elapsed time strata Result from a stratification tapi Flag indicating whether a tapi command is being processed S timingS Flag indicating elapsed time display on off or detailed Strusted views Predicate containing trusted view names trusting Flag indicating whether a trust file is being processed user predicates List of user predicates verbose Verbose mode flag 5 16 Messages DES system messages are prefixed by Fernando S enz P rez 180 274 Universidad Complutense de Madrid Datalog Educational System Info Aninformation message which requires no attention from the user Several information messages are hidden with the command verbose off whic
271. providing help and also by adding new features to the ODBC library Also thanks to all the people providing feedback since they are guiding DES to suit more demanded requirements and in particular to the students of the subject Databases at UCM 2012 2015 Contributors are specially acknowledged Markus Triska for developing the Emacs IDE and also author of the SWI Prolog clpfd library and the students Diego Cardiel Freire Juan Jos Ortiz S nchez Delf n Rup rez Cafias Miguel Mart n L zaro Javier Salcedo G mez Pablo Guti rrez Garc a Pardo Elena Tejeiro P rez de Agreda Andr s Vicente del Cura Fernando Ord s Lorente Juan Jes s Marqu s Ortiz Sem ramis Guti rrez Quintana and Sergio Dom nguez Fuentes who developed and improved ACIDE Thanks to Yolanda Garc a and Rafael Caballero for making possible to declaratively debug Datalog and SOL databases They are also key authors in the inclusion of test case generation for SOL views In particular Yolanda took the implementation effort supported by Rafael Gabriel Aranda L pez and Sonia Est vez Mart n generated Mac OSX Snow Leopard and Leopard executables resp for versions up to DES 2 6 Enrique Mart n Mart n fixed the Linux distribution of DES 1 5 0 Finally thanks to the Spanish projects CAVI ART TIN2013 44742 C4 3 R FAST STAMP TIN2008 06622 C03 01 Prometidos CM S2009TIC 1465 and GPD UCM UCM BSCH GR35 10 A 910502 which supported this work in the context of the Un
272. pt plain compact listings on 5 15 System Variables The following are the system variables which can be used when writing strings to either the console or a file with the commands write writeln write to file and writeln to file e Scomputation_time last elapsed time due to computing eliding parsing and display time e display_time last elapsed time due to display eliding parsing and computing time e parsing_time last elapsed time due to parsing eliding computing and display time e stopwatch current stopwatch time e last_stopwatch stopwatch time for its last stop e total_elapsed_time last total elapsed time In addition any dynamic predicate of arity 1 implemented in Prolog as included in source files can be accessed as a read only system variable The following is a possibly non updated list of such predicates the file des p1 contains all declarations of such predicates cf lookups Flag indicating the number of CF lookups check_ic Flag indicating whether integrity constraint checking is enabled on or o S compact listings Flag indicating whether compact listings are enabled computed_tuples Flag with the number of computed tuples during fixpoint computation for running info display ct lookups Flag indicating the number of CT lookups current_db Flag indicating the current opened DB des sql solving Flag indicating whether DES solving is forced for external DBMSs
273. q X Warning Undefined predicate s q 1 DES p X Info 0 tuples computed DES persistent p a int mysql DES p X p 2 Info 1 tuple computed Here the external database is assumed to hold a relation q 1 with a tuple q 2 in its meaning Fernando S enz P rez 148 274 Universidad Complutense de Madrid Datalog Educational System 5 2 9 Applications Persisting predicates opens a brand new scenario for several reasons First predicates are no longer limited by available memory instead persistent predicates are using as much secondary storage as needed and provided by the underlying external database Predicate size limit is therefore moved to the external database Second processing is directed to the external database for rules that can be projected and to the deductive engine for rules that can not This way one can take advantage of the external database performance and scalability Third queries which are not possible in an external database can be solved by the deductive engine So one can extend external database expressiveness with the added features in DES Finally as several ODBC connections are allowed at a time different predicates can be made persistent in different DMBSs which allows for interoperability among external relational engines and the local deductive engine therefore enabling business intelligence applications For instance let s consider MySQL which does not support
274. r two from the single recursive rule Again adding the same recursive rule yields DES assert t X t X DES t X t 1 t 1 t 1 t 1 t 1 t 1 t 1 t 1 t 1 t 1 Info 10 tuples computed where this answer contains the outcome due to two tuples directly from the two facts and four tuples for each recursive rule The first recursive rule is source of four tuples because of the two facts and the two tuples from the second recursive rule Analogously the second recursive rule is source of another four tuples two facts and the two tuples from the first recursive rule The rule of thumb to understand duplicates in recursive rules is to consider all possible computation paths in the dependency graph stopping when a recursive node already used in the computation is reached It is also possible to discard duplicates for an atom with the metapredicate distinct 1 For instance let s consider the following with the same example above DES distinct t X Info Processing answer X distinct t X answer 1 Info 1 tuple computed Such query is equivalent to the following SOL statement provided that metadata is available for the relation t DES type t a int DES select distinct from t answer t a gt answer 1 Info 1 tuple computed As it would be expected duplicates are only discarded for the call distinct Atom but not for other occurrences of Atom during
275. recursive queries up to its current version 5 6 The following predicate can be made persistent in this RDBMS even when it is recursive DES persistent path a int b int mysql DES assert path 1 2 DES assert path 2 3 DES assert path X Y path X Z path Z Y Warning Recursive rule cannot be transferred to external database kept in local database for its processing path X Y path X Z path Z Y DES path X Y path 1 2 path 1 3 path 2 3 Info 3 tuples computed Here non recursive rules are stored in the external database whereas the recursive one is kept in the local database External rules are processed by MySQL and local rules by the local deductive engine In addition recall that you can use SQL on the current database schema for which the persistent predicate schema is known Then even special SQL features included in DES such as hypothetical queries can be used For example and following the above system session DES gt assume select 3 1 in path a b select from path answer path a int path b int gt answer 1 1 answer 1 2 answer 1 3 answer 2 1 answer 2 2 answer 2 3 Fernando S enz P rez 149 274 Universidad Complutense de Madrid Datalog Educational System answer 3 1 answer 3 2 answer 3 3 Info 9 tuples computed This example also shows that DES is able to compute more queries than an RDBMS For instance neither M
276. remain 4 1 15 1 1 Types on the Intensional Database Types can also be declared for predicates of the intensional database i e those predicates defined at least with rules not only with facts So asserting a new type constraint over an intensional relation will trigger type checking inferring types along the predicate dependency graph restricted to the typed predicate Let s consider the following situation as an example DES listing s a EG t X s X Info 3 rules listed DES type t int Error No type tuple covers all the loaded rules for t 1 t 1 t X s X Info 2 rules listed 4 1 15 1 2 Types on Propositional Relations Finally propositional relations are also subject of beign typed of course with an empty list of arguments DES type a DES gt dbschema a Info Table a The alternative syntax becomes shorter in this case indeed DES type a 4 1 15 1 3 Type Casting Type casting allows to automatically apply a type conversion to a value in order to match the declared type along tuple insertions By default type casting is disabled and can be enabled with the command type casting on For instance let s consider the following example DES type casting on DES type t a int b float c string d varchar 2 DES gt assert t 1 5 1 2 123 DES gt listing t 2 1 0 2 12 Info 1 rule listed Here a round function closest integer has been applied to the
277. rst phase the debugger builds a computation graph CC for the initial query O w r t the program P This graph represents how the meaning of the initial query is constructed from all the calls made along its computation These calls correspond to the literals in the rule bodies used in such computation which in general belong to many predicates Each node in the graph is composed of a literal and its meaning i e a set of facts See more details in CGS07 The second phase consists of traversing the CG to find either a buggy vertex or a set of related incorrect vertices The vertex associated to the initial query Q is marked automatically as non valid by the debugger The rest of the vertices are marked initially as unknown In order to minimize the number of questions asked by a declarative debugger several traversing strategies have been studied Caba05 Silv07 However these strategies are only adequate for declarative debuggers based on trees and not on graphs The currently implemented strategy already contains some ideas of how to minimize the number of questions in a CG First the debugger asks about the validity of vertices that are not part of cycles in order to find a buggy vertex if it exists Only when this is no longer possible the vertices that are part of cycles are visited e Each time the user indicates that a vertex Query FactSet is valid i e the validity of the answer for the subquery Query is ensured the tool chan
278. ry flags on off switches are not case sensitive Ending dots are considered as part of the argument wherever they are expected For instance cd behaves as cd this command changes the working directory to the parent directory In this last case the final dot is not considered as part of the argument The command 1s shows the contents of the working directory whereas 1s shows the contents of the parent directory which behaves as 1s s Filenames and directories can be specified with relative or absolute names There is no need of enclosing such names between separators For instance file or directory names can contain blanks for Windows users and you neither need to use double quotes nor are allowed to use them Since commands are submitted with a preceding slash they are only recognized as commands in this way Therefore you can use command names for your relation names without name clashes When consulting Datalog files filename resolution works as follows Ifthe given filename ends with d1 DES tries to load the file with this absolute or relative filename Fernando S enz P rez 181 274 Universidad Complutense de Madrid Datalog Educational System e If the given filename does not end with d1 DES firstly tries to load a file with dl appended to the end of the filename If such a file is not found it tries to load the file with the given filename In command arguments when applicable
279. s Info Consulting paths edge a b edge a c edge b a edge b d Info Checking user defined integrity constraint over database path X X Info Computing predicate dependency graph Info Computing strata path X Y path X Z edge Z Y Info Checking user defined integrity constraint over database path X X Info Computing predicate dependency graph Info Computing strata Error Integrity constraint violation ic X path X X Offending values in database ic b ic a path X Y edge X Y File c fernan research bddeduc des des3 10 examples paths dl Lines 10 10 end of file Info 5 rules consulted Info Computing predicate dependency graph Info Computing strata Note that the first rule for path is not rejected since in the already consulted program it is still consistent w r t to the constraint However trying to add the second rule for path makes it infeasible so that it is rejected Now only 5 rules have been asserted If the file was not included the third fact for edge then it would be accepted as a valid tree Again trying to insert such a tuple after such a program is consulted raises an error DES assert edge d a Info Checking user defined integrity constraint over database path X X Info Computing predicate dependency graph Info Computing strata Error Integrity constraint violation ic X path X X Fernando S enz P rez 65 274
280. s distribution e readmeDES3 10 txt A quick installation guide and release notes 2 1 2 Executable Distribution 2 1 2 1 Windows From the same URL above you can download a Windows executable distribution in a single archive file containing the following Fernando S enz P rez 10 274 Datalog Educational System e des exe Console executable file intended to be started from a OS command shell as depicted in the next figure C S C fernan research BDDEDUC DES DES3 10 Executables SICStus Windows p ptt tt tt ttt tt ttt ttt tt JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE JE FE x x DES Datalog Educational System v 3 10 xX x Cc oO help for help about commands E x x x x Fernando Saenz Perez c 2004 2015 x DISIA GPD UCM x Please send comments questions etc to x fernan sip ucm es x Web site x http des sourceforge net x x x x x x KX X K KX K K XK XK x This program comes with ABSOLUTELY NO WARRANTY is x free software and you are welcome to redistribute it x under certain conditions Type license for details 3 E JE E JE JE JE JE JE JE E JE DE JE DE JE DE JE DE DE DE JE DE DE JE JE JE DE JE JE JE DE JE JE JE DE JE JE JE DE JE JE JE JE JE JE JE JE JE JE JE HE DE E E HE DES e deswin exe Windows applicat
281. s comments This way batch files may contain comments The user can also interactively input such comments but again produce no effects Batch processing can include logging to produce output This is useful to feed the system with batch input and get its output in a file maybe avoiding any interactive input For example consider the following des ini excerpt Dump output to output txt log output txt pretty print off Process Datalog SQL queries and commands c examples fib fib 100 F End log nolog The result found in output txt should be DES pretty print off Fernando S enz P rez 176 274 l Universidad Complutense de Madrid Datalog Educational System Info Pretty print is off DES Process Datalog SQL queries and commands DES c examples fib Warning N 1 may raise a computing exception if non ground at run time Warning N2 is N 2 may raise a computing exception if non ground at run time Warning N1 is N 1 may raise a computing exception if non ground at run time Warning Next rule is unsafe because of variable N fib N F N gt 1 N2 is N 2 fib N2 F2 N1 is N 1 fib N1 F1 F is F2 Fl DES fib 100 F fib 100 573147844013817084101 Info 1 tuple computed DES gt End log DES gt nolog With respect to the parameters which can be passed to batch files let s consider the file numbers sql which contains a query that is intended to disp
282. s in the sequence has preceding X br X br Y Y X error Y X should be Y X Values in an even position of the sequence including nil even nil even Y odd X next X Y Values in an odd position of the sequence odd Y even X next X Y Succeeds if the cardinality of the sequence is even br is even even X not next X Y Succeeds if the cardinality of the sequence is odd br is odd odd X not next X Y Base relation br a 16 Adapted from ZCF 97 Fernando S enz P rez 251 274 Universidad Complutense de Madrid Datalog Educational System br b 6 11 Grammar file grammar d1 Parsers can also be coded as Datalog programs In this example a simple left recursive grammar analyser is coded for the following grammar rules A gt a A gt Ab A Aa It was tested with the input string ababa which is coded with the relation t F T L F for the position of token T that ends at position L t 1 a 2 t 2 b 3 t 3 a 4 t 4 b 5 t 5 a 6 a F L t F a L a F L a F M t M b L a F L a F M t M a L DES gt a 1 6 a 1 6 Info 1 tuple computed 6 12 Fibonacci file fib d1 sql ra The all time classics Fibonacci program can be coded in DES thanks to arithmetic built ins It can be formulated as follows fib 0 1 fib 1 1 fib N F N gt 1 N2 is N 2 fib N2 F2 N1 is N 1 fib N1 F1 F is F2 F1
283. s on Computer Science 225 Springer Verlag 1986 J D Ullman Database and Knowledge Base Systems Vols I Classical Database Systems and II The New Technologies Computer Science Press 1995 J Vaghani K Ramamohanarao D B Kemp Z Somogyi and P Stuckey Design Overview of the Aditi Deductive Database System In Proc of the 7th Intl Conf on Data Engineering pp 240 247 1991 J Wielemaker http www SWI Prolog org J Whaley and M Lam Cloning based context sensitive pointer alias analyses using binary decision diagrams In Prog Lang Design and Impl 2004 C Zaniolo S Ceri C Faloutsos T T Snodgrass V S Subrahmanian and R Zicari Advanced Database Systems Morgan Kauffmann Publishers 1997 U Zukowski and B Freitag The Deductive Database System LOLA In J Dix and U Furbach and A Nerode Eds Logic Programming and Nonmonotonic Reasoning LNAI 1265 pp 375 386 Springer 1997 Fernando S enz P rez 274 274
284. s section shows each supported query for TAPI communication e Query tapi sql ddl query Where sq1 ddl querycan be any SOL DDL query cf Section 4 2 4 Answer Regular Examples Input tapi create table t a int Output success Input Fernando S enz P rez 220 2 14 Universidad Complutense de Madrid Datalog Educational System tapi rename table t to q Output success e Query tapi sql dml query Where sq1 dml query can be any SOL DML query cf Section 4 2 5 Answer If successful one single line with the number of affected tuples Examples Input tapi insert into t values 3 Output 1 Input tapi insert into t values 3 Output Serror 0 Type mismatch number integer table declaration Seot e Query tapi sql dgl query Where sq1 dq1 querycan be any SOL DQL query cf Section 4 2 6 Answer relation name column name type column name type value value Fernando S enz P rez 221 274 Universidad Complutense de Madrid Datalog Educational System value value eot Where relation name is the name of the answer relation column name isa column name type is the column type value is the column value is the record delimiter and eot is the end of the transmission Remarks This DQL statement returns in the first line the name of the answer relation the first column name and its type in the next two lines and s
285. s this the expected answer for view AnimalOwner y n m mT w wN a h y y Info Buggy relation found CatsAndDogsOwner In this example tables have been trusted but it is also possible to ask the user for the validity of the involved tables in the debugging process via the command debug sql Guest trust tables no In this example session validity of table Owner would be asked to the user 5 11 1 Trusted Specifications In SQL the following scenario is very usual A set of correct views is updated to improve its efficiency The new set of views includes both new views and improved versions of some old views keeping their names and intended answers Sometimes the new usually more involved system no longer produces the expected results We allow to use the first reliable version which we call a trusted specification during the subsequent debugging session For instance let s consider that the user has corrected the former example which is now working properly Now suppose that in order to improve readability the set of views is changed by removing AnimalOwner adding instead a new view CatOrDogOwner and modifying LessThan6 and CatsAndDogsOwner which now make use of CatOrDogOwner Next the modified and new views Guest and NoCommonName remain the same this new version is located in the file examples SQLDebugger pets2 sql are listed Fernando S enz P rez 170 274 Universidad Complutense de Madrid Datalog Educatio
286. s whereas the table will contain the extensional rules facts For instance assuming that the predicate r has been made persisted already in the same connection we assert an intensional rule for p and examine its schema DES assert p X r X DES dbschema p Info Database des Info View p a int Defining SQL statement CREATE VIEW p a AS SELECT ALL FROM p des table UNION ALL SELECT ALL rell a FROM r AS rell Datalog equivalent rules p 1 p 2 Fernando S enz P rez 144 274 Universidad Complutense de Madrid Datalog Educational System p X i r X If you change the current database to the external one and request the schema for p you get DES use db mysql DES dbschema p Info Database mysql Info View p a integer 4 which is the schema of view p as provided by the external database system Now the detailed metadata information supplied by des is not available in the external database Also note that the above couple of commands can be simply written as a single one without resorting to change the current database with DES dbschema mysql p 5 2 6 Removing Predicate Persistence One can make a given predicate non persistent by simply dropping its assertion as in DES drop assertion persistent p a int mysql This retrieves all the data stored in the external database and stores it back in the in memory database of DES In addition to the
287. se with its own processing to derive the meaning of the predicate Therefore all the deductive computing power is preserved although the external persistent media lacks some features as for instance recursion think of MySOL and MS Access Anyway such rules which are not projected to the external database are stored on it as metadata information This is needed to restore the complete definition of a persistent predicate upon restoring c f next section Further releases might contain relaxed conditions The following system session shows an example of this DES open db access DES persistent q a int DES assert q X X 1 q Y X Y 1 DES gt select top 3 from q void answer 1 Info 1 tuple computed DES gt des select top 3 from q answer q a int gt answer 1 answer 2 answer 3 Info 3 tuples computed Any time a predicate is made persistent its associated connection is opened if it not was opened already the current connection is not changed anyway The connection is not closed even when you drop the assertion see Section 5 2 6 5 2 4 Restoring Predicates As expected if you make a predicate persistent and quit DES in a next session you can recover the state of this predicate It is simply done by submitting again the same assertion as used to make the predicate persist for the first time However note that any rule in the in memory database for such a predicate will be persis
288. ses the external database must be the current one Otherwise only the tuples computed with the rules in the deductive database are obtained DES use ddb Info Computing predicate dependency graph Info Computing strata DES p X p 1 p 4 Info 2 tuples computed Here as the rule p X st u X has been kept in the local database the data source for u 1 is only coming from this database and the external tuples u 2 and u 3 are not retrieved Finally one can retract the rules previously asserted as well For instance DES gt retract p 1 DES retract p X r X 5 2 3 Processing a Persistence Assertion Processing a persistence assertion means to make persistent a predicate i e all of its current rules as well as rules added afterwards are stored in a persistent media as a relational database A fact is projected to a table whereas a rule is translated into an SQL view Each persistent predicate is translated into a table for holding such facts and a view which is the union of all the SQL translations for its rules Translating rules into SQL views includes an adaptation of Draxler s Prolog to SQL compiler Drax92 Any rule belonging to the definition of a predicate pred which is being made persistent is expected in general to involve calls to other predicates Each callee such other called predicate can be An existing relation in the external database A persistent predicate restored alre
289. sible DES gt duplicates on DES t X X Info Processing answer ti X X answer answer Info 2 tuples computed 4 1 8 Negation DES ensures that negative information can be gathered from a program with negated goals provided that a restricted form of negation is used Stratified negation Ullm95 This broadly means that negation is not involved in a recursive computation path although it can use recursive rules The following program illustrates this point a not b b c d c b 3 In file negation d1 located at the examples distribution directory Adapted from RSSWF97 Fernando S enz P rez 37 274 Universidad Complutense de Madrid Datalog Educational System The query a succeeds with the meaning a Observe also that not a does not succeed i e its meaning is the empty set If you are interested in how programs with negation are solved you can find useful the following commands cf Section 5 17 7 DES pdg Nodes d 0 a 0 b 0 c 0 Arcs a 0 b 0 c 0 b 0 b 0 d 0 b 0 c 0 DES strata d 0 1 a 0 2 b 0 1 c 0 1 The first command shows the predicate dependency graph see e g ZCF 97 for the loaded program First nodes in the graph are shown in a list whose elements P are predicates with their arities with the form predicate arity Next arcs in the graph are shown in a list whose elementes are either P Q or P Q where P and Q are nodes in the graph
290. so oa E ideis iei edidere 254 M Related ro qum EUN 256 bl D d ctye Database SYSTEMS Usern big o E n E ERR en GNU M 256 8 2 Systems with Formal Relational Query Languages iuis 257 8 3 Technological DOGNsPeri enne ventas eot rta re ne reae i 258 9 Put re EDlSncemGPUEs inan n d UII IU CE ID RU NON QUI MD RID D MN MIR 258 TO Caveats and Lunia tans 258 DE Release NOIGB condat s bind ean tinned E SEEE EEES E RES 260 11 1 Version 3 10 of DES released on January 2186 2015 ieicssiiaceriannainerasenaniaten 260 12 Acknowledgements uina fentaesinecrantatorieteetinccnma lectin cred LEESE SEESE SES NESSE 262 r a a 263 iid o ah A E E 271 Fernando S enz P rez 2 14 Universidad Complutense de Madrid Datalog Educational System 1 Introduction The Datalog Educational System DES is a free open source multiplatform portable Prolog based implementation of a deductive database system DES 3 10 is the current implementation which enjoys Datalog Relational Algebra and SOL query languages full recursive evaluation with memoization techniques full fledged arithmetic stratified negation duplicates and duplicate elimination restricted predicates integrity constraints ODBC connections to external relational database management systems RDBMSs Datalog and SQL tracers a textual API for external applications and novel approaches to hypothetical SOL queries and Datalog rules declarative debugging of Datalog
291. stency constraints are allowed for the same predicate and arity the last declaration is the one to persist overriding previous declarations for such predicate 4 1 15 3 Primary Key A primary key constraint specifies that no two tuples have the same values for a given set of columns Next a system session illustrates the use of a primary key assertion DES type p a int b string DES pk p a Primary key constraints are trivially satisfied when duplicates are disabled as relations are considered as sets irrespective of the current database instance that may contain duplicates for the arguments in the primary key Fernando S enz P rez 59 274 Universidad Complutense de Madrid Datalog Educational System Several primary key declarations are allowed for the same predicate and arity the last declaration is the one to persist overriding previous type declarations for such predicate DES pk p al DES pk p c Error Unknown column c DES pk p a a A relation already defined with facts or rules is checked for consistency when trying to assert a new primary key constraint DES type q a int b int DES assert q 1 1 DES assert q 2 2 DES assert q 1 2 DES pk q a Error Primary key violation q a Offending values in database pk 1 Info Constraint has not been asserted 4 1 15 4 Candidate Key Uniqueness Constraint As a primary key a candidate key c
292. stmt DOLstmt INTERSECT DOLstmt WITH LocalViewDefinition LocalViewDefinition DQLstmt ASSUME LocalAssumption LocalAssumption DQLstmt LocalViewDefinition RECURSIVE Schema AS DQLstmt RECURSIVE DQLstmt NOT IN Schema LocalAssumption DOLstmt NOT IN Schema SELECTstmt SELECT TOP Integer ALL DISTINCT SelectExpressionList FROM Rels WHERE WhereCondition GROUP BY Atts HAVING HavingCondition ORDER BY OrderDescription FETCH FIRST Integer ROWS ONLY Atts Att Att OrderDescription Att ASC DESC Att ASC DESC SelectExpressionList SelectExpression SelectExpression SelectExpression UnrenamedSelectExpression RenamedExpression UnrenamedSelectExpression Att RelationName Att RelationName ArithmeticExpression DOLstmt RenamedExpression Fernando S enz P rez 101 274 d Universidad Complutense de Madrid Datalog Educational System UnrenamedExpression AS Identifier ArithmeticExpression Opl ArithmeticExpression ArithmeticExpression Op2 ArithmeticExpression ArithmeticFunction ArithmeticExpression ArithmeticExpression Number Att RelationName Att ArithmeticConstant DQLstmt Op1 eX Op2 1 1 1 xem NV ELS 0191 1 NISI ArithmeticFunction sqrt 1 1ln 1 log 1 log 2 sin 1 cos 1 tan 1 cot 1 asin 1 acos 1 atan 1 acot 1 abs 1 flo
293. stor ancestor The two example queries above can be formulated in SOL as select from ancestor where ancestor tom select child father mother from father mother where father child mother child And also as RA queries as ra select ancestor tom ancestor project child father mother father zjoin father childzmother child mother 6 5 Basic Recursion Problem file recursion dl This example is intended to show that queries involving recursive predicates do terminate thanks to DES fixpoint solving by contrast with Prolog s usual SLD resolution p 0 p X p X pti The query p X returns the inferred facts from the program irrespective of the apparent infinite recursion in the second rule Note that the Prolog goal p 1 does not terminate You can easily check it out with prolog p 1 6 6 Transitive Closure files tranclosure dl sql ra With this example we show a possible use of mutual recursion by means of a Datalog program that defines the transitive closure of the relations p and q It can be consulted with c tranclosure p a b p c d q b c q d e pqs X Y p X Y 13 Taken from Diet87 Fernando S enz P rez 242 2 14 Universidad Complutense de Madrid Datalog Educational System pqs X Y q X Y pqs X Y pas X Z2 p 2 Y pqs X Y pas X Z q 2 Y The query pqs X Y returns the whole set of inferred facts that model the transitive closure
294. t assert t 1 Error Primary key violation t a when trying to insert t 1 Error Asserting rules due to integrity constraint violation DES use db des When the current database is the local database des the external table t is not visible So the following fact is asserted in the local database DES insert into t values 1 Info 1 tuple inserted Any other attempt to assert the same fact t 1 is rejected DES assert t 1 Error Primary key violation t a when trying to insert t 1 Error Asserting rules due to integrity constraint violation The following would also go to the local database DES insert into t values 1 Fernando S enz P rez 133 274 Universidad Complutense de Madrid Datalog Educational System Error Primary key violation t a when trying to insert t 1 Error Asserting rules due to integrity constraint violation Info 0 tuples inserted Finally any persistent predicate see Section 5 2 which has attached constraints is checked for its consistency irrespective of the external database it is stored Also any of the supported constraints can be attached to persistent predicates therefore providing a high expressivity and declarative consistency level 5 1 10 Caveats and Limitations This section lists some caveats and limitations of the current implementation of ODBC connections to external data sources 5 1 10 1 Caching Data in relational tables are cached in
295. t but changing it is not allowed 0 PREAMBLE The purpose of this License is to make a manual textbook or other functional and useful document free in the sense of freedom to assure everyone the effective freedom to copy and redistribute it with or without modifying it either commercially or noncommercially Secondarily this License preserves for the author and publisher a way to get credit for their work while not being considered responsible for modifications made by others This License is a kind of copyleft which means that derivative works of the document must themselves be free in the same sense It complements the GNU General Public License which is a copyleft license designed for free software We have designed this License in order to use it for manuals for free software because free software needs free documentation a free program should come with manuals providing the same freedoms that the software does But this License is not limited to software manuals it can be used for any textual work regardless of subject matter or whether it is published as a printed book We recommend this License principally for works whose purpose is instruction or reference 1 APPLICABILITY AND DEFINITIONS Fernando S enz P rez 263 2 14 Universidad Complutense de Madrid Datalog Educational System This License applies to any manual or other work in any medium that contains a notice placed by the copyright holder sayi
296. t SELECT above when the current database is des DES solves the query in this case retrieving tuples from DDB and in the second case second SELECT above the query is directly submitted to the EDB which solves it In the first case the SOL statement is compiled to Datalog and solved by the deductive engine and in the second one data and metadata are collected from EDB and shown as a result Retrieved types from an external database differ in general to those managed by DES as it can be seen in this example This is not an issue as long as equivalent types are found in this case number integer is considered as equivalent to integer 4 as numeric size constraints are not handled by DES up to now As already introduced in Section 5 1 7 even when a connection is opened their data and metadata are not known unless it becomes the current database as illustrated next DES use db mysql DES create table q a int DES insert into q values 2 Info 1 tuple inserted DES select from q answer a integer 4 gt answer 2 Info 1 tuple computed DES use db des DES select from q Error Unknown table or view q DES q X Warning Undeclared predicate s q 1 Info 0 tuples computed However a persistent predicate does have access to data and metadata in the EDB it was made persistent To show this and following the above system session let s assert the following rule DES assert p X
297. t ordering affects the result of a computation The next example shows how depending on the order criteria and coupled with a top N query the answer can be different DES top 1 order_by t X Y X a Info Processing answer X Y in the program context of the exploded query answer X Y top 1 p0 Y X p0 Y X 77 order_by t X Y X a answer 1 3 Info 1 tuple computed DES top 1 order_by t X Y X d Info Processing answer X Y in the program context of the exploded query answer X Y top 1 p0 Y X p0 Y X a order_by t X Y X d answer 3 1 Info 1 tuple computed Fernando S enz P rez 123 274 Universidad Complutense de Madrid Datalog Educational System 5 System Description This section includes descriptions about the connection to relational database systems via ODBC connections persistence safety and computability issues modes syntax checking source to source transformations the multiline mode and development modes the declarative debuggers and tracers the test case generator the batch processing the configuration file the system variables and messages the lists of all the available commands the Textual API the ISO escape character syntax and finally some notes on the implementation of DES 51 RDBMS connections via ODBC DES provides support for connections to relational database management systems RDBMSs in
298. tabase Recall that the local analysis relies on the weak condition that assumes that the consulted rules are safe Next an example of unsafe rule including negation is provided As introduced such a rule when asserted raises an error but it is asserted in any case in order to show its misbehaviour DES assert q 0 DES assert p X not q X Error not q X might not be correctly computed because of the unrestricted variable s X Warning This rule is unsafe because of variable s X DES p X Info 0 tuples computed As the domain of X in p X is not range restricted no tuples are found in the left to right top down search If we submit a query as p 1 the negation not q 1 should be proven DES p 1 Info 0 tuples computed However as illustrated there is no tuples in the answer for such a query The misbehaviour of the rule for p 1 emerges here due to the way answers are computed via an extension table As far as the query p 1 is subsumed by a previous call p X results in the extension table are reused But if the extension table is cleared then p 1 can be proved DES clear et DES p 1 Fernando S enz P rez 155 274 Universidad Complutense de Madrid Datalog Educational System p 1 Info 1 tuple computed Notice that both calls can occur during a computation disabling the opportunity to clear the extension table as in DES p X p 1 Info Proc
299. talog is selected the language name preceded by a slash is also displayed before as DES SOL reorder goals Display whether pushing equalities to the left is enabled reorder goals Switch Enable or disable pushing equalities to the left on or off resp Equalities in bodies are moved to the left which in general allows more efficent computations Synonyms reset reset Synonym for restore_default_status restore default status Restore the status of the system to the initial status i e set all user configurable flags to their initial values including the default database and the start up directory running info Display whether running information as the incremental number of consulted rules as they are read is to be displayed running info Switch Enable or disable display of running information on or off resp safe Display whether safety transformation is enabled safe Switch Enable or disable program transformation for unsafe rules on or of f resp safety warnings Display whether safety warnings are enabled safety warnings Switch Enable or disable safety warnings on or off resp show compilations Display whether compilations from SOL DQL statements to Datalog rules are to be displayed show compilations Switch Fernando S enz P rez 198 274 Universidad Complutense de Madrid Datalog Educational System Enable or disable display of extended information a
300. tarting with are remarks which are not needed to be included they are only for explanatory purposes e Types returned B a database or predicate handled i DES include string varchar string varchar string varchar N varchar string char N char N number integer int number float float Where Nis an integer greater than 0 e Types returned by ODBC databases depend on the concrete external DBMS e Character strings as returned by DES are enclosed between single quotes This allows in particular to distinguish these strings from the nu11 value which can occur in any data type e Datalog identifiers in TAPI inputs must be enclosed between single quotes should they contain special characters as blanks commas and quotes If an Fernando S enz P rez 204 274 Universidad Complutense de Madrid Datalog Educational System identifier contains a single quote this must be written twice as e g pete s which represents pete s e DDL Data Definition Language statements for SOL and Datalog include o CREATE TABLE SOL o CREATE VIEW SOL o RENAME SOL o strong constraint Datalog e DQL Data Query Language SQL statements include o SELECT o WITH e Any input to command tapi is processed as a DES input However output is only formatted for those commands and queries as listed in sections 5 18 2 and 5 18 3 So feeding unsupported inputs to tapi might produce unexpected
301. ted too This is to say that for instance if you have persisted already a predicate which is not restored already and you have a rule asserted in the in memory database for this predicate then the result of restoring it is the union of the asserted rule and the rules in the external database For instance let s consider the following system session DES persistent p a int mysql Fernando S enz P rez 142 274 Universidad Complutense de Madrid Datalog Educational System DES assert p 1 Now let s assume another system session quit and restart DES DES assert p 2 DES persistent p a int mysql Info Recovering existing data from external database for p DES listing pi p 2 Info 2 rules listed As it can be seen the resulting database is composed of the union of the external rules and the local rules Finally restoring compiled rules in a different system session does not recover source rules as they were originally asserted They are only recovered as is i e compiled form and without textual variable names as they were originally typed in the same system session Let s consider the following DES persistent p a int mysql DES assert p X X 1 X 2 DES listing p X X 1 X 2 Info 1 rule listed DES drop assertion persistent p a int mysql DES listing p X x 1 X 2 Info 1 rule listed DES persistent p a int mysql DE
302. ter tc size Display the minimum and maximum number of tuples generated for a test case tc size Min Max Set the minimum and maximum number of tuples generated for a test case tc domain Display the domain of values for test cases tc domain Min Max Set the domain of values for test cases between Min and Max Tabling clear et Delete the contents of the extension table list et List the contents of the extension table in lexicographical order First answers are displayed then calls list et Name List the contents of the extension table matching Name First answers are displayed then calls list et Name Arity List the contents of the extension table matching the pattern Name Arit y First answers are displayed then calls TAPI enabled Operating System cat Filename Type the contents of Filename enclosed between the following lines BEGIN AbsoluteFilename END AbsoluteFilename Fernando S enz P rez 188 274 Universidad Complutense de Madrid Datalog Educational System Synonym type Filename e cd Set the current directory to the directory where DES was started from TAPI enabled e cd Path Set the current directory to Path TAPI enabled e del Filename Synonym for rm FileName e e Filename Synonym for edit Filename e edit Filename Edit Filename by calling the predefined external text editor This editor is set with the command set_editor e dir S
303. th a CREATE TABLE statement or submitting void definitions Let s consider the mutually recursive definition for even and odd integers With the first alternative DES create table odd x int DES even x project 0 dual union project x 1 odd DES odd x project x 1 even With the second alternative DES even x project 0 dual DES odd x project x 1 even DES even x project 0 dual union project x 1 odd This is possible because the assignment operator rewrites any previous definition 4 3 3 RA Grammar Here terminal symbols are Parentheses commas semicolons single dots asterisks and apostrophes Other terminal symbols are completely written in capitals as SELECT However they are recognized by the parser in any letter case Percentage symbols 5 start comments User identifiers must start with a letter and consist of letters and numbers otherwise a user identifier can be enclosed between quotation marks both square brackets and double quotes are supported and contain any characters Next RAstmt stands for a valid RA statement This grammar is built following Diet01 so that RA files read in WinRDBI a tool described in that book are also read in DES DES grammar extends WinRDBI grammar in providing support also for Theta join operator outer join operators duplicate elimination distinct operator grouping group by operator recursive queries and renaming operator this avoids
304. that the program is not stratifiable The system warned of this situation when the program was loaded shaves 7o man shaved Figure 4 Predicate Dependency Graph for russell dl However even when a program is non stratifiable there may exist a query with an associated predicate dependency subgraph so that negation does not occur in any cycle For instance this occurs with the query man X in this program DES man X Info Stratifiable subprogram found for the given query man barber man mayor Info 2 tuples computed Here the system recomputed the strata for the predicate dependency subgraph and informed that it found a stratifiable subprogram for such a query In this simple case no more negations were involved in the subgraph but more elaborated dependencies can be found in other examples cf Sections 6 10 and 6 11 Stratification may be needed for programs without negation as long as a temporary view contains a negated goal Consider the following view under the program relop dl rules in the program with negation are not present in the subgraph for the query d X DES gt d X a X not b X Info Processing d X a X not b X d a2 d a3 Info 2 tuples computed In this view the query d X is solved with a solve by stratum algorithm described in Section 5 20 3 In this case this means that the goal b X is solved before obtaining the meaning of d X because b is in a lower stratu
305. the form Relation NATURAL JoinOp Relation or Relation JoinOp Relation JoinCondition Where Relation is as before without any limitation JoinOP is any join operator including INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN and FULL OUTER JOIN and JoinCondition can be either ON Condition or USING Columni ColumnN Where Condition is as described in a WHERE clause and Column ColumnN are common column names of the joined relations Omitting the condition in a non natural join is equivalent to a true condition The clause USING applies to natural joins Examples Given the tables CREATE TABLE s a int b int CREATE TABLE t a int b int CREATE TABLE v a int b int We can submit the following queries SELECT FROM t INNER JOIN s ON t a s a AND t b s b SELECT FROM t NATURAL INNER JOIN s SELECT FROM t INNER JOIN s USING a b SELECT FROM t INNER JOIN s USING a SELECT FROM t INNER JOIN s USING b SELECT FROM t INNER JOIN s ON t a s a AS s v WHERE s a v a SELECT FROM t LEFT JOIN s ON t a s a RIGHT JOIN v ON t a v a Fernando S enz P rez 88 2 14 Universidad Complutense de Madrid Datalog Educational System SELECT FROM t FULL JOIN s ON t a s a Note The default keyword ALL following SELECT retains duplicates whenever duplicates are enabled command duplicates on In turn DISTINCT discards duplicates But note that if duplicates are disabl
306. the persistent predicate SELECT FROM t When such a query is directed to the deductive engine note that if a condition is included it would be computed by this engine as opposed to directing the query to the external database as in DES access des select from q where a 0 Info SELECT FROM q Info SQL statement compiled to answer A q A A 0 answer q a int gt answer 1 Info 1 tuple computed Persistent predicates can be combined even with external data coming from other ODBC connection as in DES gt open_db access DES gt dbschema t Info Database access Info Table t a INTEGER 4 DES select from t answer a INTEGER 4 gt answer 1 answer 2 Info 2 tuples computed DES p X t X Info Processing answer X P X t X answer 1 Info 1 tuple computed Here the current database is access and all its data is available as already introduced in Section 5 1 2 in particular the table t which contains the tuple t 1 Moreover a persistent predicate can refer to external relations tables and views as well Assuming the external table u in MySQL DES select from u answer a integer 4 gt answer 2 answer 3 Fernando S enz P rez 139 274 Universidad Complutense de Madrid Datalog Educational System Info 2 tuples computed DES assert p X u X DES p X p 1 p 2 p 3 Info 3 tu
307. the results are to be displayed via the option display default option added to the corresponding tables add option or the contents of the tables replaced by the generated test case tuples replace option For experimenting with the domain of attributes we provide the command tc domain Min Max which defines de range of values the integer attributes may take This range is determinant in the search of test cases in a constraint network that can easily become too complex as long as involved views grow So keeping this domain small allows to manage bigger problems This range is set by default to 5 5 String constants occurring in all the views on which the view for the test case generated depends are mapped to integers in the same domain starting from 0 So the size of the domain has to be larger enough to hold at least the string constants in those views Fernando S enz P rez 175 2 14 Universidad Complutense de Madrid Datalog Educational System Also we provide the command tc size Min Max for specifying the size of the test case generated in number of tuples Again keeping this range small helps in being able to cope with bigger problems This range is set by default to 1 7 Currently we provide support for integer and string attributes Binary distributions and both SICStus and SWI Prolog source distributions allow the functionality described 5 13 Batch Processing There are three ways for processing batch
308. though not tested An external view for which there is no a mate Datalog predicate is tagged as an extensional predicate so that only one fixpoint iteration is needed to solve it Extensional database optimization also applies to external relations Incremental building of the PDG which improves performance a bit The equivalent SOL statement to a given RA expression can be inspected by enabling SQL listings with the command show sq1 on The equivalent Datalog rules were possible to show already with the command show compilations on Simplified compilations from RA to SOL Relaxed requirement for SOL identifiers SOL keywords can be used as identifiers for tables views and attributes In order to disambiguate it might be necessary to enclose the identifier between SQL delimiters A relation with a name which coincide with the name of a Datalog metapredicate with the same arity is rejected Constants can include escaped single quotes Upgraded DDL info messages for external databases Parameterized batch processing Batch files can contain references to input parameters parv1 parv2 Coloured printed and online manual Updated colors for the console in ACIDE New commands Fernando S enz P rez 260 274 Universidad Complutense de Madrid Datalog Educational System rdg Display the current relation dependency graph i e the PDG restricted to show only nodes with type information tables and views TAPI e
309. through your agents or retailers of that edition to the public It is requested but not required that you contact the authors of the Document well before redistributing any large number of copies to give them a chance to provide you with an updated version of the Document 4 MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above provided that you release the Modified Version under precisely this License with the Modified Version filling the role of the Document thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it In addition you must do these things in the Modified Version A Use in the Title Page and on the covers if any a title distinct from that of the Document and from those of previous versions which should if there were any be listed in the History section of the Document You may use the same title as a previous version if the original publisher of that version gives permission B List on the Title Page as authors one or more persons or entities responsible for authorship of the modifications in the Modified Version together with at least five of the principal authors of the Document all of its principal authors if it has fewer than five unless they release you from this requirement C State on the Title page the name of the publisher of the Modified Version as the publisher D Preserve
310. timizations that can be enabled or disabled at user request this feature is more oriented to the system implementors for knowing the impact on performance of such optimizations Each optimization is listed in a subsection along with the command between brackets that is used for disabling or enabling it with the switch off and on respectively Fernando S enz P rez 226 2 14 Universidad Complutense de Madrid Datalog Educational System 5 20 4 1 Complete Computations optimize cc Each call during the computation of a stratum stratum saturation is remembered in addition to its outcome in the answer table Even when the calls are removed in each fixpoint iteration recall Section 5 20 2 most general ones do persist as a collateral data structure to be used for saving computations should any of them is called again during either computing a higher stratum or a subsequent query solving cc stands for completed computation so that if a call is marked as a completed computation it is not even tried if called again This means the following two points 1 During the computation of the memo function calls already computed are not tried to be solved again and only the entries in the memo table are returned 2 Moreover computing the memo function is completely avoided if a subsuming already computed call can be found In the first case that saves solving goals in computing the memo function In the second case that completely sa
311. tion links to an empty database let s start creating some database objects Note that depending on the installed MySOL ODBC driver version annoying messages might be displayed DES create table t a varchar 20 primary key DES create table s a varchar 20 primary key DES create view v a b as select from t s DES insert into t values 1 Info 1 tuple inserted DES insert into s select from t Info 1 tuple inserted DES insert into s values 2 Info 1 tuple inserted Next one can ask for the database schema metadata with the command DES dbschema Info Database mysql Info Table s father father varchar 60 child varchar 60 s a varchar 60 t a varchar 60 Info View s v a varchar 60 b varchar 60 Defining SQL statement SELECT ALL t a AS a s a AS b FROM t INNER JOIN S Info No integrity constraints The SQL text for external views is displayed if the DBMS is supported DB2 MySQL Oracle and PostgreSQL have been tested on Windows and the SQL statement is recognized by the DES SQL dialect In addition the PDG is also built for the external relations Note that the SQL text will not coincide in general with the one in the user Fernando S enz P rez 125 274 Universidad Complutense de Madrid Datalog Educational System submitted statement as external databases keep their own internal representations for view statatements All of these tables a
312. tions SQL statements can refer to Datalog relations and SQL does not allow relations of the same name and different arities DES type p a int Error Cannot add types to a relation with several arities Relation p A Datalog type declaration is analogous to the creation of an SQL table with the same outcome defining metadata for a relation relation name column names and types DES gt dbschema p Info Table p a int b string DES gt drop table p DES gt dbschema p Info No table or view found with that name DES gt create table p a int b string DES gt dbschema p Info Table p a int b string It is also possible to omit column names In this case they are automatically provided with names 1 2 and so on DES type p int string DES gt dbschema p Info Table p 1 int 2 string Let s consider the following session where it can be seen that the system monitors type constraints in both Datalog and SQL queries DES type p int string DES gt assert p a b Error Type mismatch p 1 number integer vs string char 1 p 1 number integer 2 string varchar Fernando S enz P rez 56 2 14 Universidad Complutense de Madrid Datalog Educational System DES assert p 1 a DES p X Y p 1 a Info 1 tuple computed DES gt select from p answer p 1 int p 2 string gt answer 1 a Info 1 tuple computed DES insert i
313. to resort to building new relations with the assignment operator although it is supported too RAstmt SELECT WhereCondition RArel Selection sigma PROJECT SelectExpressionList RArel Projection pi Fernando S enz P rez 111 274 Universidad Complutense de Madrid Datalog Educational System RENAME Schema RArel Renaming rho EN RArel Duplicate elimination T PRODUCT RArel Cartesian Product dut DIVISION RArel Division T UNION RArel Set union sr DIFFERENCE RArel Set difference INTERSECT RArel Set intersection nei NJOIN RArel Natural join nn ZJOIN WhereCondition RArel Zeta join s LJOIN WhereCondition RArel Left outer join iis RJOIN WhereCondition RArel Right outer join iier FJOIN WhereCondition RArel Full outer join NLJOIN RArel Natural left outer join i NRJOIN RArel Natural right outer join GROUP BY GAtts SelectExpressionList HavingCondition RArel Grouping an OrderDescription RArel Sorting ie Integer RArel Top N query RArel RAstmt TENE View definition assignment statement RAview Schema RAstmt Relation Schema ViewName ViewName ColName ColName GAtts 1 Fernando S enz P rez 112 274 Universidad Complutense de Madrid Datalog Educational System Atts Where Atts Condition SelectExpressionList HavingCondition and OrderDescription are as in the SQL grammar 4 4 Prol
314. torage or distribution medium is called an aggregate if the copyright resulting from the compilation is not used to limit the legal rights of the compilation s users beyond what the individual works permit When the Document is included in an aggregate this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document If the Cover Text requirement of section 3 is applicable to these copies of the Document then if the Document is less than one half of the entire aggregate the Document s Cover Texts may be placed on covers that bracket the Document within the aggregate or the electronic equivalent of covers if the Document is in electronic form Otherwise they must appear on printed covers that bracket the whole aggregate 8 TRANSLATION Translation is considered a kind of modification so you may distribute translations of the Document under the terms of section 4 Replacing Invariant Sections with translations requires special permission from their copyright holders but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections You may include a translation of this License and all the license notices in the Document and any Warranty Disclaimers provided that you also include the original English version of this License and the original versions of those notices and disclaimers In case of a disagreement between the tr
315. tripe A 144 5206 Removing Predicate Persistence ous seden senescere ble iieri E a 145 5 2 7 Closing a Persistent Predicate Connection iocans reinen 146 5 2 8 Schenta and Data Visibility a aiia tape epe tS eoe Eb EnbEE FL QnF EYE EEpIE Ie IH REP PIRE 147 B9 APPIANO S erisin eiu dica EEEE EEEE PEE dd bna PR EIE 149 UAUEA T S 151 2210 Incomplete Mediipisusicunsbovstcn vebiehie e EDU enit Aan 151 5 2 10 2 Openme end Closing C ODINPCUORIS qs tiere ee rebar tien etta Ehe tere ttn 152 821035 Abeolshune Ped REB uode ER NES t dapi tdpi dle CUM uda Fool adiu fS Linde RE 152 Fernando S enz P rez 5 274 Universidad Complutense de Madrid Datalog Educational System 52104 NUI VAUS c m 153 5105 External Database PROCOSSIIP cetee peke poteet pt EE b PERI HL PUIE epu RES MARII 153 52105 Supported Platforms ione ette e etre orate tante cainnean aseita 153 59 palety and Not cer T 153 mal Classical DUE moeta Nne bu eH UE sb de EA SERO OU Au anieia 153 5 3 2 Safety for Aggregates and Duplicate Elimination 156 52 Unsafe Rules from Compilations sene soto puso aver uie nace 157 g4 Modes for Unsate Predicates eut osdiientotriur AE Prts ipte 158 50 SY BNE CCC RIE Y 159 INNEEII 159 5 92 gt Undefined DIS dte S eccendeb lnea a a iopsebct la 159 599 Singleton Variables T eden nee 159 594 Set Vane o o c 160 5 5
316. ts as explained in Section 4 1 15 7 Also there is provision for several table constraints PRIMARY KEY Column Column Primary key constraint for one or more columns UNIQUE Column Column Uniqueness constraint for one or more columns Also allowed the non standard alternative syntax CANDIDATE KEY Column Column e FOREIGN KEY Columnil ColumnN REFERENCES TableName Columnl ColumnN Referential integrity constraint for one or more columns e CHECK CheckConstraint Check constraint as listed next Check constraints e Condition AsinaWHERE clause e ColumnR1 ColumnRN DETERMINED BY ColumnL1 ColumnLN Functional dependency ColumnL1 ColumnLN ColumnR1 ColumnRN Non Standard Allowed types include e CHAR Fixed length string of 1 e CHAR n Fixed length string of n characters Fernando S enz P rez 79 274 Universidad Complutense de Madrid Datalog Educational System e VARCHAR n Variable length string of up to n characters e VARCHAR or STRING Variable length string of up to the maximum length of the underlying Prolog atom INTEGER or INT Integer number e REAL Real number Numeric types rely on the underlying Prolog system see Section 4 1 15 1 Automatic type casting is disabled by default but can be enabled with type casting on to behave similar to SOL systems By default strong typing is applied Examples CREATE TABLE t a INT PRIM
317. tt is expected in the result set Then we can debug that view as follows DES gt debug_sql Guest Info Debugging view Guest Guest 1 Mark Costas Guest 2 Helen Kaye Guest 3 Robin Scott WNE l Input Is this the expected answer for view Guest y n m mT w wN a h n n Info Debugging view CatsAndDogsOwner 1 CatsAndDogsOwner 1 Wilma 2 CatsAndDogsOwner 2 Lucky 3 CatsAndDogsOwner 3 Rocky Input Is this the expected answer for view CatsAndDogsOwner y n m mT w wN a h y n Info Debugging view NoCommonName Fernando S enz P rez 169 274 Universidad Complutense de Madrid Datalog Educational System 1 NoCommonName 1 2 NoCommonName 2 3 NoCommonName 3 Input Is this the expected answer for view NoCommonName y n m mT w wN a h y n Info Debugging view LessThan6 LessThan6 1 LessThan6 2 LessThan6 3 LessThan6 4 amp WHNHe l Input Is this the expected answer for view LessThan6 y n m mT w wN a h yl y Info Debugging view AnimalOwner AnimalOwner 1 Kitty cat AnimalOwner 1 Wilma dog AnimalOwner 2 Lucky dog AnimalOwner 2 Wilma cat AnimalOwner 3 Oreo cat AnimalOwner 3 Rocky dog AnimalOwner 4 Cecile turtle AnimalOwner 4 Chelsea dog ONHUBWNE l Input I
318. ttribute Variable which should occur in Query Nulls are simply ignored e times Query Variable Result Compute in Result the product of all the numbers in the result set for the query Query and the attribute Variable which should occur in Query Nulls are simply ignored e avg Query Variable Result Compute in Result the average of the numbers in the result set for the query Query and the attribute Variable which should occur in Query Nulls are simply ignored e min Query Variable Result Compute in Result the minimum of the numbers in the result set for the query Query and the attribute Variable which should occur in Query Nulls are simply ignored If there are no such numbers it returns nu11 e max Query Variable Result Compute in Result the maximum of the numbers in the result set for the query Query and the attribute Variable which should occur in Query Nulls are simply ignored If there are no such numbers it returns nu11 Fernando S enz P rez 119 274 Universidad Complutense de Madrid Datalog Educational System 4 5 8 Null related Predicates e is null Term Succeed if Termis bound to a null value It raises an exception if Term is a variable is not null Term Succeed if Termis not bound to a null value It raises an exception if Termis a variable 4 5 9 Duplicates The following built ins take effect when duplicates are enabled via the command duplicates on e distinct Quer
319. tuple in the result set of the view not verifying the where condition In queries containing aggregate functions this tuple either does not satisfy either the where condition or the having condition Set operations are also allowed in both PTC and NTC generation It is possible to obtain a test case which is both positive and negative at the same time thus achieving predicate coverage with respect to the where and having clauses in the sense of AO08 We will call these tests PNTCs For instance let s consider the following system session DES create table t a int primary key DES create view v a as select a from t where a 5 DES test case v Info Test case over integers t 5 t 5 The test case t 5 t 5 j is a PNTC However a PNTC is not always possible to be generated For instance it is possible for the following view to generate both PTCs and NTCs but no PNTC create view v a as select a from t where a 1 and not exists select a from t where a lt gt 1 The only PTC for this view is t 1 modulo duplicates If you want check this ensure that a minimum test case size of 1 has been set with the command tc_size There are many NTCs as e g t 2 and t 1 t 2 The command test case View Options allows two kind of options first to specify which class of test case is to be generated a11 PNTC the default option positive PTC or negative NTC The second option specifies an action
320. turn A player wins if there is only one token in other player s turn mis re game This can be formulated with the next program win nim take gt one left win nim take Ntake one left win nim take gt enough win nim win nim take Ntake enough win nim one left total N count take C Fernando S enz P rez 73 274 Universidad Complutense de Madrid Datalog Educational System N C 1 enough total N count take C N C 0 total 4 The predicate win nim states that I win if I take one or two tokens and there is one left for you Otherwise if there are enough tokens after taking one or two to continue playing then let s see if I can win Each occurrence of take in the left hand side of gt is an assumed fact that can be counted if duplicates are enabled otherwise the counting will be 0 if there is no one or 1 if there is one or more as duplicates are discarded So the predicate one left determines whether there is exactly one token left and enough determines if there is one token left at least The predicate total states the total number of tokens which are available for a game For more than 2 tokens there is always both winning and loosing paths for the player in turn For exactly 2 tokens there is no loosing path because the player cannot take 2 as the heap would be empty And for 1 token there is no winning path DES win nim Info 0 tuples
321. twise conjunction ISO Bitwise disjunction of the integers X and Y X xor Y Bitwise exclusive or ISO Bitwise exclusive or of the integers X and Y e X lt lt Y Shift left ISO X shifted left Y places e X gt gt Y Shift right ISO X shifted right Y places 4 5 4 2 Arithmetic Constants pi n Archimedes constant e Neperian number Neperian number 4 5 4 3 Arithmetic Functions e sqrt X Square root ISO Square root of X e log X Natural logarithm ISO Logarithm of X in the base of the Neperian number e e ln X Natural logarithm Synonym for log X e log X Y Logarithm Logarithm of Y in the base of X e sin X Sine ISO Fernando S enz P rez 116 274 Universidad Complutense de Madrid Datalog Educational System Sine of X e cos X Cosine ISO Cosine of X e tan X Tangent ISO Tangent of X e cot xX Cotangent Cotangent of X e asin X Arc sine Arc sine of X e acos X Arc cosine Arc cosine of X e atan X Arc tangent ISO Arc tangent of X e acot X Arc cotangent Arc cotangent of X e abs X Absolute value ISO Absolute value of X e float X Float value ISO Float equivalent of X if X is an integer otherwise X itself e integer X Integer value Closest integer between X and 0 if X is a float otherwise X itself e sign X Sign ISO Sign of X i e 1 if X is negative 0 if X is zero and 1 if X is positive coerced into t
322. ty Answer relation name relation name eot Where relation name stands for relation names Remarks Display the names of relations that directly depend on the given relation Relations are returned alphabetically sorted Example Input considering that views z1 y z2 reference table t tapi dependent relations t Output z1 z2 eot e Command tapi list_table_schemas Answer table name column name type column name type table name column name type column name type table name column name type column name type eot Where table name stands for table names column name is a column name typeis the column type and eot is the end of the transmission Fernando S enz P rez 214 274 Universidad Complutense de Madrid Datalog Educational System Remarks Return table schemas Tables are returned alphabetically sorted Example Input tapi list table schemas Output t a int eot e Command tapi list view schemas Answer view column name type column name type view column name type column name type view column name type column name type eot Where view name stands for view names column name is a column name type is the column type and eot is the end of the transmission Remarks Return view schemas Views are returned alphabetically sorted Example Input tapi list view schemas Output v a int b varchar 20 Seot e Comma
323. uple computed we get only one because the compilation of the query generates the predicate p2 for which with duplicates disabled at most only one tuple can be in its meaning as it has no arguments By enabling duplicates we get the expected answer DES gt duplicates on DES count avg employee _ _ S S A employee _ _ S1 S1 gt A 20 C Info Processing answer C in the program context of the exploded query answer C count p2 C Sp2 avg employee S S A employee S1 S1 A 20 answer 3 Info 1 tuple computed Note also that there are 3 employees meeting the condition as 2 employees have the top salary cf the first query of this example above DES employee S Info Processing answer S employee S answer 800 answer 1000 answer 1000 answer 1000 answer 1020 answer 1200 answer 1200 answer null answer null answer null answer null Info 11 tuples computed Fernando S enz P rez 52 274 Universidad Complutense de Madrid Datalog Educational System 4 1 13 Disjunctive Bodies As introduced in Section 4 1 1 rule bodies can contain disjunctions such as the one contained in the program family dl parent X Y father X Y mother X Y This clause is equivalent to parent X Y father X Y parent X Y mother X Y If you list the database contents via the command listing you
324. uples in the answer table Calls p0 A B Info 1 tuple in the call table Extension table contains the non ground entry not p1 1 A which is not safe 5 4 Modes for Unsafe Predicates Modes in Prolog are used to declare properties of predicates at call and or exit times Here we borrow modes to specify expected properties for a predicate in order to be correctly computed We use mode i for an input argument and o for an output argument in a different way as in the Prolog standard which indeed does not include these symbols so that i means that the argument is expected to be ground at call time and o means that it is not though it might be Whereas in safe Datalog all modes should be o in DES we can find i modes as well because unsafe predicates are allowed For instance because there are infinite built ins as comparison operators lt gt it is interesting to allow i modes as well as in the next example that is intended to compute the first T natural numbers nat T 1 nat T X nat T Y X Y 1 X lt T Expected goals must have a ground first argument as nat 100 X which returns the first 100 naturals Otherwise a run time exception is raised DES nat X Y Exception Non ground argument s found in goal 1 lt T in the instanced rule nat T X nat T 1 1 lt T X 14 1 Asserted at 10 23 37 on 1 18 2015 So each time a rule is asserted it is checked for classical safety and if
325. urceforge net E EN H HHHeHHHHHH HH This program comes with ABSOLUTELY NO WARRANTY is free software and you are welcome to redistribute it under certain conditions Type license for details aaka DES gt fl There is also an ACIDE bundle that can be downloaded for MacOSX and including the configuration file des cnf for DES The following snapshot shows this running on MacOS Snow Leopard 06 9 9 ACIDE 0 16 DES3 10 File Edit Project View Configuration Help e L 2 A e LP El 9 consult process listing dbschema pdg strata abolish il list et clear et cd i ls pwd 3 Project Browser E3 aggregates dl i aggregates ra B quet 3 DES3 10 family ra ii family sql B relop dl El aggregates dl aggregates ra aggregates sql al bom d E famiy di E o m 9 bom dl i pam lg family dl B we family ra 4 SQL Formulation family sql 5 relop di amp x 7 multiline on 8 12 parking anderson a 17 8 create or replace table employee name string department string salary int 13 parking randall r 1 Database E amp Console E 3 Databases ml 6 F DES Datalog Educational Syst 3 10 AJ E v d des d atalog jucationa ystem v i Q Debug E v O Tables Type he
326. ure correctness for this query shaves barber mayor Info 1 tuple computed Undefined shaves barber barber Info 1 tuple undefined If we look at the extension table contents by submitting the command list_et we get as answers Answers man barber man mayor not shaves mayor mayor shaves barber mayor Info 4 tuples in the answer set We can see that in particular we have proved additional negative information the mayor does not shaves himself and that no information is given for the undefined facts The current implementation uses an incomplete algorithm for finding such undefined facts We can see this incompleteness by adding the following rule shaved M shaves barber M The query shaved M returns Warning Unable to ensure correctness for this query shaved mayor Info 1 tuple computed That is the system is unable to prove that shaved barber is undefined If you look at the predicate dependency graph and the stratification of the program DES gt pdg Nodes man 1 shaved 1 shaves 2 Arcs shaves 2 shaves 2 shaves 2 man 1 shaved 1 shaves 2 Fernando S enz P rez 249 274 Universidad Complutense de Madrid Datalog Educational System DES strata non stratifiable you get the predicate dependency graph shown in Figure 4 and you are informed that the program is non stratifiable This figure shows a negation in a cycle so
327. urnal of Logic Programming 23 2 125 149 1995 Fernando S enz P rez 273 274 Universidad Complutense de Madrid Datalog Educational System SD91 Sae07 Shap83 SICStus Silv07 SRSS93 Tang99 TS86 Ullm95 VRK 91 Wiele WL04 ZCF 97 ZF97 C Shih and S W Dietrich Extension Table Evaluation of Datalog Programs with Negation Proceedings of the IEEE International Phoenix Conference on Computers and Communications Scottsdale AZ March 1991 pp 792 798 F S enz P rez ACIDE An Integrated Development Environment Configurable for LaTeX The PracTeX Journal 2007 Number 3 ISSN 1556 6994 August 2007 Shapiro E Algorithmic Program DeBugging ACM Distinguished Dissertation MIT Press 1983 SICS http www sics se sicstus Silva J A Comparative Study of Algorithmic Debugging Strategies in Proc of International Symposium on Logic based Program Synthesis and Transformation LOPSTR 2006 2007 pp 134 140 D Srivastava R Ramakrishnan S Sudarshan and P Seshadri Coral Adding Object Orientation to a Logic Database Language Proceedings of the International Conference on Very Large Databases 1993 Z Tang Datalog An Object Oriented Front End For The Xsb Deductive Database Management System http citeseer ist psu edu tang99datalog html H Tamaki and T Sato OLD Resolution with Tabulation Proceedings of ICLP 86 Lecture Note
328. ves fixpoint computation The following system session shows how this optimization works First we enable statistics collection enable verbose output to automatically display statistics results disable all the optimizations assert the fact p 1 and submit the query p X DES statistics on DES verbose on DES optimize cc off Info Complete computations optimization is off DES optimize ep off Info Extensional predicate optimization is off DES optimize nrp off Info Non recursive predicates optimization is off DES optimize st off Info Stratum optimization is already disabled DES assert p 1 Info Computing predicate dependency graph Info Computing strata Info Rule asserted DES p X Info Parsing query Info Query successfully parsed Info Solving query p X Info Displaying query answer Info Sorting answer p 1 Info 1 tuple computed Info Fixpoint iterations 2 Info EDB retrievals 2 Info IDB retrievals 0 Info ET retrievals 4 Info ET look ups 6 Info CT look ups 2 Info CF look ups 0 As the statistics show 2 fixpoint iterations have been needed to deduce the output In the first one the rule p 1 is read for the first time Then in the second iteration it is read again and as the answer table has not changed then this means that Fernando S enz P rez 227 274 Universidad Complutense de Madrid Datalog Educational System the fixpoi
329. view p and table p des table created in the external database for p there is also a table p des metadata holding the Datalog intensional rules that have been made persistent This is needed to recover the original rules as they were asserted in its compiled Datalog form If you have persisted a predicate for which no type constraints has been given before a type constraint is derived if possible and asserted This type constraint remains even when the persistence assertion is removed If you want to remove this too then submit a drop ic command The following session illustrates this DES dbschema Info Database des Info No tables Info No views Info No integrity constraints DES persistent p a int mysql DES dbschema Info Database des Info No tables Info View s p a int Defining SQL statement CREATE VIEW p a AS SELECT ALL FROM Fernando S enz P rez 145 274 Universidad Complutense de Madrid Datalog Educational System p des table Info No integrity constraints DES drop assertion persistent p a int mysql DES dbschema Info Database des Info Table s p a int Info No views Info No integrity constraints DES drop ic type p a int DES dbschema Info Database des Info No tables Info No views Info No integrity constraints If you want to completely remove a predicate even its persistent representation you can use t
330. ways start with a slash Anyway if you are in a given mode you can submit queries or goals to other interpreters simply by writing the query or goal after any of the previous commands Also if you are in Datalog mode you can directly submit both SOL and RA queries But a Prolog query can only be submitted from either the Prolog mode or with the command prolog Data are stored in a deductive database including facts and rules All queries and goals irrespective of the language refer to this database When an external database is opened see Section 5 1 their tables and views are available and can be queried from Datalog Prolog RA and SQL In contrast with other interpreters default input mode is single line which means that the input will be processed after hitting the Intro key which allows to omit the terminating character Nonetheless this mode can be switched to multi line as described in Section 5 7 with the command multiline on 3 1 Datalog Mode In this mode a query is sent to the Datalog processor If it does not follow Datalog syntax then it is sent first to the SOL processor see Section 4 2 and second to the RA processor see Section 4 3 should such query is written in any of these other query languages See caveats in Section 3 5 Commands see Section 5 17 are sent to the command processor Commands can end with an optional dot In single line mode Datalog inputs can also end with an optional dot but the
331. wer ordering set with order answer is overrided if a top level query includes this predicate in any place of its computation paths If the list of ordering criteria is omitted an ascending ordering is applied Solving an order by predicate requires to have its query argument completely evaluated analogously to the requirement for a negated query So it can not be used in a recursive computation path The following system session shows some uses of this predicate DES assert t 3 1 DES assert t 2 2 DES assert t 1 3 DES assert t 2 1 DES order answer off DES t X Y t 3 1 t 2 2 t 1 3 t 2 1 Info 4 tuples computed DES gt order_answer off DES t X Y t 1 3 t 2 1 t 2 2 t 3 1 Info 4 tuples computed DES order by t X Y Y Info Processing answer X Y order_by t X Y Y a answer 3 1 answer 2 1 answer 2 2 answer 1 3 Info 4 tuples computed DES order_by t X Y X d Fernando S enz P rez 122 274 Universidad Complutense de Madrid Datalog Educational System Info Processing answer X Y order by t X Y X d answer 3 1 answer 2 2 answer 2 1 answer 1 3 Info 4 tuples computed DES order_by t X Y X Y d a Info Processing answer X Y order_by t X Y X Y d a answer 3 1 answer 2 1 answer 2 2 answer 1 3 Info 4 tuples computed Note however tha
332. wers and calls already obtained by solving one or more queries incidentally recall that you can focus on the contents of the extension table for a given predicate cf Section 5 17 4 This command is useful for the user when asking for the meaning of relations and for the developer for examining the last calls being performed Before executing any query the extension table is empty after executing a query at least the call is not empty Also the extension table is empty after the execution of a temporary view The extension table contains the calls made during the last fixpoint iteration see next section for details the calls are cleared before each iteration whereas the answers are kept The command clear_et clears the extension table contents both for calls and answers 5 20 2 Fixpoint Computation The tabling mechanism is insufficient in itself for computing all of the possible answers to a query The rationale behind this comes from the fact that the computed information is not complete when solving a given goal because it can use incomplete information from the goals in its defining rules these goals can be mutually recursive Therefore we have to ensure that we produce all the possible information by finding a fixpoint of the memo function The algorithm implementing this is depicted next solve star Q St repeat remove calls Clear CT et not changed Flag ET as not changed solve Q St Solve the call to Q usin
333. when large databases and both dependent and correlated queries are considered Test case generation provides tuples that can be matched to the intended interpretation of a view and therefore be used to catch possible design errors in the view A test case for a view in the context of a database is a set of tuples for the different tables involved in the computation of the view Executing a view for a positive test case PTC should return at least one tuple This tuple can be used by the user to catch errors in the view if any This way if the user detects that this tuple should not be part of the answer it is definitely a witness of the error in the design of the view On the contrary the execution of the view for a negative test case NTC should return at 7 That is executing the view using as input data for the tables those in the PTC Fernando S enz P rez 174 274 Universidad Complutense de Madrid Datalog Educational System least one tuple which should not be in the result set of the query Again if no such a tuple can be found this tuple is a witness of the error in the design A PTC in a basic query means that at least one tuple in the query domain satisfies the where condition In the case of aggregate queries a PTC will require finding a valid aggregate verifying the having condition which in turn implies that all its rows verify the where condition In the case of basic query a NTC will contain at least one
334. will get the first form when development listings are off via the command development off Otherwise you get the second one command development on Datalog views and autoviews containing disjunctive bodies are allowed and the system informs about the program transformation needed to compute them For instance you can directly submit the rule above as a view at the DES prompt DES parent X Y father X Y mother X Y Info Processing parent X Y in the program context of the exploded query parent X Y father X Y parent X Y mother X Y parent amy fred parent carolI carolII parent carolII carolIII parent fred carolIII parent grace amy parent jack fred parent tom amy parent tony carolII Info 8 tuples computed 4 1 14 Relational Division in Datalog The provided relational division operation for Datalog follows the original proposal of Codd Codd72 but instead of comparing schemas based on column names we compare schemas based on variable names Given a left operand L and a right operand R in a division operator the result is a relation with as many arguments as variables are in vars L vars R where vars R cvars L and vars T returns the variables in a term T Fernando S enz P rez 53 2 14 Universidad Complutense de Madrid Datalog Educational System For example given the database E 1 1 t 1 2 t 2 1 s 1 s 2 Then the quer
335. xample DES projection X projection al projection a2 Fernando S enz P rez 234 274 Universidad Complutense de Madrid Datalog Educational System Info 2 tuples computed The result of a query is the meaning of the view i e the fact set for the query derived from the program whether intensionally or extensionally In the above example projection X corresponds to the projection of the first argument of relation c The second view in Section 4 1 5 returns Info Processing a X b X a al a a2 a a3 a b1 a b2 Info 5 tuples computed For abolishing this program and execute the SOL statements in relop sql you can type abolish and process relop sql Note that the extension can be omitted in the process command Here we depart from the Datalog interpreter and if you are to submit SOL queries it is useful to switch to the SOL interpreter via the command sq1 as inputs will be parsed only by the SOL parser Otherwise it will be tried to be identified as a Datalog input and then as an SOL input Note that in the file relop sql listed below strings are enclosed between apostrophes This is not needed in the Datalog language In order to execute the contents of this file type process relop sql Switch to SQL interpreter sqi Creating tables create or replace table a a create or replace table b b create or replace table c a b Listing the database schema
336. xpressions are built with the same syntax as in SOL The equivalent Datalog rules and SQL statements for a given RA query can be inspected enabling such listings with the commands show compilations on and show sql on respectively For instance assuming the relations in examples aggregates ra DES gt show_compilations on DES gt show_sql on DES gt project employee name employee product parking Info Equivalent SQL query SELECT ALL employee name FROM employee parking Info RA expression compiled to answer A employee A B C parking D E Info 11 tuples computed Examples below refer to the database defined in either examples relop ra relations a b and c or examples aggregates ra relations employee and parking 4 3 1 Operators This section includes descriptions for basic additional and extended operators 4 3 1 1 Basic operators Selection o R Select tuples in relation R matching condition 8 Concrete syntax select Condition Relation Example select a lt gt al c Projection r4 A R Return all tuples in R only with columns A A Concrete syntax Fernando S enz P rez 105 274 Universidad Complutense de Madrid Datalog Educational System project A1 An Relation Example project b oc Note Columns can be qualified when ambiguity arises as in project a a a product c If no qualification is provided in presence of ambiguity then a suitable
337. y Fernando S enz P rez 193 274 Universidad Complutense de Madrid Datalog Educational System Display in format Name Arity those relations that are directly referenced by a foreign key in relation Relation Arity TAPI enabled e relation exists RelationName Display t rue if the given relation exists and false otherwise TAPI enabled e relation schema RelationName Display relation schema of Re1ationName TAPI enabled e prolog system Display the underlying Prolog engine version e sql left delimiter Display the SOL left delimiter as defined by the current database manager either DES or the external DBMS via ODBC TAPI enabled e sql right delimiter Display the SOL left delimiter as defined by the current database manager either DES or the external DBMS via ODBC TAPI enabled e status Display the current system status i e verbose mode logging elapsed time display program transformation current directory current database and other settings e strata Display the current stratification as a list of pairs Name Arity Stratum e strata Name Display the current stratification restricted to predicate with name Name e strata Name Arity Display the current stratification restricted to the predicate Name Arity e verbose Display whether verbose output is either enabled or disabled on or of f resp e verbose Switch Enable or disable verbose output messages on or of f resp
338. y Succeed as many times as different ground answers are computed for Query e distinct Variables Query Succeed as many times as different ground tuples built with Variables are computed for Query 4 5 10 Top N Queries e top N Query Succeed at most N times for Query This metapredicate can occur at the top level and in any rule body As tuples are usually retrieved in the chronological order in which they were asserted this metapredicate has not a declarative reading So the answer to a top N query depends on when tuples were asserted In addition for intensional predicates their EDB rules are firstly fetched followed by their IDB rules Let s consider the following system session DES assert t 1 DES assert t 2 DES top 1 t X Info Processing answer X top 1 t X answer 1 Info 1 tuple computed DES gt abolish DES assert t 2 DES assert t 1 DES top 1 t X Info Processing answer X top l t X Fernando S enz P rez 120 274 Universidad Complutense de Madrid Datalog Educational System answer 2 Info 1 tuple computed DES assert p X X 0 p Y X Y 1 DES assert p 1 DES top 1 p X Info Processing answer X top 1 p X answer 1 Info 1 tuple computed Moreover not only the chronological order affects semantics but also literal ordering in the query As this predicate retrieves the first N results for its query t
339. y t X Y division s Y returns answer 1 Now let s consider that the relations to be divided contain other arguments that are not relevant for the division operator For instance let s consider the relation work employee project hours under an intuitive meaning If we want to know the name of each employee who is working on each project on which employee smith is working we have to project the division operands for the appropriate arguments For instance DES assert np work N P work N P DES np work N P division np work smith P However by using anonymous variables it is possible to omit the non relevant variables by using an anonymous annotation for them for the division operator without needing to project the relevant ones Following the same example the same query can be submitted as simply as DES work N P division work smith P Division can be nested as well For instance let s consider the relation team team nbr employee If we want to know whether the employees for the last query do form a complete team then DES team T N division work N P division work smith P As a caveat note that variables in the right operand of the division operator are demanded if they occur in another goal similar to what happens with built ins as comparison operators For instance the variable Y in the following query is demanded and therefore the query is not valid DES t X Y division s
340. y assume that user defined predicates are safe which is not always the case but only require analysing locally each rule for deciding weak safety To make these conditions stronger 1 a has to be changed to X occurs in some positive goal referring to a safe user defined predicate and add 3 A predicate is safe if all of its variables are safe The changed conditions would require a global analysis of the program which is not supported by DES up to now The built in predicate is has the same problem as comparison operators as well but it only demands ground its second argument cf condition 1 c above Negation requires its argument to have no unsafe variables In addition to be correctly computed the restrictions in the domains of the safe variables it may contain should be computed before The reader is referred to Section 3 6 in Ullm95 for finding the problems when interpreting rules with negation DES provides a check that allows deciding if a rule is safe and if so it may apply a program transformation for reordering its goals in order to make it computable in a left to right order This transformation does not come by default and it can be changed with the command safe Switch where Switch can take two values on for enabling program transformation and off for disabling this transformation If Switch is not included then the command informs whether program transformation is enabled or disabled The analysis performed by t
341. yms db schema db schema Synonym for dbschema db schema Name Synonym for dbschema Name db schema Connection Relation Synonym for dbschema Connection Relation dependent relations Relation Display the name of relations that directly depend on relation Relation Arity TAPI enabled dependent relations Relation Arity Display in format Name Arity those relations that directly depend on relation Relation Arity TAPI enabled Fernando S enz P rez 191 274 Universidad Complutense de Madrid Datalog Educational System e development Display whether development listings are enabled e development Switch Enable or disable development listings on or off resp These listings show the source to source translations needed to handle null values Datalog outer join built ins and disjunctive literals e display answer Display whether display of computed tuples is enabled e display answer Switch Enable or disable display of computed tuples on or off resp The number of tuples is still displayed e display nbr of tuples Display whether display of the number of computed tuples is enabled e display nbr of tuples Switch Enable or disable display of the number of computed tuples on or off resp e help Display resumed help on commands Shorthand h e help Keyword Display detailed help about Keyword which can be a command or built in Synonym apropos e is_empty relation_name Dis
342. ynonym for 1s e dir Path Synonym for 1ls Path e ls Display the contents of the current directory in alphabetical order First files are displayed then directories Synonym dir e ls Path Display the contents of the given directory in alphabetical order It behaves as 1s Synonym dir Path e pwd Display the absolute filename for the current directory TAPI enabled e rm FileName Delete FileName from the file system Synonyms del e set_editor Fernando S enz P rez 189 274 Universidad Complutense de Madrid Datalog Educational System Display the current external text editor e set editor Editor Set the current external text editor to Editor e shell Command Submit Command to the operating system shell Notes for platform specific issues o Windows users command exe is the shell for Windows 98 whereas cmd exe is the one for Windows NT 2000 2003 XP Vista 7 o SICStus users Under Windows if the environment variable SHELL is defined it is expected to name a Unix like shell which will be invoked with the option c Command If SHELL is not defined the shell named by COMSPEC will be invoked with the option C Command o Windows and Linux Unix executable users The same note for SICStus is applied Synonyms s e ashell Command An asynchronous shell command i e as she1l Command but without waiting for the process to finish and also eliding output e type Filename Sy
343. yntax of built ins is explained in their corresponding forthcoming sections 4 1 2 Rules Datalog rules have the form head body or simply head Both end with a dot A Datalog head is either an atom or restricted atom that uses no built in predicate symbol A Datalog body contains a comma separated sequence of literals which may contain built in symbols as listed in Section 4 5 as well as disjunctions 2 and divisions division 2 A rule with an restricted atom is called a restrict rule 4 1 3 Programs DES programs consist of a multiset of rules Programs may contain remarks A single line remark starts with the symbol and ends at the end of line Consulted programs can also contain multi line remarks enclosed between and which can be nested 4 1 4 Queries A positive query is the name of a relation with as many arguments as the arity of the relation a positive literal Each one of these arguments can be a variable or a constant a compound term is not allowed but as an arithmetic expression Built in relations may require relations and conditions as arguments A negative query is written as not Query Queries are typed at the DES system prompt The answer to a query is the multi set of atoms matching the query which are deduced in the context of the program from both the extensional and intensional database A query with variables for all the arguments of the queried relation gives the whole set of deduced facts mea
344. ys forced for SOL and RA compilations irrespective of this setting Fernando S enz P rez 199 274 Universidad Complutense de Madrid Datalog Educational System 517 11 Timing e display stopwatch Display stopwatch Precision depends on host Prolog system 1 second or milliseconds e format timing Display whether formatted timing is enabled format timing Switch Enable or disable formatted timing on or off resp Given that ms s m h represent milliseconds seconds minutes and hours respectively times less than 1 second are displayed as ms times between 1 second and less than 60 are displayed as s ms times between 60 seconds and less than 60 minutes are displayed as m s ms and times from 60 minutes on are displayed as h m s ms e reset_stopwatch Reset stopwatch Precision depends on host Prolog system 1 second or milliseconds e start_stopwatch Start stopwatch Precision depends on host Prolog system 1 second or milliseconds e stop_stopwatch Stop stopwatch Precision depends on host Prolog system 1 second or milliseconds e timing Display whether elapsed time display is enabled e timing Option Sets the required level of elapsed time display as disabled enabled or detailed off on detailed resp 5 17 12 Statistics e host_statistics Keyword Display host Prolog statistics for Keyword runtime or total_runtime For runtime this command displays the CPU time used wh
345. ystem Info Debugging view intensiveStudents 1 intensiveStudents Juan Input Is this the expected answer for view intensiveStudents y n m mT w wN a h yl y Info Debugging view candidates Input Should candidates include a tuple of the form Ana y n a y n Info Debugging view basicLevelStudents Input Should basicLevelStudents include a tuple of the form Ana y n a y n Info Debugging view salsaStudents Input Should salsaStudents include a tuple of the form Ana l teachl y n a y y Info Debugging view salsaStudents Input Should salsaStudents include a tuple of the form Ana 2 teach2 y n a y y Info Debugging view salsaStudents Input Should salsaStudents include a tuple of the form Ana 3 teachl y n a y y Info Buggy view found basicLevelStudents 5 11 2 Displaying Extended Information Enabling verbose output allows to extend the display with further information as eg view definitions when they are asked for its validity As well enabling development output allows to check how the logic program that represents the computation tree is built c f CGS12a For that use the following commands resp DES verbose on Info Verbose output is on DES development on Info Development listings are on 5 12 SQL Test Case Generator Checking that a view produces the same result as its intended interpretation is a daunting task

Download Pdf Manuals

image

Related Search

Related Contents

Bedienungsanleitung ZEMO  USER MANUAL Made in the USA!  ラインアップ拡充! 17型、15.4型のワイド画面モデル、デビュー!  Sauvegardez votre vie (pour l`éternité) !  Betriebs- anleitung Operating Instructions Notice d'utilisation  Now  Operating Instructions  MN-09 Manual de Usuario Transporte Publico  manual bdpb  Eldy 2.3 User`s Manual September 24, 2010  

Copyright © All rights reserved.
Failed to retrieve file