📄 rfc2533.txt
字号:
RFC 2533 A Syntax for Describing Media Feature Sets March 19993.4.1 Data resource options The following expression describes a data resource that can be displayed either: (a) as a 750x500 pixel image using 15 colours, or (b) at 150dpi on an A4 page. (| (& (pix-x=750) (pix-y=500) (color=15) ) (& (dpi>=150) (papersize=iso-A4) ) )3.4.2 Recipient capabilities The following expression describes a receiving system that has: (a) a screen capable of displaying 640*480 pixels and 16 million colours (24 bits per pixel), 800*600 pixels and 64 thousand colours (16 bits per pixel) or 1024*768 pixels and 256 colours (8 bits per pixel), or (b) a printer capable of rendering 300dpi on A4 paper. (| (& (| (& (pix-x<=640) (pix-y<=480) (color<=16777216) ) (& (pix-x<=800) (pix-y<=600) (color<=65535) ) (& (pix-x<=1024) (pix-y<=768) (color<=256) ) ) (ua-media=screen) ) (& (dpi=300) (ua-media=stationery) (papersize=iso-A4) ) ) Note that this expression says nothing about the colour or grey-scale capabilities of the printer. In the scheme presented here, it is presumed to be unconstrained in this respect (or, more realistically, any such constraints are handled out-of-band by anyone sending to this recipient).3.4.3 Combined options The following example describes the range of document representations available when the resource described in the first example above is sent to the recipient described in the second example. This is the result of combining their capability feature sets: (| (& (pix-x=750) (pix-y=500) (color=15) ) (& (dpi=300) (ua-media=stationery) (papersize=iso-A4) ) ) The feature set described by this expression is the intersection of the sets described by the previous two capability expressions.Klyne Standards Track [Page 7]RFC 2533 A Syntax for Describing Media Feature Sets March 19993.5 Feature set predicates There are many ways of representing a predicate. The ideas in this memo were inspired by the programming language Prolog [5], and its use of predicates to describe sets of objects. For the purpose of media feature descriptions in networked application protocols, the format used for LDAP search filters [7,8] has been adopted, because it is a good match for the requirements of capability identification, and has a very simple structure that is easy to parse and process.3.5.1 Comparison with directory search filters Observe that a feature collection is similar to a directory entry, in that it consists of a collection of named values. Further, the semantics of the mechanism for selecting feature collections from a feature set is in many respects similar to selection of directory entries from a directory. A feature set predicate used to describe media handling capabilities is implicitly applied to some feature collection. Within the predicate, members of the feature collection are identified by their feature tags, and are compared with known feature values. (Compare with the way an LDAP search filter is applied to a directory entry, whose members are identified by attribute type names, and compared with known attribute values.) For example, in: (& (dpi>=150) (papersize=iso-A4) ) the tokens 'dpi' and 'papersize' are feature tags, and '150' and ' iso-A4' are feature values. (In a corresponding LDAP search filter, they would be directory entry attribute types and attribute values.) Differences between directory selection (per [7]) and feature set selection are: o Directory selection provides substring-, approximate- and extensible- matching for attribute values. Such matching is not provided for feature set selection. o Directory selection may be based on the presence of an attribute without regard to its value. Within the semantic framework described by this document, Boolean-valued feature tests can be used to provide a similar effect.Klyne Standards Track [Page 8]RFC 2533 A Syntax for Describing Media Feature Sets March 1999 o Directory selection provides for matching rules that test for the presence or absence of a named attribute type. o Directory selection provides for matching rules which are dependent upon the declared data type of an attribute value. o Feature selection provides for the association of a quality value with a feature predicate as a way of ranking the selected value collections. Within the semantic framework described by this document, Boolean- valued feature tests can be used where presence tests would be used in a directory search filter. The idea of extensible matching and matching rules dependent upon data types are facets of a problem not addressed by this memo, but which do not necessarily affect the feature selection syntax. An aspect that might bear on the syntax would be specification of an explicit matching rule as part of a selection expression.3.6 Describing preferences A convenient way to describe preferences is by numeric "quality values". It has been suggested that numeric quality values are potentially misleading if used as more than just a way of ranking options. For the purposes of this memo, ranking of options is sufficient. Numeric quality values in the range 0 to 1, with up to 3 fractional digits, are used to rank feature sets according to preference. Higher values are preferred over lower values, and equal values are presumed to be equally preferred. Beyond this, the actual number used has no significance defined here. Arithmetic operations on quality values are likely to produce unpredictable results unless appropriate semantics have been defined for the context where such operations are used. In the absence of any explicitly applied quality value, a value of "1" is assumed. Using the notation defined later, a quality value may be attached to any feature set predicate sub-expression: (| (& (pix-x=750) (pix-y=500) (color=15) );q=0.8 (& (dpi>=150) (papersize=iso-A4) ) ;q=0.7 )Klyne Standards Track [Page 9]RFC 2533 A Syntax for Describing Media Feature Sets March 1999 Section 3.7 below explains that quality values attached to sub-expressions are not always useful. NOTE: the syntax for quality values used here taken from that defined for HTTP 'Accept:' headers in RFC 2068 [9], section 3.9. However, the use of quality values defined here does not go as far as that defined in RFC 2068.3.7 Combining preferences The general problem of describing and combining preferences among feature sets is very much more complex than simply describing allowable feature sets. For example, given two feature sets: (& (a1);q=0.8 (b1);q=0.7 ) (& (a2);q=0.5 (b2);q=0.9 ) where: feature a1 is preferred over a2 feature b2 is preferred over b1 Which of these feature sets is preferred? In the absence of additional information or assumptions, there is no generally satisfactory answer to this. The proposed resolution of this issue is simply to say that no rules are provided for combining preference information. Applied to the above example, any preference information about (a1) in relation to (a2), or (b1) in relation to (b2) is not presumed to convey information about preference of (& (a1) (b1) ) in relation to (& (a2) (b2) ). In practical terms, this restricts the application of preference information to top-level predicate clauses. A top-level clause completely defines an allowable feature set; clauses combined by logical-AND operators cannot be top-level clauses (see canonical format for feature set predicates, described later). NOTE: This memo does not apply specific meaning to quality values or rules for combining them. Application of such meanings and rules is not prohibited, but is seen as an area for continuing research and experimentation. An example of a design that uses extended quality value semantics and combining operations is "Transparent Content Negotiation in HTTP" [4]. Other work that also extends quality values is the content negotiation algorithm in the Apache HTTP server [14].Klyne Standards Track [Page 10]RFC 2533 A Syntax for Describing Media Feature Sets March 19994. Feature set representation The foregoing sections have described a framework for defining feature sets with predicates applied to feature collections. This section presents a concrete representation for feature set predicates.4.1 Textual representation of predicates The text representation of a feature set is based on RFC 2254 "The String Representation of LDAP Search Filters" [8], excluding those elements not relevant to feature set selection (discussed above), and adding elements specific to feature set selection (e.g. options to associate quality values with predicates). The format of a feature predicate is defined by the production for "filter" in the following, using the syntax notation and core rules of RFC 2234 [10]: filter = "(" filtercomp ")" *( ";" parameter ) parameter = "q" "=" qvalue / ext-param "=" ext-value qvalue = ( "0" [ "." 0*3DIGIT ] ) / ( "1" [ "." 0*3("0") ] ) ext-param = ALPHA *( ALPHA / DIGIT / "-" ) ext-value = <parameter value, according to the named parameter> filtercomp = and / or / not / item and = "&" filterlist or = "|" filterlist not = "!" filter filterlist = 1*filter item = simple / set / ext-pred set = attr "=" "[" setentry *( "," setentry ) "]" setentry = value "/" range range = value ".." value simple = attr filtertype value filtertype = equal / greater / less equal = "=" greater = ">=" less = "<=" attr = ftag value = fvalue ftag = <Feature tag, as defined in RFC 2506 [3]> fvalue = Boolean / number / token / string Boolean = "TRUE" / "FALSE" number = integer / rational integer = [ "+" / "-" ] 1*DIGIT rational = [ "+" / "-" ] 1*DIGIT "/" 1*DIGITKlyne Standards Track [Page 11]RFC 2533 A Syntax for Describing Media Feature Sets March 1999 token = ALPHA *( ALPHA / DIGIT / "-" ) string = DQUOTE *(%x20-21 / %x23-7E) DQUOTE ; quoted string of SP and VCHAR without DQUOTE ext-pred = <Extension constraint predicate, not defined here> (Subject to constraints imposed by the protocol that carries a feature predicate, whitespace characters may appear between any pair of syntax elements or literals that appear on the right hand side of these productions.) As described, the syntax permits parameters (including quality values) to be attached to any "filter" value in the predicate (not just top-level values). Only top-level quality values are recognized. If no explicit quality value is given, a value of '1.0' is applied. NOTE: The flexible approach to quality values and other parameter values in this syntax has been adopted for two reasons: (a) to make it easy to combine separately constructed feature predicates, and (b) to provide an extensible tagging mechanism for possible future use (for example, to incorporate a conceivable requirement to explicitly specify a matching rule).4.2 Interpretation of feature predicate syntax A feature set predicate is described by the syntax production for ' filter'.4.2.1 Filter syntax A 'filter' is defined as either a simple feature comparison ('item', see below) or a composite filter ('and', 'or', 'not'), decorated with optional parameter values (including "q=qvalue"). A composite filter is a logical combination of one or more 'filter' values: (& f1 f2 ... fn ) is the logical-AND of the filter values 'f1', 'f2' up to 'fn'. That is, it is satisfied by any feature collection that satisfies all of the predicates represented by those filters. (| f1 f2 ... fn ) is the logical-OR of the filter values 'f1', 'f2' up to 'fn'. That is, it is satisfied by any feature collection that satisfies at least one of the predicates represented by those filters.Klyne Standards Track [Page 12]RFC 2533 A Syntax for Describing Media Feature Sets March 1999
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -