hydra_mediated 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +1 -0
  4. data/Gemfile +7 -0
  5. data/HYDRA_MEDIATED_VERSION +1 -0
  6. data/README.md +36 -0
  7. data/Rakefile +5 -0
  8. data/app/assets/images/blacklight/bg.png +0 -0
  9. data/app/assets/images/blacklight/border.png +0 -0
  10. data/app/assets/images/blacklight/bul_sq_gry.gif +0 -0
  11. data/app/assets/images/blacklight/checkmark.gif +0 -0
  12. data/app/assets/images/blacklight/logo.png +0 -0
  13. data/app/assets/images/blacklight/magnifying_glass.gif +0 -0
  14. data/app/assets/images/blacklight/remove.gif +0 -0
  15. data/app/assets/images/blacklight/separator.gif +0 -0
  16. data/app/assets/images/blacklight/start_over.gif +0 -0
  17. data/app/assets/images/rails.png +0 -0
  18. data/app/assets/javascripts/application.js +17 -0
  19. data/app/assets/javascripts/items.js.coffee +3 -0
  20. data/app/assets/stylesheets/application.css +14 -0
  21. data/app/assets/stylesheets/blacklight.css.scss +4 -0
  22. data/app/assets/stylesheets/items.css.scss +3 -0
  23. data/app/controllers/application_controller.rb +10 -0
  24. data/app/controllers/catalog_controller.rb +165 -0
  25. data/app/controllers/items_controller.rb +34 -0
  26. data/app/controllers/submissions_controller.rb +7 -0
  27. data/app/helpers/application_helper.rb +2 -0
  28. data/app/helpers/items_helper.rb +5 -0
  29. data/app/mailers/.gitkeep +0 -0
  30. data/app/models/.gitkeep +0 -0
  31. data/app/models/ability.rb +3 -0
  32. data/app/models/ead.rb +3 -0
  33. data/app/models/etd.rb +3 -0
  34. data/app/models/generic.rb +3 -0
  35. data/app/models/generic_file.rb +3 -0
  36. data/app/models/item.rb +4 -0
  37. data/app/models/solr_document.rb +33 -0
  38. data/app/models/user.rb +22 -0
  39. data/app/views/catalog/_home_text.html.erb +9 -0
  40. data/app/views/catalog/_show_tools.html.erb +44 -0
  41. data/app/views/devise/confirmations/new.html.erb +12 -0
  42. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  43. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  44. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  45. data/app/views/devise/passwords/edit.html.erb +16 -0
  46. data/app/views/devise/passwords/new.html.erb +12 -0
  47. data/app/views/devise/registrations/edit.html.erb +29 -0
  48. data/app/views/devise/registrations/new.html.erb +18 -0
  49. data/app/views/devise/sessions/new.html.erb +17 -0
  50. data/app/views/devise/shared/_links.erb +25 -0
  51. data/app/views/devise/unlocks/new.html.erb +12 -0
  52. data/app/views/items/done.html.erb +3 -0
  53. data/app/views/items/edit.html.erb +25 -0
  54. data/app/views/items/new.html.erb +22 -0
  55. data/app/views/items/submit.html.erb +6 -0
  56. data/app/views/items/upload.html.erb +5 -0
  57. data/app/views/layouts/application.html.erb +14 -0
  58. data/app/views/submissions/new.html.erb +13 -0
  59. data/config.ru +4 -0
  60. data/config/SolrMarc/config-test.properties +37 -0
  61. data/config/SolrMarc/config.properties +37 -0
  62. data/config/SolrMarc/index.properties +97 -0
  63. data/config/SolrMarc/index_scripts/dewey.bsh +47 -0
  64. data/config/SolrMarc/index_scripts/format.bsh +126 -0
  65. data/config/SolrMarc/translation_maps/README_MAPS +1 -0
  66. data/config/SolrMarc/translation_maps/callnumber_map.properties +407 -0
  67. data/config/SolrMarc/translation_maps/composition_era_map.properties +56 -0
  68. data/config/SolrMarc/translation_maps/country_map.properties +379 -0
  69. data/config/SolrMarc/translation_maps/format_map.properties +50 -0
  70. data/config/SolrMarc/translation_maps/instrument_map.properties +101 -0
  71. data/config/SolrMarc/translation_maps/language_map.properties +490 -0
  72. data/config/application.rb +66 -0
  73. data/config/boot.rb +6 -0
  74. data/config/database.yml +25 -0
  75. data/config/environment.rb +5 -0
  76. data/config/locales/devise.en.yml +59 -0
  77. data/config/locales/en.yml +5 -0
  78. data/config/routes.rb +20 -0
  79. data/db/migrate/20130606160529_devise_create_users.rb +46 -0
  80. data/db/migrate/20130606160531_add_devise_guests_to_users.rb +15 -0
  81. data/db/migrate/20130606160536_create_searches.rb +16 -0
  82. data/db/migrate/20130606160537_create_bookmarks.rb +18 -0
  83. data/db/migrate/20130606160538_remove_editable_fields_from_bookmarks.rb +12 -0
  84. data/db/migrate/20130606160539_add_user_types_to_bookmarks_searches.rb +16 -0
  85. data/db/schema.rb +54 -0
  86. data/db/seeds.rb +7 -0
  87. data/doc/README_FOR_APP +2 -0
  88. data/fedora_conf/conf/development/fedora.fcfg +953 -0
  89. data/fedora_conf/conf/test/fedora.fcfg +953 -0
  90. data/hydra_mediated.gemspec +22 -0
  91. data/lib/assets/.gitkeep +0 -0
  92. data/lib/hydra/mediated/ability.rb +17 -0
  93. data/lib/hydra/mediated/generic_file.rb +13 -0
  94. data/lib/hydra/mediated/item.rb +35 -0
  95. data/lib/hydra_mediated.rb +21 -0
  96. data/lib/tasks/.gitkeep +0 -0
  97. data/log/.gitkeep +0 -0
  98. data/public/404.html +26 -0
  99. data/public/422.html +26 -0
  100. data/public/500.html +25 -0
  101. data/public/favicon.ico +0 -0
  102. data/public/robots.txt +5 -0
  103. data/script/rails +6 -0
  104. data/solr_conf/conf/schema.xml +273 -0
  105. data/solr_conf/conf/solrconfig.xml +167 -0
  106. data/solr_conf/solr.xml +35 -0
  107. data/spec/controllers/items_controller_spec.rb +56 -0
  108. data/spec/helpers/items_helper_spec.rb +8 -0
  109. data/spec/models/ability_spec.rb +24 -0
  110. data/spec/models/item_spec.rb +26 -0
  111. data/spec/spec_helper.rb +33 -0
  112. data/test/fixtures/.gitkeep +0 -0
  113. data/test/fixtures/users.yml +11 -0
  114. data/test/functional/.gitkeep +0 -0
  115. data/test/integration/.gitkeep +0 -0
  116. data/test/performance/browsing_test.rb +12 -0
  117. data/test/test_helper.rb +13 -0
  118. data/test/unit/.gitkeep +0 -0
  119. data/test/unit/user_test.rb +7 -0
  120. data/vendor/assets/javascripts/.gitkeep +0 -0
  121. data/vendor/assets/stylesheets/.gitkeep +0 -0
  122. data/vendor/plugins/.gitkeep +0 -0
  123. metadata +222 -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