PyZ3950/CQLParser
index
/home/asl2/src/PyZ2/PyZ3950/PyZ3950/CQLParser.py

# Author:  Rob Sanderson (azaroth@liv.ac.uk)
# Distributed and Usable under the GPL 
# Version: 1.7
# Most Recent Changes: contexts, new modifier style for 1.1
#
# With thanks to Adam from IndexData and Mike Taylor for their valuable input

 
Modules
            
types
 
Classes
            
CQLParser
ModifiableObject
Boolean
Boolean
ModifierClause
PrefixableObject
SearchClause
SearchClause
Triple
Triple
PrefixedObject
Index
Index
ModifierType
ModifierType
Relation(PrefixedObject, ModifiableObject)
Relation(PrefixedObject, ModifiableObject)
Term
XCQLParser
shlex.shlex
CQLshlex
 
class Boolean(ModifiableObject)
      Object to represent a CQL boolean
 
   Methods defined here:
__init__(self, bool, mods=[])
resolvePrefix(self, name)
toCQL(self)
toXCQL(self, depth=0)
Create XCQL representation of object

Data and non-method functions defined here:
__doc__ = 'Object to represent a CQL boolean'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
parent = None
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from ModifiableObject:
__getitem__(self, k)

Data and non-method functions inherited from ModifiableObject:
modifiers = []
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
class CQLParser
      Token parser to create object structure for CQL
 
   Methods defined here:
__init__(self, p)
 Initialise with shlex parser
boolean(self)
 Find boolean
clause(self)
 Find searchClause
fetch_token(self)
 Read ahead one token
is_boolean(self, token)
Is the token a boolean
modifiers(self)
prefixes(self)
Create prefixes dictionary
query(self)
 Parse query
relation(self)
 Find relation
subQuery(self)
 Find either query or clause

Data and non-method functions defined here:
__doc__ = 'Token parser to create object structure for CQL'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
currentToken = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
nextToken = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
parser = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
class CQLshlex(shlex.shlex)
      shlex with additions for CQL parsing
 
   Methods defined here:
__init__(self, thing)
read_token(self)
Read a token from the input stream (no pushback or inclusions)

Data and non-method functions defined here:
__doc__ = 'shlex with additions for CQL parsing'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
commenters = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
nextToken = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
quotes = '"'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from shlex.shlex:
error_leader(self, infile=None, lineno=None)
Emit a C-compiler-like, Emacs-friendly error-message leader.
get_token(self)
Get a token from the input stream (or from stack if it's nonempty)
pop_source(self)
Pop the input source stack.
push_source(self, newstream, newfile=None)
Push an input source onto the lexer's input source stack.
push_token(self, tok)
Push a token onto the stack popped by the get_token method
sourcehook(self, newfile)
Hook called on a filename to be sourced.
 
class Index(PrefixedObject)
      Object to represent a CQL index
 
   Methods defined here:
toCQL(self)
toXCQL(self, depth=0)

Data and non-method functions defined here:
__doc__ = 'Object to represent a CQL index'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from PrefixedObject:
__init__(self, val)
__str__(self)
resolvePrefix(self)
splitValue(self)

Data and non-method functions inherited from PrefixedObject:
parent = None
prefix = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
prefixURI = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
class ModifiableObject
       
   Methods defined here:
__getitem__(self, k)

Data and non-method functions defined here:
__doc__ = None
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
modifiers = []
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
class ModifierClause
      Object to represent a relation modifier
 
   Methods defined here:
__init__(self, type, comp='', val='')
__str__(self)
resolvePrefix(self, name)
toCQL(self)
toXCQL(self, depth=0)

Data and non-method functions defined here:
__doc__ = 'Object to represent a relation modifier'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
comparison = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
parent = None
type = None
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
class ModifierType(PrefixedObject)
       
   Data and non-method functions defined here:
__doc__ = None
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
parent = None
prefix = 'cql'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from PrefixedObject:
__init__(self, val)
__str__(self)
resolvePrefix(self)
splitValue(self)

Data and non-method functions inherited from PrefixedObject:
prefixURI = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
class PrefixableObject
      Root object for triple and searchClause
 
   Methods defined here:
__init__(self)
addPrefix(self, name, identifier)
resolvePrefix(self, name)
toXCQL(self, depth=0)

Data and non-method functions defined here:
__doc__ = 'Root object for triple and searchClause'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
config = None
parent = None
prefixes = {}
dict() -> new empty dictionary.
dict(mapping) -> new dictionary initialized from a mapping object's
    (key, value) pairs.
dict(seq) -> new dictionary initialized as if via:
    d = {}
    for k, v in seq:
        d[k] = v
 
class PrefixedObject
      Root object for relation, relationModifier and index
 
   Methods defined here:
__init__(self, val)
__str__(self)
resolvePrefix(self)
splitValue(self)

Data and non-method functions defined here:
__doc__ = 'Root object for relation, relationModifier and index'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
parent = None
prefix = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
prefixURI = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
class Relation(PrefixedObject, ModifiableObject)
      Object to represent a CQL relation
 
  
Method resolution order:
Relation
PrefixedObject
ModifiableObject

Methods defined here:
__init__(self, rel, mods=[])
toCQL(self)
toXCQL(self, depth=0)
Create XCQL representation of object

Data and non-method functions defined here:
__doc__ = 'Object to represent a CQL relation'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from PrefixedObject:
__str__(self)
resolvePrefix(self)
splitValue(self)

Data and non-method functions inherited from PrefixedObject:
parent = None
prefix = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
prefixURI = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from ModifiableObject:
__getitem__(self, k)

Data and non-method functions inherited from ModifiableObject:
modifiers = []
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
class SearchClause(PrefixableObject)
      Object to represent a CQL searchClause
 
   Methods defined here:
__init__(self, ind, rel, t)
getResultSetId(self, top=None)
toCQL(self)
toXCQL(self, depth=0)
Produce XCQL version of the object

Data and non-method functions defined here:
__doc__ = 'Object to represent a CQL searchClause'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
index = None
relation = None
term = None

Methods inherited from PrefixableObject:
addPrefix(self, name, identifier)
resolvePrefix(self, name)

Data and non-method functions inherited from PrefixableObject:
config = None
parent = None
prefixes = {}
dict() -> new empty dictionary.
dict(mapping) -> new dictionary initialized from a mapping object's
    (key, value) pairs.
dict(seq) -> new dictionary initialized as if via:
    d = {}
    for k, v in seq:
        d[k] = v
 
class Term
       
   Methods defined here:
__init__(self, v)
__str__(self)
toXCQL(self, depth=0)

Data and non-method functions defined here:
__doc__ = None
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
class Triple(PrefixableObject)
      Object to represent a CQL triple
 
   Methods defined here:
getResultSetId(self, top=None)
toCQL(self)
toXCQL(self, depth=0)
Create the XCQL representation of the object

Data and non-method functions defined here:
__doc__ = 'Object to represent a CQL triple'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
boolean = None
leftOperand = None
rightOperand = None

Methods inherited from PrefixableObject:
__init__(self)
addPrefix(self, name, identifier)
resolvePrefix(self, name)

Data and non-method functions inherited from PrefixableObject:
config = None
parent = None
prefixes = {}
dict() -> new empty dictionary.
dict(mapping) -> new dictionary initialized from a mapping object's
    (key, value) pairs.
dict(seq) -> new dictionary initialized as if via:
    d = {}
    for k, v in seq:
        d[k] = v
 
class XCQLParser
       Parser for XCQL using some very simple DOM
 
   Methods defined here:
boolean(self, elem)
Process a <boolean>
firstChildData(self, elem)
 Find first child which is Data
firstChildElement(self, elem)
 Find first child which is an Element
prefixes(self, elem)
Process <prefixes>
relation(self, elem)
 Process a <relation>
searchClause(self, elem)
 Process a <searchClause>
triple(self, elem)
 Process a <triple>

Data and non-method functions defined here:
__doc__ = ' Parser for XCQL using some very simple DOM '
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
booleanType = class Boolean(ModifiableObject)
      Object to represent a CQL boolean
 
   Methods defined here:
__init__(self, bool, mods=[])
resolvePrefix(self, name)
toCQL(self)
toXCQL(self, depth=0)
Create XCQL representation of object

Data and non-method functions defined here:
__doc__ = 'Object to represent a CQL boolean'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
parent = None
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from ModifiableObject:
__getitem__(self, k)

Data and non-method functions inherited from ModifiableObject:
modifiers = []
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
indexType = class Index(PrefixedObject)
      Object to represent a CQL index
 
   Methods defined here:
toCQL(self)
toXCQL(self, depth=0)

Data and non-method functions defined here:
__doc__ = 'Object to represent a CQL index'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from PrefixedObject:
__init__(self, val)
__str__(self)
resolvePrefix(self)
splitValue(self)

Data and non-method functions inherited from PrefixedObject:
parent = None
prefix = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
prefixURI = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
modifierClauseType = class ModifierClause
      Object to represent a relation modifier
 
   Methods defined here:
__init__(self, type, comp='', val='')
__str__(self)
resolvePrefix(self, name)
toCQL(self)
toXCQL(self, depth=0)

Data and non-method functions defined here:
__doc__ = 'Object to represent a relation modifier'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
comparison = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
parent = None
type = None
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
modifierTypeType = class ModifierType(PrefixedObject)
       
   Data and non-method functions defined here:
__doc__ = None
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
parent = None
prefix = 'cql'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from PrefixedObject:
__init__(self, val)
__str__(self)
resolvePrefix(self)
splitValue(self)

Data and non-method functions inherited from PrefixedObject:
prefixURI = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
relationType = class Relation(PrefixedObject, ModifiableObject)
      Object to represent a CQL relation
 
  
Method resolution order:
Relation
PrefixedObject
ModifiableObject

Methods defined here:
__init__(self, rel, mods=[])
toCQL(self)
toXCQL(self, depth=0)
Create XCQL representation of object

Data and non-method functions defined here:
__doc__ = 'Object to represent a CQL relation'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from PrefixedObject:
__str__(self)
resolvePrefix(self)
splitValue(self)

Data and non-method functions inherited from PrefixedObject:
parent = None
prefix = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
prefixURI = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from ModifiableObject:
__getitem__(self, k)

Data and non-method functions inherited from ModifiableObject:
modifiers = []
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
searchClauseType = class SearchClause(PrefixableObject)
      Object to represent a CQL searchClause
 
   Methods defined here:
__init__(self, ind, rel, t)
getResultSetId(self, top=None)
toCQL(self)
toXCQL(self, depth=0)
Produce XCQL version of the object

Data and non-method functions defined here:
__doc__ = 'Object to represent a CQL searchClause'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
index = None
relation = None
term = None

Methods inherited from PrefixableObject:
addPrefix(self, name, identifier)
resolvePrefix(self, name)

Data and non-method functions inherited from PrefixableObject:
config = None
parent = None
prefixes = {}
dict() -> new empty dictionary.
dict(mapping) -> new dictionary initialized from a mapping object's
    (key, value) pairs.
dict(seq) -> new dictionary initialized as if via:
    d = {}
    for k, v in seq:
        d[k] = v
 
termType = class Term
       
   Methods defined here:
__init__(self, v)
__str__(self)
toXCQL(self, depth=0)

Data and non-method functions defined here:
__doc__ = None
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
value = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
tripleType = class Triple(PrefixableObject)
      Object to represent a CQL triple
 
   Methods defined here:
getResultSetId(self, top=None)
toCQL(self)
toXCQL(self, depth=0)
Create the XCQL representation of the object

Data and non-method functions defined here:
__doc__ = 'Object to represent a CQL triple'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/CQLParser'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
boolean = None
leftOperand = None
rightOperand = None

Methods inherited from PrefixableObject:
__init__(self)
addPrefix(self, name, identifier)
resolvePrefix(self, name)

Data and non-method functions inherited from PrefixableObject:
config = None
parent = None
prefixes = {}
dict() -> new empty dictionary.
dict(mapping) -> new dictionary initialized from a mapping object's
    (key, value) pairs.
dict(seq) -> new dictionary initialized as if via:
    d = {}
    for k, v in seq:
        d[k] = v
 
Data
             XCQLNamespace = 'http://www.loc.gov/zing/cql/xcql/'
__file__ = './PyZ3950/CQLParser.pyc'
__name__ = 'PyZ3950/CQLParser'
booleans = ['and', 'or', 'not', 'prox']
errorOnDuplicatePrefix = 0
errorOnEmptyTerm = 0
errorOnQuotedIdentifier = 0
fullResultSetNameCheck = 1
modifierSeparator = '/'
order = ['=', '>', '>=', '<', '<=', '<>']
reservedPrefixes = {'cql': 'info:srw/cql-context-set/1/cql-v1.1', 'srw': 'http://www.loc.gov/zing/cql/srw-indexes/v1.0/'}
serverChoiceIndex = 'cql.serverchoice'
serverChoiceRelation = 'scr'