--- a/README Thu Oct 15 20:20:16 2009 +0200
+++ b/README Thu Oct 15 20:20:29 2009 +0200
@@ -2,4 +2,11 @@
INSTALL
-------
+
+the standard way:
+
python setup.py install
+
+building rql binary extension in place:
+
+python setup.py build_ext --inplace
--- a/doc/specifications_en.txt Thu Oct 15 20:20:16 2009 +0200
+++ b/doc/specifications_en.txt Thu Oct 15 20:20:29 2009 +0200
@@ -1,6 +1,6 @@
.. -*- coding: utf-8 -*-
-
+
===================================================
Specification "Relations Query Language" (Hercules)
===================================================
@@ -17,7 +17,7 @@
language not to see virtually no difference between an attribute and a
relation).
-RQL is inspired by SQL but is the highest level. A knowledge of the
+RQL is inspired by SQL but is the highest level. A knowledge of the
`CubicWeb` schema defining the application is necessary.
Comparison with existing languages
@@ -27,8 +27,8 @@
```
RQL builds on the features of SQL but is at a higher level
(the current implementation of RQL generates SQL). For that it is limited
-to the way of browsing relations and introduces variables.
-The user does not need to know the model underlying SQL, but the `CubicWeb`
+to the way of browsing relations and introduces variables.
+The user does not need to know the model underlying SQL, but the `CubicWeb`
scheam defining the application.
Versa
@@ -36,10 +36,10 @@
Should I look in more detail, but here is already some ideas for
the moment ... Versa_ is the language most similar to what we wanted
to do, but the model underlying data being RDF, there is some
-number of things such as namespaces or handling of the RDF types which
+number of things such as namespaces or handling of the RDF types which
does not interest us. On the functionality level, Versa_ is very comprehensive
including through many functions of conversion and basic types manipulation,
-which may need to be guided at one time or another.
+which may need to be guided at one time or another.
Finally, the syntax is a little esoteric.
See also
@@ -156,7 +156,7 @@
The restriction can define variables used in assignments.
-Caution, if a restriction is specified, the insertion is done for
+Caution, if a restriction is specified, the insertion is done for
*each line results returned by the restriction*.
- *Insert a new person named 'foo'*
@@ -170,7 +170,7 @@
INSERT Person X, Person Y: X name 'foo', Y name 'nice', X friend Y
-- *Insert a new person named 'foo' and a 'friend' relation with an existing
+- *Insert a new person named 'foo' and a 'friend' relation with an existing
person called 'nice'*
::
@@ -189,7 +189,7 @@
SET X name 'bar', X first_name 'original' where X is Person X name 'foo'
-- *Insert a relation of type 'know' between objects linked by
+- *Insert a relation of type 'know' between objects linked by
the relation of type 'friend'*
::
@@ -227,7 +227,7 @@
DISTINCT, INSERT, SET, DELETE,
WHERE, AND, OR, NOT
- IN, LIKE,
+ IN, LIKE, ILIKE,
TRUE, FALSE, NULL, TODAY, NOW
GROUPBY, ORDERBY, ASC, DESC
@@ -289,21 +289,23 @@
````````````````````
::
- =, <, <=, >=, > = ~, IN, LIKE
+ =, <, <=, >=, > = ~, IN, LIKE, ILIKE
* The operator `=` is the default operator.
* The operator `LIKE` equivalent to `~=` can be used with the
- special character `%` in a string to indicate that the chain
+ special character `%` in a string to indicate that the chain
must start or finish by a prefix/suffix:
::
Any X WHERE X name =~ 'Th%'
Any X WHERE X name LIKE '%lt'
+* The operator `ILIKE` is a case-insensitive version of `LIKE`.
+
* The operator `IN` provides a list of possible values:
::
-
+
Any X WHERE X name IN ( 'chauvat', 'fayolle', 'di mascio', 'thenault')
@@ -410,7 +412,7 @@
relation ::= 'NOT'? VARIABLE R_TYPE COMP_OP? expression
| 'NOT'? R_TYPE VARIABLE 'IN' '(' expression (',' expression)* ')'
-
+
expression ::= var_or_func_or_const (MATH_OP var_or_func_or_const) *
| '(' expression ')'
@@ -423,7 +425,7 @@
# tokens
LOGIC_OP ::= ',' | 'GOLD' | 'AND'
MATH_OP ::= '+' | '-' | '/' | '*'
- COMP_OP ::= '>' | '>=' | '=' | '<=' | '<' | '~=' | 'LIKE'
+ COMP_OP ::= '>' | '>=' | '=' | '<=' | '<' | '~=' | 'LIKE' | 'ILIKE'
FUNCTION ::= 'MIN' | 'MAX' | 'SUM' | 'AVG' | 'COUNT' | 'upper' | 'LOWER'
@@ -464,7 +466,7 @@
Identity
````````
-You can use the special relation `identity` in a query to
+You can use the special relation `identity` in a query to
add an identity constraint between two variables. This is equivalent
to ``is`` in python::
@@ -480,7 +482,7 @@
Internal representation (syntactic tree)
----------------------------------------
-The tree research does not contain the selected variables
+The tree research does not contain the selected variables
(e.g. there is only what follows "WHERE").
The insertion tree does not contain the variables inserted or relations
@@ -523,10 +525,10 @@
-------
- The current implementation does not support linking two relations of type
- 'is' with a OR. I do not think that the negation is supported on this type
+ 'is' with a OR. I do not think that the negation is supported on this type
of relation (XXX FIXME to be confirmed).
-- Relations defining the variables must be left to those using them.
+- Relations defining the variables must be left to those using them.
For example::
Point P where P abs X, P ord Y, P value X+Y
@@ -567,7 +569,7 @@
Document class Type <-> Document occurence_of Fiche class Type
Sheet class Type <-> Form collection Collection class Type
-
+
Therefore 1. becomes::
Document X where
--- a/doc/specifications_fr.txt Thu Oct 15 20:20:16 2009 +0200
+++ b/doc/specifications_fr.txt Thu Oct 15 20:20:29 2009 +0200
@@ -224,13 +224,13 @@
Mots clés réservés
------------------
-Les mots clés ne sont pas sensibles à la casse.
+Les mots clés ne sont pas sensibles à la casse.
::
DISTINCT, INSERT, SET, DELETE,
WHERE, AND, OR, NOT
- IN, LIKE,
+ IN, LIKE, ILIKE,
TRUE, FALSE, NULL, TODAY, NOW
GROUPBY, ORDERBY, ASC, DESC
@@ -292,17 +292,20 @@
`````````````````````````
::
- =, <, <=, >=, >, ~=, IN, LIKE
+ =, <, <=, >=, >, ~=, IN, LIKE, ILIKE
* L'opérateur `=` est l'opérateur par défaut.
-* L'opérateur `LIKE` équivalent à `~=` permet d'utiliser le caractère `%` dans
- une chaine de caractère pour indiquer que la chaîne doit commencer ou terminer
+* L'opérateur `LIKE` équivalent à `~=` permet d'utiliser le caractère `%` dans
+ une chaine de caractère pour indiquer que la chaîne doit commencer ou terminer
par un préfix/suffixe::
-
+
Any X WHERE X nom ~= 'Th%'
Any X WHERE X nom LIKE '%lt'
+* L'opérateur `ILIKE` est une version de `LIKE` qui n'est pas sensible à la
+ casse.
+
* L'opérateur `IN` permet de donner une liste de valeurs possibles::
Any X WHERE X nom IN ('chauvat', 'fayolle', 'di mascio', 'thenault')