#
# Properties file to drive the YAZ CQL-to-PQF converter for Zebra.
# This specifies the interpretation of various CQL indexes, relations,
# etc. in terms of Type-1 query attributes.
#
# For documentation of required structure attributes (4=X) see:
# http://www.indexdata.com/zebra/doc/querymodel-zebra.html#querymodel-pqf-apt-mapping-structuretype

# 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.net		= info:srw/cql-context-set/2/net-1.0
set.dc		= info:srw/cql-context-set/1/dc-v1.1
set.zeerex      = info:srw/cql-context-set/2/zeerex-1.1

# The default set when an index doesn't specify one: Net
set		= info:srw/cql-context-set/2/net-1.0

# The default index when none is specified by the query
index.cql.serverChoice			= 1=cql:anywhere

index.cql.anywhere			= 1=cql:anywhere
index.cql.allRecords			= 1=_ALLRECORDS 2=103
index.rec.id				= 1=rec:id 4=104
index.rec.id_raw			= 1=rec:id_raw 4=3
index.rec.lastModificationDate		= 1=rec:lastModificationDate 4=5
index.net.protocol			= 1=net:protocol
index.net.version			= 1=net:version 4=3
index.net.method			= 1=net:method
index.net.host				= 1=net:host 4=3
index.net.port				= 1=net:port 4=3
index.net.path				= 1=net:path 4=3
index.zeerex.reliability		= 1=zeerex:reliability 4=109
index.zeerex.reliabilityAtLeast		= 1=zeerex:reliability 2=4 4=109
index.dc.title				= 1=dc:title
index.dc.creator			= 1=dc:creator
index.dc.description			= 1=dc:description
index.zeerex.numberOfRecords		= 1=zeerex:numberOfRecords
index.zeerex.set			= 1=zeerex:set
index.zeerex.index			= 1=zeerex:index
index.zeerex.attributeType		= 1=zeerex:attributeType
index.zeerex.attributeValue		= 1=zeerex:attributeValue
index.zeerex.schema			= 1=zeerex:schema
index.zeerex.recordSyntax		= 1=zeerex:recordSyntax 4=3
index.zeerex.supports_relation		= 1=zeerex:supports_relation
index.zeerex.supports_relationModifier	= 1=zeerex:supports_relationModifier
index.zeerex.supports_maskingCharacter	= 1=zeerex:supports_maskingCharacter
index.zeerex.default_contextSet		= 1=zeerex:default_contextSet
index.zeerex.default_index		= 1=zeerex:default_index
# Extensions
index.zeerex.libType			= 1=zeerex:libType 4=3
index.zeerex.country			= 1=zeerex:country 4=3
index.zeerex.disabled			= 1=zeerex:disabled 4=3

# Relation attributes are selected according to the CQL relation by
# looking up the "relation.<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

# 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=102) in Zebra is "fuzzy matching"
relationModifier.stem			= 2=101
relationModifier.phonetic		= 2=100
relationModifier.regexp			= 5=102

# Non-standard extensions to provoke Zebra's inline sorting
relationModifier.sort			= 7=1
relationModifier.sort-desc		= 7=2
relationModifier.numeric		= 4=109

# Usually this is taken care of by CQL term-anchoring with "^", but
# since that is not done for regular expressions, we need a way to
# state it explicitly in these cases.
relationModifier.firstInField		= 3=1

# 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
