pubid-nist 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +25 -0
  3. data/README.adoc +727 -0
  4. data/exe/pubid-nist +97 -0
  5. data/lib/pubid/nist/document.rb +286 -0
  6. data/lib/pubid/nist/document_parser.rb +34 -0
  7. data/lib/pubid/nist/document_transform.rb +21 -0
  8. data/lib/pubid/nist/edition.rb +26 -0
  9. data/lib/pubid/nist/errors.rb +5 -0
  10. data/lib/pubid/nist/nist_tech_pubs.rb +110 -0
  11. data/lib/pubid/nist/parsers/default.rb +107 -0
  12. data/lib/pubid/nist/parsers/fips_pub.rb +8 -0
  13. data/lib/pubid/nist/parsers/nbs_bh.rb +6 -0
  14. data/lib/pubid/nist/parsers/nbs_circ.rb +21 -0
  15. data/lib/pubid/nist/parsers/nbs_crpl.rb +17 -0
  16. data/lib/pubid/nist/parsers/nbs_csm.rb +11 -0
  17. data/lib/pubid/nist/parsers/nbs_fips.rb +14 -0
  18. data/lib/pubid/nist/parsers/nbs_hb.rb +31 -0
  19. data/lib/pubid/nist/parsers/nbs_ir.rb +29 -0
  20. data/lib/pubid/nist/parsers/nbs_lc.rb +21 -0
  21. data/lib/pubid/nist/parsers/nbs_mn.rb +6 -0
  22. data/lib/pubid/nist/parsers/nbs_mp.rb +9 -0
  23. data/lib/pubid/nist/parsers/nbs_rpt.rb +13 -0
  24. data/lib/pubid/nist/parsers/nbs_sp.rb +13 -0
  25. data/lib/pubid/nist/parsers/nbs_tn.rb +9 -0
  26. data/lib/pubid/nist/parsers/nist_gcr.rb +14 -0
  27. data/lib/pubid/nist/parsers/nist_hb.rb +8 -0
  28. data/lib/pubid/nist/parsers/nist_ir.rb +29 -0
  29. data/lib/pubid/nist/parsers/nist_ncstar.rb +7 -0
  30. data/lib/pubid/nist/parsers/nist_owmwp.rb +11 -0
  31. data/lib/pubid/nist/parsers/nist_sp.rb +53 -0
  32. data/lib/pubid/nist/parsers/nist_tn.rb +13 -0
  33. data/lib/pubid/nist/publisher.rb +43 -0
  34. data/lib/pubid/nist/serie.rb +27 -0
  35. data/lib/pubid/nist/stage.rb +28 -0
  36. data/lib/pubid/nist/version.rb +5 -0
  37. data/lib/pubid/nist.rb +33 -0
  38. data/lib/pubid-nist.rb +3 -0
  39. data/publishers.yaml +6 -0
  40. data/series.yaml +139 -0
  41. data/stages.yaml +5 -0
  42. data/update_codes.yaml +58 -0
  43. metadata +213 -0
data/README.adoc ADDED
@@ -0,0 +1,727 @@
1
+ = NIST publication identifiers ("NIST PubID")
2
+
3
+ == Purpose
4
+
5
+ NIST publications are numbered according to an identification scheme.
6
+
7
+ This gem implements a mechanism to parse and utilize NIST publication identifiers
8
+ provided in the https://github.com/usnistgov/NIST-Tech-Pubs[NIST-Tech-Pubs]
9
+ repository.
10
+
11
+ This gem is introduced in the Metanorma blog post
12
+ https://www.metanorma.org/blog/2022-01-09-pubid-nist/["Introducing NIST PubID, and the migration of publication identifiers"] on 2022-01-09.
13
+
14
+ For further details on the Metanorma work on the NIST PubID, refer to the
15
+ https://riboseinc.github.io/report-pubid-nist/["Ribose comments to Publication Identifier Syntax for NIST Technical Series Publications"]
16
+ document.
17
+
18
+ == Historic identifier patterns
19
+
20
+ There are at least three major "pattern series" of identifiers due to historical
21
+ reasons:
22
+
23
+ * NIST publications produced by the PubID scheme (202X-)
24
+ * NIST publications produced prior to the PubID scheme (1988-)
25
+ * NBS publications, produced under the National Bureau of Standards (the
26
+ previous name of NIST, 1901 to 1988)
27
+
28
+ This implementation attempts to support all three types of publication
29
+ identifier patterns.
30
+
31
+ == NIST PubID
32
+
33
+ NIST is currently developing a unified publication identifier scheme ("PubID")
34
+ for their technical series of publications, which allows machine-readable
35
+ identifier parts.
36
+
37
+ This scheme is described in "`Publication Identifier Syntax for NIST Technical
38
+ Series Publications`" authored by
39
+ https://www.nist.gov/people/james-foti[Jim Foti]
40
+ of the https://www.nist.gov/itl/csd[CSD, ITL], and
41
+ https://www.nist.gov/people/kathryn-miller[Kathryn Miller] and
42
+ https://www.nist.gov/people/kate-bucher[Kate Bucher] of the
43
+ https://www.nist.gov/associate-director-management-resources/staff-offices/information-services-office[ISO],
44
+ Management Resources.
45
+
46
+ NOTE: This scheme is still at proposal stage.
47
+
48
+ This gem implements the NIST PubID scheme and allows the conversion to and from
49
+ historic patterns.
50
+
51
+
52
+ == Use cases to support
53
+
54
+ PubID:
55
+
56
+ . Given a PubID (full-form title, abbreviated-form title, short-form title),
57
+ generate the corresponding machine-readable (MR) PubID format
58
+ . Given a MR PubID:
59
+ .. generate the full-form title
60
+ .. generate the abbreviated-form title
61
+ .. generate short-form title
62
+ .. generate the DOI (which is just DOI ID + MR)
63
+
64
+ Historic compatibility:
65
+
66
+ . Parse a historic publication identifier into its components:
67
+ .. output the original publication identifier (i.e. store the contents in the
68
+ object)
69
+ .. output a MR PubID
70
+
71
+ . Parse a historic DOI into a PubID:
72
+ .. output the original DOI (i.e. store the contents in the object)
73
+ .. output a MR PubID
74
+
75
+ == CLI conversion tool
76
+
77
+ We implemented an open-source conversion tool that extracts the required PubID data elements from existing NIST Tech Pubs metadata, such as the legacy identifier, DOI, edition and publication date information, to generate the new PubID.
78
+ `pubid-nist` provides a CLI (Command-Line Interface) and a Ruby library that can be used to create and manipulate PubID objects.
79
+
80
+ == Installation
81
+
82
+ The only prerequisite is to have Ruby installed. Please refer to the official https://www.ruby-lang.org/en/documentation/installation/[Ruby installation guide].
83
+
84
+ The pubid-nist tool can be installed as follows.
85
+
86
+ [source,sh]
87
+ ----
88
+ $ gem install pubid-nist
89
+ ----
90
+
91
+ Now you should be able to use the pubid-nist command.
92
+
93
+ === Usage
94
+
95
+ === Installation
96
+
97
+ The only prerequisite is to have Ruby installed. Please refer to the
98
+ https://www.ruby-lang.org/en/documentation/installation/[official Ruby installation guide].
99
+
100
+ The `pubid-nist` tool can be installed as follows.
101
+
102
+ [source,sh]
103
+ ----
104
+ $ gem install pubid-nist
105
+ ----
106
+
107
+ Now you should be able to use the `pubid-nist` command.
108
+
109
+ When called without arguments (or as `pubid-nist help`) the help screen will
110
+ be shown.
111
+
112
+ [source,sh]
113
+ ----
114
+ $ pubid-nist
115
+ Commands:
116
+ pubid-nist convert # Convert legacy NIST Tech Pubs ID to NIST PubID
117
+ pubid-nist help [COMMAND] # Describe available commands or one specific command
118
+ pubid-nist report # Create report for NIST Tech Pubs database (fetches from GitHub)
119
+ ----
120
+
121
+ === Converting a legacy identifier to NIST PubID
122
+
123
+ The command `pubid-nist` provides a `convert` subcommand that converts a legacy
124
+ Nist Tech Pubs identifier into the NIST PubID format.
125
+
126
+ Here's how it can be used:
127
+
128
+ [source,sh]
129
+ ----
130
+ $ pubid-nist help convert
131
+ Usage:
132
+ pubid-nist convert
133
+
134
+ Options:
135
+ -s, [--style=STYLE] # Convert to PubID style (short|long|mr|abbrev)
136
+ # Default: short
137
+ -f, [--format=FORMAT] # Render in format (JSON, string)
138
+ # Default: string
139
+
140
+ Convert legacy NIST Tech Pubs ID to NIST PubID
141
+ ----
142
+
143
+ [source,sh]
144
+ ----
145
+ $ pubid-nist convert "NIST SP 800-53a"
146
+ NIST SP 800-53A
147
+ $ pubid-nist convert "NIST SP 800-57p1r3"
148
+ NIST SP 800-57pt1r3
149
+ ----
150
+
151
+ The `convert` command also supports DOI conversion.
152
+
153
+ [source,sh]
154
+ ----
155
+ $ pubid-nist convert "NIST.SP.800-57p1r3"
156
+ NIST SP 800-57pt1r3
157
+ ----
158
+
159
+ In addition to outputting PubID short style, we can also output other styles
160
+ and formats of the resulting PubID.
161
+
162
+ [source,sh]
163
+ ----
164
+ $ pubid-nist convert -s mr "NIST SP 800-53a"
165
+ NIST.SP.800-53A
166
+ $ pubid-nist convert -s long -f json "NIST SP 800-53a" | jq
167
+ {
168
+ "styles": {
169
+ "short": "NIST SP 800-53A",
170
+ "abbrev": "Natl. Inst. Stand. Technol. Spec. Publ. 800-53A",
171
+ "long": "National Institute of Standards and Technology Special Publication 800-53A",
172
+ "mr": "NIST.SP.800-53A"
173
+ },
174
+ "publisher": "NIST",
175
+ "serie": "NIST SP",
176
+ "code": "800-53A"
177
+ }
178
+ ----
179
+
180
+ === Generating the bulk NIST Tech Pubs migration report
181
+
182
+ This is the nice part -- a single command that generates the full table of
183
+ converted PubIDs from the NIST Tech Pubs database, comprising of 19,333
184
+ entries.
185
+
186
+ The `report` command can be used as follows:
187
+
188
+ [source,sh]
189
+ ----
190
+ $ pubid-nist help report
191
+ Usage:
192
+ pubid-nist report
193
+
194
+ Options:
195
+ [--csv], [--no-csv] # Export to CSV format
196
+
197
+ Create report for NIST Tech Pubs database (fetches from GitHub)
198
+ ----
199
+
200
+ The purpose of this command is to aid the NIST PubID team in assessing the
201
+ impact and type of changes to be made in enacting this new scheme.
202
+
203
+ By default, the `report` command generates a table to indicate which migrated
204
+ identifiers have changed, focusing on changes of two styles:
205
+
206
+ * PubID in short style vs legacy publication ID
207
+ * PubID in machine-readable style vs legacy DOI
208
+
209
+ As seen in the following output, a `✅` or a `-` will be shown in the appropriate
210
+ column of change.
211
+
212
+ [source,sh]
213
+ ----
214
+ $ pubid-nist report
215
+ ID changed? | New PubID | Document ID | DOI changed? | New PubID-MR | DOI | Title
216
+ - | NBS BH 1 | NBS BH 1 | - | NBS.BH.1 | NBS.BH.1 | Recommended minimum requirements for small dwelling construction : report of Building Code Committee July 20, 1922
217
+ - | NBS BH 10 | NBS BH 10 | - | NBS.BH.10 | NBS.BH.10 | A city planning primer by the advisory committee on zoning appointed by Secretary Hoover
218
+ ...
219
+ ✅ | NBS BH 3A | NBS BH 3a | ✅ | NBS.BH.3A | NBS.BH.3a | A zoning primer by the advisory committee on zoning appointed by Secretary Hoover (Revised)
220
+ - | NBS BH 4 | NBS BH 4 | - | NBS.BH.4 | NBS.BH.4 | How to own your home : a handbook for prospective home owners
221
+ ✅ | NBS BH 5A | NBS BH 5a | ✅ | NBS.BH.5A | NBS.BH.5a | A standard state zoning enabling act under which municipalities may adopt zoning regulations by the advisory committee on zoning appointed by Secretary Hoover (revised edition 1926)
222
+ ...
223
+ ✅ | NBS RPT 2751 | NBS report ; 2751 | - | NBS.RPT.2751 | NBS.RPT.2751 | Stochastic search for the maximum of a function
224
+ ...
225
+ ✅ | NBS RPT 2831 | NBS report ; 2831 | - | NBS.RPT.2831 | NBS.RPT.2831 | Error bounds for eigenvalues of symmetric integral equations
226
+ ----
227
+
228
+
229
+ Better yet, the `report` command supports CSV output. The "changes" fields
230
+ will display `true` or `false` accordingly.
231
+
232
+ [source,sh]
233
+ ----
234
+ $ pubid-nist report --csv
235
+ ID changed?,New PubID,Document ID,DOI changed?,New PubID-MR,DOI,Title
236
+ false,NBS BH 1,NBS BH 1,false,NBS.BH.1,NBS.BH.1,"Recommended minimum requirements for small dwelling construction : report of Building Code Committee July 20, 1922"
237
+ false,NBS BH 10,NBS BH 10,false,NBS.BH.10,NBS.BH.10,A city planning primer by the advisory committee on zoning appointed by Secretary Hoover
238
+ false,NBS BH 11,NBS BH 11,false,NBS.BH.11,NBS.BH.11,A standard city planning enabling act by the advisory committee on city planning and zoning appointed by secretary Hoover
239
+ ...
240
+ true,NIST SP 260-214,NIST SP 260-14,false,NIST.SP.260-214,NIST.SP.260-214,"Analysis of Seafood Reference Materials: RM 8256, RM 8257, RM 8258 and RM 8259, Wild-Caught Coho Salmon (RM 8256), Aquacultured Coho Salmon (RM 8257), Wild-Caught Shrimp (RM 8258), Aquacultured Shrimp (RM 8259)"
241
+ false,NIST SP 260-14,NIST SP 260-14,false,NIST.SP.260-14,NIST.SP.260-14,"Analysis of Seafood Reference Materials: RM 8256, RM 8257, RM 8258 and RM 8259, Wild-Caught Coho Salmon (RM 8256), Aquacultured Coho Salmon (RM 8257), Wild-Caught Shrimp (RM 8258), Aquacultured Shrimp (RM 8259)"
242
+ true,NIST IR 8379,NISTIR 8379,false,NIST.IR.8379,NIST.IR.8379,Summary Report for the Virtual Workshop Addressing Public Comment on NIST Cybersecurity for IoT Guidance
243
+ ----
244
+
245
+
246
+ The best part is that this CSV will work properly with spreadsheet editors like
247
+ Excel and Pages.
248
+ All you need is to export the CSV values to a CSV file, and open it in your
249
+ favorite program.
250
+
251
+ [source,sh]
252
+ ----
253
+ $ pubid-nist report --csv > myreport.csv
254
+ ----
255
+
256
+ It is easy to filter these columns in Microsoft Excel with the following steps:
257
+
258
+ . Open the CSV file in Excel
259
+ . Convert the header row into a filter row:
260
+ first highlight the header row, then click on "Data > Filter"
261
+ . Filter the columns accordingly
262
+
263
+ .PubID conversion report, showing mapping between legacy publication identifiers and NIST PubIDs
264
+ image::/assets/blog/2022-01-09_2.png[PubID conversion report, showing mapping between legacy publication identifiers and NIST PubIDs]
265
+
266
+ Now it's easy to screen through the anomalies and surface the data issues!
267
+
268
+
269
+ == Elements of the PubID
270
+
271
+ === Publisher
272
+
273
+ |===
274
+ | Name | Abbrev | Short
275
+
276
+ | National Institute of Standards and Technology
277
+ | Natl. Inst. Stand. Technol.
278
+ | NIST
279
+
280
+ | National Bureau of Standards
281
+ | Natl. Bur. Stand.
282
+ | NBS
283
+
284
+ |===
285
+
286
+ === Series
287
+
288
+ |===
289
+ | Publisher | Prefix | Name | Abbrev | MR (with Publisher) | Example
290
+
291
+ | NIST | NIST AMS | Advanced Manufacturing Standard | Adv. Man. Ser | `NIST.AMS`
292
+ | https://nvlpubs.nist.gov/nistpubs/ams/NIST.AMS.200-2.pdf[NIST AMS 200-2]
293
+
294
+ | NIST | NIST BSS | Building Science Series | Bldg. Sci. Ser. | `NIST.BSS`
295
+ | https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=901127[NIST BSS 181]
296
+
297
+ | NBS | NBS BSS | Building Science Series | Bldg. Sci. Ser. | `NBS.BSS`
298
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/BSS/nbsbuildingscience94.pdf[NBS BSS 94]
299
+
300
+ | NBS | NBS BMS | Building Material Structures Report | N/A | `NBS.BMS`
301
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/BMS/nbsbuildingmaterialsstructures140e2.pdf[NBS BMS 140 Ed. 2]
302
+
303
+ | NBS | NBS BRPD-CRPL-D | Basic Radio Propagation Predictions Series | N/A | `NBS.BRPD-CRPL-D`
304
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/brpd-crpl-d/brpd-crpl-d209.pdf[NBS BRPD-CRPL-D 209]
305
+
306
+ | NBS | NBS BH | Building and Housing Reports | N/A | `NBS.BH`
307
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/BH/nbsbuildinghousing18.pdf[NBS BH 18]
308
+
309
+ | NBS | NBS CRPL | Central Radio Propagation Laboratory Reports | N/A | `NBS.CRPL`
310
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/crpl/crpl-6-3.pdf[NBS CRPL 6-3]
311
+
312
+ | NBS | NBS CRPL-F-A | CRPL Ionospheric Data | N/A | `NBS.CRPL-F-A`
313
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/crpl-f-a/crpl-f-a245.pdf[NBS CRPL-F-A 245]
314
+
315
+ | NBS | NBS CRPL-F-B | CRPL Solar-Geophysical Data | N/A | `NBS CRPL-F-B245`
316
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/crpl-f-b/crpl-f-b245.pdf[NBS CRPL-F-B245]
317
+
318
+ | NBS | NBS IP | CRPL Ionospheric Predictions | N/A | `NBS.IP`
319
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/ip/nbsip25.pdf[NBS IP 25]
320
+
321
+ | NBS | NBS CIRC | Circulars | N/A | `NBS.CIRC`
322
+ | http://nvlpubs.nist.gov/nistpubs/Legacy/circ/nbscircular460sup1962.pdf[NBS CIRC 460sup1962]
323
+
324
+ | NBS | NBS CIS | Consumer Information Series | N/A | `NBS.CIS`
325
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/CIS/nbscis10.pdf[NBS CIS 10]
326
+
327
+ | NBS | NBS CS | Commercial Standards | N/A | `NBS.CS`
328
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/CS/cs113-51.pdf[NBS CS 113-51]
329
+
330
+ | NBS | NBS CSM | Commercial Standards Monthly | N/A | `NBS.CSM`
331
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/CSM/nbscsmv9n10.pdf[NBS CSM v9n10]
332
+
333
+ | NIST | FIPS PUB | Federal Information Processing Standards Publication | Federal Inf. Process. Stds. | `NIST.FIPS`
334
+ | https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf[FIPS PUB 202]
335
+
336
+ | NIST | NISTGCR | Grant/Contract Reports | N/A | `NIST.GCR`
337
+ | https://nvlpubs.nist.gov/nistpubs/gcr/2017/NIST.GCR.17-917-45.pdf[NIST GCR 17-917-45]
338
+
339
+ | NBS | NBS GCR | Grant/Contract Reports | N/A | `NBS.GCR`
340
+ | https://www.nist.gov/system/files/documents/2017/05/09/NISTGCR_77_82.pdf[NBS GCR 77-82]
341
+
342
+ | NIST | NIST HB | Handbook | Handb. | `NIST.HB`
343
+ | https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=932523[NIST Handbook 150-872]
344
+
345
+ | NBS | NBS HB | Handbook | Handb. | `NBS.HB`
346
+ | https://www.nist.gov/system/files/documents/pml/wmd/NBS-Handbook-1371.pdf[NBS Handbook 137]
347
+
348
+ | NBS | NBS HR | Hydraulic Research in the United States | N/A | `NBS.HR`
349
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/HR/hr14A.pdf[NBS HR 14A]
350
+
351
+ | NBS | NBS IRPL | Interservice Radio Propagation Laboratory | N/A | `NBS.IRPL`
352
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/irpl/irpl-r27.pdf[NBS IRPL 27]
353
+
354
+ | NIST | ITL Bulletin | ITL Bulletin | N/A | `NIST.ITLB`
355
+ | https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=930751[NIST ITL Bulletin August 2020]
356
+
357
+ | NIST | NIST LC | Letter Circular | N/A | `NIST.LC`
358
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/LC/nistlettercircular1136.pdf[NIST LC 1136]
359
+
360
+ | NBS | NBS LC | Letter Circular | N/A | `NBS.LC`
361
+ | https://www.govinfo.gov/content/pkg/GOVPUB-C13-505e153915bb567dd587b7efd26b000a/pdf/GOVPUB-C13-505e153915bb567dd587b7efd26b000a.pdf[NBS LC 1128]
362
+
363
+ | NIST | NIST MN | Monograph | Monogr. | `NIST.MN`
364
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/MONO/nistmonograph175.pdf[NIST Monograph 175]
365
+
366
+ | NBS | NBS MN | Monograph | Monogr. | `NBS.MN`
367
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/MONO/nbsmonograph125supp1.pdf[NIST Monograph 125],
368
+ https://nvlpubs.nist.gov/nistpubs/Legacy/MONO/nbsmonograph125.pdf[NIST Monograph 125, Supp. 1]
369
+
370
+ | NBS | NBS MP | Miscellaneous Publications | N/A | `NBS.MP`
371
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/MP/nbsmiscellaneouspub260e1968.pdf[NBS MP 260e1968]
372
+
373
+ | NIST | NIST NCSTAR | National Construction Safety Team Report | Natl. Constr. Tm. Act Rpt. | `NIST.NCSTAR`
374
+ | https://www.nist.gov/publications/design-and-construction-structural-systems-federal-building-and-fire-safety[NIST NCSTAR 1-1A]
375
+
376
+ | NIST | NIST NSRDS | National Standard Reference Data Series | Natl. Stand. Ret. Data Ser. | `NIST.NSRDS`
377
+ | https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=931745[NIST NSRDS 100-2021]
378
+
379
+ | NBS | NSRDS-NBS | National Standard Reference Data Series | Natl. Stand. Ret. Data Ser. | `NBS.NSRDS`
380
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/NSRDS/nbsnsrds1.pdf[NSRDS-NBS 1]
381
+
382
+ | NIST | NIST IR | Interagency or Internal Report | N/A | `NIST.IR`
383
+ | https://nvlpubs.nist.gov/nistpubs/ir/2021/NIST.IR.8347.pdf[NISTIR 8347]
384
+
385
+ | NBS | NBS IR | Interagency or Internal Report | N/A | `NBS.IR`
386
+ | https://www.nist.gov/system/files/documents/2017/04/28/nbsir-79-1776.pdf[NBSIR 79-1776]
387
+
388
+ | NIST | NIST OWMWP | Office of Weights and Measures White Papers | N/A | `NIST.OWMWP`
389
+ | https://nvlpubs.nist.gov/nistpubs/OWMWP/NIST.OWMWP.06-13-2018.pdf[NIST OWMWP 06-13-2018]
390
+
391
+ | NBS | NBS PC | Photographic Circulars | N/A | `NBS.PC`
392
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/PC/nbsphotographiccircular.pdf[NBS RPT 10394]
393
+
394
+ | NBS | NBS RPT | Reports | N/A | `NBS.RPT`
395
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/RPT/nbsreport10394.pdf[NBS PC 1]
396
+
397
+ | NIST | NIST PS | Voluntary Product Standards | Prod. Stand. | `NIST.PS`
398
+ | https://www.nist.gov/system/files/documents/2019/12/11/PS%2020-20%20final%20WERB%20approved.pdf[NIST PS 20-20]
399
+
400
+ | NBS | NBS SIBS | Special Interior Ballistics Studies | N/A | `NBS.SIBS`
401
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/SIBS/nbssibs.pdf[NBS SIBS 1]
402
+
403
+ | NBS | NBS PS | Voluntary Product Standards | Prod. Stand. | `NBS.PS`
404
+ | http://storage.cloversites.com/resinsystemsinc/documents/1569%20PDF.pdf[NBS PS 15-69]
405
+
406
+ | NIST | NIST SP | Special Publication | Spec. Publ. | `NIST.SP`
407
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-115.pdf[NIST SP 800-115]
408
+
409
+ | NBS | NBS SP | Special Publication | Spec. Publ. | `NBS.SP`
410
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nbsspecialpublication500-137.pdf[NBS SP 500-137]
411
+
412
+ | NIST | NIST TN | Technical Note | Tech. Note | `NIST.TN`
413
+ | https://nvlpubs.nist.gov/nistpubs/TechnicalNotes/NIST.TN.2156.pdf[NIST TN 2156]
414
+
415
+ | NBS | NBS TN | Technical Note | Tech. Note | `NBS.TN`
416
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/TN/nbstechnicalnote876.pdf[NBS TN 876]
417
+
418
+ | NBS | NBS TIBM | Technical Information on Building Materials | N/A | `NBS.TIBM`
419
+ | https://nvlpubs.nist.gov/nistpubs/Legacy/TIBM/nbstibm61.pdf[NBS TIBM 61]
420
+
421
+ | NIST | NIST TTB | Technology Transfer Brief | N/A | `NIST.TTB`
422
+ | https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=929334[NIST TTB 2]
423
+
424
+ | NIST | NIST DCI | Data Collection Instruments | Data Collect. Instr. | `NIST.DCI`
425
+ | https://nvlpubs.nist.gov/nistpubs/dci/NIST.DCI.002.pdf[NIST DCI 002]
426
+
427
+ | NIST | NIST EAB | Economic Analysis Brief | N/A | `NIST.EAB`
428
+ | https://nvlpubs.nist.gov/nistpubs/eab/NIST.EAB.9.pdf[NIST EAB 3]
429
+
430
+ | NIST | NIST Other | Other | Other | `NIST.O`
431
+ | https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=925900[Report to the President]
432
+
433
+ | NIST | CSRC White Paper | Cybersecurity Resource Center White Paper | CSWP | `NIST.CSWP`
434
+ | https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=932330[NIST.CSWP.04282021]
435
+
436
+ | NIST | CSRC Book | Cybersecurity Resource Center Book | CSRC Book | `NIST.CSB`
437
+ | https://csrc.nist.gov/CSRC/media/Publications/book/1974/executive-guide-to-computer-security/documents/executive-guide-to-computer-security--brochure.pdf[Executive Guide to Computer Security],
438
+ https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=917850[Metrics to Security]
439
+
440
+ | NIST | CSRC Use Case | Cybersecurity Resource Center Use Case | CSRC Use Case | `NIST.CSUC`
441
+ | https://nccoe.nist.gov/sites/default/files/library/project-descriptions/hit-infusion-pump-project-description-final.pdf[Wireless Medical Infusion Pumps: Medical Device Security]
442
+
443
+ | NIST | CSRC Building Block | Cybersecurity Resource Center Building Block | CSRC Building Block | `NIST.CSBB`
444
+ | https://nccoe.nist.gov/sites/default/files/library/project-descriptions/dns-secure-email-project-description-final.pdf[Domain Name System-Based Security for Electronic Mail]
445
+
446
+ | NIST | JPCRD | Journal of Physical and Chemical Reference Data | J. Phys. & Chem. Ref. Data | `JPCRD`
447
+ | (excluded from PubID scheme)
448
+
449
+ | NIST | JRES | Journal of Research of NIST | J. Res. Natl. Inst. Stan. | `NIST.JRES`
450
+ | (excluded from PubID scheme)
451
+
452
+ |===
453
+
454
+ === Stage
455
+
456
+ The stage code element only applies to non-final publications.
457
+
458
+ In most series, documents are only released as final publications, and therefore
459
+ their PubIDs will not contain a stage code.
460
+
461
+ Only some series support stage codes, e.g. SP 800 and SP 1800.
462
+
463
+ |===
464
+ | Name | Value
465
+
466
+ | Initial Public Draft | IPD
467
+ | Second Public Draft (to the Nth Public Draft) | 2PD (... nPD)
468
+ | Final Public Draft | FPD
469
+ | Work-in-Progress Draft | WD
470
+ | Preliminary Draft | PreD
471
+
472
+ |===
473
+
474
+ === Report number
475
+
476
+ The contents and pattern of the report number are dependent on the series.
477
+
478
+ Possible values:
479
+
480
+ * {sequence number}
481
+ * {subseries}-{sequence number}
482
+ * {sequence number}-{volume}
483
+ * {sequence number}-{edition}
484
+ * {subseries}-{sequence number}-{edition}
485
+ * etc.
486
+
487
+ A "Part" can also be indicated by an appended alphabetic character to the end.
488
+
489
+ === Part
490
+
491
+ |===
492
+ | Name | Abbrev and Short | MR
493
+
494
+ | Part | Pt. | `pt`
495
+ | Volume | Vol. | `v`
496
+ | Section | Sec. | `sec`
497
+ | Supplement | Suppl. | `sup`
498
+ | Index | Index | `indx`
499
+ | Addendum | Add. | `add` (TBC with NIST)
500
+ | Insert | Ins. | `ins` (TBC with NIST)
501
+ | Errata | Err. | `err` (TBC with NIST)
502
+ | Appendix | App. | `app` (TBC with NIST)
503
+
504
+ |===
505
+
506
+ === Edition
507
+
508
+ |===
509
+ | Name | Abbrev and Short | MR
510
+
511
+ | Revision | Rev. | `r`
512
+ | Edition | Ed. | `e`
513
+ | Version | Ver. | `ver`
514
+
515
+ |===
516
+
517
+ === Translation
518
+
519
+ An ISO 639-2 code that represents a translated document from English.
520
+
521
+ If a document is translated from English, suffix the document with a 3-letter
522
+ ISO 639-2 code within parentheses.
523
+
524
+ Raw values seen in legacy DOIs include:
525
+
526
+ |===
527
+ | Name | Correct value | MR | Legacy values seen in DOI
528
+
529
+ | Spanish | (ESP) | `esp` | `es`
530
+ | Vietnamese | (VIE) | `vie` | `viet`
531
+ | Portuguese | (POR) | `por` | `port` `pt`
532
+ | Chinese | (ZHO) | `zho` | `chi`
533
+ | Indonesian | (IND) | `ind` | `id`
534
+
535
+ |===
536
+
537
+ === Update
538
+
539
+ ==== General
540
+
541
+ When a document is updated with an errata, the original edition may be reissued
542
+ to include the errata.
543
+
544
+ These documents will display the text "includes updates as of...".
545
+
546
+ In this case the document identifier will include the element "Update".
547
+
548
+ |===
549
+ | Name | Abbrev and Short | MR
550
+
551
+ | Update | Upd. | `u`
552
+
553
+ |===
554
+
555
+ NOTE: This is similar to the ISO/IEC "Amd." and "Cor." except that the NIST
556
+ "Upd." is applied to the original document and (typically) does not exist
557
+ separately.
558
+
559
+ ==== Update number
560
+
561
+ A sequential integer numbering of the update counting from the original document.
562
+
563
+ The first update is numbered 1, and so forth.
564
+
565
+ ==== Update year
566
+
567
+ The year last updated, shown as a suffix to the identifier.
568
+
569
+ * "{identifier}:{update-year}"
570
+
571
+
572
+ == PubID patterns
573
+
574
+ === Presentation
575
+
576
+ Generally in this order:
577
+
578
+ * No update: `{series} {stage} {report number}{part}{edition}({translation})`
579
+ * With update: `{series} {stage} {report number}{part}{edition}({translation})/{update} {update number}:{update year}`
580
+
581
+
582
+ === Full PubID
583
+
584
+ Samples:
585
+
586
+ * National Institute of Standards and Technology Federal Information Processing Standards Publication 199
587
+ * National Institute of Standards and Technology Special Publication 800-27, Revision A
588
+ * National Institute of Standards and Technology Special Publication 800-39 (Second Public Draft)
589
+
590
+ (originally described in https://github.com/metanorma/metanorma-nist/issues/98)
591
+
592
+ === Abbreviated PubID
593
+
594
+ This form is used in the Authority section.
595
+
596
+ ----
597
+ Natl. Inst. Stand. Technol. {abbrev(series)} {reportnumber} {part | abbrev(volume)}, {abbrev(revision)}
598
+ ----
599
+
600
+ * `abbrev(series)` represent the abbreviation of the Series title
601
+ * (Note: there is no `{update-date}`)
602
+
603
+ Examples:
604
+
605
+ * "Natl. Inst. Stand. Technol. Spec. Publ. 800-78-4"
606
+ * "Natl. Inst. Stand. Technol. Spec. Publ. 800-116"
607
+ * "Natl. Inst. Stand. Technol. Spec. Publ. 800-57 Part 1, Revision 4"
608
+
609
+
610
+ (originally from https://github.com/metanorma/metanorma-nist/issues/88)
611
+
612
+ === Short PubID
613
+
614
+ The "short form" is used to cite the documents within text.
615
+
616
+ It is used in these situations:
617
+
618
+ 1. Locality references. "In Section 3.2 of SP 800-187…" (the "SP 800-187" is a link).
619
+ +
620
+ NOTE: NIST pubs are composed of "Sections" not "Clauses"
621
+
622
+ 2. A generic document reference. "SP 800-53 describes…". This form does not specify a revision or update date.
623
+
624
+ 3. "All parts". "The SP 800-57 subseries describes key management…".
625
+
626
+ ("NISTIR 6885 2003 Edition (February 2003)" is a poor indicator.)
627
+
628
+ The correct rule should be:
629
+
630
+ ----
631
+ {abbrev(series)} {reportnumber} {abbrev(volume)} {abbrev(revision)} {edition, optional}
632
+ ----
633
+
634
+ NOTE: For FIPS, `reportnumber` is the full FIPS number, including revision, e.g.,
635
+ `140-2`.
636
+
637
+ (originally from https://github.com/metanorma/metanorma-nist/issues/88)
638
+
639
+ Short form date:
640
+
641
+ * `Month YYYY`
642
+
643
+ Examples:
644
+
645
+ * NIST SP 800-53r4 (20152201) supersedes NIST SP 800-53r4 (20140115)
646
+ * NIST SP 800 63A (December 2017) supersedes NIST SP 800-63A
647
+ * NIST SP 800 57 Part 1 Revision 4 supersedes NIST SP 800-57 Part 1 Revision 3 ("Rev." is also accepted, and converted to "Revision")
648
+ * NIST SP 800 160 Volume 1 supersedes NIST SP 800-160 (20180103) ("Vol." is also accepted, and converted to "Volume")
649
+ * Undated form "NIST SP 800 53r4"
650
+
651
+ Strip Revision and Date from title, only if the Revision and Date are unique for
652
+ each document number. These are identified as "Rev. ...", "Revision ...." and "
653
+ (Month YYYY)", whichever comes first.
654
+
655
+
656
+ === Machine-readable PubID
657
+
658
+ Machine-readable syntax:
659
+
660
+ ----
661
+ {publisher}.{series}.[{stage}.]{reportnumber}.{part}.{revision}.[{lang}.]{update-date}
662
+ ----
663
+
664
+ ----
665
+ {publisher}.{series}.[{stage}.]{reportnumber}.{part}.{revision}.[{lang}.][{update}]{update-date}
666
+ ----
667
+
668
+ Generally, this rule should be able to uniquely identify an edition of a document.
669
+
670
+ * `{part}`
671
+ ** Part
672
+ *** A "Part 1" document is encoded as "pt1";
673
+ *** When a letter part is indicated, e.g. "800-63A", we should keep it as part of
674
+ the reportnumber (i.e., don't indicate "pt").
675
+
676
+ ** Volumes
677
+ *** "Volume 1" is encoded as "v1";
678
+
679
+ * `{revision}`
680
+ ** "Revision 1" is encoded as "r1"
681
+
682
+ ** If a superseding edition is a full revision, it will get the next Rev. #.
683
+ ** If a superseding edition is just an errata update, we use the update date
684
+ from the title page ("includes updates as of ...") to uniquely identify this
685
+ edition. Preferably in the `-yyyymmdd` format.
686
+
687
+ * `{update}`
688
+ ** "Update 1" is encoded as "upd1"
689
+
690
+ Some examples:
691
+
692
+ * `NIST.SP.800-53r4-20152201` supersedes `NIST.SP.800-53r4-20140115`
693
+ * `NIST.SP.800-63A-20171201` supersedes `NIST.SP.800-63A`
694
+ * `NIST.SP.800-57pt1r4` supersedes `NIST.SP.800-57pt1r3`
695
+ * `NIST.SP.800-160v1` supersedes `NIST.SP.800-160-20180103`
696
+ * `NIST.IR.8204.upd1-2019` supersedes `NIST.IR.8204`
697
+ * The undated form is `NIST.SP.800-53r4`
698
+
699
+ (originally from https://github.com/metanorma/metanorma-nist/issues/88)
700
+
701
+
702
+ == Examples of PubID
703
+
704
+ * SP 800 series
705
+ ** NIST SP 800-40r3
706
+ ** NIST SP 800-45ver2
707
+ ** NIST SP 800-53r4/Upd 3:2015
708
+ ** NIST SP IPD 800-53r5
709
+ ** NIST SP 800-53Ar4/Upd 1:2014
710
+ ** NIST SP 800-60v1r1
711
+ ** NIST SP 800-57pt1r4
712
+ ** NIST SP 800-73-4/Upd 1:2016
713
+ ** NIST SP 2PD 800-188
714
+
715
+ * SP 1800 series
716
+ ** NIST SP 2PD 1800-13B
717
+ ** NIST SP PreD 1800-19B
718
+
719
+ * NIST IR series
720
+ ** NIST IR 8011v3
721
+ ** NIST IR 8204/Upd 1:2019
722
+ ** NIST IR 8115(spa)
723
+
724
+ * Other NIST Series
725
+ ** NIST HB 130e2019
726
+ ** NIST SP 1041r1/Upd 1:2012
727
+ ** NIST NCSTAR 1-1Cv1