From: mike Date: Tue, 19 Jun 2007 08:47:25 +0000 (+0000) Subject: New, downloaded from LC X-Git-Tag: v1.5~130 X-Git-Url: http://lists.indexdata.dk/?a=commitdiff_plain;h=36a90e3456fb38d1cf64c206940b3e938c85c4e6;p=cql-java-moved-to-github.git New, downloaded from LC --- diff --git a/spec/cql_files/s61224011715843.gif b/spec/cql_files/s61224011715843.gif new file mode 100644 index 0000000..f4a2493 Binary files /dev/null and b/spec/cql_files/s61224011715843.gif differ diff --git a/spec/cql_files/s6955176837255.gif b/spec/cql_files/s6955176837255.gif new file mode 100644 index 0000000..f4a2493 Binary files /dev/null and b/spec/cql_files/s6955176837255.gif differ diff --git a/spec/cql_files/s_code.js b/spec/cql_files/s_code.js new file mode 100644 index 0000000..1cef32d --- /dev/null +++ b/spec/cql_files/s_code.js @@ -0,0 +1,339 @@ +/* SiteCatalyst code version: H.2. +Copyright 1997-2005 Omniture, Inc. +More info available at http://www.omniture.com */ +/* Specify the Report Suite ID(s) to track here */ +var s_account="locgovprod" +var s=s_gi(s_account) + +/************************** CONFIG SECTION **************************/ + +/* You may add or alter any code config here. */ +s.cookieDomainPeriods="2" +s.cookieLifetime="Session" +s.currencyCode="USD" + +/* Link Tracking Config */ +s.trackDownloadLinks=true +s.trackExternalLinks=true +s.trackInlineStats=true +//s.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,wmv,doc,pdf,xls" +s.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,wmv,doc,pdf,xls,xml,sgm,sgml,brf,txt,jpg,jpeg,jp2,gif,tif,tiff,pcx,sid,ram,ra,mpeg,ppt" +s.linkInternalFilters="javascript:,loc.gov,americaslibrary.kids.us, americaslibrary.gov,copyright.gov,digitalpreservation.gov,americaslibrary.com,glin.gov,americasstory.com,crs.gov,classificationweb.net,worlddigitallibrary.gov,jewishheritagemonth.gov" +s.linkLeaveQueryString=false +s.linkTrackVars="None" +s.linkTrackEvents="None" + +/* WARNING: Changing the visitor namespace will cause drastic changes +to how your visitor data is collected. Changes should only be made +when instructed to do so by your account manager.*/ +s.visitorNamespace="thelibraryofcongress" + +s.usePlugins=true +function s_doPlugins(s) { + s.campaign=s.getQueryParam('source'); + + if (window.omn_SearchTerm){s.prop4=omn_SearchTerm} + if (!s.prop2) {s.prop2=s.getQueryParam('qt');} + if(s.prop4){s.prop4=s.prop4.toLowerCase()} + + s.server=document.domain + s.prop1=document.title + + s.prop8=s.getQueryParam('cclquery') + s.prop9=s.getQueryParam('queryText') + +} +s.doPlugins=s_doPlugins +/*s.prop5=s.getQueryParam('cclquery'); +s.prop6=s.getQueryParam('queryText');*/ + +/************************** PLUGINS SECTION *************************/ +/* You may insert any plugins you wish to use here. */ + +/* Plugin: getQueryParam 1.1 - Return query string parameter values */ +s.getQueryParam=new Function("qp","d","" ++"var s=this,v='',d=d?d:'',i,t;while(qp){i=qp.indexOf(',');i=i<0?qp.l" ++"ength:i;t=s.gcgi(qp.substring(0,i));if(t)v+=v?d+t:t;qp=qp.substring" ++"(i==qp.length?i:i+1)}return v"); +s.gcgi=new Function("k","" ++"var v='',s=this;if(k&&s.wd.location.search){var q=s.wd.location.sea" ++"rch.toLowerCase(),qq=q.indexOf('?');q=qq<0?q:q.substring(qq+1);v=s." ++"pt(q,'&','cgif',k.toLowerCase())}return v"); +s.cgif=new Function("t","k","" ++"if(t){var s=this,i=t.indexOf('='),sk=i<0?t:t.substring(0,i),sv=i<0?" ++"'True':t.substring(i+1);if(sk.toLowerCase()==k)return s.epa(sv)}ret" ++"urn ''"); + +/* Plugin: getAndPersistValue 0.1 - get a value on every page */ +s.getAndPersistValue=new Function("v","c","e","" ++"var s=this,a=new Date;" ++"a.setTime(a.getTime()+e*86400000);" ++"if(v)s.c_w(c,v,e?a:0);" ++"return s.c_r(c);"); + +/* Plugin: getValOnce 0.1 - get a value once per session or number of days */ +s.getValOnce=new Function("v","c","e","" ++"var s=this,k=s.c_r(c),a=new Date;" ++"if(v){" ++"a.setTime(a.getTime()+e*86400000);" ++"s.c_w(c,v,e?a:0);" ++"}" ++"return v==k?'':v"); + +/* Function - read combined cookies v 0.1 */ +s.c_rr=s.c_r; +s.c_r=new Function("k","" ++"var s=this,d=new Date,v=s.c_rr(k),c=s.c_rr('s_pers'),i,m,e;if(v)ret" ++"urn v;k=s.ape(k);i=c.indexOf(' '+k+'=');c=i<0?s.c_rr('s_sess'):c;i=" ++"c.indexOf(' '+k+'=');m=i<0?i:c.indexOf('|',i);e=i<0?i:c.indexOf(';'" ++",i);m=m>0?m:e;v=i<0?'':s.epa(c.substring(i+2+k.length,m<0?c.length:" ++"m));if(m>0&&m!=e)if(parseInt(c.substring(m+1,e<0?c.length:e))d.getTime())" ++"{pv+=' '+k+'='+s.ape(v)+'|'+e.getTime()+';';pc=1;}}else{sv+=' '+k+'" ++"='+s.ape(v)+';';sc=1;}if(sc) s.c_wr(sn,sv,0);if(pc){t=pv;while(t){v" ++"ar t1=parseInt(t.substring(t.indexOf('|')+1,t.indexOf(';')));t=t.su" ++"bstring(t.indexOf(';')+1);ht=ht= +0&&b=0&&c=0){x+=(e>s?f.substring(s,e): +'')+(e==c?'\\n':'\\'+f.substring(e,e+1));s=e+1}else return x ++f.substring(s)}return f}function s_c2fa(f){var s=f.indexOf('(')+1,e= +f.indexOf(')'),a='',c;while(s>=0&&s=0){d=1;q='';x=0;f=c.substring(s);a= +s_c2fa(f);e=o=c.indexOf('{',s);e++;while(d>0){h=c.substring(e,e+1);if( +q){if(h==q&&!x)q='';if(h=='\\')x=x?0:1;else x=0}else{if(h=='"'||h=="'" +)q=h;if(h=='{')d++;if(h=='}')d--}if(d>0)e++}c=c.substring(0,s) ++'new Function('+(a?a+',':'')+'"'+s_c2fe(c.substring(o+1,e))+'")' ++c.substring(e+1);s=c.indexOf('function')}fc+=s_c2fe(c)+';return s");' +eval(fc);return f}function s_gi(un,pg,ss){var c="function s_c(un,pg,s" ++"s){var s=this;s.wd=window;if(!s.wd.s_c_in){s.wd.s_c_il=new Array;s." ++"wd.s_c_in=0;}s._il=s.wd.s_c_il;s._in=s.wd.s_c_in;s._il[s._in]=s;s.w" ++"d.s_c_in++;s.m=function(m){return (''+m).indexOf('{')<0};s.fl=funct" ++"ion(x,l){return x?(''+x).substring(0,l):x};s.co=function(o){if(!o)r" ++"eturn o;var n=new Object,x;for(x in o)if(x.indexOf('select')<0&&x.i" ++"ndexOf('filter')<0)n[x]=o[x];return n};s.num=function(x){x=''+x;for" ++"(var p=0;p0?n.length:1;while(x&&i>=0){x=x.substring(0,i)+n+x.substri" ++"ng(i+o.length);i=x.indexOf(o,i+l)}return x};s.ape=function(x){var s" ++"=this,i;x=x?s.rep(escape(''+x),'+','%2B'):x;if(x&&s.charSet&&s.em==" ++"1&&x.indexOf('%u')<0&&x.indexOf('%U')<0){i=x.indexOf('%');while(i>=" ++"0){i++;if(('89ABCDEFabcdef').indexOf(x.substring(i,i+1))>=0)return " ++"x.substring(0,i)+'u00'+x.substring(i);i=x.indexOf('%',i)}}return x}" ++";s.epa=function(x){var s=this;return x?unescape(s.rep(''+x,'+',' ')" ++"):x};s.pt=function(x,d,f,a){var s=this,t=x,z=0,y,r;while(t){y=t.ind" ++"exOf(d);y=y<0?t.length:y;t=t.substring(0,y);r=s.m(f)?s[f](t,a):f(t," ++"a);if(r)return r;z+=y+d.length;t=x.substring(z,x.length);t=z=0" ++")a=a.substring(0,c);if(t.substring(0,2)=='s_')t=t.substring(2);retu" ++"rn (t!=''&&t==a)};s.fsf=function(t,a){var s=this;if(s.pt(a,',','isf" ++"',t))s.fsg+=(s.fsg!=''?',':'')+t;return 0};s.fs=function(x,f){var s" ++"=this;s.fsg='';s.pt(x,',','fsf',f);return s.fsg};s.c_d='';s.c_gdf=f" ++"unction(t,a){var s=this;if(!s.num(t))return 1;return 0};s.c_gd=func" ++"tion(){var s=this,d=s.wd.location.hostname,n=s.cookieDomainPeriods," ++"p;if(d&&!s.c_d){n=n?parseInt(n):2;n=n>2?n:2;p=d.lastIndexOf('.');wh" ++"ile(p>=0&&n>1){p=d.lastIndexOf('.',p-1);n--}s.c_d=p>0&&s.pt(d,'.','" ++"c_gdf',0)?d.substring(p):''}return s.c_d};s.c_r=function(k){var s=t" ++"his;k=s.ape(k);var c=' '+s.d.cookie,i=c.indexOf(' '+k+'='),e=i<0?i:" ++"c.indexOf(';',i),v=i<0?'':s.epa(c.substring(i+2+k.length,e<0?c.leng" ++"th:e));return v!='[[B]]'?v:''};s.c_w=function(k,v,e){var s=this,d=s" ++".c_gd(),l=s.cookieLifetime,t;v=''+v;l=l?(''+l).toUpperCase():'';if(" ++"e&&l!='SESSION'&&l!='NONE'){t=(v!=''?parseInt(l?l:0):-60);if(t){e=n" ++"ew Date;e.setTime(e.getTime()+(t*1000))}}if(k&&l!='NONE'){s.d.cooki" ++"e=k+'='+s.ape(v!=''?v:'[[B]]')+'; path=/;'+(e&&l!='SESSION'?' expir" ++"es='+e.toGMTString()+';':'')+(d?' domain='+d+';':'');return s.c_r(k" ++")==v}return 0};s.eh=function(o,e,r,f){var s=this,b='s_'+e+'_'+s._in" ++",n=-1,l,i,x;if(!s.ehl)s.ehl=new Array;l=s.ehl;for(i=0;i=5)eval('try{r=s.m(f)?s[f](a):f(a)}catch(e){r=s.m(" ++"t)?s[t](e):t(e)}');else{if(s.ismac&&s.u.indexOf('MSIE 4')>=0)r=s.m(" ++"b)?s[b](a):b(a);else{s.eh(s.wd,'onerror',0,o);r=s.m(f)?s[f](a):f(a)" ++";s.eh(s.wd,'onerror',1)}}return r};s.gtfset=function(e){var s=this;" ++"return s.tfs};s.gtfsoe=new Function('e','var s=s_c_il['+s._in+'];s." ++"eh(window,\"onerror\",1);s.etfs=1;var c=s.t();if(c)s.d.write(c);s.e" ++"tfs=0;return true');s.gtfsfb=function(a){return window};s.gtfsf=fun" ++"ction(w){var s=this,p=w.parent,l=w.location;s.tfs=w;if(p&&p.locatio" ++"n!=l&&p.location.host==l.host){s.tfs=p;return s.gtfsf(s.tfs)}return" ++" s.tfs};s.gtfs=function(){var s=this;if(!s.tfs){s.tfs=s.wd;if(!s.et" ++"fs)s.tfs=s.cet('gtfsf',s.tfs,'gtfset',s.gtfsoe,'gtfsfb')}return s.t" ++"fs};s.ca=function(){var s=this,imn='s_i_'+s.fun;if(s.d.images&&s.ap" ++"v>=3&&!s.isopera&&(s.ns6<0||s.apv>=6.1)){s.ios=1;if(!s.d.images[imn" ++"]&&(!s.isns||(s.apv<4||s.apv>=5))){s.d.write('');if(!s.d.images[imn])s.ios" ++"=0}}};s.mr=function(sess,q,ta){var s=this,ns=s.visitorNamespace,unc" ++"=s.rep(s.fun,'_','-'),imn='s_i_'+s.fun,im,b,e,rs='http'+(s.ssl?'s':" ++"'')+'://'+(ns?ns:(s.ssl?'102':unc))+'.122.2O7.net/b/ss/'+s.un+'/1/H" ++".2-pdv-2/'+sess+'?[AQB]&ndh=1'+(q?q:'')+(s.q?s.q:'')+'&[AQE]';if(s." ++"isie&&!s.ismac){if(s.apv>5.5)rs=s.fl(rs,4095);else rs=s.fl(rs,2047)" ++"}if(s.ios){im=s.wd[imn]?s.wd[imn]:s.d.images[imn];if(!im)im=s.wd[im" ++"n]=new Image;im.src=rs;if(rs.indexOf('&pe=')>=0&&(!ta||ta=='_self'|" ++"|ta=='_top'||(s.wd.name&&ta==s.wd.name))){b=e=new Date;while(e.getT" ++"ime()-b.getTime()<500)e=new Date}return ''}return ''};s.gg=function(v){v" ++"ar s=this;return s.wd['s_'+v]};s.glf=function(t,a){if(t.substring(0" ++",2)=='s_')t=t.substring(2);var s=this,v=s.gg(t);if(v)s[t]=v};s.gl=f" ++"unction(v){var s=this;s.pt(v,',','glf',0)};s.gv=function(v){var s=t" ++"his;return s['vpm_'+v]?s['vpv_'+v]:s[v]};s.havf=function(t,a){var s" ++"=this,b=t.substring(0,4),x=t.substring(4),n=parseInt(x),k='g_'+t,m=" ++"'vpm_'+t,q=t,v=s.linkTrackVars,e=s.linkTrackEvents;s[k]=s.gv(t);if(" ++"s.lnk||s.eo){v=v?v+','+s.vl_l:'';if(v&&!s.pt(v,',','isf',t))s[k]=''" ++";if(t=='events'&&e)s[k]=s.fs(s[k],e)}s[m]=0;if(t=='pageURL')q='g';e" ++"lse if(t=='referrer')q='r';else if(t=='vmk')q='vmt';else if(t=='cha" ++"rSet'){q='ce';if(s[k]&&s.em==2)s[k]='UTF-8'}else if(t=='visitorName" ++"space')q='ns';else if(t=='cookieDomainPeriods')q='cdp';else if(t=='" ++"cookieLifetime')q='cl';else if(t=='visitVariableProvider')q='vvp';e" ++"lse if(t=='currencyCode')q='cc';else if(t=='channel')q='ch';else if" ++"(t=='campaign')q='v0';else if(s.num(x)) {if(b=='prop')q='c'+n;else " ++"if(b=='eVar')q='v'+n;else if(b=='hier'){q='h'+n;s[k]=s.fl(s[k],255)" ++"}}if(s[k]&&t!='linkName'&&t!='linkType')s.qav+='&'+q+'='+s.ape(s[k]" ++");return ''};s.hav=function(){var s=this;s.qav='';s.pt(s.vl_t,',','" ++"havf',0);return s.qav};s.lnf=function(t,h){t=t?t.toLowerCase():'';h" ++"=h?h.toLowerCase():'';var te=t.indexOf('=');if(t&&te>0&&h.indexOf(t" ++".substring(te+1))>=0)return t.substring(0,te);return ''};s.ln=funct" ++"ion(h){var s=this,n=s.linkNames;if(n)return s.pt(n,',','lnf',h);ret" ++"urn ''};s.ltdf=function(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCa" ++"se():'';var qi=h.indexOf('?');h=qi>=0?h.substring(0,qi):h;if(t&&h.s" ++"ubstring(h.length-(t.length+1))=='.'+t)return 1;return 0};s.ltef=fu" ++"nction(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'';if(t&&h.i" ++"ndexOf(t)>=0)return 1;return 0};s.lt=function(h){var s=this,lft=s.l" ++"inkDownloadFileTypes,lef=s.linkExternalFilters,lif=s.linkInternalFi" ++"lters;lif=lif?lif:s.wd.location.hostname;h=h.toLowerCase();if(s.tra" ++"ckDownloadLinks&&lft&&s.pt(lft,',','ltdf',h))return 'd';if(s.trackE" ++"xternalLinks&&(lef||lif)&&(!lef||s.pt(lef,',','ltef',h))&&(!lif||!s" ++".pt(lif,',','ltef',h)))return 'e';return ''};s.lc=new Function('e'," ++"'var s=s_c_il['+s._in+'],b=s.eh(this,\"onclick\");s.lnk=s.co(this);" ++"s.t();s.lnk=0;if(b)return this[b](e);return true');s.bc=new Functio" ++"n('e','var s=s_c_il['+s._in+'];if(s.d&&s.d.all&&s.d.all.cppXYctnr)r" ++"eturn;s.eo=e.srcElement?e.srcElement:e.target;s.t();s.eo=0');s.ot=f" ++"unction(o){var a=o.type,b=o.tagName;return (a&&a.toUpperCase?a:b&&b" ++".toUpperCase?b:o.href?'A':'').toUpperCase()};s.oid=function(o){var " ++"s=this,t=s.ot(o),p=o.protocol,c=o.onclick,n='',x=0;if(!o.s_oid){if(" ++"o.href&&(t=='A'||t=='AREA')&&(!c||!p||p.toLowerCase().indexOf('java" ++"script')<0))n=o.href;else if(c){n=s.rep(s.rep(s.rep(s.rep(''+c,\"\\" ++"r\",''),\"\\n\",''),\"\\t\",''),' ','');x=2}else if(o.value&&(t=='I" ++"NPUT'||t=='SUBMIT')){n=o.value;x=3}else if(o.src&&t=='IMAGE')n=o.sr" ++"c;if(n){o.s_oid=s.fl(n,100);o.s_oidt=x}}return o.s_oid};s.rqf=funct" ++"ion(t,un){var s=this,e=t.indexOf('='),u=e>=0?','+t.substring(0,e)+'" ++",':'';return u&&u.indexOf(','+un+',')>=0?s.epa(t.substring(e+1)):''" ++"};s.rq=function(un){var s=this,c=un.indexOf(','),v=s.c_r('s_sq'),q=" ++"'';if(c<0)return s.pt(v,'&','rqf',un);return s.pt(un,',','rq',0)};s" ++".sqp=function(t,a){var s=this,e=t.indexOf('='),q=e<0?'':s.epa(t.sub" ++"string(e+1));s.sqq[q]='';if(e>=0)s.pt(t.substring(0,e),',','sqs',q)" ++";return 0};s.sqs=function(un,q){var s=this;s.squ[un]=q;return 0};s." ++"sq=function(q){var s=this,k='s_sq',v=s.c_r(k),x,c=0;s.sqq=new Objec" ++"t;s.squ=new Object;s.sqq[q]='';s.pt(v,'&','sqp',0);s.pt(s.un,',','s" ++"qs',q);v='';for(x in s.squ)s.sqq[s.squ[x]]+=(s.sqq[s.squ[x]]?',':''" ++")+x;for(x in s.sqq)if(x&&s.sqq[x]&&(x==q||c<2)){v+=(v?'&':'')+s.sqq" ++"[x]+'='+s.ape(x);c++}return s.c_w(k,v,0)};s.wdl=new Function('e','v" ++"ar s=s_c_il['+s._in+'],r=true,b=s.eh(s.wd,\"onload\"),i,o,oc;if(b)r" ++"=this[b](e);for(i=0;i=0)&&oc.indexOf(\".tl(\")<0)s.eh(o,\"onclick\",0,s.lc);}r" ++"eturn r');s.wds=function(){var s=this;if(s.apv>3&&(!s.isie||!s.isma" ++"c||s.apv>=5)){if(s.b&&s.b.attachEvent)s.b.attachEvent('onclick',s.b" ++"c);else if(s.b&&s.b.addEventListener)s.b.addEventListener('click',s" ++".bc,false);else s.eh(s.wd,'onload',0,s.wdl)}};s.vs=function(x){var " ++"s=this,v=s.visitorSampling,g=s.visitorSamplingGroup,k='s_vsn_'+s.un" ++"+(g?'_'+g:''),n=s.c_r(k),e=new Date,y=e.getYear();e.setYear(y+10+(y" ++"<1900?1900:0));if(v){v*=100;if(!n){if(!s.c_w(k,x,e))return 0;n=x}if" ++"(n%10000>v)return 0}return 1};s.dyasmf=function(t,m){if(t&&m&&m.ind" ++"exOf(t)>=0)return 1;return 0};s.dyasf=function(t,m){var s=this,i=t?" ++"t.indexOf('='):-1,n,x;if(i>=0&&m){var n=t.substring(0,i),x=t.substr" ++"ing(i+1);if(s.pt(x,',','dyasmf',m))return n}return 0};s.uns=functio" ++"n(){var s=this,x=s.dynamicAccountSelection,l=s.dynamicAccountList,m" ++"=s.dynamicAccountMatch,n,i;s.un.toLowerCase();if(x&&l){if(!m)m=s.wd" ++".location.host;if(!m.toLowerCase)m=''+m;l=l.toLowerCase();m=m.toLow" ++"erCase();n=s.pt(l,';','dyasf',m);if(n)s.un=n}i=s.un.indexOf(',');s." ++"fun=i<0?s.un:s.un.substring(0,i)};s.t=function(){var s=this,trk=1,t" ++"m=new Date,sed=Math&&Math.random?Math.floor(Math.random()*100000000" ++"00000):tm.getTime(),sess='s'+Math.floor(tm.getTime()/10800000)%10+s" ++"ed,yr=tm.getYear(),vt=tm.getDate()+'/'+tm.getMonth()+'/'+(yr<1900?y" ++"r+1900:yr)+' '+tm.getHours()+':'+tm.getMinutes()+':'+tm.getSeconds(" ++")+' '+tm.getDay()+' '+tm.getTimezoneOffset(),tfs=s.gtfs(),ta='',q='" ++"',qs='';s.uns();if(!s.q){var tl=tfs.location,x='',c='',v='',p='',bw" ++"='',bh='',j='1.0',k=s.c_w('s_cc','true',0)?'Y':'N',hp='',ct='',pn=0" ++",ps;if(s.apv>=4)x=screen.width+'x'+screen.height;if(s.isns||s.isope" ++"ra){if(s.apv>=3){j='1.1';v=s.n.javaEnabled()?'Y':'N';if(s.apv>=4){j" ++"='1.2';c=screen.pixelDepth;bw=s.wd.innerWidth;bh=s.wd.innerHeight;i" ++"f(s.apv>=4.06)j='1.3'}}s.pl=s.n.plugins}else if(s.isie){if(s.apv>=4" ++"){v=s.n.javaEnabled()?'Y':'N';j='1.2';c=screen.colorDepth;if(s.apv>" ++"=5){bw=s.d.documentElement.offsetWidth;bh=s.d.documentElement.offse" ++"tHeight;j='1.3';if(!s.ismac&&s.b){s.b.addBehavior('#default#homePag" ++"e');hp=s.b.isHomePage(tl)?\"Y\":\"N\";s.b.addBehavior('#default#cli" ++"entCaps');ct=s.b.connectionType}}}else r=''}if(s.pl)while(pn=0&&oc.indexOf(\".s_oc(\")<0)||oc.indexOf(\".tl(\")>=0)return " ++"''}ta=o.target;h=o.href?o.href:'';i=h.indexOf('?');h=s.linkLeaveQue" ++"ryString||i<0?h:h.substring(0,i);l=s.linkName?s.linkName:s.ln(h);t=" ++"s.linkType?s.linkType.toLowerCase():s.lt(h);if(t&&(h||l))q+='&pe=ln" ++"k_'+(t=='d'||t=='e'?s.ape(t):'o')+(h?'&pev1='+s.ape(h):'')+(l?'&pev" ++"2='+s.ape(l):'');else trk=0;if(s.trackInlineStats){if(!p){p=s.gv('p" ++"ageURL');w=0}t=s.ot(o);i=o.sourceIndex;if(s.gg('objectID')){n=s.gg(" ++"'objectID');x=1;i=1}if(p&&n&&t)qs='&pid='+s.ape(s.fl(p,255))+(w?'&p" ++"idt='+w:'')+'&oid='+s.ape(s.fl(n,100))+(x?'&oidt='+x:'')+'&ot='+s.a" ++"pe(t)+(i?'&oi='+i:'')}}if(!trk&&!qs)return '';var code='';if(trk&&s" ++".vs(sed))code=s.mr(sess,(vt?'&t='+s.ape(vt):'')+s.hav()+q+(qs?qs:s." ++"rq(s.un)),ta);s.sq(trk?'':qs);s.lnk=s.eo=s.linkName=s.linkType=s.wd" ++".s_objectID='';return code};s.tl=function(o,t,n){var s=this;s.lnk=s" ++".co(o);s.linkType=t;s.linkName=n;s.t()};s.ssl=(s.wd.location.protoc" ++"ol.toLowerCase().indexOf('https')>=0);s.d=document;s.b=s.d.body;s.n" ++"=navigator;s.u=s.n.userAgent;s.ns6=s.u.indexOf('Netscape6/');var ap" ++"n=s.n.appName,v=s.n.appVersion,ie=v.indexOf('MSIE '),i;if(v.indexOf" ++"('Opera')>=0||s.u.indexOf('Opera')>=0)apn='Opera';s.isie=(apn=='Mic" ++"rosoft Internet Explorer');s.isns=(apn=='Netscape');s.isopera=(apn=" ++"='Opera');s.ismac=(s.u.indexOf('Mac')>=0);if(ie>0){s.apv=parseInt(i" ++"=v.substring(ie+5));if(s.apv>3)s.apv=parseFloat(i)}else if(s.ns6>0)" ++"s.apv=parseFloat(s.u.substring(s.ns6+10));else s.apv=parseFloat(v);" ++"s.em=0;if(String.fromCharCode){i=escape(String.fromCharCode(256)).t" ++"oUpperCase();s.em=(i=='%C4%80'?2:(i=='%U0100'?1:0))}s.un=un;s.uns()" ++";s.vl_l='vmk,charSet,visitorNamespace,cookieDomainPeriods,cookieLif" ++"etime,visitVariableProvider,pageName,pageURL,referrer,currencyCode," ++"purchaseID';s.vl_t=s.vl_l+',channel,server,pageType,campaign,state," ++"zip,events,products,linkName,linkType';for(var n=1;n<51;n++)s.vl_t+" ++"=',prop'+n+',eVar'+n+',hier'+n;s.vl_g=s.vl_t+',trackDownloadLinks,t" ++"rackExternalLinks,trackInlineStats,linkLeaveQueryString,linkDownloa" ++"dFileTypes,linkExternalFilters,linkInternalFilters,linkNames';if(pg" ++")s.gl(s.vl_g);if(!ss){s.wds();s.ca()}}", +l=window.s_c_il,n=navigator,u=n.userAgent,v=n.appVersion,e=v.indexOf( +'MSIE '),m=u.indexOf('Netscape6/'),a,i,s;if(l)for(i=0;i0){a=parseInt(i=v.substring(e ++5));if(a>3)a=parseFloat(i)}else if(m>0)a=parseFloat(u.substring(m+10) +);else a=parseFloat(v);if(a>=5&&v.indexOf('Opera')<0&&u.indexOf( +'Opera')<0){eval(c);return new s_c(un,pg,ss)}else s=s_c2f(c);return s( +un,pg,ss)} +/* Set any SiteCatalyst variables here */ +/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/ +var s_code=s.t();if(s_code)document.write(s_code) + + diff --git a/spec/cql_files/sru-title.gif b/spec/cql_files/sru-title.gif new file mode 100644 index 0000000..a1deafb Binary files /dev/null and b/spec/cql_files/sru-title.gif differ diff --git a/spec/cql_files/sru.css b/spec/cql_files/sru.css new file mode 100644 index 0000000..17f7a60 --- /dev/null +++ b/spec/cql_files/sru.css @@ -0,0 +1,288 @@ +body { + text-align: center; + background-color: #eeeeee; + font: 11pt Verdana, Arial, Helvetica, sans-serif; + margin: 0; + padding: 0; + border: 0; +} +a#skip { + position: absolute; + top:-100px; +} +#container { + text-align: left; + width: 740px; + background-color: #ffffff; + border: 1px solid #000000; + margin-right: auto; + margin-left: auto; +} +#header { + width: 740px; + height: 100px; +} +#highlevel { + width: 740px; + height: 30px; + background-color: #333333; +} +#top-left { + margin-left: 8px; + margin-top: 5px; + margin-bottom: 0px; + float: left; + font: 8pt/14pt Verdana, Arial, Helvetica, sans-serif; +} +a.white { + color: #EEEEEE; + text-decoration: none; +} +a.white:hover { + color: #FFFFFF; + text-decoration: underline; +} +.white-text { + color: #EEEEEE; +} +#top-right { + margin-top: 3px; + float: right; +} +.drop-box { + font-size: 8pt; + background: #FEFBF2; +} +form { + margin-bottom: 0; +} +form input.button { + margin-right: 5px; + background-color: #ffffff; + font: bold 8pt Verdana, Arial, Helvetica, sans-serif; + color: #de5901; + border: 1px solid #F8E7B1; +} +h1.graphic { + valign: top; + width: 740px; + height: 60px; + margin: 0px; + padding: 0px; + border: 0px; +} +#body { + clear: both; + padding-left: 5px; + padding-right: 5px; + margin-left: 5px; + margin-right: 5px; + padding-top: 0px; + padding-bottom: 10px; + margin-top: 5px; +} +.box { + clear: both; + border: 1px dotted #333333; + align: center; + margin: 2px; + padding: 8px; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 9pt; + line-height: 20px; + background-color: #f9f4f3; +} +.box2 { + clear: both; + border: thin dashed #333333; + align: left; + width: 600px; + padding: 8px; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 9pt; + line-height: 20px; + background-color: #fbf0e8; +} +.box3 { + border: 1px dotted #de5901; + float: right; + width: 220px; + padding: 8px; + margin: 5px; + background-color: #FFF9E5; + font-size: 9pt; +} +ul { + margin-top: 2px; + margin-bottom: 23px; + list-style-image: url(images/arrow-bullet.gif); + margin-left: 25px; + padding-left: 0px; +} +ul li { + padding-left: -20px; + font: 10pt/17pt Verdana, Arial, Helvetica, sans-serif; +} +ol li { + padding-left: -20px; + font: 10pt/17pt Verdana, Arial, Helvetica, sans-serif; +} + +ul.news li { + padding-left: -20px; + font: 9pt/15pt verdana, helvetica, sans-serif; +} +ul li ul { + margin-top: 0px; + margin-bottom: 0px; + list-style-image: url(images/arrow-bullet2.gif); + margin-left: 25px; + padding-left: 0px; +} +ul li ul li { + padding-left: -20px; + font: 10pt/170% Verdana, Helvetica, sans-serif; +} +h1 { + color: #4f241a; + margin-top: 15px; + margin-bottom: 10px; + padding: 0px; + font-family: Georgia, "Times New Roman", Times, serif; + font-size: 16pt; + font-weight: 600; + font-variant: small-caps; + +} +h1.homepage { + margin: 0px; + padding: 0px; +} +h2.news { + color: #56483f; + font-size: 14pt; + font-family: "Times New Roman", Times, serif; + margin-top: 0px; + margin-right: 0px; + margin-bottom: 5px; + margin-left: 0px; + padding-top: 0px; + padding-right: 0px; + padding-bottom: 0px; + padding-left: 0px; + font-variant: small-caps; +} +h2 { + color: #fb7e2b; + font-size: 14pt; + font-family: Arial, Helvetica, sans-serif; + margin-top: 5px; + margin-right: 0px; + margin-bottom: 10px; + margin-left: 0px; + padding-top: 5px; + padding-right: 0px; + padding-bottom: 0px; + padding-left: 0px; + font-weight: 400; + font-variant: normal; + +} +h3 { + color: #69391a; + font-size: 12pt; + font-family: Arial, Helvetica, sans-serif; + margin-top: 5px; + margin-right: 0px; + margin-bottom: 10px; + margin-left: 0px; + padding-top: 5px; + padding-right: 0px; + padding-bottom: 0px; + padding-left: 0px; + font-weight: 600; + font-style: italic; + + +} +h3.homepage { + margin: 0px; + padding: 0px; +} +h4 { + color: #666666; + font-size: 11pt; + font-family: Verdana, Arial, Helvetica, sans-serif; + margin-top: 5px; + margin-right: 0px; + margin-bottom: 10px; + margin-left: 0px; + padding-top: 5px; + padding-right: 0px; + padding-bottom: 0px; + padding-left: 0px; +} +#footer { + width: 740px; + height: 45px; + background-color: #333333; +} +#bottom-left { + margin-left: 8px; + margin-top: 6px; + margin-bottom: 0px; + float: left; + font: 8pt/14pt Verdana, Arial, Helvetica, sans-serif; +} +#contactus { + margin-top: 6px; + margin-right: 5px; + float: right; + text-align: right; + font: 8pt verdana, helvetica, sans-serif; +} +#top-bread { + margin-left: 10px; + margin-top: -6px; + font: 8pt verdana, helvetica, sans-serif; +} +#bottom-bread { + margin-left: 0px; + margin-bottom: 0px; + margin-top: 20px; + font: 8pt verdana, helvetica, sans-serif; +} +.selected { + color: #69391a; + font-weight: bold; +} +p { + font: 10pt/18pt verdana, helvetica, sans-serif; + margin-top: 5px; + margin-bottom: 10px; +} +.progdesc { + color: #FFFFEE; + font-weight: bold; +} +pre { + font-family: "Courier New", Courier, mono; + font-size: 9pt; +} +.navigation { + font-size: 8pt; + line-height: 14pt; +} +.small { + font-size: 9pt; + color: #666666; + line-height: 13pt; +} +.pdf { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 8pt; + color: #666666; +} +.orange + +{color:#FF8000;} \ No newline at end of file diff --git a/spec/cql_files/stdLauncher.js b/spec/cql_files/stdLauncher.js new file mode 100644 index 0000000..88f4db4 --- /dev/null +++ b/spec/cql_files/stdLauncher.js @@ -0,0 +1,258 @@ +// Customer: Library of Congress +// Version : DHTML Trigger 2.1 +var popUpURL = "//www.foreseeresults.com/survey/display"; // base URL to the survey +var ckAlreadyShown = triggerParms["ascookie"]; // name of the persistent/session cookie +var ckLoyaltyCount = triggerParms["lfcookie"]; // name of the loyalty count cookie +var fullURL=null; +var oldURL=null; +var fsr_browser =null; +var winOptions = "width= 1,height= 1,top= 4000,left= 4000,resizable=yes,scrollbars=yes"; +var persistentExpires = new Date(); // persistent cookie expiration +persistentExpires.setTime(persistentExpires.getTime() + (triggerParms["rw"]*60*1000)); +function ForeCStdGetCookie (name) { + var arg = name + "="; + var alen = arg.length; + var clen = document.cookie.length; + var i = 0; + while (i < clen) { + var j = i + alen; + if (document.cookie.substring(i, j) == arg) { + return ForeCStdGetCookieVal (j); + } + i = document.cookie.indexOf(" ", i) + 1; + if (i == 0) { + break; + } + } + return null; +} +function fsr_IEshowWindow() { + if (eval("document.all.fsr_window").filters.revealTrans.status == 0) { + eval("document.all.fsr_window").filters.revealTrans.transition = 23 ; + eval("document.all.fsr_window").filters.revealTrans.Apply(); + eval("document.all.fsr_window").style.visibility = 'visible'; + eval("document.all.fsr_window").filters.revealTrans.Play(); + } else { + eval("document.all.fsr_window").style.visibility = 'visible'; + } +} +function fsr_hideWindow() { + if (fsr_browser=="fsr_ie"){ + if (eval("document.all.fsr_window").filters.revealTrans.status == 0) { + eval("document.all.fsr_window").filters.revealTrans.transition = 23; + eval("document.all.fsr_window").filters.revealTrans.Apply(); + eval("document.all.fsr_window").style.visibility = 'hidden'; + eval("document.all.fsr_window").filters.revealTrans.Play(); + } else { + eval("document.all.fsr_window").style.visibility = 'hidden'; + } + } else { + document.getElementById("fsr_window").style.visibility = 'hidden'; + } +} +function fsr_showWindow() { + document.getElementById("fsr_window").style.visibility = 'visible'; +} +function ForeCStdSetCookie (name, value) { + var argv = ForeCStdSetCookie.arguments; + var argc = ForeCStdSetCookie.arguments.length; + var expires = (argc > 2) ? argv[2] : null; + var path = (argc > 3) ? argv[3] : null; + var domain = (argc > 4) ? argv[4] : null; + var secure = (argc > 5) ? argv[5] : false; + document.cookie = name + "=" + escape (value) + + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + + ((path == null) ? "" : ("; path=" + path)) + + ((domain == null) ? "" : ("; domain=" + domain)) + + ((secure == true) ? "; secure" : ""); +} +function ForeCStdGetCookieVal(offset) { + var endstr = document.cookie.indexOf (";", offset); + if (endstr == -1) { + endstr = document.cookie.length; + } + return unescape(document.cookie.substring(offset, endstr)); +} +function specialEscape(str) { + var translated = ""; + var i; + var found = 0; + for(i = 0; (found = str.indexOf('+', found)) != -1; ) { + translated += str.substring(i, found) + "%2B"; + i = found + 1; + found++; + } + translated += str.substring(i, str.length); + return translated; +} +function Pop(){ + var myPopUp = window.open(fullURL, 'survey',winOptions); + if ( myPopUp && myPopUp.open && !myPopUp.closed) { + if (triggerParms["pu"] == 1){ + self.focus(); + } else { + myPopUp.focus(); + } + } +} +function checkMAC(){ + if(navigator.platform.indexOf("Win32") >= 0){ + return false; + } else { + return true; + } +} +function currentLocationExcluded() { + var parentURLPath = window.location.pathname;//location path + for(key in excludeList) { + if(parentURLPath.indexOf(excludeList[key]) != -1) { + return true; + } + } + return false; +} +function Poll() { + //sme + if(triggerParms["dt"] == 1) { + return; + } + if(currentLocationExcluded()) { + return; + } + var stickyCounter = ForeCStdGetCookie(ckLoyaltyCount); // check counter cookie + var alreadyShown = ForeCStdGetCookie(ckAlreadyShown); // check if we already have shown survey + var pageCount; + var randNum = Math.random(); + randNum *= 100; + if (stickyCounter == null) { + pageCount = 1; + ForeCStdSetCookie(ckLoyaltyCount, pageCount, null,'/',triggerParms["domain"]); + stickyCounter = ForeCStdGetCookie(ckLoyaltyCount); + } + if (stickyCounter != null) { + pageCount = stickyCounter; + if(pageCount >= triggerParms["lf"]) { + if(alreadyShown == null) { + if (triggerParms["rso"] == 1 && triggerParms["aro"] == 1) { + triggerParms["sp"] = 100.0; // Update Ssample percentage + } + if(randNum <= triggerParms["sp"]) { + var fsr_mac= checkMAC(); + fsr_browser="fsr_nn6"; + if(document.all){ + fsr_browser = "fsr_ie"; + } + if(document.layers) { + fsr_browser = "fsr_nn"; + } + fullURL = popUpURL + "?" + "width=" + triggerParms["width"] + + "&height=" + triggerParms["height"] + + "&cid=" + specialEscape(escape(triggerParms["cid"])) + "&mid=" + specialEscape(escape(triggerParms["mid"])); + if ((triggerParms["omb"] ) != null) { + fullURL += "&omb=" + escape(triggerParms["omb"]); + } + if ((triggerParms["cmetrics"] ) != null) { + fullURL += "&cmetrics=" + escape(triggerParms["cmetrics"]); + } + if (triggerParms["olpu"] == 1) { + fullURL += "&olpu=1"; + } + if (triggerParms["rso"] == 1) { + fullURL += "&rso=1&rct=" + triggerParms["rct"] + "&rds=" + triggerParms["rds"] + "&mrd=" + triggerParms["mrd"] + "&rws=" + triggerParms["rw"]; + } + if (triggerParms["capturePageView"] == 1) { + triggerParms["cpp_3"] = "PageView:"+ pageCount; // customer parameter 3 - Page View + } + if ((triggerParms["midexp"] ) != null) { + fullURL += "&ndc=1&fsexp=5256000&midexp=" + triggerParms["midexp"]; + } + var customerParams = ""; + for(paramKey in triggerParms) { + if(paramKey.substring(0,3) == "cpp"){ + fullURL += "&" + paramKey + "=" + escape(triggerParms[paramKey]); + } + } + oldURL=fullURL; + fullURL+= "&cpp_4=" + escape("popupStats:window=normal browser="+fsr_browser+" mac="+ fsr_mac); + if (triggerParms["rso"] != 1) { + if(triggerParms["npc"] == 1) { + ForeCStdSetCookie(ckAlreadyShown, 'true',null,'/',triggerParms["domain"]); + } else { + ForeCStdSetCookie(ckAlreadyShown, 'true', persistentExpires,'/',triggerParms["domain"]); + } + } + var myPopUp = window.open(fullURL, 'survey',winOptions); + if ( myPopUp && myPopUp.open && !myPopUp.closed) { + if (triggerParms["pu"] == 1){ + self.focus(); + } else { + myPopUp.focus(); //focusing on survey window + } + } else { + if (fsr_mac==false && (fsr_browser != "fsr_nn") && (triggerParms["dhtml"] == 1)) { + fullURL=oldURL; + fullURL+= "&cpp_4=" + escape("popupStats:window=dhtml browser="+fsr_browser+" mac="+ fsr_mac); + fsr_sw = screen.width; + fsr_sh = screen.height; + fsr_left = (fsr_sw -triggerParms["dhtmlWidth"])/2; + fsr_top =Math.min((fsr_sh - triggerParms["dhtmlHeight"])/2,150); + document.write( "
" + +"
" + +"" + +"
" + +"
"); + if (fsr_browser == "fsr_ie") { + fsr_IEshowWindow(); + } else { + fsr_showWindow(); + } + } + } + } + } + } + pageCount++; + ForeCStdSetCookie(ckLoyaltyCount, pageCount, null,'/',triggerParms["domain"]); + } +} +function callpoll(){ + if ( ValidIP()== 0 ) + { + Poll(); + } + +} + +function ValidIP() { + var arrRegExp = new Array(2); + + arrRegExp[0] = /^10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/ + arrRegExp[1] = /^140\.147\.131\.[0-9]{1,3}$/ + //arrRegExp[2] = /^172\.16\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[3] = /^172\.16\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[4] = /^172\.17\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[5] = /^172\.18\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[6] = /^172\.19\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[7] = /^172\.20\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[8] = /^172\.21\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[9] = /^172\.22\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[10] = /^172\.23\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[11] = /^172\.24\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[12] = /^172\.25\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[13] = /^172\.26\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[14] = /^172\.27\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[15] = /^172\.28\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[16] = /^172\.29\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[17] = /^172\.30\.[0-9]{1,3}\.[0-9]{1,3}$/ + //arrRegExp[18] = /^172\.31\.[0-9]{1,3}\.[0-9]{1,3}$/ + + var intMatch = 0; + for(var i = 0; i < arrRegExp.length; i++){ + if(arrRegExp[i].test(strIP)){ + intMatch = 1; + break; + } + } + + return intMatch; +} \ No newline at end of file diff --git a/spec/cql_files/triggerParams.js b/spec/cql_files/triggerParams.js new file mode 100644 index 0000000..fe71a11 --- /dev/null +++ b/spec/cql_files/triggerParams.js @@ -0,0 +1,48 @@ +// Customer: Library of Congress +// Version : DHTML Trigger 2.1 + +function cppUrlPatch(s) { + var translated = ""; + var i; + var found = 0; + for(i = 0; (found = s.indexOf(':', found)) != -1; ) { + translated += s.substring(i, found) + "|"; + i = found + 1; + found++; + } + translated += s.substring(i, s.length); + return translated; +} +var triggerParms = new Array(); +var excludeList = new Array(); +triggerParms["dt"] = 0; // disable trigger if 1 +triggerParms["mid"] = "MsF0ld0M1ZVEEYgQ0YBV5g=="; // model instance id +triggerParms["cid"] = "Zg8xEcQ4h9p0s15J1kVshg=="; // customer id +triggerParms["lf"] = 7; // loyalty factor +triggerParms["sp"] = 2; // sample percentage +triggerParms["npc"] = 1; // no persistent cookies if 1 +triggerParms["rw"] = 129600; // resample wait (value in minutes) +triggerParms["pu"] = 0; // pop-under control +triggerParms["olpu"] = 1; // On Load pop-under control +triggerParms["lfcookie"] = "ForeseeLoyalty_MID_MsF0ld0M1Z"; +triggerParms["ascookie"] = "ForeseeSurveyShown_MsF0ld0M1Z"; +triggerParms["width"] = 420; // survey width +triggerParms["height"] = 500; // survey height +triggerParms["domain"] = ".loc.gov"; // domain name +triggerParms["omb"] = "1505-0186"; // OMB number +//triggerParms["cmetrics"] = "90010257"; // coremetrics client id +triggerParms["cpp_1"] = "userURL:" + cppUrlPatch (window.location.href); +triggerParms["cpp_2"] = "Browser:"+ cppUrlPatch (navigator.userAgent); // customer parameter 2 - Browser +triggerParms["capturePageView"] = 1; +//excludeList[0] = "/exclude/"; //trigger script will not work under this path +//triggerParms["midexp"] = 129600; // model instance expiry value +triggerParms["rso"]= 0; //user has chosen to use Retry Survey Option +triggerParms["aro"]= 0; //user has chosen to use Auto Retry Option, with SP=100 +//triggerParms["rct"]= 1; //The maximum number of times allowed to serve a survey to a user +//triggerParms["rds"]= 1; //The minimum number of days to wait to serve a survey repeatedly +//triggerParms["mrd"]= 1; //The total number of days that a user can be re-served a survey +//DHTML Parameter +triggerParms["dhtml"]= 0;// disable dhtml trigger if dhtml=0 +triggerParms["dhtmlWidth"] = 400; // welcome page width +triggerParms["dhtmlHeight"] = 290; // welcome page height +triggerParms["dhtmlURL"]= "http://memory.loc.gov/ammem/scripts/FSRInvite.html"; diff --git a/spec/version-1.1.html b/spec/version-1.1.html new file mode 100644 index 0000000..2597b7b --- /dev/null +++ b/spec/version-1.1.html @@ -0,0 +1,873 @@ + +Common Query Language (SRU: Search and Retrieve via URL - Standards, Library of Congress) + + + + + + + + + + + +
+ +
Home >> CQL
+
+

Common Query Language

+

CQL Version 1.1 13th February + 2004

+

Sample Queries - BNF - Rules - Features - Conformance +- Context Sets - the + CQL Context Set - Relations Modifiers - Masking - Result + Sets - Proximity - Tutorial (temporarily unavailable)

+

CQL is a formal language for representing queries to information retrieval + systems such as web indexes, bibliographic catalogs and museum collection + information. The design objective is that queries be human readable and + writable, and that the language be intuitive while maintaining the expressiveness + of more complex languages.

+

Traditionally, query languages have fallen into two camps: Powerful, expressive + languages, not easily readable nor writable by non-experts (e.g. SQL, PQF, + and XQuery);or simple and intuitive languages not powerful enough to express + complex concepts (e.g. CCL and google). CQL tries to combine simplicity + and intuitiveness of expression for simple, every + day queries, with the richness of more expressive languages to accommodate + complex concepts when necessary.

+
+

Sample Queries

+

Following are examples of simple CQL queries. These are all self-explanatory:

+

dinosaur
+"complete dinosaur"
+ title = "complete dinosaur"
+ title exact "the complete dinosaur"
+ dinosaur or bird
+ dinosaur and "ice age"
+ dinosaur not reptile
+ dinosaur and bird or dinobird
+ (bird or dinosaur) and (feathers or scales)
+"feathered dinosaur" and (yixian or jehol)
+ publicationYear < 1980
+ lengthOfFemur > 2.4
+ bioMass >= 100

+

The following are a bit more complicated:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExampleExplanation

title all "complete dinosaur"

Title contains all of the words: "complete", and "dinosaur"


+ title any "dinosaur bird reptile"

Title contains any of the words: "dinosaur", "bird", + or "reptile"

(caudal or dorsal) prox vertebra

A proximity query: either "caudal" or "dorsal" near + 'vertebra"

+
+

ribs prox/distance<=5 chevrons

+

A more specific proximity query: "ribs" within + 5 words of "chevrons"

+

ribs prox/unit=sentence chevrons

+
+

"ribs" in the same sentence as "chevrons"

+
+

ribs prox/distance>0/unit=paragraph chevrons

+

"ribs" and "chevrons" occuring + in the same document in different paragraphs

+

subject any/relevant "fish frog"

+

find documents that would seem relevant + either to "fish" or "frog"

+

subject any/rel.lr "fish frog"

+

Same as previous, but use a specific relevance + algorithm (linear regression)

+
+
+

Formal Definition: CQL BNF

+

Following is the Backus Naur Form (BNF) definition for CQL. ["::=" represents + "is defined as"]

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

cqlQuery

+

::=

+

prefixAssignment cqlQuery | scopedClause

+
+

prefixAssignment

+

::=

+

'>' prefix '=' uri | '>' uri

+
+

scopedClause

+

::=

+

scopedClause booleanGroup searchClause | searchClause

+
+

booleanGroup

+

::=

+

boolean [modifierList]

+
+

boolean

+

::=

+

'and' | 'or' | 'not' | 'prox'

+
+

searchClause

+

::=

+
+

'(' cqlQuery ')'
+ | index relation searchTerm
+ | searchTerm

+
+

relation

+

::=

+

comparitor [modifierList]

+
+

comparitor

+

::=

+

comparitorSymbol | namedComparitor

+
+

comparitorSymbol

+

::=

+

'=' | '>' | '<' | '>=' | '<=' | '<>'

+
+

namedComparitor

+

::=

+

identifier

+
+

modifierList

+

::=

+

modifierList modifier | modifier

+
+

modifier

+

::=

+

'/' modifierName [comparitorSymbol modifierValue]

+

prefix, uri, modifierName, modifierValue, searchTerm, + index

+

::=

+

term

+
+

term

+

::=

+

identifier | 'and' | 'or' | 'not' | 'prox'

+
+

identifier

+

::=

+

charString1 | charString2

+
+

charString1

+

:=

+

Any sequence of characters that does not include any of + the following:

+
whitespace
+
( (open parenthesis )
+ ) (close parenthesis)
+ =
+
<
+
>
+ '"' (double quote)
+
/

If the final sequence is a reserved word, that token is + returned instead. Note that '.' (period) may be included, and + a sequence of digits is also permitted. Reserved words are + 'and', 'or', 'not', and 'prox' (case insensitive). When a reserved + word is used in a search term, case is preserved.

+
+

charString2

+

:=

+

Double quotes enclosing a sequence of any characters except + double quote (unless preceded by backslash (\)). Backslash escapes + the character following it. The resultant value includes all + backslash characters except those releasing a double quote (this + allows other systems to interpret the backslash character). The + surrounding double quotes are not included.

+
+
+

General Rules

+
    +
  1. +

    CQL Query
    +
    A CQL query is essentially a search clause, or multiple search + clauses connected by boolean operators. (In addition it may include + prefix assignments which assign short names to known contexts. See context + sets.)

    +
  2. +
  3. +

    Search Clause
    + A search clause consists of an index, relation, and search term, or a search + term alone. Thus every search clause has a search term, but both the + index and relation may be omitted -  the clause must include either + both or neither of the index and relation. (Note that the use of the "index" concept + in CQL is not intended to have any implementation implications; it does + not imply the presence of a physical index.)

    +

    Examples:  
    +         Index/relation/search term:  title += cat
    +        Search term only:   cat + +

  4. +

    Search Term
    + Search terms may be enclosed in double quotes. Search terms must be + enclosed in double quotes if they contain any of the following characters: < > = + / ( ) and whitespace. The search term may be empty, but must be present + in a search clause. An empty search term is expressed as "" and has no + defined semantics.

    +
  5. +
  6. +

    Index Name
    + An index name always includes a base name and may also include a prefix, + which provides a context for the index name, the name of the context + set of which the index is a part. If the context is not supplied, + it is determined by the server.  If the index is not supplied it + is determined by the server. (Note that the index may be omitted only + when the relation is also omitted. Either both must be supplied, or both + omitted.)

    +

    Examples:
    +    title = cat      context determined +by the server
    +    dc.title = cat    index context is dc
    +    
    cat       context and +index determined by the server

    +
  7. +
  8. +

    Relation
    +
    The relation in a search clause specifies the relationship + between the index and search term.  It also always includes a + base name and may also include a prefix providing a context for the + relation. If a relation is supplied with no accompanying context, the + context is 'cql'  (the cql context + set).  If no relation is supplied, then cql.scr (server choice) + is assumed, which means that the relation is determined by the server. + (Note that the relation may be omitted only when the index is also + omitted. Either both must be supplied, or both + omitted.)

    +

    +

    Examples:
    +   title = cat  context for relation is 'cql' ; fully qualified +relation is cql.=
    +  
    title cql.any cat    relation is 'any'; +relation context is 'cql'.  Equivalent to: title any cat
    +   cat      index and relation are determined +by the server (formally the relation is 'cql.scr')

    +
  9. +
  10. + Relation Modifiers
    + Relation modifiers may accompany a relation. These also may be accompanied + by a context.  If a context is not supplied for a modifier, the + default is the cql context set. Relation + modifiers are separated from each other and from the relation by slashes + ( /). Whitespace may be present on either side of a / character, but + the relation plus modifiers group may not end in a /. +

    Examples:
    +      dc.title any/relevant/rel.CORI "cat fish"
    +          the relation 'any' +is modified by (1) 'relevant' whose context is 'cql' and (2) 'CORI' whose context +is 'rel'.
    +      dc.author exact/stem "smith, j."    the +relation 'exact' is modified by 'stem' whose context is 'cql'.
    +  

    +
  11. +
  12. +

    Boolean Operators
    + Search clauses may be linked by boolean operators. These are: and, or, not and prox. + (Note that  not is really and-not, that is, it may + not be used as a unary operator.) Boolean operators all have the same + precedence; they are evaluated left-to-right. Parentheses + may + be used + to + overide left-to-right + evaluation.

    +
  13. +
  14. +

    Boolean Modifiers
    + As a relation may have modifiers, similiarly, a + boolean operator may have modifiers, separated by '/' characters. Boolean + modifiers may come from + any context + set. If + not supplied, the context is the CQL + context set. (Note that Boolean operators themselves + are limited to the built-in set of four.)

    +

    Example:  dc.title=cat and/rel.sum dc.title=dog

  15. +
  16. +

    Case Insensitive
    + All parts of CQL are case insensitive apart from user supplied search terms, + which may or may not be case sensitive. 'OR','or', 'Or' and 'oR' are + all the same boolean operator, just as 'dc.title', 'DC.Title' and 'dC.TiTLe' + are all the same context set plus index name.

    +
+
+

Additional CQL Features

+

The following are all formally defined by the CQL context set but described + here for convenience.

+

Relations

+

For ordered (e.g. numeric) terms:
+<
, >, <=, >=, +and <> mean "less than", "greater than", "less +or equal", "greater or equal", and "not equal".

+

+

when the term is a list of words:

+
    +
  • +

      '=' is used for word adjacency -- the words + appear in that order with no others intervening.  (Note the dual + use of '=', it is used for numeric equality as described above.)

  • +
  • +

      'any' means "any of these words"

  • +
  • +

      'all' means "all of these words"

    +
+

When the term is a character string:
+
'exact' is used for exact string + matching. +

+

When the term has multiple dimensions:
+
'within' may be used to search for values that + fall within the range, area or volume described by the search + term.

+

+ When the index's data has multiple dimensions:
+
'encloses' may be used to search for values of + the database's term fully encloses the search term. +

+   + + Examples: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
This query Would match this but not this

title =  "cat in the hat"

+

 "a day in the life of the cat in the hat"

+

"hat in the cat" or "cat in the green hat"

+

title all "cat hat"

+

"hat in the cat"

+

"cat in the grass"

+

title any "cat hat"

+

"cat in the grass"

+

"dog in the grass"

+

title exact "cat in the hat"

+

"cat in the hat"

+

"a day in the life of the cat in the hat"

+

date within "2002 2005"

2004

2006

dateRange encloses 2003

"2002 2005"

"2004 2005"

+


+ Relation Modifiers - Term Functions

+

These relation modifiers request that the server perform some algorithm + on the term before processing.

+
    +
  • +

    stem
    + The server should apply a stemming algorithm to the words within the term. + for example, walked, walking, walker etc. would all be represented + by the stem word walk. This allows a search like title =/stem "these + completed dinosaurs" to match  The Complete Dinosaur.

  • +
  • +

    relevant
    + The server should use a relevancy algorithm for determining matches and + the order of the result set.

    +

    Example: subject any/relevant "fish frog"
    + would find records relevant to "fish" or "frog" and order + the result set by relevance to fish or frog.
    +
    +

    +
+

Relation Modifiers - Qualifiers

+

These modifiers qualify the relation to more precisely determine its + semantics.

+
    +
  • +

    word
    + The term consists of words (rather than being an opaque string).

    +
  • +
  • +

    string
    + The term is a single item, and should not be broken up.

  • +
  • +

    isoDate
    + Each item within the term conforms to the ISO 8601 specification for expressing + dates.

  • +
  • +

    number
    + Each item within the term is a number.

  • +
  • +

    uri
    + Each item within the term is a URI.

  • +
  • +

    masked
    + This means that the masking rules (see next) apply. Masking is assumed + even if not specified, unless 'unmasked' is specified (so there is never + any reason to include 'masked').

    +
  • unmasked
    + Do not apply masking rules. +
+

Masking Rules

+
    +
  • +

    A single asterisk (*) is used to mask zero or more characters.

  • +
  • +

    A single question mark (?) is used to mask a single character, thus + N consecutive question-marks means mask N characters.

  • +
  • +

    Carat/hat (^) is used as an anchor character for terms that are word + lists, that is, where the relation is 'all' or 'any', or '=' when used + for word adjacency. It may not be used to anchor a string, that is, + when relation is 'exact' (string matches are, by definition, anchored). + It may occur at the beginning or end of a word (with no intervening + space) to mean right or left anchored."^" has no special meaning when + it occurs within a word (not at the beginning or end) or string but + must be escaped nevertheless.

    +
  • +
  • +

    Backslash (\) is used to escape '*', '?', quote (") and '^' , as + well as itself. The use of a backslash not followed immediately by + one of these characters is reserved for future definition.

    +
  • +
+

Masking examples:

+
    +
  • +

    dc.title = c*t (matches cat and coast etc.)

  • +
  • +

    dc.title = c?t (matches cat and cot, not coast or ct)
    +" ?" (matches any single character)

  • +
  • +

    dc.title = "^cat in the hat" (matches 'cat in the hat' where it + is at the beginning of the field)

    +
  • +
  • +

    dc.title any "^cat eats rat" (matches 'cat eats rat', 'cat eats + dog', 'cat', but not 'rat eats cat')

    +
  • +
  • +

    + dc.title any "^cat ^dog eats rat" (matches 'cat eats rat', 'dog + eats cat', 'cat + loves bat', but not 'bat loves cat')

    +
  • +
  • +

    dc.title = "\"Of Couse\" she said"

    +
  • +
+

Result Set Name Used in Query

+

A search clause may be a result set name. This is a special case, employing + the context set 'cql'. + The index and relation are expressed as "cql.resultSetId =" and + the term is a result set name that has been returned by the server in the + 'resultSetName' parameter of the response. It may be used by itself in + a query to refer to an existing result set from which records are desired. + It may also be used in conjunction with other resultSetName clauses or + other indexes, combined by boolean operators. The semantics of resultSetId + with relations other than "=" is undefined.

+

Example: cql.resultSetId = "resultA" and cql.resultSetId = "resultB"

+

Proximity

+

The proximity boolean boolean operator is expressed in terms of distance, + unit, and ordering.

+

Examples:

+
    +
  • dc.title = "cat" prox/distance=1/unit=word dc.title + = "in"
  • +
  • "cat" prox/distance>2/ordered "hat"
  • +
+

distance takes the form:
+     distance [relation] [value]
+where relation is one of: "<", ">" ,"<=" ,">=" ,"=" , "<>"; default "<="
+and value is a non-negative integer; default: 1 for word, zero otherwise

+

unit takes the form
+      unit=[value]
+ where value is one of "word", "sentence", "paragraph", or "element"(default "word"),

+

ordering is "ordered" or "unordered"; default "unordered"

+

 

+
+

CQL Context Sets

+

Context sets permit CQL users to create their own indexes, relations, + relation modifiers and boolean modiers without fear of chosing the same + name as someone else and thereby having an ambiguous query. All of these + four aspects of CQL must come from a context set, however there are rules + for determining the prevailing default if one is not supplied. Context + sets allow CQL to be used by communities in ways which the designers could + not have foreseen, while still maintaining the same rules for parsing which + allow interoperability.

+

When defining a new context set, it is necessary to provide a description + of the semantics of each item within it. While context sets may contain + indexes, relations, relation modifiers and boolean modifiers, there is + no requirement that all should be present; in fact it is expected that + most context sets will only define indexes.

+

Each context set has a unique identifier, a URI. When sending the context + set in a query, a short form is used. These short names may be sent as + a mapping within the query itself (see next), or be published by the recipient + of the query in some protocol dependent fashion. The prefix 'cql' is reserved + for the CQL context set, but authors may wish to recommend a short name + for use with their set.

+

An index, relation, or modifier qualified by a context is represented + in the form prefix.value, where prefix is a short + name for a unique context set identifier.

+

Binding Short Name to URI
+
The binding of short name to + URI is defined either within the query or by the server. A prefix map + may occur at any place in the query and applies to anything which follows. + Example:

+

>dc="http://www.dublincore.org/" dc.title = "cat"

+

+

In the following query: +

+ +

>a="http:/x.com/y" a.title=cat and (>a="http:/f.com/g" a.title=hat) + and a.title=rat

+

+

both the "a" in "a.title=cat" and in "a.title=rat" refer + to http:/x.com/y, while the "a" in "a.title=rat" refers + to http:/f.com/g.

+

Default Context
+ When no context is attached to a relation, relation modifier, + or boolean modifier, the context is the cql context set.  When no + context is attached to an index the context is determined by the server.

+

Known Context Sets
+ The following context sets have been defined and made + public. If you wish to have your context set listed here, please provide + the information + to + the SRU Maintenance Agency.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Short NameIdentifierReference

cql

+

info:srw/cql-context-set/1/cql-v1.1

+

CQL context set

+

dc

+

info:srw/cql-context-set/1/dc-v1.1

+

Dublin Core Context Set

+

bath

+
+

http://zing.z3950.org/cql/bath/2.0/

+

Bath Context + Set

+

zthes

+

http://zthes.z3950.org/cql/1.0/

+

ZThes thesaurus context + set, v1.0.

+

ccg

+

http://srw.cheshire3.org/contextSets/ccg/1.1/

+

Collectable + card games

+

rec

+

info:srw/cql-context-set/2/rec-1.1

+

Record metadata

+

net

+

info:srw/cql-context-set/2/net-1.0

+

Network + resource information

+

music

+

info:srw/cql-context-set/3/music-1.0

+

Music + Context Set

+

rel

+

info:srw/cql-context-set/2/relevance-1.0

+

Relevance + Ranking

+

zeerex

+
+

info:srw/cql-context-set/2/zeerex-1.1

+

ZeeRex + Context Set

+

marc

+

info:srw/cql-context-set/1/marc-1.0

MARC Context Set

+

+


+

Conformance

+

In order to claim conformance to CQL a server must support one of the + following three levels:

+

Level 0

+
    +
  1. +

    Must be able to process a term-only query.
    + (The term is either a single word or if multiple words separated by spaces + then the entire search term is quoted). If the term includes quote marks, + they must be a escaped by preceding them with a backslash, e.g."raising + the \"titanic\"".)

    +
  2. +
  3. +

    If an unsupported query is supplied, must be able to respond with + a diagnostic to say that the query is not supported.

    +
  4. +
+

Level 1

+
    +
  1. +

    Support for Level 0.

    +
  2. +
  3. +

    Ability to parse both:
    + (a) search clauses consisting of 'index relation searchTerm'; and
    + (b) queries where search terms are combined with booleans, e.g. "term1 + AND term2"

  4. +
  5. +

    Support for at least one of (a) and (b).

  6. +
+

Note that (b) does not necessarily include queries such as:

+
+

index relation term1 AND index relation term2

+
+

but rather queries where the search clauses are terms-only (do not include + index or relation).

+

Level 2

+
    +
  1. +

    Support for Level 1.

    +
  2. +
  3. +

    Ability to parse all of CQL and respond with appropriate + diagnostics.

    +
  4. +
+

Note that Level 2 does not require support for all of CQL, it + requires that the server be able to parse all of CQL (and respond + with proper diagnostics for the parts not supported.).

+ +
Home >> CQL
+
+ +
+ \ No newline at end of file diff --git a/spec/version-1.2.html b/spec/version-1.2.html new file mode 100644 index 0000000..920e78f --- /dev/null +++ b/spec/version-1.2.html @@ -0,0 +1,98 @@ + +Next Version (SRU: Search and Retrieve via URL - Standards, Library of Congress) + + + + + + + + + + + +
+ +
Home >> Next + Version
+
+

Changes in SRU from Versions 1.1 to 1.2

+

SRU Version 1.2 is in development and will be released soon. This + page summarizes the differences from version 1.1.

+

CQL Changes

+
    +
  1. CQL renamed the "contextual query language".
  2. +
  3. 'scr' relation eliminated. '=' becomes (in effect) server choice. When + relation is omitted, '=' is assumed.
  4. +
  5. 'adj' relation defined for word adjacency.
  6. +
  7. 'exact' relation eliminated. Replaced by '=='.
  8. +
  9. 'regexp' relation modifier defined.
  10. +
  11. Sorting is added as a cql feature (the 'sortby' clause).
  12. +
  13. Proximity. Defaults are now server defined, not standard defined. Hence "prox" can + be anything the server wants to do proximately, not necessarily with + a default of adjacency. +

    Proximity units (other than in cql set) are treated such that "unit" is + a value in a context set, rather than the unit value being a value + in a context set.  Proximity units 'word', 'sentence', 'paragraph', + which are included in the cql set, are explicitly undefined.

    +
  14. +
+

Protocol Changes

+
    +
  1. Record identifier (optional) added to record structure.
  2. +
  3. XCQL parameter becomes optional.
  4. +
  5. XPath parameter dropped (will become an extension).
  6. +
  7. base url added to response.
  8. +
  9. record hits incorporated into xcql.
  10. +
  11. Z39.92 replaces explain.
  12. +
  13. Sorting is no longer a protocol function (see point 6 in CQL list).
  14. +
+

+

 

+ +
Home >> Next + Version
+
+ +
+ \ No newline at end of file