1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683
|
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)
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 repositories
Elliott & 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, 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.
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 in Section 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 1998
Section 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 default
Elliott & 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, and
Elliott & 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 in Section
3.
---------------------------------------------------------------------
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 first
Elliott & 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 constrain
Elliott & 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 in Section 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 1998
3. 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 (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:
---------------------------------------------------------------------
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 error
Elliott & 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 in Section 4.
Elliott & Ordille Informational [Page 13]
RFC 2259 SNQP January 1998
3.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 of
Elliott & 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 type
Elliott & 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. See Section 4 for more information on GUI
responses.
Elliott & Ordille Informational [Page 16]
RFC 2259 SNQP January 1998
3.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. See
Section 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 the
Elliott & 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 in Section 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 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.
---------------------------------------------------------------------
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 will
Elliott & 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 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.
---------------------------------------------------------------------
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 1998
7. 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 1998
8. 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.com
Elliott & Ordille Informational [Page 29]
RFC 2259 SNQP January 1998
9. 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]
|