Network Working Group                                         J. Elliott
Request for Comments: 2259                      Epic Systems Corporation
Category: Informational                                       J. Ordille
                                          Bell Labs, Lucent Technologies
                                                            January 1998
        
Network Working Group                                         J. Elliott
Request for Comments: 2259                      Epic Systems Corporation
Category: Informational                                       J. Ordille
                                          Bell Labs, Lucent Technologies
                                                            January 1998
        

Simple Nomenclator Query Protocol (SNQP)

简单命名查询协议(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.

版权所有(C)互联网协会(1998年)。版权所有。

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)允许客户机与描述性名称服务或其他关系式查询服务通信。该协议对于搜索多个数据库以获取查询响应的服务非常有用。客户可以对关系提出查询,列出关系的描述,并获得有关减少查询时间和成本的建议。客户会被告知缓存中的信息的年代,并可能要求提供更新的信息。SNQP提供对图形用户界面的支持。它还支持不同类型的比较运算符,因此服务可以将SNQP用于各种后端服务器,例如关系数据库服务器、CCSO服务器和提供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.

SNQP是SMTP请求-应答样式的ASCII协议。它专门设计用于命名名称和信息服务,在其他地方也很有用。

1. Introduction
1. 介绍

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 repositories

简单命名查询协议(SNQP)是用于查询搜索数据存储库集合的服务器的协议。用户通过描述信息的属性从SNQP服务器检索信息。SNQP服务器联系一个或多个数据存储库以检索对用户查询的响应。如果数据存储库

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服务器负责翻译协议和数据格式,为用户的查询提供一个完整的答案。

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.

SNQP服务器共享使用本地存储数据回答查询的集中式数据存储库的协议需求。SNQP服务器由于其分布式搜索特性,还需要专门的协议功能。

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.

在高度分布式的环境中,当提出查询时,期望所有需要搜索的数据存储库都可用是不合理的。SNQP服务器需要在存在与数据存储库的通信错误时返回部分结果的工具。部分结果必须指示如何仅向不可用的数据存储库重新提交查询。

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.

此外,用户可能会提出查询,而没有意识到搜索查询响应的成本。SNQP提供了通知用户查询成本并建议他们限制该成本的工具。在执行查询之前,会返回成本和建议。

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服务器可以缓存数据和元数据以加快查询响应。服务器可以通知用户查询响应的t界限。t界是指在查询响应[6,2]中未反映的数据发生更改之后的时间。t界限是用于计算响应的最早缓存项的时间。用户可以请求查询响应比特定的t边界更为最新。发出这样的请求会从缓存中刷新较旧的项目。

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提供对图形用户界面的支持。它还支持不同类型的比较运算符,因此SNQP服务器可以查询各种后端数据库,例如关系数据库、CCSO服务器[3],以及提供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, and Section 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 in Section 4.

SNQP是一种面向连接的协议。客户端通过与已知端口建立TCP连接,启动与SNQP服务器的查询会话。然后,客户端执行一系列SNQP命令。表1简要列出了这些命令。第2节提供了一些使用这些命令的典型场景,第3节详细描述了这些命令。服务器使用简单邮件传输协议(SMTP)[9]中描述的回复代码理论回复每个命令。第4节介绍了应答码的理论和定义的应答码。

   ---------------------------------------------------------------------
      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.
        
   ---------------------------------------------------------------------
      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

表1:SNQP命令

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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 in Section 5.

SNQP查询是在标准关系数据库查询语言SQL中提出的[4,12]。通过SNQP服务器获得的信息按类型组织到数据库关系中。SQL查询通常比服务器支持或应用程序需要的功能更多。此外,特定服务器可能不支持关于查询成本、某些类型的比较操作或t界限的建议。SNQP定义了工作SNQP协议的最小功能子集。此子集之外的功能是可选的。不支持可选功能的服务器必须向用户返回表明这一点的回复。第5节总结了SNQP的必需和可选特性。

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专门设计用于命名名称和信息服务[8,7,5]。Nomenclator通过集成来自具有不同协议和数据格式的数据存储库的信息来生成查询响应。它通过各种分布式索引技术限制查询响应的搜索。SNQP在其他地方也很有用,甚至可以作为单个数据存储库的查询语言。

SNQP is defined for US-ASCII only, and use with other character sets will require further work.

SNQP仅为US-ASCII定义,与其他字符集一起使用将需要进一步的工作。

Section 6 concludes this document with a description of security considerations.

第6节以安全注意事项的说明结束本文件。

2. Scenarios
2. 情节

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.

本节通过介绍几个客户端场景来说明基本SNQP命令。这些场景包括一个新用户、一个更喜欢CCSO风格比较和更多当前响应的用户、一个图形用户界面程序、一个改变主意的用户以及一个担心成本的用户。尽管SNQP将在裸连接上为人类客户端工作(如telnet提供的连接),但它也适用于客户端程序。其中一些程序已经编写,并提供了增强的接口。

2.1 New User
2.1 新用户

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.

新的SNQP用户将首先与SNQP服务器建立tcp连接。为了便于说明,我们假设用户使用Unix telnet命令进行连接,并且服务器位于nomen.research.bell-labs.com端口4224上。用户输入一个关系命令来发现哪些关系可用,输入一个属性命令来发现特定关系的属性。用户最终会询问为“朗讯科技*”工作的名为“J*”姓为“Ordille”的人。回复截止1996年6月11日美国东部夏令时晚上11时。图1a和图1b提供了这个场景。

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

> 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

>telnet nomen.research.bell-labs.com 4224正在尝试135.104.70.9。。。连接到nomen.research.bell-labs.com。转义字符为“^]”。220 nomen.research.bell-labs.com命名查询服务就绪

relations 211-There is 1 relation defined: 211 People

关系211定义了1种关系:211人

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

属性人212与“人”相关的属性有20个:212-给定姓名212-中间姓名212-姓氏212-姓名后缀212头衔212组织212部门212大楼212街212市212-州或省212-邮政编码212国家212电话212传真212电子邮件212 MHSmail 212-最后修改212来源

Figure 1a: New User Queries Server

图1a:新用户查询服务器

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

query 350 Send the query text, end with .

查询350发送查询文本,以结束。

select * from People where given_name = "J*" and surname = "Ordille" and organization = "Lucent Tech*"; . 351 Partial response follows, ended with .

从以下人员中选择*。\u name=“J*”和姓氏=“Ordille”以及organization=“Lucent Tech*”。351部分响应如下,以结束。

      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
        
      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.

. 250所有查询都已处理。目前至1996年6月11日美国东部夏令时23:00。

quit 221 nomen.research.bell-labs.com closing transmission channel

退出221 nomen.research.bell-labs.com关闭传输通道

Connection closed by foreign host.

连接被外部主机关闭。

Figure 1b: New User Queries Server (continued)

图1b:新用户查询服务器(续)

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
2.2 User with CCSO and Currentness Preferences
2.2 具有CCSO和Currentness首选项的用户

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 default

习惯于CCSO名称服务器的用户更喜欢在属性字符串中进行基于CCSO单词的匹配。属性的查询字符串中的每个单词必须以某种顺序出现在响应字符串中。通配符“*”匹配单词中的任何子字符串。默认值

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.

图1b所示的匹配是查询字符串的精确匹配。查询字符串可能包括与响应字符串中的任何子字符串匹配的“*”通配符。这两种类型的匹配都不区分大小写。

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.

在图2中,CCSO风格的用户连接到SNQP服务器,启用csso匹配,并请求一些关于Ordille的信息,Ordille在某公司的实验室部门从事研究工作。该请求要求提供比1996年6月11日晚上11时更为及时的信息(如果有的话)。

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

compare ccso 213 Performing ccso equality comparisons

比较ccso 213执行ccso相等性比较

query 11-Jun-1996 23:00 350 Send the query text, end with .

查询11-Jun-1996 23:00 350发送查询文本,以结尾。

select given_name, surname, organization, division, department, email from People where surname = "Ordille" and department = "research" and division = "lab*"; .

选择给定的名称、姓氏、组织、部门、部门、来自姓氏=“Ordille”和部门=“research”和部门=“lab*”;人员的电子邮件。

351 Partial response follows, ended with .

351部分响应如下,以结束。

Given_Name: Joann Surname: Ordille Organization: Lucent Technologies Division: Bell Laboratories Department: Computing Sciences Research Center Email: joann@bell-labs.com

姓名:Joann姓氏:Ordille组织:朗讯科技部:贝尔实验室部门:计算科学研究中心电子邮件:joann@bell-实验室网站

. 250 All queries processed. Current through 12-Jun-1996 22:35 EDT.

. 250所有查询都已处理。目前至1996年6月12日美国东部夏令时22时35分。

Figure 2: User with CCSO Preferences Queries Server

图2:使用CCSO首选项查询服务器的用户

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
2.3 Graphical User Interface Program
2.3 图形用户界面程序

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, and

用户将Windows程序设计为SNQP服务器的前端。在图3中,程序请求为图形用户界面程序格式化的回复。程序提交两个SQL查询,然后

receives detailed responses that indicate the type and position of errors. The error messages are discussed in more detail in Section 3.

接收指示错误类型和位置的详细响应。第3节将更详细地讨论错误消息。

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

imagui 214 GUI responses enabled

imagui 214 GUI响应已启用

query 350 Send the query text, end with .

查询350发送查询文本,以结束。

select * from Peple where name = "Elliott"; . 735 00000001a000015 e Unknown relation, "Peple"

从Peple中选择*,其中name=“Elliott”。73500000 1A000015 e未知关系“Peple”

735 00000001a000027 e Attribute "name" not found in any relation used.

在使用的任何关系中未找到735 0000000 1A000027 e属性“名称”。

250 All queries processed. Current through 12-Jun-1996 22:35 EDT.

250所有查询都已处理。目前至1996年6月12日美国东部夏令时22时35分。

query 350 Send the query text, end with .

查询350发送查询文本,以结束。

select * from People wher surname = "Elliott"; . 730 00000001a000022 e syntax error

从姓氏为“Elliott”的人中选择*。7300000000 1A000022 e语法错误

730 00000001a000027 e syntax error

7300000000 1A000027 e语法错误

730 00000001a000037 e syntax error

7300000000 1A000037 e语法错误

730 00000001a000039 e syntax error

7300000000 1A000039 e语法错误

250 All queries processed

250所有查询均已处理

Figure 3: Graphical User Interface Program Queries Server

图3:图形用户界面程序查询服务器

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
2.4 User Changes Mind
2.4 用户改变主意

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 first

一个热情的用户决定到处搜索家庭成员,然后查找在Epic Systems工作的朋友,最后到处搜索老同学。一旦查询集启动,用户就会意识到到处搜索的愚蠢,首先停止搜索

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.

查询,执行第二个查询,然后停止执行查询块。此场景如图4所示。在这种情况下,由于空间限制,t界限由<time>表示。

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

query 350 Send the query text, end with .

查询350发送查询文本,以结束。

      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
        
      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.

352开始下一个查询。任何挂起的响应都将被丢弃。

351 Partial response follows, ended with .

351部分响应如下,以结束。

Given_Name: Jim Surname: Elliott Email: jim@apocalypse.com

姓名:Jim姓氏:Elliott电子邮件:jim@apocalypse.com

. 352 Beginning next query. Previous current through <time>.

. 352开始下一个查询。通过<时间>的上一电流。

stop

停止

251 All pending queries and responses discarded

251放弃所有挂起的查询和响应

Figure 4: User Changes Mind About Submitted Queries

图4:用户对提交的查询的想法改变

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
2.5 User Worries About Costs
2.5 用户对成本的担忧

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 constrain

在图5a中,兴高采烈的用户决定更加谨慎,并询问关于搜索名为“Susan Brown”的朋友的建议。用户回忆不起Susan工作的组织的名称,但记得州名称以“I”开头。建议响应列出了将要联系的数据存储库的位置。可以使用“源”属性将这些位置提供给SNQP服务器。每个位置后面都有一个空白和数据存储库的描述性短语。如图5b所示,SNQP服务器还提供了一个属性列表,可以约束

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 in Section 3.

这项质询更进一步。用户识别名称,并直接将查询提交到该位置。用户还可以在原始查询中添加“organization=”Northeast*”。第3节介绍了其他建议选项。

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

advice 214 Basic advice enabled. Query responses disabled.

建议214基本建议已启用。查询响应已禁用。

query 350 Send the query text, end with .

查询350发送查询文本,以结束。

select * from people where surname = "Brown" and given_name = "Susan" and state_or_province = "I*"; .

从姓氏为“Brown”、名字为“Susan”、州或省为“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
      .
        
      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

图5a:用户在执行查询之前询问成本

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

355 There are 8 attributes that may constrain the query, ended with . Organization Department Email State_or_Province Country Postal_Code Phone Source .

355有8个属性可以约束查询,以结束。组织部电子邮件国家或省国家邮政编码电话来源。

250 All queries processed. Current through 12-Jun-1996 22:35 EDT.

250所有查询都已处理。目前至1996年6月12日美国东部夏令时22时35分。

noadvice 214 Query responses returned. Advice disabled.

返回noadvice 214查询响应。建议无效。

query 350 Send the query text, end with .

查询350发送查询文本,以结束。

select * from people where surname = "Brown" and given_name = "Susan" and state_or_province = "I*" and source ="ccso://ns.neiu.bgu.edu:105/*"; .

从姓氏为“Brown”且名字为“Susan”且州或省为“I*”且来源为“的人中选择*”ccso://ns.neiu.bgu.edu:105/*"; .

351 Partial response follows, ended with .

351部分响应如下,以结束。

      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
        
      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.

. 250所有查询都已处理。目前至1996年6月12日美国东部夏令时22时35分。

Figure 5b: User Asks About Costs Before Executing Query

图5b:用户在执行查询之前询问成本

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
3. Commands
3. 命令

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.

SNQP命令不区分大小写,并以换行符<LF>或回车符<CR>终止。在下面的描述中,SNQP命令是大写的,SNQP回复是混合的。命令列表中的项用空格分隔。

Most SNQP replies are short. They have a rely code (see Section 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:

大多数SNQP回复都很简短。它们有一个依赖代码(见第4节),后跟一个延续字符和回复文本。如果连续字符为空,则答复完成。如果继续字符是短划线(“-”),则在下一行继续答复。回复中的文本可能会有所不同,但回复代码保持不变。下面给出了一个两行回复示例:

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

nnn-Message1 nnn Message2

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.

在某些情况下,命令或答复可能很长,因此这些命令/答复使用以“.”结尾的块结构,该结构用于SMTP中的邮件正文。块由构成命令/回复的文本行组成。块本身在一行上以句点终止。

SNQP generally ignores blank lines in both directions, except that blanks lines separate tuples within query response blocks.

SNQP通常忽略两个方向上的空行,除了空行在查询响应块中分隔元组之外。

Whenever a time is listed in a command or response, it has the format:

每当命令或响应中列出时间时,其格式为:

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

DD-MMM-YYYY HH:MM ZZZ

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.

其中DD是天,MMM是月的前三个字符,yyy是年,HH是24小时时钟上的小时,MM是分钟,ZZZ是常用的美国时区缩写。如果命令中未指定时区,则假定SNQP服务器的时区。

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 error

SNQP服务器在每个关系中都支持源属性。在查询中,源属性将SNQP服务器定向到特定的数据存储库。在查询响应中,source属性指示元组中信息的来源。在建议和错误中

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>
        
   <protocol>://<domain-name>:<port>/<tuple-id>
        
   <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.

<protocol>标识用于联系数据存储库的协议。可以通过<domain name>和<port>联系数据存储库。存在时,<tuple id>标识数据存储库中的特定条目。当数据存储库没有唯一标识其条目的属性时,它将丢失。虽然源字符串类似于URL,但万维网浏览器可能支持或不支持列出的协议。应该努力使协议标识符与公认的标准保持一致,但最终它们是特定于SNQP服务器的。

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:

当与SNQP服务器建立连接时,服务器返回以下问候语,<domain name>是服务器主机的域名,例如nomen.research.bell-labs.com,<service name>是服务的名称,例如Nomenclator:

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
      220 <domain-name> <snqp-service-name> Query Service ready
        
      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 in Section 4.

以下各节详细描述了每个命令。命令按字母顺序排列。每个命令都解释了典型的回复消息。有时可能出现异常错误情况,例如系统错误或因负载而拒绝连接。这些错误回复记录在第4节中。

3.1 Advice
3.1 劝告
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

ADVICE 214 Basic advice enabled. Query responses disabled. 514 Advice not available

建议214基本建议已启用。查询响应已禁用。514没有建议

      ADVICE <RELATION> <ATTRIBUTE>
      214 Advice enabled for "<attribute>" in "<relation>"
      553 Unknown relation
      554 Unknown attribute
      514 Advice not available for "<attribute>"
        
      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.

在所有情况下,通知都会禁用查询搜索。提交查询时,将返回有关查询成本或进一步约束查询的方法的建议。advice命令有两种形式。

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.

命令的第一种形式不包括属性名称。处理SQL查询时,SNQP服务器返回它将联系的数据存储库列表。它还返回可能进一步约束查询的属性列表。属性的特定值将决定是否进一步约束查询。如果服务器没有提供建议,则返回错误。

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.

第二种形式的通知包括关系的名称和该关系中属性的名称。SQL查询返回属性的可能值列表。该列表可能是完整的,也可能只包含已知的约束搜索的值。查询命令中将进一步描述此区别。如果属性上没有可用的建议,或者关系或属性未知,则返回错误。当某个属性上的建议不可用时,基本建议和其他属性上的建议可能可用。

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 of

advice命令对于向用户提供备选方案列表的应用程序非常有用。查询表单程序可以为属性启用建议、提交空查询以及获取属性的选项列表。该列表将指示它是属性所有值的完整列表,还是属性的约束列表

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
3.2 属性
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
      ATTRIBUTES <RELATION> <TIME>
      212-There are <n> attributes in relation "<RELATION>":
      212-<Attribute-name>
      212-<Attribute-name>
      212 Current through <TIME>
        
      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

553未知关系。电流通过<TIME>。不支持556 T边界

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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.

attributes命令列出为给定关系定义的属性。由于关系的特征可以在SNQP服务器之外定义并缓存在那里,因此用户可以要求比<TIME>更新的答案。SNQP服务器将尽力提供此信息。回复的第一行记录了属性的数量<n>。后续行列出属性名称。响应中的信息在返回的时间内是最新的,但在此时间之后可能已更改。对于SNQP服务器,接受改进t界限的请求并指示结果的t界限是可选的。

If the relation is unknown, an error is returned. If <TIME> is submitted when t-bounds are not supported, an error is returned.

如果关系未知,则返回错误。如果在不支持t边界时提交<TIME>,则返回错误。

3.3 Compare
3.3 比较
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
      COMPARE <COMPARISON-TYPE>
      213 Performing <COMPARISON-TYPE> comparisons
        
      COMPARE <COMPARISON-TYPE>
      213 Performing <COMPARISON-TYPE> comparisons
        

555 Unknown comparison type

555未知比较类型

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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 type

compare命令列出了为SQL查询执行的相等比较的类型。compare命令后面可以跟一个比较类型来设置类型。如果比较类型为

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.

未知或不受支持。“默认”和“CCSO”是定义的比较类型。默认的相等比较是精确的字符串匹配。查询字符串可能包括与响应字符串中的任何子字符串匹配的“*”通配符。CCSO相等比较匹配字符串中的字。属性的查询字符串中的每个单词必须以某种顺序出现在响应字符串中。单词由空格、逗号、冒号、分号、制表符和换行符分隔。通配符“*”匹配单词中的任何子字符串。字符串和单词比较都不区分大小写。

3.4 Help
3.4 帮助
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

HELP 210-The following commands are available: 210-<comma-separated-command-list> 210 <comma-separated-command-list>

帮助210以下命令可用:210-<逗号分隔命令列表>210<逗号分隔命令列表>

      HELP <COMMAND>
      210-<explanation of <COMMAND>>
      210 <explanation of <COMMAND>>
        
      HELP <COMMAND>
      210-<explanation of <COMMAND>>
      210 <explanation of <COMMAND>>
        

500 Sorry, no help available for "<COMMAND>"

500抱歉,“<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.

help命令返回可用命令的列表。如果不支持某些命令,例如advice,则不应列出这些命令。使用不受支持的命令仍应返回信息性错误消息。“帮助”后面可以跟一个命令名,以获取有关该命令的信息。如果没有命令的帮助或命令不存在,则返回回复500。

3.5 Imagui
3.5 伊玛圭
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

IMAGUI 215 GUI responses enabled

已启用IMAGUI 215 GUI响应

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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. See Section 4 for more information on GUI responses.

imagui命令通知服务器客户端是图形用户界面(GUI)。客户要求提供更全面、面向程序的错误和进度报告。它回答说GUI响应已启用。有关GUI响应的更多信息,请参见第4节。

3.6 Next
3.6 下一个
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

NEXT 353 Starting next query. Any pending responses discarded.

下一个353开始下一个查询。任何挂起的响应都将被丢弃。

450 No query in progress

450没有正在进行的查询

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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.

下一个命令停止当前SQL查询的处理。它在使用最后一个查询命令提交的块中启动下一个SQL查询。如果没有剩余,则查询命令完成。如果没有正在进行的查询,则返回错误。

3.7 Noadvice
3.7 无广告
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

NOADVICE 216 Query responses enabled. Advice disabled.

已启用NOADVICE 216查询响应。建议无效。

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

The noadvice command disables advice for query commands. It activates query searches, so queries will return responses. See the advice command for more information.

noadvice命令禁用查询命令的通知。它激活查询搜索,因此查询将返回响应。有关详细信息,请参阅advice命令。

3.8 Noimagui
3.8 诺伊马圭
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

NOIMAGUI 215 GUI responses disabled

NOIMAGUI 215 GUI响应已禁用

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

The noimagui command disables detailed messages to a graphical user interface program. It replies that GUI responses are disabled. See Section 4 for more information on GUI responses.

noimagui命令禁止向图形用户界面程序发送详细消息。它回答说GUI响应被禁用。有关GUI响应的更多信息,请参见第4节。

3.9 Query
3.9 查询

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 the

根据是否启用响应或建议,查询命令的行为有所不同。我们首先描述查询的提交和可能的即时错误响应。然后,我们描述

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 .

QUERY<TIME>350发送查询文本,以结尾。

450 Query already in progress 552 Query blocks are limited to one SQL query 556 T-bounds not supported

450已在进行的查询552个查询块被限制为一个SQL查询556 T边界不受支持

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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.

query命令向SNQP服务器提交一个SQL查询块。每个SQL查询必须以分号终止,整个块以包含单个句点的行终止。查询字符串常量中的特殊字符可以使用C语言约定包括在内,例如“\n”是换行符。

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.

由于在处理SQL查询时可以使用各种缓存信息,因此用户可能会要求比<TIME>更新的答案。SNQP服务器将尽力提供此信息。对于SNQP服务器,接受改善t边界的请求是可选的。

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.

如果查询命令已在处理中,则拒绝整个块。如果在一个块中向不支持多个查询块的服务器提交多个SQL查询,则返回错误。如果在不支持t边界时提交<TIME>,则返回错误。

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

351 Partial response follows ended with . 352 Beginning next query. Previous query current through <TIME>. 250 All queries processed. Current through <TIME>.

351部分响应以结束。352开始下一个查询。上一次查询当前通过<TIME>。250所有查询都已处理。电流通过<TIME>。

      653 <Communications err> with <location> <location description>
      660 <Error> from <location> <location description>
        
      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>
        
      700 <SQL query parsing error>
      750 <SQL query semantic error>
      761 <Requirements Error> for <location> <location description>
        
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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:

当响应从数据存储库到达时,将以块的形式返回。应答351开始响应块。响应块以句点终止。元组在块内作为属性名称和值对列表发送:

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
   <attribute-name>: <attribute-value>
                   : <attribute-value>
        
   <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.

只有多行属性的第一行返回<attribute name>。连续元组用空行分隔。SNQP服务器的选项会抑制具有空值或空值的属性。

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 in Section 4.

在响应块之间,可以报告错误回复。答复653、660和761就是此类错误的例子。Reply 653报告与由源位置标识并由关联字符串描述的数据存储库的通信错误。Reply 660报告数据存储库返回的错误。回复761报告了查询未能满足的数据存储库的已知需求。回复761反映了SNQP服务器将查询与数据存储库的已知特征进行的比较。例如,某些数据存储库拒绝在关系中不包含特定属性子集的查询。可以作出其他答复。最好根据第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.

当块中的SQL查询成功完成时,SNQP服务器发送应答352以指示下一查询正在启动。回复352报告上一个查询的t界限(如果可用)。即使先前的查询由于永久性错误而终止,也会发送回复352。一个例外是,next或stop命令生成的永久性错误将取代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.

当所有SQL查询完成时,SNQP服务器发送应答250以指示所有查询都已处理。包含一个没有响应的查询的查询块将只返回Reply 250。Reply 250报告块中最后一个SQL查询的t界限(如果可用)。即使块中的最后一个查询由于永久性错误而终止,也会发送回复250。一个例外是,stop命令生成的永久性错误将取代Reply 352。

Note that this command follows the convention that "intermediate" reply codes, as defined in Section 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.

请注意,此命令遵循第4节中定义的“中间”回复代码的约定,直到SQL查询完成为止。最终查询完成错误代码中止SQL查询的处理。这些错误的示例包括SQL查询中的解析错误(回复700)和语义错误(回复750)。如果可能,SNQP服务器将尝试继续执行下一个查询。查询块将以应答250或251(来自stop命令)终止,以指示将接受另一个查询。对于SNQP服务器,指示查询响应的t界限是可选的。

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
      354-The query will contact <n> data repositories, ended with .
      <location> <location-description>
        
      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>
        
      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>
        
      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>
        
      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>.

352开始下一个查询。上一次查询当前通过<TIME>。250所有查询都已处理。电流通过<TIME>。

      700 <SQL query parsing error>
      750 <SQL query semantic error>
        
      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.

在不同的块中返回不同类型的通知。关于要搜索的数据存储库的数量n的基本建议将随回复354一起返回。后续行列出要搜索的数据存储库的位置和位置描述。可以使用“源”属性将数据存储库位置提供给SNQP服务器。每个位置后面都有一个空白和数据存储库的描述性短语。

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.

返回有关可能约束查询的属性的基本建议,回复代码为355。回复的第一行包括属性的数量n。后续行列出了属性的名称。属性的特定值将决定查询是否受到进一步约束。

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.

特定属性的通知有两种形式。首先,建议可以在应答356中列出属性的n个可能值。清单是完整的;查询上下文中不存在该属性的其他值。其次,该建议可能会列出约束查询的已知属性的n个值。清单不完整;该属性的其他值可能存在于查询的上下文中。

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.

当针对块中的SQL查询的建议成功完成时,SNQP服务器发送应答352以指示下一查询正在启动。回复352报告上一个查询的通知的t界(如果可用)。即使先前的查询由于永久性错误而终止,也会发送回复352。一个例外是,next或stop命令生成的永久性错误将取代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.

当所有SQL查询完成时,SNQP服务器发送应答250以指示所有查询都已处理。Reply 250报告块中最后一个SQL查询的t界限(如果可用)。即使块中的最后一个查询由于永久性错误而终止,也会发送回复250。一个例外是,stop命令生成的永久性错误将取代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.

最终查询完成错误代码中止SQL查询的处理。这些错误的示例包括SQL查询中的解析错误和语义错误。如果可能,SNQP服务器将尝试继续执行下一个查询。查询块将以应答250或251(来自stop命令)终止,以指示将接受另一个查询。指示通知的t界对于SNQP服务器是可选的。

3.10 Relations
3.10 关系
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

RELATIONS <TIME> 211-There are <n> relations defined: 211-<Relation-name> 211-<Relation-name> 211 Current through <TIME>.

关系<TIME>211定义了<n>关系:211-<relationname>211-<relationname>211当前通过<TIME>。

556 T-bounds not supported

不支持556 T边界

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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 will

“关系”命令列出当前可用的关系名称。由于可以缓存关系的特征,用户可能会要求比<TIME>更新的答案。SNQP服务器将

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.

努力提供这些信息。回复的第一行记录了关系的数量<n>。后续行列出了关系名称。响应中的信息在返回的时间内是最新的,但在此时间之后可能已更改。对于SNQP服务器,接受改进t界限的请求并指示结果的t界限是可选的。

If <TIME> is submitted when t-bounds are not supported, an error is returned.

如果在不支持t边界时提交<TIME>,则返回错误。

3.11 Stop
3.11 停止
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

STOP 251 All pending queries and responses discarded

停止251放弃所有挂起的查询和响应

450 No query in progress

450没有正在进行的查询

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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.

stop命令结束当前SQL查询的处理,并取消上一个查询命令中可能跟随它的任何查询。如果没有正在进行的查询,则返回错误。

3.12 Quit
3.12 退出
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

QUIT 221 <domain-name> closing transmission channel

退出221<域名>关闭传输通道

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

The quit command ends the session. It closes the TCP connection after signing off with the domain name of the SNQP server.

quit命令结束会话。它在使用SNQP服务器的域名注销后关闭TCP连接。

4. Replies
4. 答复

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:

大多数SNQP回复都很简短。它们有一个依赖代码,后跟一个延续字符和回复文本。如果连续字符为空,则答复完成。如果继续字符是短划线(“-”),则在下一行继续答复。回复中的文本可能会有所不同,但回复代码保持不变。下面给出了一个两行回复示例:

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

nnn-Message1 nnn Message2

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.

在某些情况下,命令或答复可能很长,因此这些命令/答复使用以“.”结尾的块结构,该结构用于SMTP中的邮件正文。块由构成命令/回复的文本行组成。块本身在一行上以句点终止。

The theory of reply codes explained for SMTP in RFC-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.

这里使用RFC-821中解释的SMTP应答码理论。表2定义了应答代码结构。回复代码是三位数字,xyz。x数字表示命令状态。y数字表示生成回复的系统组件。z数字允许在来自同一组件的回复中进一步区分。

   ---------------------------------------------------------------------
      Code  Interpretation
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
      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

1yz肯定初步回复(不用于SNQP)2yz肯定完成回复3yz肯定中间回复4yz暂时否定完成回复5yz永久否定完成回复6yx暂时否定中间回复7yx永久否定中间回复

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

x0z语法或语义问题x1z信息性回复x2z与传输通道x3z相关格式化(位置编码)GUI x4z状态消息报告将由GUI x5z显示与查询解析器x6z相关与数据存储库x9z相关生成错误的组件未知或可疑

Table 2: Reply Code Structure

表2:回复代码结构

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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.

只有在通过imagui命令通知服务器正在与图形用户界面通信时,才使用与GUI相关的回复代码。对于x3z空间中的此类代码,数字“z”在其他代码中扮演数字“y”的角色。即,735是关于查询解析器的永久性否定中间回复。

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.

表3a和表3b列出了定义的常规(非GUI)回复代码。回复代码的文字信息可能会有所不同。代码按数字排序。

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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.

210以下命令可用:211定义了<n>关系:212在关系“<relation>”中有<n>属性:213执行<comparison type>类型相等比较214启用基本建议。查询响应已禁用。214为“<relation>”中的“<attribute>”启用建议215 GUI响应启用215 GUI响应禁用216查询响应启用。建议无效。

      220 <domain-name> <snqp-service-name> Query Service ready
      221 <domain-name> closing transmission channel
        
      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

250所有查询已处理250所有查询已处理。电流通过<time>。251放弃所有挂起的查询和响应

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>":

340搜索<n>数据存储库350发送查询文本,以结尾。351部分响应如下,以结束。352开始批次中的下一个查询352开始批次中的下一个查询。通过<时间>的上一电流。353开始下一个查询。任何挂起的响应都将被丢弃。354查询将联系<n>数据存储库,以结束。355有<n>属性可以约束查询,以结束。356属性“<attribute>”有<n>可能的值:357属性“<attribute>”有<n>约束值:

420 Too many connections in progress. Try later. 421 Error in communicating with <snqp-service-name> 450 No query in progress 451 Cancel ignored

420正在进行的连接太多。稍后再试。421与<snqp service name>450通信时出错无正在进行的查询451取消被忽略

Table 3a: Reply Codes

表3a:回复代码

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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

450查询已在进行490内部错误:无效的查询参考号491系统错误:<error number或message>492内部错误:客户端表空间不足499<snqp service name>正在关闭500抱歉,没有有关“<command>的帮助”501未知命令502此命令的参数太多502此命令的参数不足

514 Advice not available 514 Advice not available on <attribute>

514建议不可用514建议在<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

552查询块仅限于一个SQL查询553未知关系553未知关系。电流通过<TIME>。554未知属性555未知比较类型556 T-bounds不受支持557不会列出超过<n>的数据存储库557不会列出超过<n>的属性值557不会列出超过<n>的响应557太多数据存储库列出557太多属性值列出557太多响应列出557太多数据要搜索的存储库

      651 <Error message from query resolver>
      653 <Communications error> with <location> <location description>
      660 <Error> from <location> <location description>
        
      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>
        
      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>
        
      790 Internal error: <fatal error from SNQP server>
        

Table 3b: Reply Codes (Continued)

表3b:回复代码(续)

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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.

表4列出了定义的GUI回复代码。回复代码的文字信息可能会有所不同。代码按数字排序。下表对代码进行了说明。

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
      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>
        
      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

表4:GUI回复代码

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        

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.

在表4中,nnn是查询块中的行号,mmmm是行中的列。两个数字都以1开始计数。感叹号响应指示程序在第n行之后列出信息。周期响应指示程序在m列中断行n。连字符响应指示程序在m列标记行n。回复730和735指示GUI在第n行第m列指示解析或语义错误。响应340提供可立即显示在GUI的状态行中的状态信息。示例状态消息表示正在联系哪个数据存储库。

5. Protocol Requirements
5. 协议要求

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.

SQL查询通常比服务器支持或应用程序需要的功能更多。此外,特定服务器不需要支持大于一个SQL查询的查询块、关于查询成本的建议、某些类型的比较操作或t边界。SNQP定义了工作SNQP协议的最小功能子集。此子集之外的功能是可选的。不支持可选功能的服务器必须向用户返回表明这一点的回复。

Table 5 lists the minimum functionality for an SNQP server.

表5列出了SNQP服务器的最低功能。

   ---------------------------------------------------------------------
      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.
        
   ---------------------------------------------------------------------
      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)

表5:SNQP服务器最低要求(命令不支持t边界)

   ---------------------------------------------------------------------
        
   ---------------------------------------------------------------------
        
6. Security Considerations
6. 安全考虑

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.

SNQP客户端和服务器依赖于域名服务。它们受到这方面出现的所有安全问题的制约。此版本的SNQP协议没有定义用于保护与SNQP服务器通信的信息的过程。

7. References
7. 工具书类

[1] American National Standards Institute. "SQL," ANSI Standard X3.135-1989. 1989.

[1] 美国国家标准协会。“SQL”,ANSI标准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.

[2] H.加西亚·莫利纳,G.维德霍尔德。“分布式数据库中的只读事务”,数据库系统上的ACM事务7(2),第209-234页。1982年6月。

   [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>
        
   [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.

[4] J.莱文,T.梅森,D.布朗。“解析SQL”,lex yacc,第二版,O'Reilly and Associates,Inc.1992。

[5] Ordille, J., "The Internet Nomenclator Project", RFC 2258, January 1998.

[5] Ordille,J.,“互联网命名项目”,RFC2258,1998年1月。

   [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>
        
   [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>
        
   [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/>
        
   [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.

[9] Postel,J.,“简单邮件传输协议”,STD 10,RFC 821,1982年8月。

[10 Yeong, W., Howes, T., and S. Kille. "Lightweight Directory Access Protocol", RFC 1777, March 1995.

[10 Yeong,W.,Howes,T.,和S.Kille.“轻量级目录访问协议”,RFC 17771995年3月。

8. Authors' Addresses
8. 作者地址

Jim Elliott Epic Systems Corporation 5301 Tokay Boulevard Madison, WI 53711 USA

Jim Elliott Epic Systems Corporation美国威斯康星州麦迪逊托凯大道5301号,邮编53711

   EMail: jim@apocalypse.org
        
   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

Joann J.Ordille Bell实验室,朗讯科技计算科学研究中心,美国新泽西州默里山山路700号2C-301室,邮编:07974

   EMail: joann@bell-labs.com
        
   EMail: joann@bell-labs.com
        
9. Full Copyright Statement
9. 完整版权声明

Copyright (C) The Internet Society (1998). All Rights Reserved.

版权所有(C)互联网协会(1998年)。版权所有。

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.

本文件和其中包含的信息是按“原样”提供的,互联网协会和互联网工程任务组否认所有明示或暗示的保证,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。