abelisaurus abrictosaurus abrosaurus achelosaurus achillobator acrocanthosaurus adasaurus...
Post on 28-Mar-2015
229 Views
Preview:
TRANSCRIPT
Abelisaurus Abrictosaurus Abrosaurus Achelosaurus Achillobator Acrocanthosaurus Adasaurus Aegyptosaurus Aeolosaurus
Afrovenator Agilisaurus Agnostiphys Agustinia Alamosaurus Albertosaurus Alectrosaurus Aletopelta Algoasaurus Alioramus
Aliwalia Allosaurus Alocodon Altirhinus Alvarezsaurus Alxasaurus Amargasaurus Ammosaurus Ampelosaurus Amphicoelias
Amtosaurus Amurosaurus Amygdalodon Anabisetia Anatotitan Anchiceratops Anchisaurus Andesaurus Animantarx Ankylosaurus
Anoplosaurus Anserimimus Antarctosaurus Apatosaurus Aragosaurus Aralosaurus Archaeoceratops Archaeornithoides
Archaeornithomimus Argentinosaurus Argyrosaurus Aristosuchus Arrhinoceratops Arstanosaurus Asiamericana Atlasaurus
Atlascopcosaurus Aucasaurus Austrosaurus Avaceratops Avimimus Bactrosaurus Bagaceratops Bagaraatan Bahariasaurus
Bambiraptor Barapasaurus Barosaurus Barsboldia Baryonyx Becklespinax Beipiaosaurus Bellusaurus Bienosaurus Bihariosaurus
Blikanasaurus Borogovia Bothriospondylus Brachiosaurus Brachylophosaurus Bradycneme Bruhathkayosaurus Bugenasaura
Byronosaurus Caenagnathasia Calamospondylus Camarasaurus Camelotia Camptosaurus Campylodoniscus Carcharodontosaurus
Carnotaurus Caseosaurus Caudipteryx Cedarosaurus Cedarpelta Centrosaurus Ceratops Ceratosaurus Cetiosauriscus
Cetiosaurus Chaoyangosaurus Charonosaurus Chasmosaurus Chialingosaurus Chilantaisaurus Chindesaurus Chingkankousaurus
Chirostenotes Chondrosteosaurus Chuanjiesaurus Chubutisaurus Chungkingosaurus Citipati Claosaurus Coelophysis Coelurus
Coloradisaurus Compsognathus Conchoraptor Corythosaurus Crichtonsaurus Cryolophosaurus Cryptovolans Dacentrurus
Daspletosaurus Datousaurus Deinocheirus Deinonychus Deltadromeus Diceratops Dicraeosaurus Dilophosaurus Dinheirosaurus
Diplodocus Dolichosuchus Draconyx Dracopelta Drinker Dromaeosaurus Dromiceiomimus Dryosaurus Dryptosaurus Dyslocosaurus
Dystrophaeus Echinodon Edmarka Edmontonia Edmontosaurus Einiosaurus Elaphrosaurus Elmisaurus Elopteryx Emausaurus
Enigmosaurus Eobrontosaurus Eolambia Eoraptor Eotyrannus Epachthosaurus Equijubus Erectopus Erliansaurus Erlikosaurus
Eshanosaurus Eucoelophysis Euhelopus Euoplocephalus Euronychodon Euskelosaurus Eustreptospondylus Ferganasaurus
Fukuiraptor Fulgurotherium Gallimimus Galtonia Gargoyleosaurus Garudimimus Gasosaurus Gasparinisaura Gastonia Genusaurus
Genyodectes Giganotosaurus Gilmoreosaurus Gobisaurus Gobititan Gojirasaurus Gongxianosaurus Gorgosaurus Goyocephale
Graciliceratops Gryposaurus Guaibasaurus Hadrosaurus Haplocanthosaurus Harpymimus Herrerasaurus Hesperosaurus
Heterodontosaurus Heyuannia Histriasaurus Homalocephale Hoplitosaurus Huabeisaurus Huayangosaurus Hudiesaurus Hulsanpes
Hylaeosaurus Hypacrosaurus Hypsibema Hypsilophodon Iguanodon Iliosuchus Ilokelesia Incisivosaurus Indosaurus Indosuchus
Ingenia Irritator Isanosaurus Itemirus Iuticosaurus Jainosaurus Janenschia Jeholosaurus Jiangshanosaurus Jingshanosaurus
Jinzhousaurus Jobaria Kaijiangosaurus Kakuru Kentrosaurus Khaan Klamelisaurus Koparion Kotasaurus Kritosaurus
Kulceratops Labocania Lambeosaurus Lanasaurus Lapparentosaurus Leaellynasaura Leptoceratops Lesothosaurus Lessemsaurus
Lexovisaurus Liaoceratops Liaoningosaurus Ligabueino Liliensternus Lirainosaurus Lophorhothon Loricosaurus
A CQL extension for sortingMike Taylor <mike@indexdata.com>
Index Data – http://www.indexdata.com
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
Overview
Where we're headed:
The problem: sorting in SRU 1.1The solution: a CQL extension for sortingExamplesDescriptionThe sorting context setBNF grammarXCQL representationExplain (ZeeRex elements)
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
The problem: sorting in SRU 1.1
The sorting mechanism in SRU 1.1 is inadequate:
It requires its own parser.It uses XPath, a format- and schema-specific solution,It is incapable of expressing namespaces in the XPath.It requires its own parameter in the request.It is not extensible (e.g. Unicode sort) or profilable.It is tied directly to the SRU version.Sort criteria are not part of the query language,
(as is common in other query languages such as SQL.)
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
The solution: a CQL extension
The best solution is to add sorting support to the SRU'squery language, CQL:
Existing CQL indexes can be used in sort specifications (i.e. abstract access points).
Sorting indexes and their modifiers can be profiled in the same way as the core of CQL.
Only a single language parser is required in CQL, with minimal changes required to existing CQL parsers
Fringe benefit: applications of CQL other than SRU/W will benefit from the new capabilities.
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
An ounce of example is worth a ton of exposition
fish sortby title
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
An ounce of example is worth a ton of exposition
fish sortby titlefish and frog sortby title
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
An ounce of example is worth a ton of exposition
fish sortby titlefish and frog sortby titledc.title=fish sortby dc.title
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
An ounce of example is worth a ton of exposition
fish sortby titlefish and frog sortby titledc.title=fish sortby dc.titledc.title=fish sortby numberOfLegs/cql.number
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
An ounce of example is worth a ton of exposition
fish sortby titlefish and frog sortby titledc.title=fish sortby dc.titledc.title=fish sortby numberOfLegs/cql.numberdc.title=fish sortby dc.title/sort.respectCase
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
An ounce of example is worth a ton of exposition
fish sortby titlefish and frog sortby titledc.title=fish sortby dc.titledc.title=fish sortby numberOfLegs/cql.numberdc.title=fish sortby dc.title/sort.respectCasedc.title=fish sortby dc.title/sort.respectCase/sort.descending
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
An ounce of example is worth a ton of exposition
fish sortby titlefish and frog sortby titledc.title=fish sortby dc.titledc.title=fish sortby numberOfLegs/cql.numberdc.title=fish sortby dc.title/sort.respectCasedc.title=fish sortby dc.title/sort.respectCase/sort.descendingdc.title=fish sortby dc.date dc.creator dc.title
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
An ounce of example is worth a ton of exposition
fish sortby titlefish and frog sortby titledc.title=fish sortby dc.titledc.title=fish sortby numberOfLegs/cql.numberdc.title=fish sortby dc.title/sort.respectCasedc.title=fish sortby dc.title/sort.respectCase/sort.descendingdc.title=fish sortby dc.date dc.creator dc.titledc.title=fish sortby dc.date/sort.missingOmit
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
An ounce of example is worth a ton of exposition
fish sortby titlefish and frog sortby titledc.title=fish sortby dc.titledc.title=fish sortby numberOfLegs/cql.numberdc.title=fish sortby dc.title/sort.respectCasedc.title=fish sortby dc.title/sort.respectCase/sort.descendingdc.title=fish sortby dc.date dc.creator dc.titledc.title=fish sortby dc.date/sort.missingOmitdc.title=fish sortby dc.date/sort.missingValue=1970
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
An ounce of example is worth a ton of exposition
fish sortby titlefish and frog sortby titledc.title=fish sortby dc.titledc.title=fish sortby numberOfLegs/cql.numberdc.title=fish sortby dc.title/sort.respectCasedc.title=fish sortby dc.title/sort.respectCase/sort.descendingdc.title=fish sortby dc.date dc.creator dc.titledc.title=fish sortby dc.date/sort.missingOmitdc.title=fish sortby dc.date/sort.missingValue=1970>dc="http://deepcustard.org/1.0" fish sortby dc.custardDepth
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
Description of the sorting extension
Sort-specifications introduced by new "sortby" operator
"sortby" may only occur at the top level of a query
LHS of the "sortby" operator is a classic CQL query
RHS is an ordered list of sort keys, most significant first
Sort key is an index name, with optional modifiers
Indexes and modifiers may be from any context set
Unqualified indexes drawn from the prevailing context-set
Unqualified modifiers drawn from the CQL context set
(The concept of an index modifier is new with this proposal.)
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
The sorting context-set
No indexes, relations, etc. Only index modifiers.
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
The sorting context-set
No indexes, relations, etc. Only index modifiers.
ignoreCase – case-insensitive (usually default)
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
The sorting context-set
No indexes, relations, etc. Only index modifiers.
ignoreCase – case-insensitive (usually default)respectCase – case-sensitive sorting
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
The sorting context-set
No indexes, relations, etc. Only index modifiers.
ignoreCase – case-insensitive (usually default)respectCase – case-sensitive sortingignoreAccents / respectAccents
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
The sorting context-set
No indexes, relations, etc. Only index modifiers.
ignoreCase – case-insensitive (usually default)respectCase – case-sensitive sortingignoreAccents / respectAccentsascending – sort in ascending order (usually default)
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
The sorting context-set
No indexes, relations, etc. Only index modifiers.
ignoreCase – case-insensitive (usually default)respectCase – case-sensitive sortingignoreAccents / respectAccentsascending – sort in ascending order (usually default)descending – sort in descending order
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
The sorting context-set
No indexes, relations, etc. Only index modifiers.
ignoreCase – case-insensitive (usually default)respectCase – case-sensitive sortingignoreAccents / respectAccentsascending – sort in ascending order (usually default)descending – sort in descending ordermissingOmit / missingFail / missingLow / missingHigh
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
The sorting context-set
No indexes, relations, etc. Only index modifiers.
ignoreCase – case-insensitive (usually default)respectCase – case-sensitive sortingignoreAccents / respectAccentsascending – sort in ascending order (usually default)descending – sort in descending ordermissingOmit / missingFail / missingLow / missingHighmissingValue=val – how to sort records lacking key data
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
The sorting context-set
No indexes, relations, etc. Only index modifiers.
ignoreCase – case-insensitive (usually default)respectCase – case-sensitive sortingignoreAccents / respectAccentsascending – sort in ascending order (usually default)descending – sort in descending ordermissingOmit / missingFail / missingLow / missingHighmissingValue=val – how to sort records lacking key datalocale=val – locale-specific sorting rules (accents, etc.)
cqlQuery ::=
prefixAssignment cq
lQuery | scopedClaus
e [sortSpec]
prefixAssignment ::=
'>' prefix '=' uri
| '>' uri
scopedClause ::=
scopedClause boolea
nGroup searchClause
| searchClause
booleanGroup ::=
boolean [modifierLi
st]
boolean ::=
'and' | 'or' | 'not
' | 'prox'
searchClause ::=
'(' cqlQuery ')'
|
index relation sear
chTerm
|
searchTerm
relation ::=
comparitor [modifie
rList]
comparitor ::=
comparitorSymbol |
namedComparitor
comparitorSymbol ::=
'=' | '>' | '<' | '
>=' | '<=' | '<>'
namedComparitor ::=
identifier
modifierList ::=
modifierList modifi
er | modifier
modifier ::=
'/' modifierName [c
omparitorSymbol modi
fierValue]
prefix ::=
term
uri ::=
term
modifierName ::=
term
modifierValue ::=
term
searchTerm ::=
term
index ::=
term
term ::=
identifier | 'and'
| 'or' | 'not' | 'pr
ox' | 'sortby'
identifier ::=
charString1 | charS
tring2
sortSpec ::=
sortSpec singleSpec
| singleSpec
singleSpec ::=
index [modifierList
]
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
Zzzzzzz ...
You can switch off now if you like.
The rest is boringly technical.
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
BNF grammar
Two existing rules need to change:
cqlQuery ::= prefixAssignment cqlQuery | scopedClause [sortSpec]term ::= identifier | 'and' | 'or' | 'not' | 'prox' | 'sortby'
And two new rules are needed:
sortSpec ::= sortSpec singleSpec | singleSpecsingleSpec ::= index [modifierList]
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
XCQL representation<sortKeys>
<key><index>dc.creator</index><modifiers>
<modifier><name>sort.missingValue</name><value>frog</value>
</modifier><modifier>
<name>sort.descending</name></modifier>
</modifiers></key>
</sortKeys>
A CQL extension for sorting Mike Taylor, Index Data <mike@indexdata.com>
Explain (ZeeRex elements)<indexInfo> <set name="sort" identifier="http://zing.z3950.org/cql/sorting/1.0"/> <index sort="true"> <title>Dublin Core Creator (Author)</title> <map><name set="dc">creator</name></map> </index></indexInfo><configInfo> <setting type="maximumSortKeys">3</setting> <default type="sortCase">respectCase</default> <default type="sortDirection">descending</default> <default type=”missingFail”/></configInfo>
Abelisaurus Abrictosaurus Abrosaurus Achelosaurus Achillobator Acrocanthosaurus Adasaurus Aegyptosaurus Aeolosaurus
Afrovenator Agilisaurus Agnostiphys Agustinia Alamosaurus Albertosaurus Alectrosaurus Aletopelta Algoasaurus Alioramus
Aliwalia Allosaurus Alocodon Altirhinus Alvarezsaurus Alxasaurus Amargasaurus Ammosaurus Ampelosaurus Amphicoelias
Amtosaurus Amurosaurus Amygdalodon Anabisetia Anatotitan Anchiceratops Anchisaurus Andesaurus Animantarx Ankylosaurus
Anoplosaurus Anserimimus Antarctosaurus Apatosaurus Aragosaurus Aralosaurus Archaeoceratops Archaeornithoides
Archaeornithomimus Argentinosaurus Argyrosaurus Aristosuchus Arrhinoceratops Arstanosaurus Asiamericana Atlasaurus
Atlascopcosaurus Aucasaurus Austrosaurus Avaceratops Avimimus Bactrosaurus Bagaceratops Bagaraatan Bahariasaurus
Bambiraptor Barapasaurus Barosaurus Barsboldia Baryonyx Becklespinax Beipiaosaurus Bellusaurus Bienosaurus Bihariosaurus
Blikanasaurus Borogovia Bothriospondylus Brachiosaurus Brachylophosaurus Bradycneme Bruhathkayosaurus Bugenasaura
Byronosaurus Caenagnathasia Calamospondylus Camarasaurus Camelotia Camptosaurus Campylodoniscus Carcharodontosaurus
Carnotaurus Caseosaurus Caudipteryx Cedarosaurus Cedarpelta Centrosaurus Ceratops Ceratosaurus Cetiosauriscus
Cetiosaurus Chaoyangosaurus Charonosaurus Chasmosaurus Chialingosaurus Chilantaisaurus Chindesaurus Chingkankousaurus
Chirostenotes Chondrosteosaurus Chuanjiesaurus Chubutisaurus Chungkingosaurus Citipati Claosaurus Coelophysis Coelurus
Coloradisaurus Compsognathus Conchoraptor Corythosaurus Crichtonsaurus Cryolophosaurus Cryptovolans Dacentrurus
Daspletosaurus Datousaurus Deinocheirus Deinonychus Deltadromeus Diceratops Dicraeosaurus Dilophosaurus Dinheirosaurus
Diplodocus Dolichosuchus Draconyx Dracopelta Drinker Dromaeosaurus Dromiceiomimus Dryosaurus Dryptosaurus Dyslocosaurus
Dystrophaeus Echinodon Edmarka Edmontonia Edmontosaurus Einiosaurus Elaphrosaurus Elmisaurus Elopteryx Emausaurus
Enigmosaurus Eobrontosaurus Eolambia Eoraptor Eotyrannus Epachthosaurus Equijubus Erectopus Erliansaurus Erlikosaurus
Eshanosaurus Eucoelophysis Euhelopus Euoplocephalus Euronychodon Euskelosaurus Eustreptospondylus Ferganasaurus
Fukuiraptor Fulgurotherium Gallimimus Galtonia Gargoyleosaurus Garudimimus Gasosaurus Gasparinisaura Gastonia Genusaurus
Genyodectes Giganotosaurus Gilmoreosaurus Gobisaurus Gobititan Gojirasaurus Gongxianosaurus Gorgosaurus Goyocephale
Graciliceratops Gryposaurus Guaibasaurus Hadrosaurus Haplocanthosaurus Harpymimus Herrerasaurus Hesperosaurus
Heterodontosaurus Heyuannia Histriasaurus Homalocephale Hoplitosaurus Huabeisaurus Huayangosaurus Hudiesaurus Hulsanpes
Hylaeosaurus Hypacrosaurus Hypsibema Hypsilophodon Iguanodon Iliosuchus Ilokelesia Incisivosaurus Indosaurus Indosuchus
Ingenia Irritator Isanosaurus Itemirus Iuticosaurus Jainosaurus Janenschia Jeholosaurus Jiangshanosaurus Jingshanosaurus
Jinzhousaurus Jobaria Kaijiangosaurus Kakuru Kentrosaurus Khaan Klamelisaurus Koparion Kotasaurus Kritosaurus
Kulceratops Labocania Lambeosaurus Lanasaurus Lapparentosaurus Leaellynasaura Leptoceratops Lesothosaurus Lessemsaurus
Lexovisaurus Liaoceratops Liaoningosaurus Ligabueino Liliensternus Lirainosaurus Lophorhothon Loricosaurus
A CQL extension for sortingMike Taylor <mike@indexdata.com>
Index Data – http://www.indexdata.com
top related