summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc2259.txt
blob: b96bb9a11fdb4dc36a5f543456343fc6bbb8c47a (plain) (blame)
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L