[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [search-ws] CQL Parsing Questions
Ok, well as long as we are going to get into this ....
Ashley and Tony, could you collaborate to fix it.
Ashley, I think it is worthwhile to take the approach you have outlined
however:
The BNF should retain as much as possible of Tony's version. For example, it
needs to be in the proper ABNF form that Tony provided.
Also, I dislike defining "search-clause" to be anything other than a search
clause (that is, it is a term or it is index plus relation plus term).
Having a definition like:
searchClause = '(' cqlQuery ')' | (index relation)? searchTerm;
just make the whole think more difficult to deal with when a search clause
isn't really a search clause, and we should retain Tony's:
search-clause = [index relation-modifed] search-term
Next, I think that your "scoped clause" is the same as (or intended as)
Tony's search-clause-group.
So I think that the problem is solved with something like:
search-clause-group = ( '(' cql-query ')' | search-clause)
[boolean-modified search-clause]
cql-query = *prefix-assignment search-clause-group
--Ray
----- Original Message -----
From: "Ashley Sanders" <a.sanders@manchester.ac.uk>
To: <search-ws@lists.oasis-open.org>
Sent: Thursday, September 17, 2009 5:52 AM
Subject: Re: [search-ws] CQL Parsing Questions
> Ray Denenberg, Library of Congress wrote:
>> Currently:
>> search-clause-group = search-clause-group Boolean-modified
>> subquery | subquery
>> subquery = "(" query ")" / search-clause
>>
>>
>> Why can't these two be replaced by:
>>
>> search-clause-group =
>>
>> "("search-clause-group")" | search-clause | search-clause-group
>> Boolean-modified search-clause
>>
>> Or for better readability:
>>
>> search-clause-group = quoted-search-clause-group |
>> unquoted-search-clause-group
>> quoted-search-clause-group = "("search-clause-group")"
>> unquoted-search-clause-group = search-clause | search-clause-group
>> Boolean-modified search-clause
>
> I have to say, that I can't easily get my head around that.
>
> A few years ago I wrote a cql parser using an LL parser (Boost.Spirit)
> so I had to convert the BNF to a form suitable for Boost.Spirit. I've
> just added the following queries to the test cases:
>
> title=(A or B)
> title=(author=xxx)
>
> Thankfully it rejects them as bad queries. Now, either I based my
> parser on an old form of the BNF, or my interpretation of it was
> coloured by what I thought was sensible at the time.
>
> Anyway, my grammer, edited to remove all the cruft and make it
> a bit more BNF like, has the following constructs:
>
> comparitorSymbol = "<="| ">=" | "<>" | '='| '<' | '>';
>
> boolean = "and" | "or" | "not" | "prox"
>
> modifier = '/' modifierName (comparitorSymbol modifierValue)?;
>
> comparitor = comparitorSymbol | namedComparitor;
>
> relation = comparitor modifier*;
>
> booleanGroup = boolean modifier*;
>
> searchClause =
> '(' cqlQuery ')' | (index relation)? searchTerm;
>
> scopedClause = searchClause (booleanGroup searchClause)*;
>
> prefixAssignment = '>' (prefix '=')? uri;
>
> cqlQuery = prefixAssignment* scopedClause;
>
> The searchClause and scopedClause would seem to be the important
> clauses. My reading is that whereever an "=" appears as part of
> a relation, it can only be followed by a searchTerm.
>
> Ashley.
>
>>
>> --Ray
>>
>> ----- Original Message ----- From: "Ashley Sanders"
>> <a.sanders@manchester.ac.uk>
>> To: "Ray Denenberg, Library of Congress" <rden@loc.gov>
>> Cc: "Hammond, Tony" <t.hammond@nature.com>;
>> <search-ws@lists.oasis-open.org>
>> Sent: Wednesday, September 16, 2009 7:43 AM
>> Subject: Re: [search-ws] CQL Parsing Questions
>>
>>
>>> Ray Denenberg, Library of Congress wrote:
>>>> Tony, addressing your first question:
>>>>
>>>> From: "Hammond, Tony" <t.hammond@nature.com>
>>>>> title=(author=kernighan)
>>>>> is equivalent to
>>>>> author=kernighan
>>>>> "
>>>>>
>>>>> and following up with him he claimed this was cooked into the BNF
>>>>
>>>> Well first take a look at this thread and see if it helps put this into
>>>> some perspective.
>>>> http://listserv.loc.gov/cgi-bin/wa?A2=ind0603&L=srw-ed&D=0&T=0&X=2C676213DF8F2521EB&P=1982
>>>> This is a convoluted mess that is better ignored. The grammar has a
>>>> hole that lead to nonsensical queries and I think that the consensus
>>>> was that it is harder to fix the grammar than to just say that queries
>>>> like these are nonsensical.
>>>
>>> One can't feeling that if the grammer allows that, then the grammer is
>>> broken and should be fixed.
>>>
>>>> The real issue was a query like "title=(A or B)". Is it a shorthand
>>>> for - "title=A or title=B".
>>>
>>> That also looks like an horrendous piece of syntax to me. I can't think
>>> of any other language that allows you to specify queries like that.
>>> Admittedly it is often what people want to do when they first come
>>> across boolean statements, but I really don't think we shouldn't let
>>> them. Especially if it results in a nonsensical mess like
>>> title=(author=xxxx)).
>>>
>>> Do people feel that cql is intended for users or machines? My feeling
>>> is that it should be for machine-to-machine communication and therefore
>>> doesn't need any syntactic sugar.
>>>
>>> Ashley.
>>> --
>>> Ashley Sanders a.sanders@manchester.ac.uk
>>> Copac http://copac.ac.uk A Mimas service funded by JISC
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe from this mail list, you must leave the OASIS TC that
>>> generates this mail. Follow this link to all your TCs in OASIS at:
>>> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this mail list, you must leave the OASIS TC that
>> generates this mail. Follow this link to all your TCs in OASIS at:
>> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>
>
> --
> Ashley Sanders a.sanders@manchester.ac.uk
> Copac http://copac.ac.uk A Mimas service funded by JISC
>
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail. Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]