blacklight 3.0pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. data/.gitignore +17 -0
  2. data/.gitmodules +6 -0
  3. data/.yardopts +4 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE +14 -0
  6. data/README.rdoc +168 -0
  7. data/Rakefile +9 -0
  8. data/app/controllers/bookmarks_controller.rb +98 -0
  9. data/app/controllers/feedback_controller.rb +37 -0
  10. data/app/controllers/folder_controller.rb +49 -0
  11. data/app/controllers/saved_searches_controller.rb +45 -0
  12. data/app/controllers/search_history_controller.rb +25 -0
  13. data/app/helpers/blacklight_helper.rb +606 -0
  14. data/app/helpers/bookmarks_helper.rb +3 -0
  15. data/app/helpers/catalog_helper.rb +65 -0
  16. data/app/helpers/feedback_helper.rb +2 -0
  17. data/app/helpers/hash_as_hidden_fields.rb +57 -0
  18. data/app/helpers/render_constraints_helper.rb +120 -0
  19. data/app/helpers/saved_searches_helper.rb +2 -0
  20. data/app/helpers/search_history_helper.rb +2 -0
  21. data/app/models/bookmark.rb +6 -0
  22. data/app/models/record_mailer.rb +43 -0
  23. data/app/models/search.rb +19 -0
  24. data/app/views/_flash_msg.html.erb +6 -0
  25. data/app/views/_user_util_links.html.erb +13 -0
  26. data/app/views/bookmarks/index.html.erb +33 -0
  27. data/app/views/catalog/_bookmark_control.html.erb +25 -0
  28. data/app/views/catalog/_bookmark_form.html.erb +8 -0
  29. data/app/views/catalog/_citation.html.erb +15 -0
  30. data/app/views/catalog/_constraints.html.erb +7 -0
  31. data/app/views/catalog/_constraints_element.html.erb +33 -0
  32. data/app/views/catalog/_did_you_mean.html.erb +10 -0
  33. data/app/views/catalog/_document_list.html.erb +30 -0
  34. data/app/views/catalog/_email_form.html.erb +11 -0
  35. data/app/views/catalog/_facet_limit.html.erb +33 -0
  36. data/app/views/catalog/_facet_pagination.html.erb +28 -0
  37. data/app/views/catalog/_facets.html.erb +9 -0
  38. data/app/views/catalog/_folder_control.html.erb +12 -0
  39. data/app/views/catalog/_home.html.erb +6 -0
  40. data/app/views/catalog/_home_text.html.erb +6 -0
  41. data/app/views/catalog/_index_partials/_default.erb +11 -0
  42. data/app/views/catalog/_marc_view.html.erb +33 -0
  43. data/app/views/catalog/_opensearch_response_metadata.html.erb +3 -0
  44. data/app/views/catalog/_previous_next_doc.html.erb +6 -0
  45. data/app/views/catalog/_refworks_form.html.erb +7 -0
  46. data/app/views/catalog/_results_pagination.html.erb +11 -0
  47. data/app/views/catalog/_search_form.html.erb +14 -0
  48. data/app/views/catalog/_show_partials/_default.html.erb +9 -0
  49. data/app/views/catalog/_show_sidebar.html.erb +1 -0
  50. data/app/views/catalog/_show_tools.html.erb +46 -0
  51. data/app/views/catalog/_sms_form.html.erb +23 -0
  52. data/app/views/catalog/_solr_request.html.erb +5 -0
  53. data/app/views/catalog/_sort_and_per_page.html.erb +20 -0
  54. data/app/views/catalog/_unapi_microformat.html.erb +1 -0
  55. data/app/views/catalog/citation.html.erb +1 -0
  56. data/app/views/catalog/email.erb +1 -0
  57. data/app/views/catalog/endnote.endnote.erb +1 -0
  58. data/app/views/catalog/facet.html.erb +28 -0
  59. data/app/views/catalog/index.atom.builder +108 -0
  60. data/app/views/catalog/index.html.erb +37 -0
  61. data/app/views/catalog/index.rss.builder +19 -0
  62. data/app/views/catalog/librarian_view.html.erb +3 -0
  63. data/app/views/catalog/opensearch.json.erb +0 -0
  64. data/app/views/catalog/opensearch.xml.erb +11 -0
  65. data/app/views/catalog/send_email_record.erb +0 -0
  66. data/app/views/catalog/show.endnote.erb +1 -0
  67. data/app/views/catalog/show.html.erb +42 -0
  68. data/app/views/catalog/show.refworks.erb +1 -0
  69. data/app/views/catalog/sms.erb +1 -0
  70. data/app/views/catalog/unapi.xml.builder +6 -0
  71. data/app/views/feedback/complete.html.erb +3 -0
  72. data/app/views/feedback/show.html.erb +20 -0
  73. data/app/views/folder/_tools.html.erb +23 -0
  74. data/app/views/folder/index.html.erb +44 -0
  75. data/app/views/layouts/blacklight.html.erb +49 -0
  76. data/app/views/record_mailer/email_record.erb +6 -0
  77. data/app/views/record_mailer/sms_record.erb +4 -0
  78. data/app/views/saved_searches/index.html.erb +27 -0
  79. data/app/views/search_history/index.html.erb +23 -0
  80. data/blacklight.gemspec +50 -0
  81. data/config.ru +4 -0
  82. data/config/routes.rb +54 -0
  83. data/db/seeds.rb +7 -0
  84. data/features/generators.feature +77 -0
  85. data/features/support/aruba.rb +9 -0
  86. data/install.rb +0 -0
  87. data/install/solr.yml +8 -0
  88. data/lib/blacklight.rb +121 -0
  89. data/lib/blacklight/catalog.rb +311 -0
  90. data/lib/blacklight/comma_link_renderer.rb +27 -0
  91. data/lib/blacklight/configurable.rb +46 -0
  92. data/lib/blacklight/controller.rb +121 -0
  93. data/lib/blacklight/engine.rb +32 -0
  94. data/lib/blacklight/exceptions.rb +13 -0
  95. data/lib/blacklight/marc.rb +46 -0
  96. data/lib/blacklight/marc/citation.rb +251 -0
  97. data/lib/blacklight/search_fields.rb +107 -0
  98. data/lib/blacklight/solr.rb +7 -0
  99. data/lib/blacklight/solr/document.rb +239 -0
  100. data/lib/blacklight/solr/document/dublin_core.rb +40 -0
  101. data/lib/blacklight/solr/document/email.rb +15 -0
  102. data/lib/blacklight/solr/document/marc.rb +84 -0
  103. data/lib/blacklight/solr/document/marc_export.rb +430 -0
  104. data/lib/blacklight/solr/document/sms.rb +13 -0
  105. data/lib/blacklight/solr/facet_paginator.rb +93 -0
  106. data/lib/blacklight/solr_helper.rb +413 -0
  107. data/lib/blacklight/user.rb +55 -0
  108. data/lib/blacklight/version.rb +3 -0
  109. data/lib/colorize.rb +196 -0
  110. data/lib/generators/blacklight/blacklight_generator.rb +134 -0
  111. data/lib/generators/blacklight/templates/SolrMarc.jar +0 -0
  112. data/lib/generators/blacklight/templates/catalog_controller.rb +8 -0
  113. data/lib/generators/blacklight/templates/config/SolrMarc/config-test.properties +37 -0
  114. data/lib/generators/blacklight/templates/config/SolrMarc/config.properties +37 -0
  115. data/lib/generators/blacklight/templates/config/SolrMarc/index.properties +97 -0
  116. data/lib/generators/blacklight/templates/config/SolrMarc/index_scripts/dewey.bsh +47 -0
  117. data/lib/generators/blacklight/templates/config/SolrMarc/index_scripts/format.bsh +126 -0
  118. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/README_MAPS +1 -0
  119. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/callnumber_map.properties +407 -0
  120. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/composition_era_map.properties +56 -0
  121. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/country_map.properties +379 -0
  122. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/format_map.properties +50 -0
  123. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/instrument_map.properties +101 -0
  124. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/language_map.properties +490 -0
  125. data/lib/generators/blacklight/templates/config/blacklight_config.rb +245 -0
  126. data/lib/generators/blacklight/templates/config/solr.yml +6 -0
  127. data/lib/generators/blacklight/templates/migrations/add_user_types_to_bookmarks_searches.rb +11 -0
  128. data/lib/generators/blacklight/templates/migrations/create_bookmarks.rb +17 -0
  129. data/lib/generators/blacklight/templates/migrations/create_searches.rb +15 -0
  130. data/lib/generators/blacklight/templates/migrations/remove_editable_fields_from_bookmarks.rb +11 -0
  131. data/lib/generators/blacklight/templates/public/images/blacklight/bg.png +0 -0
  132. data/lib/generators/blacklight/templates/public/images/blacklight/border.png +0 -0
  133. data/lib/generators/blacklight/templates/public/images/blacklight/bul_sq_gry.gif +0 -0
  134. data/lib/generators/blacklight/templates/public/images/blacklight/checkmark.gif +0 -0
  135. data/lib/generators/blacklight/templates/public/images/blacklight/logo.png +0 -0
  136. data/lib/generators/blacklight/templates/public/images/blacklight/magnifying_glass.gif +0 -0
  137. data/lib/generators/blacklight/templates/public/images/blacklight/remove.gif +0 -0
  138. data/lib/generators/blacklight/templates/public/images/blacklight/separator.gif +0 -0
  139. data/lib/generators/blacklight/templates/public/images/blacklight/start_over.gif +0 -0
  140. data/lib/generators/blacklight/templates/public/javascripts/blacklight.js +485 -0
  141. data/lib/generators/blacklight/templates/public/javascripts/jquery-1.4.2.min.js +154 -0
  142. data/lib/generators/blacklight/templates/public/javascripts/jquery-ui-1.8.1.custom.min.js +756 -0
  143. data/lib/generators/blacklight/templates/public/stylesheets/blacklight.css +487 -0
  144. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  145. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  146. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  147. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  148. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  149. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  150. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_gloss-wave_35_558fd0_500x100.png +0 -0
  151. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  152. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  153. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  154. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  155. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_2e4f81_256x240.png +0 -0
  156. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  157. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  158. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/jquery-ui-1.8.1.custom.css +486 -0
  159. data/lib/generators/blacklight/templates/public/stylesheets/yui.css +31 -0
  160. data/lib/generators/blacklight/templates/solr_document.rb +30 -0
  161. data/lib/railties/blacklight.rake +66 -0
  162. data/lib/railties/cucumber.rake +53 -0
  163. data/lib/railties/rspec.rake +188 -0
  164. data/lib/railties/solr_marc.rake +148 -0
  165. data/lib/railties/test_solr_server.rb +130 -0
  166. data/spec/helpers/catalog_helper_spec.rb +111 -0
  167. data/spec/views/catalog/_sms_form.html.erb_spec.rb +19 -0
  168. data/tasks/blacklight_tasks.rake +4 -0
  169. data/uninstall.rb +1 -0
  170. metadata +431 -0
@@ -0,0 +1,47 @@
1
+ import org.marc4j.marc.Record;
2
+ import org.solrmarc.tools.Utils;
3
+ import org.solrmarc.tools.CallNumUtils;
4
+
5
+ // define the base level indexer so that its methods can be called from the script.
6
+ // note that the SolrIndexer code will set this value before the script methods are called.
7
+ org.solrmarc.index.SolrIndexer indexer = null;
8
+
9
+ /**
10
+ * returns the facet value for dewey hundreds digits, and dewey tens digits
11
+ * @param record
12
+ * @return Set of Strings containing facet value for dewey hundreds digits, and dewey tens digits
13
+ */
14
+ Set getDeweyFacet(Record record, String propertiesMapName)
15
+ {
16
+ LinkedHashSet resultSet = new LinkedHashSet();
17
+ Set values = indexer.getFieldList(record, "082a");
18
+ String mapName = indexer.loadTranslationMap(propertiesMapName);
19
+
20
+ for (String dewey : values)
21
+ {
22
+ if (! CallNumUtils.isValidDewey(dewey)) continue;
23
+ String hundreds = dewey.substring(0, 1) + "00";
24
+ String tens = dewey.substring(0,2) + "0";
25
+ String hundredsMapped = Utils.remap(hundreds, indexer.findMap(mapName), true);
26
+ String tensMapped = Utils.remap(tens, indexer.findMap(mapName), true);
27
+ if (hundredsMapped != null) resultSet.add(hundredsMapped);
28
+ if (tensMapped != null) resultSet.add(tensMapped);
29
+ }
30
+
31
+ return resultSet;
32
+ }
33
+
34
+ Set getDeweyText(Record record)
35
+ {
36
+ LinkedHashSet resultSet = new LinkedHashSet();
37
+ Set values = indexer.getFieldList(record, "082a");
38
+
39
+ for (String dewey : values)
40
+ {
41
+ if (! CallNumUtils.isValidDewey(dewey)) continue;
42
+ dewey = dewey.replaceAll("/[.]", ".").replaceAll("/", " ");
43
+ resultSet.add(dewey);
44
+ }
45
+
46
+ return resultSet;
47
+ }
@@ -0,0 +1,126 @@
1
+ import org.marc4j.marc.Record;
2
+ import org.solrmarc.tools.Utils;
3
+
4
+ // define the base level indexer so that its methods can be called from the script.
5
+ // note that the SolrIndexer code will set this value before the script methods are called.
6
+ org.solrmarc.index.SolrIndexer indexer = null;
7
+
8
+ /**
9
+ * Determine Record Format(s)
10
+ *
11
+ * @param Record record
12
+ * @return Set format of record
13
+ */
14
+
15
+ public Set getFormat(Record record)
16
+ {
17
+ Set result = new LinkedHashSet();
18
+
19
+ // check if there's an h in the 245
20
+ Set title_245h = indexer.getFieldList(record, "245h");
21
+ if (Utils.setItemContains(title_245h, "electronic resource"))
22
+ {
23
+ result.add("Electronic");
24
+ return result;
25
+ }
26
+ boolean field007hasC = false;
27
+ // check the 007 - this is a repeating field
28
+ // if we find a matching value there, grab it and return.
29
+ Set fields007 = indexer.getFieldList(record, "007[0-1]");
30
+ for (String f_007 : fields007)
31
+ {
32
+ f_007 = f_007.toUpperCase();
33
+ if (f_007.startsWith("A"))
34
+ if (f_007.equals( "AD")) result.add("Atlas");
35
+ else result.add("Map");
36
+ else if (f_007.startsWith("C"))
37
+ if (f_007.equals("CA")) result.add("TapeCartridge");
38
+ else if (f_007.equals("CB")) result.add("ChipCartridge");
39
+ else if (f_007.equals("CC")) result.add("DiscCartridge");
40
+ else if (f_007.equals("CF")) result.add("TapeCassette");
41
+ else if (f_007.equals("CH")) result.add("TapeReel");
42
+ else if (f_007.equals("CJ")) result.add("FloppyDisk");
43
+ else if (f_007.equals("CM")) result.add("CDROM");
44
+ else if (f_007.equals("C0")) result.add("CDROM");
45
+ else if (f_007.equals("CR")) field007hasC = true; // Do not return - this will cause anything with an 856 field to be labeled as "Electronic"
46
+ else result.add("Software");
47
+ else if (f_007.startsWith("D")) result.add("Globe");
48
+ else if (f_007.startsWith("F")) result.add("Braille");
49
+ else if (f_007.startsWith("G"))
50
+ if (f_007.equals("GC")) result.add("Filmstrip");
51
+ else if (f_007.equals("GD")) result.add("Filmstrip");
52
+ else if (f_007.equals("GT")) result.add("Transparency");
53
+ else result.add("Slide");
54
+ else if (f_007.startsWith("H")) result.add("Microfilm");
55
+ else if (f_007.startsWith("K"))
56
+ if (f_007.equals("KC")) result.add("Collage");
57
+ else if (f_007.equals("KD")) result.add("Drawing");
58
+ else if (f_007.equals("KE")) result.add("Painting");
59
+ else if (f_007.equals("KF")) result.add("Print");
60
+ else if (f_007.equals("KG")) result.add("Photonegative");
61
+ else if (f_007.equals("KJ")) result.add("Print");
62
+ else if (f_007.equals("KL")) result.add("Drawing");
63
+ else if (f_007.equals("K0")) result.add("FlashCard");
64
+ else if (f_007.equals("KN")) result.add("Chart");
65
+ else result.add("Photo");
66
+ else if (f_007.startsWith("M"))
67
+ if (f_007.equals("MF")) result.add("VideoCassette");
68
+ else if (f_007.equals("MR")) result.add("Filmstrip");
69
+ else result.add("MotionPicture");
70
+ else if (f_007.startsWith("O")) result.add("Kit");
71
+ else if (f_007.startsWith("Q")) result.add("MusicalScore");
72
+ else if (f_007.startsWith("R")) result.add("SensorImage");
73
+ else if (f_007.startsWith("S"))
74
+ if (f_007.equals("SD")) result.add("SoundDisc");
75
+ else if (f_007.equals("SS")) result.add("SoundCassette");
76
+ else result.add("SoundRecording");
77
+ else if (f_007.startsWith("V"))
78
+ if (f_007.equals("VC")) result.add("VideoCartridge");
79
+ else if (f_007.equals("VD")) result.add("VideoDisc");
80
+ else if (f_007.equals("VF")) result.add("VideoCassette");
81
+ else if (f_007.equals("VR")) result.add("VideoReel");
82
+ else result.add("Video");
83
+
84
+ // if we found a matching value and return it.
85
+ if (!result.isEmpty()) return result;
86
+ }
87
+ // check the Leader - this is NOT a repeating field
88
+ // if we find a matching value there, grab it and return.
89
+ String f_000 = indexer.getFirstFieldVal(record, null, "000[6-7]");
90
+ f_000 = f_000.toUpperCase();
91
+ if (f_000.startsWith("C")) result.add("MusicalScore");
92
+ else if (f_000.startsWith("D")) result.add("MusicalScore");
93
+ else if (f_000.startsWith("E")) result.add("Map");
94
+ else if (f_000.startsWith("F")) result.add("Map");
95
+ else if (f_000.startsWith("G")) result.add("Slide");
96
+ else if (f_000.startsWith("I")) result.add("SoundRecording");
97
+ else if (f_000.startsWith("J")) result.add("MusicRecording");
98
+ else if (f_000.startsWith("K")) result.add("Photo");
99
+ else if (f_000.startsWith("M")) result.add("Electronic");
100
+ else if (f_000.startsWith("O")) result.add("Kit");
101
+ else if (f_000.startsWith("P")) result.add("Kit");
102
+ else if (f_000.startsWith("R")) result.add("PhysicalObject");
103
+ else if (f_000.startsWith("T")) result.add("Manuscript");
104
+ else if (f_000.startsWith("A"))
105
+ {
106
+ if (f_000.equals("AM"))
107
+ {
108
+ if (field007hasC) result.add("eBook");
109
+ else result.add("Book");
110
+ }
111
+ else if (f_000.equals("AS"))
112
+ {
113
+ // Look in 008 to determine what type of Continuing Resource
114
+ String formatCode = indexer.getFirstFieldVal(record, null, "008[21]");
115
+ if (formatCode.equals("N")) result.add("Newspaper");
116
+ else if (formatCode.equals("P")) result.add("Journal");
117
+ else result.add("Serial");
118
+ }
119
+ }
120
+ // Nothing worked!
121
+ if (result.isEmpty()) {
122
+ result.add("Unknown");
123
+ }
124
+
125
+ return result;
126
+ }
@@ -0,0 +1 @@
1
+ This is the directory in which you should place locally defined translation maps.
@@ -0,0 +1,407 @@
1
+ # Map Call Number Classification pieces to User Friendly Description
2
+ displayRawIfMissing = true
3
+
4
+ # note: need more specific call numbers first so first matching is most specific
5
+ AC = AC - Collections Works
6
+ AE = AE - Encyclopedias
7
+ AG = AG - General Reference Works
8
+ AI = AI - Indexes
9
+ AM = AM - Museums
10
+ AN = AN - Newspapers
11
+ AP = AP - Periodicals
12
+ AS = AS - Academies & Learned Societies
13
+ AY = AY - Yearbooks, Almanacs, Directories
14
+ AZ = AZ - History of Scholarship & Learning
15
+ A = A - General Works
16
+ BC = BC - Logic
17
+ BD = BD - Speculative Philosophy
18
+ BF = BF - Psychology
19
+ BH = BH - Aesthetics
20
+ BJ = BJ - Ethics
21
+ BL = BL - Religions (General)
22
+ BM = BM - Judaism
23
+ BP = BP - Islam, Bahaism, Theosophy, etc.
24
+ BQ = BQ - Buddhism
25
+ BR = BR - Christianity
26
+ BS = BS - The Bible
27
+ BT = BT - Doctrinal Theology
28
+ BV = BV - Practical Theology
29
+ BX = BX - Christian Denominations
30
+ B = B - Philosophy, Psychology, Religion
31
+ CB = CB - History of Civilization
32
+ CC = CC - Archaeology
33
+ CD = CD - Diplomatics
34
+ CE = CE - Technical Chronology
35
+ CJ = CJ - Numismatics
36
+ CN = CN - Inscriptions
37
+ CR = CR - Heraldry
38
+ CS = CS - Genealogy
39
+ CT = CT - Biography
40
+ C = C - Historical Sciences (Archaeology, Genealogy)
41
+ DA = DA - Great Britain (History)
42
+ DB = DB - Austria, Liechtenstein, Czech Rep., Hungary, Slovakia (History)
43
+ DC = DC - France (History)
44
+ DD = DD - Germany (History)
45
+ DE = DE - Greco-Roman World (History)
46
+ DF = DF - Greece (History)
47
+ DG = DG - Italy (History)
48
+ DH = DH - Low Countries (History)
49
+ DJK = DJK - Eastern Europe (History)
50
+ DJ = DJ - Netherlands (History)
51
+ DK = DK - Russia. Former Soviet Republics. Poland (History)
52
+ DL = DL - Scandinavia (History)
53
+ DP = DP - Spain. Portugal (History)
54
+ DQ = DQ - Switzerland (History)
55
+ DR = DR - Balkan Peninsula (History)
56
+ DS = DS - Asia (History)
57
+ DT = DT - Africa (History)
58
+ DU = DU - Oceanía (History)
59
+ DX = DX - Gypsies (History)
60
+ D = D - World History
61
+ E = E - History of the Americas (General)
62
+ F = F - History of the Americas (Local)
63
+ GA = GA - Mathematical Geography, Cartography
64
+ GB = GB - Physical Geography
65
+ GC = GC - Oceanography
66
+ GE = GE - Environmental Sciences
67
+ GF = GF - Human Ecology, Anthropogeography
68
+ GN = GN - Anthropology
69
+ GR = GR - Folklore
70
+ GT = GT - Manners & Customs
71
+ GV = GV - Recreation. Leisure
72
+ G = G - Geography, Anthropology, Recreation
73
+ HA = HA - Statistics
74
+ HB = HB - Economic Theory, Demography
75
+ HC = HC - Economic History & Conditions
76
+ HD = HD - Industries, Land use, Labor
77
+ HE = HE - Transportation & Communications
78
+ HF = HF - Commerce
79
+ HG = HG - Finance
80
+ HJ = HJ - Public Finance
81
+ HM = HM - Sociology
82
+ HN = HN - Social History & Conditions
83
+ HQ = HQ - The Family, Marriage, Woman
84
+ HS = HS - Societies
85
+ HT = HT - Communities, Classes, Races
86
+ HV = HV - Social Pathology, Social & Public Welfare, Criminology
87
+ HX = HX - Socialism, Communism, Anarchism
88
+ H = H - Social Sciences
89
+ JA = JA - Political Science
90
+ JC = JC - Political Theory
91
+ JF = JF - Political Institutions
92
+ JK = JK - Political Institutions (U.S.)
93
+ JL = JL - Political Institutions (Canada, Latin America)
94
+ JN = JN - Political Institutions (Europe)
95
+ JQ = JQ - Political Institutions (Asia, Africa, Australia, Pacific Area)
96
+ JS = JS - Local Government
97
+ JV = JV - Colonies & Colonization, Emigration & Immigration
98
+ JX = JX - International Law
99
+ JZ = JZ - International Relations
100
+ J = J - Political Science
101
+ KBM = KBM - Jewish Law
102
+ KBP = KBP - Islamic Law
103
+ KBR = KBR - Canon Law
104
+ KBU = KBU - Law of Roman Catholic Church
105
+ KB = KB - Religious Law (General)
106
+ KDC = KDC - Law of Scotland
107
+ KDE = KDE - Law of Northern Ireland
108
+ KDG = KDG - Law of Isle of Man, Channel Islands
109
+ KDK = KDK - Law of Ireland (EIRE)
110
+ KDZ = KDZ - Law of America, North America
111
+ KD = KD - Law of England & Wales
112
+ KE = KE - Law of Canada
113
+ KF = KF - Law of the U.S.
114
+ KG = KG - Law of Latin America, Mexico, Central America, West Indies, Caribbean
115
+ KH = KH - South America
116
+ KJA = KJA - Roman Law
117
+ KJC = KJC - Regional Comparative & Uniform Law
118
+ KJE = KJE - Regional Organization & Integration
119
+ KJG = KJG - Law of Albania
120
+ KJH = KJH - Law of Andorra
121
+ KJJ = KJJ - Law of Austria
122
+ KJK = KJK - Law of Belgium, Bosnia & Hercegovina (Republic)
123
+ KJM = KJM - Law of Bulgaria, Croatia
124
+ KJN = KJN - Law of Cyprus
125
+ KJP = KJP - Law of Czechoslovakia, Czech Republic
126
+ KJQ = KJQ - Law of Slovakia
127
+ KJR = KJR - Law of Denmark
128
+ KJS = KJS - Law of Estonia
129
+ KJT = KJT - Law of Finland
130
+ KJV = KJV - Law of France
131
+ KJW = KJW - Law of French Regions, Provinces, Departments
132
+ KJ = KJ - Law of Europe
133
+ KKE = KKE - Law of Greece
134
+ KKF = KKF - Law of Hungary
135
+ KKG = KKG - Law of Iceland
136
+ KKH = KKH - Law of Italy
137
+ KKI = KKI - Law of Latvia
138
+ KKJ = KKJ - Law of Lithuania, Liechtenstein
139
+ KKK = KKK - Law of Luxemburg, Malta
140
+ KKL = KKL - Law of Monaco
141
+ KKM = KKM - Law of the Netherlands
142
+ KKN = KKN - Law of Norway
143
+ KKP = KKP - Law of Poland
144
+ KKQ = KKQ - Law of Portugal
145
+ KKR = KKR - Law of Romania
146
+ KKT = KKT - Law of Spain
147
+ KKV = KKV - Law of Sweden
148
+ KKW = KKW - Law of Switzerland
149
+ KKX = KKX - Law of Turkey
150
+ KKY = KKY - Law of Ukraine
151
+ KKZ = KKZ - Law of Yugoslavia
152
+ KK = KK - Law of Germany
153
+ KLA = KLA - Law of Russia, Soviet Union
154
+ KLB = KLB - Law of Russia (Federation)
155
+ KLD = KLD - Law of Armenia (Republic)
156
+ KLE = KLE - Law of Azerbaijan
157
+ KLF = KLF - Law of Belarus
158
+ KLH = KLH - Law of Georgia
159
+ KLM = KLM - Law of Moldova
160
+ KLP = KLP - Law of Ukraine
161
+ KLR = KLR - Law of Kazakhstan
162
+ KLS = KLS - Law of Kyrgyzstan
163
+ KLT = KLT - Law of Tajikistan
164
+ KLV = KLV - Law of Turkmenistan
165
+ KLW = KLW - Law of Uzbekistan
166
+ KL = KL - History of Law, The Ancient Orient
167
+ KMC = KMC - Law of the Middle East, Southwest Asia
168
+ KMH = KMH - Law of Iran
169
+ KMJ = KMJ - Law of Iraq
170
+ KMK = KMK - Law of Israel
171
+ KML = KML - Law of Jerusalem
172
+ KMM = KMM - Law of Jordan
173
+ KMN = KMN - Law of Kuwait
174
+ KMP = KMP - Law of Lebanon
175
+ KMT = KMT - Law of Saudi Arabia
176
+ KMU = KMU - Law of Syria
177
+ KMX = KMX - Law of Yemen
178
+ KM = KM - Law of Asia
179
+ KNC = KNC - Law of South Asia
180
+ KNN = KNN - Law of China
181
+ KNP = KNP - Law of Taiwan
182
+ KNR = KNR - Law of Hong Kong
183
+ KNS = KNS - Law of India
184
+ KNW = KNW - Law of Indonesia
185
+ KNX = KNX - Law of Japan
186
+ KPA = KPA - Law of Korea, South Korea
187
+ KPC = KPC - Law of Korea, North Korea
188
+ KQ = KQ - Law of Africa
189
+ KU = KU - Law of the Pacific Area, Australia, New Zealand
190
+ KWX = KWX - Law of Antarctica
191
+ KZ = KZ - Law of Nations
192
+ K = K - Law
193
+ LA = LA - History of Education
194
+ LB = LB - Theory & Practice of Education
195
+ LC = LC - Special Aspects of Education
196
+ LD = LD - Individual Educational Institutions (U.S.)
197
+ LE = LE - Individual Educational Institutions: America (except U.S.)
198
+ LF = LF - Individual Educational Institutions: Europe
199
+ LG = LG - Individual Educational Institutions: Asia, Africa, Oceania
200
+ LH = LH - College & School Magazines & Papers
201
+ LT = LT - Textbooks
202
+ L = L - Education
203
+ MLCME = Unknown
204
+ MLCSN = Unknown
205
+ ML = ML - Literature on Music
206
+ MT = MT - Musical Instruction & Study
207
+ M = M - Music
208
+ NA = NA - Architecture
209
+ NB = NB - Sculpture
210
+ NC = NC - Drawing, Design, Illustration
211
+ ND = ND - Painting
212
+ NE = NE - Print Media
213
+ NK = NK - Decorative Arts
214
+ NX = NX - Arts in General
215
+ N = N - Fine Arts
216
+ PA = PA - Greek & Latin Language & Literature
217
+ PB = PB - Modern Language, Celtic Languages
218
+ PC = PC - Romanic Languages
219
+ PD = PD - Germanic Languages
220
+ PE = PE - English Languages
221
+ PF = PF - West Germanic Languages
222
+ PG = PG - Slavic, Baltic, Albanian Languages, Russian Language & Literature
223
+ PH = PH - Uralic & Basque Languages
224
+ PJ = PJ - Oriental Languages & Literature
225
+ PK = PK - Indo-Iranian Languages & Literature
226
+ PL = PL - Languages & Literatures of Eastern Asia, Africa, Oceania
227
+ PM = PM - Hyperborean, Indian & Artificial Languages
228
+ PN = PN - Literature (General)
229
+ PQ = PQ - French, Italian, Spanish & Portuguese Literature
230
+ PR = PR - English Literature
231
+ PS = PS - American Literature
232
+ PT = PT - Germanic & Scandinavian Literatures
233
+ PZ = PZ - Children’s Literature
234
+ P = P - Language & Literature
235
+ QA = QA - Mathematics
236
+ QB = QB - Astronomy
237
+ QC = QC - Physics
238
+ QD = QD - Chemistry
239
+ QE = QE - Geology
240
+ QH = QH - Natural History, Biology
241
+ QK = QK - Botany
242
+ QL = QL - Zoology
243
+ QM = QM - Human Anatomy
244
+ QP = QP - Physiology
245
+ QR = QR - Microbiology
246
+ Q = Q - Science
247
+ RA = RA - Public Aspects of Medicine
248
+ RB = RB - Pathology
249
+ RC = RC - Internal Medicine
250
+ RD = RD - Surgery
251
+ RE = RE - Ophthalmology
252
+ RF = RF - Otorhinolaryngology
253
+ RG = RG - Gynecology & Obstetrics
254
+ RJ = RJ - Pediatrics
255
+ RK = RK - Dentistry
256
+ RL = RL - Dermatology
257
+ RM = RM - Therapeutics, Pharmacology
258
+ RS = RS - Pharmacy & Materia Medica
259
+ RT = RT - Nursing
260
+ RV = RV - Botanic, Thomsonian, & Eclectic Medicine
261
+ RX = RX - Homeopathy
262
+ RZ = RZ - Other Systems of Medicine
263
+ R = R - Medicine
264
+ SB = SB - Plant Culture
265
+ SD = SD - Forestry
266
+ SF = SF - Animal Culture
267
+ SH = SH - Aquaculture
268
+ SK = SK - Hunting Sports
269
+ S = S - Agriculture
270
+ TA = TA - Engineering, Civil Engineering
271
+ TC = TC - Hydraulic Engineering
272
+ TD = TD - Environmental Technology
273
+ TE = TE - Highway Engineering
274
+ TF = TF - Railroad Engineering & Operation
275
+ TG = TG - Bridge Engineering
276
+ TH = TH - Building Construction
277
+ TJ = TJ - Mechanical Engineering & Machinery
278
+ TK = TK - Electrical Engineering, Nuclear Engineering
279
+ TL = TL - Motor Vehicles, Aeronautics, Astronautics
280
+ TN = TN - Mining Engineering
281
+ TP = TP - Chemical Technology
282
+ TR = TR - Photography
283
+ TS = TS - Manufactures
284
+ TT = TT - Handicrafts
285
+ TX = TX - Home Economics
286
+ T = T - Technology
287
+ UA = UA - Armies
288
+ UB = UB - Military Administration
289
+ UC = UC - Maintenance & Transportation
290
+ UD = UD - Infantry
291
+ UE = UE - Cavalry, Armor
292
+ UF = UF - Artillery
293
+ UG = UG - Military Engineering, Air Forces, Military Astronautics
294
+ UH = UH - Other Military Services
295
+ U = U - Military Science
296
+ VA = VA - Navies
297
+ VB = VB - Naval Administration
298
+ VC = VC - Naval Maintenance
299
+ VD = VD - Naval Seamen
300
+ VE = VE - Marines
301
+ VF = VF - Naval Ordnance
302
+ VG = VG - Minor Services of Navies
303
+ VK = VK - Navigation, Merchant Marine
304
+ VM = VM - Naval Architecture, Marine Engineering
305
+ V = V - Naval Science
306
+ ZA = ZA - Information Science
307
+ Z = Z - Bibliography, Library Science, Information Resources
308
+
309
+ 000 = 000s - Computer Science, Information & General Works
310
+ 010 = 010s - Bibliography
311
+ 020 = 020s - Library & Information Sciences
312
+ 030 = 030s - General Encyclopedic Works
313
+ 050 = 050s - General Serials & their Indexes
314
+ 060 = 060s - General Organization & Museology
315
+ 070 = 070s - News Media, Journalism, Publishing
316
+ 080 = 080s - General Collections
317
+ 090 = 090s - Manuscripts & Rare Books
318
+ 100 = 100s - Philosophy & Psychology
319
+ 110 = 110s - Metaphysics
320
+ 120 = 120s - Epistemology, Causation, Humankind
321
+ 130 = 130s - Paranormal Phenomena
322
+ 140 = 140s - Specific Philosophical Schools
323
+ 150 = 150s - Psychology
324
+ 160 = 160s - Logic
325
+ 170 = 170s - Ethics (Moral Philosophy)
326
+ 180 = 180s - Ancient, Medieval, Oriental Philosophy
327
+ 190 = 190s - Modern Western Philosophy
328
+ 200 = 200s - Religion
329
+ 210 = 210s - Natural Theology
330
+ 220 = 220s - Bible
331
+ 230 = 230s - Christian Theology
332
+ 240 = 240s - Christian Moral & Devotional Theology
333
+ 250 = 250s - Christian Orders & Local Church
334
+ 260 = 260s - Christian Social Theology
335
+ 270 = 270s - Christian Church History
336
+ 280 = 280s - Christian Denominations & Sects
337
+ 290 = 290s - Other & Comparative Religions
338
+ 300 = 300s - Social Sciences
339
+ 310 = 310s - General Statistics
340
+ 320 = 320s - Political Science
341
+ 330 = 330s - Economics
342
+ 340 = 340s - Law
343
+ 350 = 350s - Public Administration
344
+ 360 = 360s - Social Services; Association
345
+ 370 = 370s - Education
346
+ 380 = 380s - Commerce, Communications, Transport
347
+ 390 = 390s - Customs, Etiquette, Folklore
348
+ 400 = 400s - Language
349
+ 410 = 410s - Linguistics
350
+ 420 = 420s - English & Old English
351
+ 430 = 430s - Germanic Languages German
352
+ 440 = 440s - Romance Languages French
353
+ 450 = 450s - Italian, Romanian, Rhaeto-Romantic
354
+ 460 = 460s - Spanish & Portugese Languages
355
+ 470 = 470s - Italic Latin
356
+ 480 = 480s - Hellenic Languages Classical Greek
357
+ 490 = 490s - Other Languages
358
+ 500 = 500s - Science
359
+ 510 = 510s - Mathematics
360
+ 520 = 520s - Astronomy & Allied Sciences
361
+ 530 = 530s - Physics
362
+ 540 = 540s - Chemistry & Allied Sciences
363
+ 550 = 550s - Earth Sciences
364
+ 560 = 560s - Paleontology Paleozoology
365
+ 570 = 570s - Life Sciences
366
+ 580 = 580s - Botanical Sciences
367
+ 590 = 590s - Zoological Sciences
368
+ 600 = 600s - Technology
369
+ 610 = 610s - Medical Sciences Medicine
370
+ 620 = 620s - Engineering & Allied Operations
371
+ 630 = 630s - Agriculture
372
+ 640 = 640s - Home economics & Family Living
373
+ 650 = 650s - Management & Auxiliary Services
374
+ 660 = 660s - Chemical Engineering
375
+ 670 = 670s - Manufacturing
376
+ 680 = 680s - Manufacture for Specific Uses
377
+ 690 = 690s - Buildings
378
+ 700 = 700s - Arts & Recreation
379
+ 710 = 710s - Civic & Landscape Art
380
+ 720 = 720s - Architecture
381
+ 730 = 730s - Plastic Arts Sculpture
382
+ 740 = 740s - Drawing & Decorative Arts
383
+ 750 = 750s - Painting & Paintings
384
+ 760 = 760s - Graphic Arts Printmaking & Prints
385
+ 770 = 770s - Photography & Photographs
386
+ 780 = 780s - Music
387
+ 790 = 790s - Recreational & Performing Arts
388
+ 800 = 800s - Literature
389
+ 810 = 810s - American Literature in English
390
+ 820 = 820s - English & Old English Literatures
391
+ 830 = 830s - Literatures of Germanic Languages
392
+ 840 = 840s - Literatures of Romance Languages
393
+ 850 = 850s - Italian, Romanian, Rhaeto-Romanic
394
+ 860 = 860s - Spanish & Portuguese Literatures
395
+ 870 = 870s - Italic Literatures Latin
396
+ 880 = 880s - Hellenic Literatures Classical Greek
397
+ 890 = 890s - Literatures of Other Languages
398
+ 900 = 900s - History & Geography
399
+ 910 = 910s - Geography & Travel
400
+ 920 = 920s - Biography, Genealogy, Insignia
401
+ 930 = 930s - History of Ancient World
402
+ 940 = 940s - General History of Europe
403
+ 950 = 950s - General History of Asia Far East
404
+ 960 = 960s - General History of Africa
405
+ 970 = 970s - General History of North America
406
+ 980 = 980s - General History of South America
407
+ 990 = 990s - General History of Other Areas