Movatterモバイル変換


[0]ホーム

URL:


[RFC Home] [TEXT|PDF|HTML] [Tracker] [IPR] [Info page]

INFORMATIONAL
Network Working Group                                         J. ElliottRequest for Comments: 2259                      Epic Systems CorporationCategory: Informational                                       J. Ordille                                          Bell Labs, Lucent Technologies                                                            January 1998Simple Nomenclator Query Protocol (SNQP)Status of this Memo   This memo provides information for the Internet community.  It does   not specify an Internet standard of any kind.  Distribution of this   memo is unlimited.Copyright Notice   Copyright (C) The Internet Society (1998).  All Rights Reserved.Abstract   The Simple Nomenclator Query Protocol (SNQP) allows a client to   communicate with a descriptive name service or other relational-style   query service.  The protocol is useful to services that search many   data repositories for query responses.  Clients can pose queries on   relations, list descriptions of relations, and obtain advice on   reducing the search time and cost of their queries.  Clients are   informed of the age of information in caches, and may request more   recent information.  SNQP provides support for graphical user   interfaces.  It also supports different types of comparison   operators, so services can use SNQP with a variety of back-end   servers, e.g. relational database servers, CCSO servers, and servers   providing relational views of X.500.   SNQP is an ASCII protocol in the request-reply style of SMTP.  It was   specifically designed for use with the Nomenclator name and   information service, and has been useful elsewhere.1. Introduction   The Simple Nomenclator Query Protocol (SNQP) is a protocol for   querying servers that search collections of data repositories.  Users   retrieve information from an SNQP server by describing attributes of   the information.  SNQP servers contact one or many data repositories   to retrieve the response to a user query.  If the data repositoriesElliott & Ordille            Informational                      [Page 1]

RFC 2259                          SNQP                      January 1998   differ in protocol or data format, it is responsibility of the SNQP   server to translate protocols and data formats to provide one,   integrated answer to the user's query.   SNQP servers share the protocol needs of centralized data   repositories that answer queries with locally stored data.  SNQP   servers also require specialized protocol features due to their   distributed search characteristics.   In highly distributed environments, it is unreasonable to expect all   data repositories that need to be searched to be available when   queries are posed.  SNQP servers require facilities for returning   partial results in the presence of communications errors with data   repositories.   The partial results must indicate how to resubmit the   query only to those data repositories that are unavailable.   In addition, users may pose queries without realizing the cost of the   search for query responses.  SNQP provides facilities for informing   users of query costs and advising them on limiting that cost.  Costs   and advice are returned before queries are executed.   Finally, SNQP servers may cache data and meta-data to speed query   responses.  Servers can inform users of the t-bound for their query   response.   A t-bound is the time after which changes may have   occurred to the data that are not reflected in the query response   [6,2].  A t-bound is the time of the oldest cache entry used to   calculate the response.  Users can request that query responses are   more current then a particular t-bound.  Making such a request   flushes older items from the cache.   SNQP provides support for graphical user interfaces.  It also   supports different types of comparison operators, so SNQP servers can   query a variety of back-end data repositories, e.g. relational   databases, CCSO servers [3], and servers providing relational views   of X.500 [10].   SNQP is a connection-oriented protocol.  A client initiates a query   session with an SNQP server by making a TCP connection to a well-   known port.  The client then executes a series of SNQP commands.   These commands are listed briefly in Table 1.Section 2 provides   some typical scenarios for using these commands, andSection 3   describes the commands fully.  The server replies to each command   using the theory of reply codes described for the Simple Mail   Transfer Protocol (SMTP) [9]. The theory of reply codes and the   defined reply codes are described inSection 4.Elliott & Ordille            Informational                      [Page 2]

RFC 2259                          SNQP                      January 1998   ---------------------------------------------------------------------      Command       Description   ---------------------------------------------------------------------      advice        Provide advice on query costs without executing                    query.      attributes    List the attributes for a relation.      compare       Set type of comparison operation.      help          Explain the SNQP commands.      imagui        Format replies for a graphical user interface.      next          Stop processing current query, continue with next                    query in block.      noadvice      Provide responses to queries.  Do not advise                    on costs.      noimagui      Format replies for people.      query         Submit a block of one or more SQL query statements.      relations     List the relations available through the SNQP                    server.      stop          End processing of current query, and cancel any                    queries remaining in block.      quit          Terminate the query session.                         Table 1: SNQP Commands   ---------------------------------------------------------------------   SNQP queries are posed in SQL, a standard relational database query   language [4,12].  Information that is obtained through SNQP servers   is organized by type into database relations.  SQL queries may often   have more functionality then a server supports or an application   demands.  Moreover, advice on query costs, some types of comparison   operations or t-bounds may not be supported by a particular server.   SNQP defines a minimal subset of functionality for a working SNQP   protocol.  Functionality beyond this subset is optional.  Servers   that do not support optional functionality must return replies that   indicate this to the user.  The required and optional features of   SNQP are summarized inSection 5.   SNQP was specifically designed for use with the Nomenclator name and   information service [8,7,5].  Nomenclator produces query responses by   integrating information from data repositories with different   protocols and data formats.  It constrains the searches for query   responses through a variety of distributed indexing techniques.  SNQP   has also been found useful elsewhere, even as a query language for a   single data repository.   SNQP is defined for US-ASCII only, and use with other character sets   will require further work.Elliott & Ordille            Informational                      [Page 3]

RFC 2259                          SNQP                      January 1998Section 6 concludes this document with a description of security   considerations.2. Scenarios   This section illustrates the basic SNQP commands by presenting   several client scenarios.  The scenarios include a new user, a user   who prefers CCSO style comparisons and more current responses, a   graphical user interface program, a user with a change of mind, and a   user worried about costs.  Although SNQP will work for a human client   on a bare connection (like one provided by telnet), it also works for   client programs.  Several of these programs have been written and   provide enhanced interfaces.2.1 New User   A new SNQP user will first make a tcp connection to an SNQP server.   For purposes of illustration, we will assume that the user makes the   connection with the Unix telnet command, and that the server is   located at nomen.research.bell-labs.com on port 4224. The user enters   a relation command to discover what relations are available, and an   attributes command to discover the attributes for a particular   relation.  The user eventually asks for people with a given name of   "J*" and a surname of "Ordille" who work for "Lucent Tech*". The   response is current through June 11, 1996 at 11 p.m. EDT.  Figure 1a   and Figure 1b provide this scenario.Elliott & Ordille            Informational                      [Page 4]

RFC 2259                          SNQP                      January 1998   ---------------------------------------------------------------------      > telnet nomen.research.bell-labs.com 4224      Trying 135.104.70.9...      Connected to nomen.research.bell-labs.com.      Escape character is '^]'.      220 nomen.research.bell-labs.com Nomenclator Query Service ready      relations      211-There is 1 relation defined:      211 People      attributes People      212-There are 20 attributes in relation "People":      212-Given_Name      212-Middle_Name      212-Surname      212-Name_Suffix      212-Title      212-Organization      212-Division      212-Department      212-Building      212-Street      212-City      212-State_or_Province      212-Postal_Code      212-Country      212-Phone      212-Fax      212-Email      212-MHSmail      212-Last_Modified      212 Source                       Figure 1a: New User Queries Server   ---------------------------------------------------------------------Elliott & Ordille            Informational                      [Page 5]

RFC 2259                          SNQP                      January 1998   ---------------------------------------------------------------------      query      350 Send the query text, end with .      select * from People where             given_name = "J*" and surname = "Ordille" and             organization = "Lucent Tech*";      .      351 Partial response follows, ended with .      Given_Name: Joann      Middle_Name: J.      Surname: Ordille      Title: MTS      Organization: Lucent Technologies      Division: Bell Laboratories      Department: Computing Sciences Research Center      Building: 2C-301      Street: 700 Mountain Avenue      City: Murray Hill      State_or_Province: New Jersey      Postal_Code: 07974      Country: United States      Phone: +1 908 582 7114      Email: joann@bell-labs.com      Source: nomen://bell-labs.com:17036/email=joann@bell-labs.com      .      250 All queries processed.  Current through 11-Jun-1996 23:00 EDT.      quit      221 nomen.research.bell-labs.com closing transmission channel      Connection closed by foreign host.                      Figure 1b: New User Queries Server                                 (continued)   ---------------------------------------------------------------------2.2 User with CCSO and Currentness Preferences   A user who is accustomed to CCSO name servers prefers CCSO word-based   matching within attribute strings.  Each word in the query string for   an attribute must appear in some order in the response string.  The   wildcard "*" matches any substring within a word.  The defaultElliott & Ordille            Informational                      [Page 6]

RFC 2259                          SNQP                      January 1998   matching, illustrated in Figure 1b, is exact matching of a query   string.  The query string may include "*" wildcards which match any   substring within the response string.  Both types of matching are   case insensitive.   In Figure 2, the CCSO-style user connects to the SNQP server, enables   csso matching, and requests some information about Ordille who works   in research at a lab division of some company.  The request asks for   information that is more current than June 11, 1996 at 11 p.m. if it   is available.   ---------------------------------------------------------------------      compare ccso      213 Performing ccso equality comparisons      query 11-Jun-1996 23:00      350 Send the query text, end with .      select given_name, surname, organization, division, department,             email from People             where surname = "Ordille" and department = "research"             and division = "lab*";      .      351 Partial response follows, ended with .      Given_Name: Joann      Surname: Ordille      Organization: Lucent Technologies      Division: Bell Laboratories      Department: Computing Sciences Research Center      Email: joann@bell-labs.com      .      250 All queries processed.  Current through 12-Jun-1996 22:35 EDT.             Figure 2: User with CCSO Preferences Queries Server   ---------------------------------------------------------------------2.3 Graphical User Interface Program   A user designs a Windows program as a front end to the SNQP server.   In Figure 3, the program requests replies formatted for a graphical   user interface program.  The program submits two SQL queries, andElliott & Ordille            Informational                      [Page 7]

RFC 2259                          SNQP                      January 1998   receives detailed responses that indicate the type and position of   errors.  The error messages are discussed in more detail inSection3.   ---------------------------------------------------------------------      imagui      214 GUI responses enabled      query      350 Send the query text, end with .      select * from Peple where name = "Elliott";      .      735 00000001a000015 e Unknown relation, "Peple"      735 00000001a000027 e Attribute "name" not found in any relation used.      250 All queries processed.  Current through 12-Jun-1996 22:35 EDT.      query      350 Send the query text, end with .      select * from People wher surname = "Elliott";      .      730 00000001a000022 e syntax error      730 00000001a000027 e syntax error      730 00000001a000037 e syntax error      730 00000001a000039 e syntax error      250 All queries processed       Figure 3: Graphical User Interface Program Queries Server   ---------------------------------------------------------------------2.4 User Changes Mind   An exuberant user decides to search everywhere for family members,   then look up a friend who works at Epic Systems, and finally search   everywhere for an old school friend.  Once the query set starts, the   user realizes the folly of searching everywhere, stops the firstElliott & Ordille            Informational                      [Page 8]

RFC 2259                          SNQP                      January 1998   query, executes the second query and then stops executing the query   block.  This scenario is illustrated in Figure 4.  The t-bound is   represented by <time> in this scenario due to space restrictions.   ---------------------------------------------------------------------      query      350 Send the query text, end with .      select * from people where surname = "Smith";      select given_name, surname, email from people             where surname = "Elliott"             and organization = "Epic Systems*";      select * from people where surname = "Brown";      .      next      352 Starting next query.  Any pending responses discarded.      351 Partial response follows, ended with .      Given_Name: Jim      Surname: Elliott      Email: jim@apocalypse.com      .      352 Beginning next query.  Previous current through <time>.      stop      251 All pending queries and responses discarded          Figure 4: User Changes Mind About Submitted Queries   ---------------------------------------------------------------------2.5 User Worries About Costs   In Figure 5a, the exuberant user decides to apply more caution, and   asks for advice on searching for a friend named "Susan Brown".  The   user can not recall the name of the organization where Susan works,   but remembers that the state name begins with "I".  The advice   response lists the locations of the data repositories that will be   contacted. These locations can be supplied to the SNQP server using   the "source" attribute.  Each location is followed by a blank and a   descriptive phrase for the data repository. Continuing in Figure 5b,   the SNQP server also supplies a list of attributes that may constrainElliott & Ordille            Informational                      [Page 9]

RFC 2259                          SNQP                      January 1998   the query further.  The user recognizes the name Northeastern, and   submits the query directly to that location.  The user could also   have added "organization = "Northeastern*"" to the original query.   Other advice options are described inSection 3.   ---------------------------------------------------------------------      advice      214 Basic advice enabled.  Query responses disabled.      query      350 Send the query text, end with .      select * from people where surname = "Brown" and                                 given_name = "Susan" and                                 state_or_province = "I*";      .      354 The query will contact 8 data repositories, ended with .      ccso://ns.dacc.cc.il.us:105/* Danville Area Community College      ccso://ns.eiu.bgu.edu:105/* Eastern Illinois University      ccso://ns.ilstu.edu:105/* Illinois State University      ccso://ns.imsa.edu:105/* Illinois Math and Science Academy      ccso://ns.ne.edu:105/* Northeastern Illinois University      ccso://ns.uiuc.edu:105/* University of Illinois at Urbana-Champaign      ccso://ns.iup.edu:105/* Indiana University of Pennsylvania      ccso://ph.indstate.edu:105/* Indiana State University      .          Figure 5a: User Asks About Costs Before Executing Query   ---------------------------------------------------------------------Elliott & Ordille            Informational                     [Page 10]

RFC 2259                          SNQP                      January 1998   ---------------------------------------------------------------------      355 There are 8 attributes that may constrain the query, ended with .      Organization      Department      Email      State_or_Province      Country      Postal_Code      Phone      Source      .      250 All queries processed.  Current through 12-Jun-1996 22:35 EDT.      noadvice      214 Query responses returned.  Advice disabled.      query      350 Send the query text, end with .      select * from people where surname = "Brown" and                              given_name = "Susan" and                                 state_or_province = "I*" and                                 source ="ccso://ns.neiu.bgu.edu:105/*";      .      351 Partial response follows, ended with .      Given_Name: Susan      Middle_Name: W.      Surname: Brown      Organization: Northeastern Illinois University      Email: sw-brown@ne.edu      Source: ccso://ne.edu:105/alias=SW-Brown      .      250 All queries processed.  Current through 12-Jun-1996 22:35 EDT.          Figure 5b: User Asks About Costs Before Executing Query   ---------------------------------------------------------------------Elliott & Ordille            Informational                     [Page 11]

RFC 2259                          SNQP                      January 19983. Commands   SNQP commands are case insensitive and terminated with a newline <LF>   or carriage return <CR>.  In the following descriptions, SNQP   commands are in upper case and SNQP replies are in mixed case.  Items   in a command list are separated by blanks.   Most SNQP replies are short.  They have a rely code (seeSection 4),   followed by a continuation character and reply text.  If the   continuation character is blank, the reply is complete.  If the   continuation character is a dash ("-"), the reply continues on the   next line.  Text within the reply can vary, but the reply code   remains the same.  A two line reply example is given below:   ---------------------------------------------------------------------      nnn-Message1      nnn Message2   ---------------------------------------------------------------------   In some cases commands or replies may be long, so these   commands/replies use the '.'-terminated block structure that is used   for message bodies in SMTP. Blocks are comprised of lines of text   that constitute the command/reply.  Blocks are terminated with a   period on a line by itself.   SNQP generally ignores blank lines in both directions, except that   blanks lines separate tuples within query response blocks.   Whenever a time is listed in a command or response, it has the   format:   ---------------------------------------------------------------------   DD-MMM-YYYY HH:MM ZZZ   ---------------------------------------------------------------------   where DD is the day, MMM are the first three characters of the month,   YYYY is the year, HH the hours on a 24 hour clock, MM the minutes,   and ZZZ the commonly used US timezone abbreviations.  If time zone is   unspecified in a command, the timezone of the SNQP server is assumed.   SNQP servers support a source attribute in every relation.  In   queries, the source attribute directs the SNQP server to a particular   data repository.  In query responses, the source attribute indicates   the origin of the information in a tuple.  In advice and errorElliott & Ordille            Informational                     [Page 12]

RFC 2259                          SNQP                      January 1998   messages, the source attribute is provided so the client can contact   the source in later queries.  The source attribute has two possible   forms:   ---------------------------------------------------------------------   <protocol>://<domain-name>:<port>   <protocol>://<domain-name>:<port>/<tuple-id>   ---------------------------------------------------------------------   <protocol> identifies the protocol used to contact the data   repository. The data repository can be (was) contacted at <domain-   name> and <port>.  When present, <tuple-id> identifies a specific   entry in the data repository.  It is missing when the data repository   does not have an attribute that uniquely identifies its entries.   Although the source string is similar to a URL, the protocols listed   may or may not be supported by World-Wide Web browsers.  An effort   should be made to keep the protocol identifiers consistent with   accepted standards, but in the end they are specific to SNQP servers.   When a connection is established with an SNQP server, the server   returns the following greeting where <domain-name> is the domain name   of the server host, e.g.  nomen.research.bell-labs.com,  and   <service-name> is the name of the service, e.g. Nomenclator:   ---------------------------------------------------------------------      220 <domain-name> <snqp-service-name> Query Service ready   ---------------------------------------------------------------------   The following sections describe each command in detail.  The commands   are ordered alphabetically.  Typical reply messages are explained   with each command.  Exceptional error conditions, for example system   errors or rejection of connections due to load, may sometimes occur.   These error replies are documented inSection 4.Elliott & Ordille            Informational                     [Page 13]

RFC 2259                          SNQP                      January 19983.1 Advice   ---------------------------------------------------------------------      ADVICE      214 Basic advice enabled. Query responses disabled.      514 Advice not available      ADVICE <RELATION> <ATTRIBUTE>      214 Advice enabled for "<attribute>" in "<relation>"      553 Unknown relation      554 Unknown attribute      514 Advice not available for "<attribute>"   ---------------------------------------------------------------------   In all cases, advice disables query searches. When queries are   submitted, advice is returned about the cost of the query or ways of   constraining the query further.  There are two forms of the advice   command.   The first form of command does not include an attribute name.  When   an SQL query is processed, the SNQP server returns a list of data   repositories that it will contact.  It also returns a list of   attributes that may constrain the query further.  The specific values   of the attributes will determine whether the query is constrained   further.  If advice is not available from the server, an error is   returned.   The second form of advice includes the name of a relation and the   name of an attribute in that relation.  SQL queries return a list of   possible values for the attribute.  The list may be complete, or may   only include values that are known to constrain the search.  This   distinction is described further in the query command.  If advice is   not available on the attribute or the relation or attribute is   unknown, an error is returned.  When advice is not available on an   attribute, basic advice and advice on other attributes may be   available.   Basic advice and advice for one or more attributes can be enabled   simultaneously. They are not mutually exclusive.   The advice command is useful to application programs which present   lists of alternatives to the user.  A query-form program can enable   advice for an attribute, submit an empty query, and obtain the list   of options for the attribute.  The list will indicate whether it is a   full list of all values for the attribute, or a constraint list ofElliott & Ordille            Informational                     [Page 14]

RFC 2259                          SNQP                      January 1998   only those values known to constrain queries.  The program can use   full lists to create a selection menu on its query form.  A program   can also enable basic advice, submit the query, and then ask the user   to select the data repositories to search from the resulting list.3.2 Attributes   ---------------------------------------------------------------------      ATTRIBUTES <RELATION> <TIME>      212-There are <n> attributes in relation "<RELATION>":      212-<Attribute-name>      212-<Attribute-name>      212 Current through <TIME>      553 Unknown relation.  Current through <TIME>.      556 T-bounds not supported   ---------------------------------------------------------------------   The attributes command lists the attributes defined for the given   relation.  Since characteristics of relations may be defined outside   the SNQP server and cached there, the user may ask for an answer that   is more recent than <TIME>.  The SNQP server will endeavor to provide   this information.  The first line of the reply notes the number of   attributes <n>.  Subsequent lines list the attribute names.  The   information in the response is current through the time returned, but   may have changed after that time.  Accepting requests to improve a   t-bound and indicating the t-bound of the result are optional for   SNQP servers.   If the relation is unknown, an error is returned.  If <TIME> is   submitted when t-bounds are not supported, an error is returned.3.3 Compare   ---------------------------------------------------------------------      COMPARE <COMPARISON-TYPE>      213 Performing <COMPARISON-TYPE> comparisons      555 Unknown comparison type   ---------------------------------------------------------------------   The compare command lists the type of equality comparison performed   for SQL queries.  The compare command can be followed by a comparison   type to set the type.  Reply 555 is returned if the comparison typeElliott & Ordille            Informational                     [Page 15]

RFC 2259                          SNQP                      January 1998   is unknown or unsupported.  "Default" and "CCSO" are defined   comparison types.  The default equality comparison is exact string   matching.  The query string may include "*" wildcards which match any   substring within the response string.  The CCSO equality comparison   matches words within strings.  Each word in the query string for an   attribute must appear in some order in the response string.  Words   are delimited by blank, comma, colon, semi-colon, tab, and newline.   The wildcard "*" matches any substring within a word.  Both string   and word comparisons are case insensitive.3.4 Help   ---------------------------------------------------------------------      HELP      210-The following commands are available:      210-<comma-separated-command-list>      210 <comma-separated-command-list>      HELP <COMMAND>      210-<explanation of <COMMAND>>      210 <explanation of <COMMAND>>      500 Sorry, no help available for "<COMMAND>"   ---------------------------------------------------------------------   The help command returns the list of available commands. If some   commands are not supported, for example advice, they should not be   listed.  Use of unsupported commands should still return an   informative error message.  Help can be followed by a command name   for information on that command.  If no help is available for a   command or the command does not exist, Reply 500 is returned.3.5 Imagui   ---------------------------------------------------------------------      IMAGUI      215 GUI responses enabled   ---------------------------------------------------------------------   The imagui command informs the server that the client is a graphical   user interface (GUI).  The client requests more comprehensive,   program-oriented errors and progress reports. It replies that GUI   responses are enabled.  SeeSection 4 for more information on GUI   responses.Elliott & Ordille            Informational                     [Page 16]

RFC 2259                          SNQP                      January 19983.6 Next   ---------------------------------------------------------------------      NEXT      353 Starting next query.  Any pending responses discarded.      450 No query in progress   ---------------------------------------------------------------------   The next command stops processing of the current SQL query.  It   starts the next SQL query in the block submitted with the last query   command.  If none remain, the query command is completed.  An error   is returned if no query is in progress.3.7 Noadvice   ---------------------------------------------------------------------      NOADVICE      216 Query responses enabled.  Advice disabled.   ---------------------------------------------------------------------   The noadvice command disables advice for query commands.  It   activates query searches, so queries will return responses.  See the   advice command for more information.3.8 Noimagui   ---------------------------------------------------------------------      NOIMAGUI      215 GUI responses disabled   ---------------------------------------------------------------------   The noimagui command disables detailed messages to a graphical user   interface program. It replies that GUI responses are disabled.  SeeSection 4 for more information on GUI responses.3.9 Query   The query command behaves differently depending on whether responses   or advice are enabled. We first describe the submission of a query   and the possible immediate error responses.  We then describe theElliott & Ordille            Informational                     [Page 17]

RFC 2259                          SNQP                      January 1998   possible replies to the query command when responses are enabled.  We   finish by describing the possible replies to the query command when   advice is enabled.   ---------------------------------------------------------------------      QUERY <TIME>      350 Send query text, end with .      450 Query already in progress      552 Query blocks are limited to one SQL query      556 T-bounds not supported   ---------------------------------------------------------------------   The query command submits a block of SQL queries to the SNQP server.   Each SQL query must be terminated with a semi-colon, and the entire   block is terminated with a line containing a single period.  Special   characters in query string constants can be included using the C   language conventions, e.g. "\n" is the newline character.   Since a variety of cached information can be used in processing the   SQL queries, the user may ask for answers that are more recent than   <TIME>.  The SNQP server will endeavor to provide this information.   Accepting requests to improve a t-bound is optional for SNQP servers.   If a query command is already in process, the entire block is   refused.  If multiple SQL queries are submitted in one block to a   server that does not support multi-query blocks, an error is   returned.  If <TIME> is submitted when t-bounds are not supported, an   error is returned.   ---------------------------------------------------------------------      351 Partial response follows ended with .      352 Beginning next query.  Previous query current through <TIME>.      250 All queries processed.  Current through <TIME>.      653 <Communications err> with <location> <location description>      660 <Error> from <location> <location description>      700 <SQL query parsing error>      750 <SQL query semantic error>      761 <Requirements Error> for <location> <location description>   ---------------------------------------------------------------------Elliott & Ordille            Informational                     [Page 18]

RFC 2259                          SNQP                      January 1998   Responses are returned in blocks as they arrive from data   repositories.  Reply 351 begins a response block.  Response blocks   are terminated with periods.  Tuples are sent within the block as a   list of attribute name and value pairs:   ---------------------------------------------------------------------   <attribute-name>: <attribute-value>                   : <attribute-value>   ---------------------------------------------------------------------   Only the first line of a multi-line attribute returns the   <attribute-name>.  Successive tuples are separated with blank lines.   Attributes with null or blank values are suppressed at the option of   the SNQP server.   In between response blocks, error replies can be reported.  Replies   653, 660 and 761 are examples of such errors.  Reply 653 reports a   communication error with the data repository identified by the source   location and described by the associated string. Reply 660 reports an   error returned by a data repository.  Reply 761 reports a known   requirement of the data repository that the query failed to satisfy.   Reply 761 reflects comparison of the query with known characteristics   of the data repository by the SNQP server.  For example, some data   repositories refuse queries that do not contain a specific subset of   attributes in the relation.  Other replies are possible.  It is best   to check the the type and severity of the reply against the theory of   reply codes inSection 4.   When an SQL query in a block is successfully completed, the SNQP   server sends Reply 352 to indicate that the next query is being   started.  Reply 352 reports the t-bound of the previous query if it   is available. Reply 352 is sent even if the previous query terminated   due to permanent errors.   The one exception is that permanent errors   generated by the next or stop command supersede Reply 352.   When all SQL queries are complete, the SNQP server sends Reply 250 to   indicate that all queries have been processed.  A query block   containing one query that has no responses will only return Reply   250.  Reply 250 reports the t-bound of the last SQL query in the   block if it is available.  Reply 250 is sent even if the last query   in the block terminated due to permanent errors.   The one exception   is that permanent errors generated by the stop command supersede   Reply 352.Elliott & Ordille            Informational                     [Page 19]

RFC 2259                          SNQP                      January 1998   Note that this command follows the convention that "intermediate"   reply codes, as defined inSection 4, are used until the SQL query is   complete.  Final query completion error codes abort the processing of   the SQL query.  Examples of these errors include parsing errors   (Reply 700) and semantic errors (Reply 750) in the SQL query.  The   SNQP server will attempt to continue with the next query if possible.   The block of queries will be terminated with Reply 250 or 251 (from   the stop command) to indicate that another query will be accepted.   Indicating the t-bound of a query response is optional for SNQP   servers.   ---------------------------------------------------------------------      354-The query will contact <n> data repositories, ended with .      <location> <location-description>      355-There are <n> attributes that may constrain the query, ended with .      <attribute-name>      356-There are <n> possible values for "<attribute>", ended with .      <attribute-value>      357-There are <n> constraining values for "<attribute>", ended with .      357-<attribute-value>      357 <attribute-value>      352 Beginning next query.  Previous query current through <TIME>.      250 All queries processed.  Current through <TIME>.      700 <SQL query parsing error>      750 <SQL query semantic error>   ---------------------------------------------------------------------   Different kinds of advice are returned in different blocks.  Basic   advice about the number, n, of data repositories that will be   searched is returned with Reply 354.  Subsequent lines list location   and location description for the data repositories that will be   searched.  The data repository locations can be supplied to the SNQP   server using the "source" attribute.  Each location is followed by a   blank and a descriptive phrase for the data repository.   Basic advice about the attributes that may constrain the query is   returned with reply code 355.  The first line of the reply includes   the number, n, of attributes.  Subsequent lines list the names of the   attributes.  The specific values of the attribute will determine   whether the query is constrained further.Elliott & Ordille            Informational                     [Page 20]

RFC 2259                          SNQP                      January 1998   Advice for a particular attribute has two forms.  First, the advice   may list the n possible values for the attribute in reply 356.  The   list is complete; no other values for the attribute exist within the   context of the query.  Second, the advice may list the n values for   the attribute that are known to constrain the query.  The list is   incomplete; other values of the attribute may exist within the   context of the query.   When advice for an SQL query in a block is successfully completed,   the SNQP server sends reply 352 to indicate that the next query is   being started.  Reply 352 reports the t-bound of the advice for the   previous query if it is available. Reply 352 is sent even if the   previous query terminated due to permanent errors.   The one   exception is that permanent errors generated by the next or stop   command supersede Reply 352.   When all SQL queries are complete, the SNQP server sends Reply 250 to   indicate that all queries have been processed.  Reply 250 reports the   t-bound of the last SQL query in the block if it is available.  Reply   250 is sent even if the last query in the block terminated due to   permanent errors.   The one exception is that permanent errors   generated by the stop command supersede Reply 352.   Final query completion error codes abort the processing of the SQL   query.  Examples of these errors include parsing errors and semantic   errors in the SQL query.  The SNQP server will attempt to continue   with the next query if possible. The block of queries will be   terminated with Reply 250 or 251 (from the stop command) to indicate   that another query will be accepted.  Indicating the t-bound of   advice is optional for SNQP servers.3.10 Relations   ---------------------------------------------------------------------      RELATIONS <TIME>      211-There are <n> relations defined:      211-<Relation-name>      211-<Relation-name>      211 Current through <TIME>.      556 T-bounds not supported   ---------------------------------------------------------------------   The relations command lists the currently available relation names.   Since characteristics of relations can be cached, the user may ask   for an answer that is more recent than <TIME>.  The SNQP server willElliott & Ordille            Informational                     [Page 21]

RFC 2259                          SNQP                      January 1998   endeavor to provide this information.  The first line of the reply   notes the number of relations <n>.  Subsequent lines list the   relation names. The information in the response is current through   the time returned, but may have changed after that time.  Accepting   requests to improve a t-bound and indicating the t-bound of the   result are optional for SNQP servers.   If <TIME> is submitted when t-bounds are not supported, an error is   returned.3.11 Stop   ---------------------------------------------------------------------      STOP      251 All pending queries and responses discarded      450 No query in progress   ---------------------------------------------------------------------   The stop command ends processing of the current SQL query, and   cancels any that may have followed it in the last query command.  An   error is returned if no queries are in progress.3.12 Quit   ---------------------------------------------------------------------      QUIT      221 <domain-name> closing transmission channel   ---------------------------------------------------------------------   The quit command ends the session.  It closes the TCP connection   after signing off with the domain name of the SNQP server.4. Replies   Most SNQP replies are short.  They have a rely code followed by a   continuation character and reply text.  If the continuation character   is blank, the reply is complete.  If the continuation character is a   dash ("-"), the reply continues on the next line.  Text within the   reply can vary, but the reply code remains the same.  A two line   reply example is given below:Elliott & Ordille            Informational                     [Page 22]

RFC 2259                          SNQP                      January 1998   ---------------------------------------------------------------------      nnn-Message1      nnn Message2   ---------------------------------------------------------------------   In some cases commands or replies may be long, so these   commands/replies use the '.'-terminated block structure that is used   for message bodies in SMTP. Blocks are comprised of lines of text   that constitute the command/reply.  Blocks are terminated with a   period on a line by itself.   The theory of reply codes explained for SMTP inRFC-821 is used here.   Table 2 defines the reply code structure.  Reply codes are three   digits, xyz.  The x digit indicates the command status.  The y digit   indicates the component of the system that generated the reply.  The   z digit allows for further distinctions within replies from the same   component.   ---------------------------------------------------------------------      Code  Interpretation   ---------------------------------------------------------------------      1yz   Positive preliminary reply (not used in SNQP)      2yz   Positive completion reply      3yz   Positive intermediate reply      4yz   Transient negative completion reply      5yz   Permanent negative completion reply      6yx   Transient negative intermediate reply      7yx   Permanent negative intermediate reply      x0z   Syntax or semantic problem      x1z   Informational reply      x2z   Related to transmission channel      x3z   Formatted (location coded) report for GUI      x4z   Status message to be displayed by GUI      x5z   Related to query resolver      x6z   Related to data repository      x9z   Component generating the error is unknown or suspect                     Table 2: Reply Code Structure   ---------------------------------------------------------------------Elliott & Ordille            Informational                     [Page 23]

RFC 2259                          SNQP                      January 1998   The GUI-related reply codes are only used if the server has been   informed that it is communicating with a graphical user interface,   via the imagui command.   For such codes in the x3z space, digit "z"   takes on the role of digit "y" in other codes. I.e. 735 are permanent   negative intermediate replies about the query resolver.   Table 3a and Table 3b list the defined regular (non-GUI) reply codes.   Text messages for the reply codes may vary.  The codes are sorted   numerically.   ---------------------------------------------------------------------      210-The following commands are available:      211-There are <n> relations defined:      212-There are <n> attributes in relation "<relation>":      213 Performing <comparison-type> type equality comparisons      214 Basic advice enabled.  Query responses disabled.      214 Advice enabled for "<attribute>" in "<relation>"      215 GUI responses enabled      215 GUI responses disabled      216 Query responses enabled.  Advice disabled.      220 <domain-name> <snqp-service-name> Query Service ready      221 <domain-name> closing transmission channel      250 All queries processed      250 All queries processed.  Current through <time>.      251 All pending queries and responses discarded      340 Searching <n> data repositories      350 Send the query text, end with .      351 Partial response follows, ended with .      352 Beginning next query in batch      352 Beginning next query in batch.  Previous current through <time>.      353 Starting next query. Any pending responses discarded.      354 The query will contact <n> data repositories, ended with .      355 There are <n> attributes that may constrain the query, ended with .      356 There are <n> possible values for attribute "<attribute>":      357 There are <n> constraining values for attribute "<attribute>":      420 Too many connections in progress. Try later.      421 Error in communicating with <snqp-service-name>      450 No query in progress      451 Cancel ignored                        Table 3a: Reply Codes   ---------------------------------------------------------------------Elliott & Ordille            Informational                     [Page 24]

RFC 2259                          SNQP                      January 1998   ---------------------------------------------------------------------      450 Query already in progress      490 Internal error: Invalid query reference number      491 System error: <error number or message>      492 Internal error: Out of client table space      499 <snqp-service-name> shutting down      500 Sorry, no help is available for "<command>"      501 Unknown command      502 Too many arguments for this command      502 Not enough arguments for this command      514 Advice not available      514 Advice not available on <attribute>      552 Query blocks are limited to one SQL query      553 Unknown relation      553 Unknown relation.  Current through <TIME>.      554 Unknown attribute      555 Unknown comparison type      556 T-bounds not supported      557 Will not list more than <n> data repositories      557 Will not list more than <n> attribute values      557 Will not list more than <n> responses      557 Too many data repositories to list      557 Too many attribute values to list      557 Too many responses to list      557 Too many data repositories to search      651 <Error message from query resolver>      653 <Communications error> with <location> <location description>      660 <Error> from <location> <location description>      700 <SQL parse error message>      750 <SQL semantic error message>      751 <Error message from query resolver>      761 <Requirements error> for <location> <location description>      790 Internal error: <fatal error from SNQP server>                        Table 3b: Reply Codes                                  (Continued)   ---------------------------------------------------------------------Elliott & Ordille            Informational                     [Page 25]

RFC 2259                          SNQP                      January 1998   Table 4 lists the defined GUI reply codes.  Text messages for the   reply codes may vary.  The codes are sorted numerically.  An   explanation of the codes follows the table.   ---------------------------------------------------------------------      331 nnnnnnn! <message>      331 nnnnnnn.mmmmmm <message>      331 nnnnnnn-mmmmmm <message>      730 nnnnnnnammmmmm e <parse error message>      735 nnnnnnnammmmmm e <semantic error message>      340 <status>                        Table 4: GUI Reply Codes   ---------------------------------------------------------------------   In Table 4, nnnnnnn is the line number in a query block, and mmmmmm   is the column in the line.  Both numbers begin counting with 1.  The   exclamation point response directs the program to list information   after line n.  The period response directs the program to break line   n at column m.  The hyphen response directs the program to flag line   n at column m.  Replies 730 and 735 direct the GUI to indicate the   parsing or semantic error at line n, column m.  Response 340 provides   status information that can be displayed immediately in the GUI's   status line.  A sample status message is one that indicates which   data repository is being contacted.5. Protocol Requirements   SQL queries may often have more functionality then a server supports   or an application demands.  Moreover, query blocks larger than one   SQL query, advice on query costs, some types of comparison operations   or t-bounds need not be supported by a particular server.  SNQP   defines a minimal subset of functionality for a working SNQP   protocol.  Functionality beyond this subset is optional.  Servers   that do not support optional functionality must return replies that   indicate this to the user.   Table 5 lists the minimum functionality for an SNQP server.Elliott & Ordille            Informational                     [Page 26]

RFC 2259                          SNQP                      January 1998   ---------------------------------------------------------------------      Command       Limitations   ---------------------------------------------------------------------      advice        Not supported.      attributes    List the attributes for a relation.      compare       List type of comparison operation.  At least                    one of CCSO and default comparison types must                    be supported.  Wildcards in SQL query strings                    can be rejected by the query command with an                    appropriate semantic error message.      help          Explain the available SNQP commands.      imagui        Not supported.      next          Not supported.      noadvice      Supported, but has no effect since advice                    is not supported.      noimagui      Supported, but has no effect since imagui                    is not supported.      query         Submit a block containing one SQL query statement.                    The minimum supported SQL query statement is                    a selection query that performs equality                    comparisons between attribute values and                    constant strings.  Conjunctions of such comparisons                    are supported.  The minimum SQL query does not allow                    projections, but returns all the attributes                    for matching tuples.      relations     List the relations available through the SNQP                    server.      stop          End processing of current query.      quit          Terminate the query session.                 Table 5: Minimum  SNQP Server Requirements                          (Commands do not support t-bounds)   ---------------------------------------------------------------------6. Security Considerations   SNQP clients and servers depend on the Domain Name Service.  They are   subject to all the security issues that arise in that context.  This   version of the SNQP protocol does not define procedures for   protecting the information communicated to and from an SNQP server.Elliott & Ordille            Informational                     [Page 27]

RFC 2259                          SNQP                      January 19987. References   [1]   American National Standards Institute. "SQL," ANSI Standard         X3.135-1989.  1989.   [2]   H. Garcia-Molina, G. Wiederhold. "Read-Only Transactions in         a Distributed Database,"  ACM Transactions on Database Systems         7(2), pp. 209-234.  June 1982.   [3]   S. Dorner, P. Pomes. "The CCSO Nameserver: A Description,"         Computer and Communications Services Office Technical Report,         University of Illinois, Urbana, USA. 1992. Available in the         current "qi" distribution from         <URL:ftp://uiarchive.cso.uiuc.edu/local/packages/ph>   [4]   J. Levine, T. Mason, D. Brown. "Parsing SQL," lex  yacc, 2nd         ed.  O'Reilly and Associates, Inc. 1992.   [5]   Ordille, J., "The Internet Nomenclator Project",RFC 2258,         January 1998.   [6]   J. Ordille. "Descriptive Name Services for Large Internets,"         Ph. D. Dissertation. University of Wisconsin. 1993.         <URL:http://cm.bell-labs.com/cm/cs/doc/93/12-01.ps.gz>   [7]   J. Ordille, B. Miller. "Distributed Active Catalogs and         Meta-Data Caching in Descriptive Name Services," Thirteenth         International IEEE Conference on Distributed Computing Systems,         pp. 120-129.  May 1993.         <URL:http://cm.bell-labs.com/cm/cs/doc/93/5-01.ps.gz>   [8]   J. Ordille. "Nomenclator Home Page." 1997.         <URL:http://cm.bell-labs.com/cm/cs/what/nomenclator/>   [9]   Postel, J., "Simple Mail Transfer Protocol", STD 10,RFC 821,         August 1982.   [10   Yeong, W., Howes, T., and S. Kille.  "Lightweight Directory         Access Protocol",RFC 1777, March 1995.Elliott & Ordille            Informational                     [Page 28]

RFC 2259                          SNQP                      January 19988. Authors' Addresses   Jim Elliott   Epic Systems Corporation   5301 Tokay Boulevard   Madison, WI 53711  USA   EMail: jim@apocalypse.org   Joann J. Ordille   Bell Labs, Lucent Technologies   Computing Sciences Research Center   700 Mountain Avenue, Rm 2C-301   Murray Hill, NJ 07974  USA   EMail: joann@bell-labs.comElliott & Ordille            Informational                     [Page 29]

RFC 2259                          SNQP                      January 19989.  Full Copyright Statement   Copyright (C) The Internet Society (1998).  All Rights Reserved.   This document and translations of it may be copied and furnished to   others, and derivative works that comment on or otherwise explain it   or assist in its implementation may be prepared, copied, published   and distributed, in whole or in part, without restriction of any   kind, provided that the above copyright notice and this paragraph are   included on all such copies and derivative works.  However, this   document itself may not be modified in any way, such as by removing   the copyright notice or references to the Internet Society or other   Internet organizations, except as needed for the purpose of   developing Internet standards in which case the procedures for   copyrights defined in the Internet Standards process must be   followed, or as required to translate it into languages other than   English.   The limited permissions granted above are perpetual and will not be   revoked by the Internet Society or its successors or assigns.   This document and the information contained herein is provided on an   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.Elliott & Ordille            Informational                     [Page 30]

[8]ページ先頭

©2009-2025 Movatter.jp