abelisaurus abrictosaurus abrosaurus achelosaurus achillobator acrocanthosaurus adasaurus...

Post on 28-Mar-2015

229 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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