# $Id: pqf.properties,v 1.13 2006/09/20 10:12:29 mike Exp $ # # Propeties file to drive org.z3950.zing.cql.CQLNode's toPQF() # back-end and the YAZ CQL-to-PQF converter. This specifies the # interpretation of various CQL indexes, relations, etc. in terms # of Type-1 query attributes. # # This configuration file generates queries using BIB-1 attributes. # See http://www.loc.gov/z3950/agency/zing/cql/dc-indexes.html # for the Maintenance Agency's work-in-progress mapping of Dublin Core # indexes to Attribute Architecture (util, XD and BIB-2) # attributes. # Identifiers for prefixes used in this file. (index.*) set.cql = info:srw/cql-context-set/1/cql-v1.1 set.rec = info:srw/cql-context-set/2/rec-1.1 set.dc = info:srw/cql-context-set/1/dc-v1.1 set.bath = http://zing.z3950.org/cql/bath/2.0/ # The default set when an index doesn't specify one: Dublin Core set = info:srw/cql-context-set/1/dc-v1.1 # The default index when none is specified by the query #index.cql.serverChoice = 1=1016 index.cql.serverChoice = 1=any 2=102 # srw.serverChoice is deprecated in favour of cql.serverChoice # BIB-1 "any" index.cql.allRecords = 1=_ALLRECORDS 2=103 index.rec.id = 1=12 #index.dc.title = 1=4 index.dc.title = 1=title 2=102 #index.dc.subject = 1=21 index.dc.subject = 1=subject 2=102 index.dc.creator = 1=1003 2=102 #index.dc.author = 1=1003 index.dc.author = 1=author 2=102 ### Unofficial synonym for "creator" index.dc.editor = 1=1020 #index.dc.publisher = 1=1018 index.dc.publisher = 1=publisher index.dc.description = 1=62 # "abstract" index.dc.date = 1=30 index.dc.resourceType = 1=1031 # guesswork: "Material-type" index.dc.format = 1=1034 # guesswork: "Content-type" index.dc.resourceIdentifier = 1=key # "Local number" index.dc.source = 1=1019 # "Record-source" index.dc.language = 1=54 # "Code--language" index.dc.relation = 1=? ### No idea how to represent this index.dc.coverage = 1=? ### No idea how to represent this index.dc.rights = 1=? ### No idea how to represent this # Relation attributes are selected according to the CQL relation by # looking up the "relation." property: # relation.< = 2=1 relation.le = 2=2 relation.eq = 2=3 relation.exact = 2=3 relation.ge = 2=4 relation.> = 2=5 relation.<> = 2=6 # These two are what Zebra uses -- may not work on other servers relation.all = 4=6 relation.any = 4=105 # BIB-1 doesn't have a server choice relation, so we just make the # choice here, and use equality (which is clearly correct). relation.scr = 2=3 # Relation modifiers. # relationModifier.relevant = 2=102 relationModifier.fuzzy = 5=103 ### truncation=regExpr-2 (5=103) in Zebra is "fuzzy matching" relationModifier.stem = 2=101 relationModifier.phonetic = 2=100 # Non-standard extensions to provoke Zebra's inline sorting relationModifier.sort = 7=1 relationModifier.sort-desc = 7=2 relationModifier.numeric = 4=109 # Position attributes may be specified for anchored terms (those # beginning with "^", which is stripped) and unanchored (those not # beginning with "^"). This may change when we get a BIB-1 truncation # attribute that says "do what CQL does". # position.first = 3=1 6=1 # "first in field" position.any = 3=3 6=1 # "any position in field" position.last = 3=4 6=1 # not a standard BIB-1 attribute position.firstAndLast = 3=3 6=3 # search term is anchored to be complete field # Structure attributes may be specified for individual relations; a # default structure attribute my be specified by the pseudo-relation # "*", to be used whenever a relation not listed here occurs. # structure.exact = 4=108 # string structure.all = 4=2 structure.any = 4=2 structure.* = 4=1 # phrase # Truncation attributes used to implement CQL wildcard patterns. The # simpler forms, left, right- and both-truncation will be used for the # simplest patterns, so that we produce PQF queries that conform more # closely to the Bath Profile. However, when a more complex pattern # such as "foo*bar" is used, we fall back on Z39.58-style masking. # truncation.right = 5=1 truncation.left = 5=2 truncation.both = 5=3 truncation.none = 5=100 truncation.regexp = 5=102 truncation.z3958 = 5=104 # Finally, any additional attributes that should always be included # with each term can be specified in the "always" property. # always = 6=1 # 6=1: completeness = incomplete subfield # Bath Profile support, added Thu Dec 18 13:06:20 GMT 2003 # See the Bath Profile for SRW at # http://zing.z3950.org/cql/bath.html # including the Bath Context Set defined within that document. # # In this file, we only map index-names to BIB-1 use attributes, doing # so in accordance with the specifications of the Z39.50 Bath Profile, # and leaving the relations, wildcards, etc. to fend for themselves. index.bath.keyTitle = 1=33 index.bath.possessingInstitution = 1=1044 index.bath.name = 1=1002 index.bath.personalName = 1=1 index.bath.corporateName = 1=2 index.bath.conferenceName = 1=3 index.bath.uniformTitle = 1=6 index.bath.isbn = 1=7 index.bath.issn = 1=8 index.bath.geographicName = 1=58 index.bath.notes = 1=63 index.bath.topicalSubject = 1=1079 index.bath.genreForm = 1=1075 ## From: marc ## Date: December 20, 2006 9:55:24 AM EST ## To: Zebra Information Server ## Subject: Re: [Zebralist] pqf.properties ## Reply-To: Zebra Information Server ## ## Eric Lease Morgan wrote: ## > On Dec 19, 2006, at 4:45 PM, marc wrote: ## >>> How do I edit pqf.properties so I can get zebra to search my ## >>> indexes via SRU? ## >>> I suppose I get this because etc/pqf.properties does not know ## >>> about my field names. ## >> ## >> Right. ## >> ## >> The CQL-to-PQF conversion configuration has always been a bit of a ## >> hassle, and I'd really like this to improve. ## >> ## >> The problem is, of course, that one needs to type the same index ## >> names over-and-over again in different parts of the zebra configs. ## > Maybe I could work the other way around. ## > For example, how might I re-write my alvis indexing XSLT file so ## > they conform to the pqf.properties file that comes with the Zebra ## > distribution? Specifically, how might I change the value of the ## > name attribute below so I could use CQL and search by title: ## > ## > z:index> ## > ## ## The crucial part is that the CQLtoPQF config file needs to hit an ## existing index. ## ## so the lines and ## ## index.dc.title = 1=4 ## ## ## need to match ## ## If string indexes are used, easiest is to correct the standard config ## file to ## ## index.dc.title = 1=title ## ## and so forth. The numeric value '4' refers to the specific bib-1 ## numeric attribute set, and is more confusion than help, so I suggest ## you stick to your own defined string index names. ## ## In addition, you have to take into account if the indexes are of type ## 'p', 'w', '0' or otherwise specified. ## ## so for example: ## ... ## ## would be ## index.dc.something = 1=thisandthat 6=3 ## ## and ## ... ## would be ## index.dc.something = 1=thisandthat 4=3 ## ## The reason why this is so complex is that people often want only to ## provide a subset of functionality to CQL queries, and therefore those ## are independent config files. ## ## A better view of the way PQF queries are mapped to zebra indexes is ## here: ## ## http://www.indexdata.com/zebra/doc/querymodel-zebra.tkl#querymodel- ## pqf-apt-mapping ## ## section: ## Mapping of PQF APT structure and completeness to register type ## ## and you need to run a PQF query to test that at least this part ## works, before attempting a CQL-to-PQF query conversion. ## ## ## So, the way to build a working config is: ## ## 1) define your indexing rues in the indexation stylesheet ## i.e define and index with ## ## ... ## ## ## 2) test that you worked out the correct PQF queries to acces them ## using the above mentioned documentation section. ## ## i.e test ## Z> querytype prefix ## Z> scan attr 1=thisandthat @attr 4=3 aterm ## ## 3) showel that query into the right hand side of the index ## definitions of the CQL to PQF converter ## ## write ## index.dc.something = 1=thisandthat 4=3 ## ## ## 4) test that the CQL is performed correctly ## ## test (yes, yaz-client can send CQL queries) ## Z> querytype cql ## Z> scan dc.title=aterm ## ## -- ## Marc Cromme ## M.Sc and Ph.D in Mathematical Modelling and Computation ## Senior Developer, Project Manager