openphar 0.1.0

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 (108) hide show
  1. checksums.yaml +7 -0
  2. data/README.adoc +221 -0
  3. data/lib/openphar/cli/main.rb +137 -0
  4. data/lib/openphar/cli.rb +11 -0
  5. data/lib/openphar/core/slug_generator.rb +107 -0
  6. data/lib/openphar/core.rb +11 -0
  7. data/lib/openphar/errors/configuration_error.rb +8 -0
  8. data/lib/openphar/errors/monograph_not_found_error.rb +15 -0
  9. data/lib/openphar/errors/parse_error.rb +18 -0
  10. data/lib/openphar/errors/unknown_format_error.rb +8 -0
  11. data/lib/openphar/errors/unknown_publisher_error.rb +8 -0
  12. data/lib/openphar/errors/unknown_type_error.rb +8 -0
  13. data/lib/openphar/errors/validation_error.rb +15 -0
  14. data/lib/openphar/errors.rb +17 -0
  15. data/lib/openphar/exporters/coverage_validator.rb +265 -0
  16. data/lib/openphar/exporters/neo4j/model_registry.rb +130 -0
  17. data/lib/openphar/exporters/neo4j/node_builder.rb +84 -0
  18. data/lib/openphar/exporters/neo4j/property_mapper.rb +154 -0
  19. data/lib/openphar/exporters/neo4j/relationship_builder.rb +87 -0
  20. data/lib/openphar/exporters/neo4j.rb +16 -0
  21. data/lib/openphar/exporters/neo4j_exporter.rb +199 -0
  22. data/lib/openphar/exporters.rb +15 -0
  23. data/lib/openphar/linkers/chp/cross_edition_linker.rb +101 -0
  24. data/lib/openphar/linkers/chp.rb +11 -0
  25. data/lib/openphar/linkers/cross_publisher_linker.rb +295 -0
  26. data/lib/openphar/linkers/herbapedia_linker.rb +125 -0
  27. data/lib/openphar/linkers.rb +13 -0
  28. data/lib/openphar/migrators/chp/classifier.rb +86 -0
  29. data/lib/openphar/migrators/chp.rb +15 -0
  30. data/lib/openphar/migrators/chp_migrator.rb +130 -0
  31. data/lib/openphar/migrators/jp_migrator.rb +345 -0
  32. data/lib/openphar/migrators/phint_migrator.rb +426 -0
  33. data/lib/openphar/migrators.rb +15 -0
  34. data/lib/openphar/models/ahp.rb +25 -0
  35. data/lib/openphar/models/amino_acid_monograph.rb +28 -0
  36. data/lib/openphar/models/api.rb +29 -0
  37. data/lib/openphar/models/assay_specification.rb +19 -0
  38. data/lib/openphar/models/base_entity.rb +221 -0
  39. data/lib/openphar/models/biological_substance_monograph.rb +31 -0
  40. data/lib/openphar/models/chemical_drug_monograph.rb +39 -0
  41. data/lib/openphar/models/chp/biologic.rb +28 -0
  42. data/lib/openphar/models/chp/chemical_preparation.rb +28 -0
  43. data/lib/openphar/models/chp/chemical_substance.rb +28 -0
  44. data/lib/openphar/models/chp/general_chapter.rb +30 -0
  45. data/lib/openphar/models/chp/monograph.rb +116 -0
  46. data/lib/openphar/models/chp/section.rb +37 -0
  47. data/lib/openphar/models/chp/tcm_crude_drug.rb +28 -0
  48. data/lib/openphar/models/chp/tcm_extract.rb +29 -0
  49. data/lib/openphar/models/chp/tcm_formulation.rb +28 -0
  50. data/lib/openphar/models/chp.rb +33 -0
  51. data/lib/openphar/models/crude_drug_monograph.rb +31 -0
  52. data/lib/openphar/models/edition.rb +41 -0
  53. data/lib/openphar/models/formulation_monograph.rb +31 -0
  54. data/lib/openphar/models/hkcmms.rb +26 -0
  55. data/lib/openphar/models/identification_specification.rb +19 -0
  56. data/lib/openphar/models/jp/kampo_formula.rb +94 -0
  57. data/lib/openphar/models/jp.rb +21 -0
  58. data/lib/openphar/models/limit.rb +54 -0
  59. data/lib/openphar/models/mineral_substance_monograph.rb +28 -0
  60. data/lib/openphar/models/monograph.rb +58 -0
  61. data/lib/openphar/models/ph_int/buffer_solution.rb +38 -0
  62. data/lib/openphar/models/ph_int/dosage_form_monograph.rb +43 -0
  63. data/lib/openphar/models/ph_int/radiopharmaceutical_monograph.rb +52 -0
  64. data/lib/openphar/models/ph_int/reagent.rb +50 -0
  65. data/lib/openphar/models/ph_int/reference_substance.rb +50 -0
  66. data/lib/openphar/models/ph_int/test_method.rb +50 -0
  67. data/lib/openphar/models/ph_int/test_solution.rb +39 -0
  68. data/lib/openphar/models/ph_int/volumetric_solution.rb +38 -0
  69. data/lib/openphar/models/ph_int.rb +37 -0
  70. data/lib/openphar/models/physical_specification.rb +17 -0
  71. data/lib/openphar/models/publisher.rb +98 -0
  72. data/lib/openphar/models/purity_specification.rb +16 -0
  73. data/lib/openphar/models/supplement.rb +31 -0
  74. data/lib/openphar/models/test_specification.rb +29 -0
  75. data/lib/openphar/models/thp.rb +24 -0
  76. data/lib/openphar/models/vitamin_monograph.rb +28 -0
  77. data/lib/openphar/models.rb +58 -0
  78. data/lib/openphar/monograph_merger.rb +374 -0
  79. data/lib/openphar/parsers/base_monograph_parser.rb +108 -0
  80. data/lib/openphar/parsers/jp_html_parser.rb +92 -0
  81. data/lib/openphar/parsers/jp_html_parser_base.rb +113 -0
  82. data/lib/openphar/parsers/jp_ja_html_parser.rb +220 -0
  83. data/lib/openphar/parsers/phint_json_parser.rb +332 -0
  84. data/lib/openphar/parsers.rb +21 -0
  85. data/lib/openphar/registry/publisher_registry.rb +46 -0
  86. data/lib/openphar/registry/type_registry.rb +147 -0
  87. data/lib/openphar/registry.rb +24 -0
  88. data/lib/openphar/repositories/monograph_repository.rb +350 -0
  89. data/lib/openphar/repositories.rb +11 -0
  90. data/lib/openphar/transformers/jsonld_transformer.rb +106 -0
  91. data/lib/openphar/transformers.rb +11 -0
  92. data/lib/openphar/version.rb +5 -0
  93. data/lib/openphar.rb +119 -0
  94. data/ontology/bibliographic/edition.ttl +267 -0
  95. data/ontology/context/chp.jsonld +69 -0
  96. data/ontology/context/crude-drugs.jsonld +56 -0
  97. data/ontology/context/pharmacopoeia.jsonld +631 -0
  98. data/ontology/core/identification.ttl +456 -0
  99. data/ontology/core/pharmacopoeia.ttl +3427 -0
  100. data/ontology/core/substance-form.ttl +302 -0
  101. data/ontology/core/unit.ttl +493 -0
  102. data/ontology/publisher/chp/extensions.ttl +186 -0
  103. data/ontology/publisher/phint/extensions.ttl +327 -0
  104. data/ontology/quality/test-method.ttl +610 -0
  105. data/shapes/chp/monograph.ttl +153 -0
  106. data/shapes/edition-shapes.ttl +230 -0
  107. data/shapes/monograph-shapes.ttl +1324 -0
  108. metadata +319 -0
@@ -0,0 +1,493 @@
1
+ # Open Pharmacopoeia - Units of Measurement
2
+ #
3
+ # Complete enumeration of units used in pharmacopoeia specifications.
4
+ # MECE (Mutually Exclusive, Collectively Exhaustive) organization.
5
+
6
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
7
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
9
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
10
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
11
+ @prefix op: <https://www.openphar.org/ontology/core/> .
12
+ @prefix unit: <https://www.openphar.org/ontology/core/unit/> .
13
+
14
+ <https://www.openphar.org/ontology/core/unit>
15
+ a owl:Ontology ;
16
+ rdfs:label "Open Pharmacopoeia Units Ontology"@en ;
17
+ rdfs:comment "Complete enumeration of measurement units used in pharmacopoeia specifications."@en ;
18
+ owl:imports <https://www.openphar.org/ontology/core> .
19
+
20
+ # =============================================================================
21
+ # UNIT CATEGORIES (MECE)
22
+ # =============================================================================
23
+
24
+ unit:ConcentrationUnit
25
+ a owl:Class ;
26
+ rdfs:label "Concentration Unit"@en ;
27
+ rdfs:subClassOf op:Unit ;
28
+ rdfs:comment "Units for expressing concentration of substances."@en .
29
+
30
+ unit:MassUnit
31
+ a owl:Class ;
32
+ rdfs:label "Mass Unit"@en ;
33
+ rdfs:subClassOf op:Unit ;
34
+ rdfs:comment "Units for expressing mass or weight."@en .
35
+
36
+ unit:VolumeUnit
37
+ a owl:Class ;
38
+ rdfs:label "Volume Unit"@en ;
39
+ rdfs:subClassOf op:Unit ;
40
+ rdfs:comment "Units for expressing volume."@en .
41
+
42
+ unit:TemperatureUnit
43
+ a owl:Class ;
44
+ rdfs:label "Temperature Unit"@en ;
45
+ rdfs:subClassOf op:Unit ;
46
+ rdfs:comment "Units for expressing temperature."@en .
47
+
48
+ unit:LengthUnit
49
+ a owl:Class ;
50
+ rdfs:label "Length Unit"@en ;
51
+ rdfs:subClassOf op:Unit ;
52
+ rdfs:comment "Units for expressing length or distance."@en .
53
+
54
+ unit:TimeUnit
55
+ a owl:Class ;
56
+ rdfs:label "Time Unit"@en ;
57
+ rdfs:subClassOf op:Unit ;
58
+ rdfs:comment "Units for expressing time."@en .
59
+
60
+ unit:DimensionlessUnit
61
+ a owl:Class ;
62
+ rdfs:label "Dimensionless Unit"@en ;
63
+ rdfs:subClassOf op:Unit ;
64
+ rdfs:comment "Units for dimensionless quantities."@en .
65
+
66
+ unit:WavelengthUnit
67
+ a owl:Class ;
68
+ rdfs:label "Wavelength Unit"@en ;
69
+ rdfs:subClassOf op:Unit ;
70
+ rdfs:comment "Units for expressing wavelength."@en .
71
+
72
+ unit:WaveNumberUnit
73
+ a owl:Class ;
74
+ rdfs:label "Wave Number Unit"@en ;
75
+ rdfs:subClassOf op:Unit ;
76
+ rdfs:comment "Units for expressing wave number (IR spectroscopy)."@en .
77
+
78
+ unit:PressureUnit
79
+ a owl:Class ;
80
+ rdfs:label "Pressure Unit"@en ;
81
+ rdfs:subClassOf op:Unit ;
82
+ rdfs:comment "Units for expressing pressure."@en .
83
+
84
+ unit:RotationalUnit
85
+ a owl:Class ;
86
+ rdfs:label "Rotational Unit"@en ;
87
+ rdfs:subClassOf op:Unit ;
88
+ rdfs:comment "Units for expressing optical rotation."@en .
89
+
90
+ unit:ViscosityUnit
91
+ a owl:Class ;
92
+ rdfs:label "Viscosity Unit"@en ;
93
+ rdfs:subClassOf op:Unit ;
94
+ rdfs:comment "Units for expressing viscosity."@en .
95
+
96
+ # =============================================================================
97
+ # PROPERTIES
98
+ # =============================================================================
99
+
100
+ unit:symbol
101
+ a owl:DatatypeProperty ;
102
+ rdfs:label "symbol"@en ;
103
+ rdfs:comment "The symbol used to represent this unit."@en ;
104
+ rdfs:domain op:Unit ;
105
+ rdfs:range xsd:string .
106
+
107
+ unit:siEquivalent
108
+ a owl:DatatypeProperty ;
109
+ rdfs:label "SI equivalent"@en ;
110
+ rdfs:comment "The equivalent value in SI base units."@en ;
111
+ rdfs:domain op:Unit ;
112
+ rdfs:range xsd:string .
113
+
114
+ # =============================================================================
115
+ # CONCENTRATION UNITS
116
+ # =============================================================================
117
+
118
+ unit:percent
119
+ a unit:ConcentrationUnit ;
120
+ rdfs:label "Percent"@en ;
121
+ skos:altLabel "Percentage"@en ;
122
+ unit:symbol "%" ;
123
+ rdfs:comment "Parts per hundred (w/w, w/v, or v/v as specified)."@en .
124
+
125
+ unit:percent_w_w
126
+ a unit:ConcentrationUnit ;
127
+ rdfs:label "Percent Weight/Weight"@en ;
128
+ unit:symbol "% w/w" ;
129
+ rdfs:comment "Grams of solute per 100 grams of solution."@en .
130
+
131
+ unit:percent_w_v
132
+ a unit:ConcentrationUnit ;
133
+ rdfs:label "Percent Weight/Volume"@en ;
134
+ unit:symbol "% w/v" ;
135
+ rdfs:comment "Grams of solute per 100 milliliters of solution."@en .
136
+
137
+ unit:percent_v_v
138
+ a unit:ConcentrationUnit ;
139
+ rdfs:label "Percent Volume/Volume"@en ;
140
+ unit:symbol "% v/v" ;
141
+ rdfs:comment "Milliliters of solute per 100 milliliters of solution."@en .
142
+
143
+ unit:ppm
144
+ a unit:ConcentrationUnit ;
145
+ rdfs:label "Parts Per Million"@en ;
146
+ unit:symbol "ppm" ;
147
+ rdfs:comment "Parts per million (μg/g or mg/kg)."@en .
148
+
149
+ unit:ppb
150
+ a unit:ConcentrationUnit ;
151
+ rdfs:label "Parts Per Billion"@en ;
152
+ unit:symbol "ppb" ;
153
+ rdfs:comment "Parts per billion (ng/g or μg/kg)."@en .
154
+
155
+ unit:mg_per_g
156
+ a unit:ConcentrationUnit ;
157
+ rdfs:label "Milligrams per Gram"@en ;
158
+ unit:symbol "mg/g" ;
159
+ rdfs:comment "Milligrams of substance per gram of sample."@en .
160
+
161
+ unit:mg_per_mL
162
+ a unit:ConcentrationUnit ;
163
+ rdfs:label "Milligrams per Milliliter"@en ;
164
+ unit:symbol "mg/mL" ;
165
+ rdfs:comment "Milligrams of substance per milliliter of solution."@en .
166
+
167
+ unit:μg_per_g
168
+ a unit:ConcentrationUnit ;
169
+ rdfs:label "Micrograms per Gram"@en ;
170
+ unit:symbol "μg/g" ;
171
+ rdfs:comment "Micrograms of substance per gram of sample."@en .
172
+
173
+ unit:μg_per_mL
174
+ a unit:ConcentrationUnit ;
175
+ rdfs:label "Micrograms per Milliliter"@en ;
176
+ unit:symbol "μg/mL" ;
177
+ rdfs:comment "Micrograms of substance per milliliter of solution."@en .
178
+
179
+ unit:mol_per_L
180
+ a unit:ConcentrationUnit ;
181
+ rdfs:label "Moles per Liter"@en ;
182
+ skos:altLabel "Molar"@en ;
183
+ unit:symbol "mol/L" ;
184
+ unit:symbol "M" ;
185
+ rdfs:comment "Molar concentration."@en .
186
+
187
+ unit:mmol_per_L
188
+ a unit:ConcentrationUnit ;
189
+ rdfs:label "Millimoles per Liter"@en ;
190
+ skos:altLabel "Millimolar"@en ;
191
+ unit:symbol "mmol/L" ;
192
+ unit:symbol "mM" ;
193
+ rdfs:comment "Millimolar concentration."@en .
194
+
195
+ # =============================================================================
196
+ # MASS UNITS
197
+ # =============================================================================
198
+
199
+ unit:ng
200
+ a unit:MassUnit ;
201
+ rdfs:label "Nanogram"@en ;
202
+ unit:symbol "ng" ;
203
+ unit:siEquivalent "1e-12 kg" ;
204
+ rdfs:comment "One billionth of a gram."@en .
205
+
206
+ unit:μg
207
+ a unit:MassUnit ;
208
+ rdfs:label "Microgram"@en ;
209
+ unit:symbol "μg" ;
210
+ unit:symbol "mcg" ;
211
+ unit:siEquivalent "1e-9 kg" ;
212
+ rdfs:comment "One millionth of a gram."@en .
213
+
214
+ unit:mg
215
+ a unit:MassUnit ;
216
+ rdfs:label "Milligram"@en ;
217
+ unit:symbol "mg" ;
218
+ unit:siEquivalent "1e-6 kg" ;
219
+ rdfs:comment "One thousandth of a gram."@en .
220
+
221
+ unit:g
222
+ a unit:MassUnit ;
223
+ rdfs:label "Gram"@en ;
224
+ unit:symbol "g" ;
225
+ unit:siEquivalent "1e-3 kg" ;
226
+ rdfs:comment "Base metric unit of mass."@en .
227
+
228
+ unit:kg
229
+ a unit:MassUnit ;
230
+ rdfs:label "Kilogram"@en ;
231
+ unit:symbol "kg" ;
232
+ unit:siEquivalent "1 kg" ;
233
+ rdfs:comment "SI base unit of mass."@en .
234
+
235
+ # =============================================================================
236
+ # VOLUME UNITS
237
+ # =============================================================================
238
+
239
+ unit:μL
240
+ a unit:VolumeUnit ;
241
+ rdfs:label "Microliter"@en ;
242
+ unit:symbol "μL" ;
243
+ unit:symbol "μl" ;
244
+ unit:siEquivalent "1e-9 m³" ;
245
+ rdfs:comment "One millionth of a liter."@en .
246
+
247
+ unit:mL
248
+ a unit:VolumeUnit ;
249
+ rdfs:label "Milliliter"@en ;
250
+ unit:symbol "mL" ;
251
+ unit:symbol "ml" ;
252
+ unit:siEquivalent "1e-6 m³" ;
253
+ rdfs:comment "One thousandth of a liter."@en .
254
+
255
+ unit:L
256
+ a unit:VolumeUnit ;
257
+ rdfs:label "Liter"@en ;
258
+ unit:symbol "L" ;
259
+ unit:symbol "l" ;
260
+ unit:siEquivalent "1e-3 m³" ;
261
+ rdfs:comment "Base metric unit of volume."@en .
262
+
263
+ unit:μL_per_injection
264
+ a unit:VolumeUnit ;
265
+ rdfs:label "Microliters per Injection"@en ;
266
+ unit:symbol "μL/injection" ;
267
+ rdfs:comment "Injection volume in chromatography."@en .
268
+
269
+ # =============================================================================
270
+ # TEMPERATURE UNITS
271
+ # =============================================================================
272
+
273
+ unit:degC
274
+ a unit:TemperatureUnit ;
275
+ rdfs:label "Degree Celsius"@en ;
276
+ unit:symbol "°C" ;
277
+ rdfs:comment "Celsius temperature scale."@en .
278
+
279
+ unit:degF
280
+ a unit:TemperatureUnit ;
281
+ rdfs:label "Degree Fahrenheit"@en ;
282
+ unit:symbol "°F" ;
283
+ rdfs:comment "Fahrenheit temperature scale."@en .
284
+
285
+ unit:K
286
+ a unit:TemperatureUnit ;
287
+ rdfs:label "Kelvin"@en ;
288
+ unit:symbol "K" ;
289
+ rdfs:comment "SI base unit of thermodynamic temperature."@en .
290
+
291
+ # =============================================================================
292
+ # LENGTH UNITS
293
+ # =============================================================================
294
+
295
+ unit:nm
296
+ a unit:LengthUnit ;
297
+ rdfs:label "Nanometer"@en ;
298
+ unit:symbol "nm" ;
299
+ unit:siEquivalent "1e-9 m" ;
300
+ rdfs:comment "One billionth of a meter."@en .
301
+
302
+ unit:μm_length
303
+ a unit:LengthUnit ;
304
+ rdfs:label "Micrometer"@en ;
305
+ unit:symbol "μm" ;
306
+ unit:siEquivalent "1e-6 m" ;
307
+ rdfs:comment "One millionth of a meter."@en .
308
+
309
+ unit:mm
310
+ a unit:LengthUnit ;
311
+ rdfs:label "Millimeter"@en ;
312
+ unit:symbol "mm" ;
313
+ unit:siEquivalent "1e-3 m" ;
314
+ rdfs:comment "One thousandth of a meter."@en .
315
+
316
+ unit:cm
317
+ a unit:LengthUnit ;
318
+ rdfs:label "Centimeter"@en ;
319
+ unit:symbol "cm" ;
320
+ unit:siEquivalent "1e-2 m" ;
321
+ rdfs:comment "One hundredth of a meter."@en .
322
+
323
+ # =============================================================================
324
+ # TIME UNITS
325
+ # =============================================================================
326
+
327
+ unit:s
328
+ a unit:TimeUnit ;
329
+ rdfs:label "Second"@en ;
330
+ unit:symbol "s" ;
331
+ unit:symbol "sec" ;
332
+ rdfs:comment "SI base unit of time."@en .
333
+
334
+ unit:min
335
+ a unit:TimeUnit ;
336
+ rdfs:label "Minute"@en ;
337
+ unit:symbol "min" ;
338
+ unit:siEquivalent "60 s" ;
339
+ rdfs:comment "60 seconds."@en .
340
+
341
+ unit:h
342
+ a unit:TimeUnit ;
343
+ rdfs:label "Hour"@en ;
344
+ unit:symbol "h" ;
345
+ unit:symbol "hr" ;
346
+ unit:siEquivalent "3600 s" ;
347
+ rdfs:comment "60 minutes."@en .
348
+
349
+ # =============================================================================
350
+ # DIMENSIONLESS UNITS
351
+ # =============================================================================
352
+
353
+ unit:pH
354
+ a unit:DimensionlessUnit ;
355
+ rdfs:label "pH"@en ;
356
+ unit:symbol "pH" ;
357
+ rdfs:comment "Measure of acidity/alkalinity."@en .
358
+
359
+ unit:index
360
+ a unit:DimensionlessUnit ;
361
+ rdfs:label "Index"@en ;
362
+ unit:symbol "" ;
363
+ rdfs:comment "Dimensionless index value."@en .
364
+
365
+ unit:ratio
366
+ a unit:DimensionlessUnit ;
367
+ rdfs:label "Ratio"@en ;
368
+ unit:symbol ":" ;
369
+ rdfs:comment "Ratio of two quantities."@en .
370
+
371
+ unit:refractive_index
372
+ a unit:DimensionlessUnit ;
373
+ rdfs:label "Refractive Index"@en ;
374
+ unit:symbol "nD" ;
375
+ rdfs:comment "Refractive index (dimensionless)."@en .
376
+
377
+ unit:specific_gravity
378
+ a unit:DimensionlessUnit ;
379
+ rdfs:label "Specific Gravity"@en ;
380
+ unit:symbol "" ;
381
+ rdfs:comment "Ratio of density to water (dimensionless)."@en .
382
+
383
+ # =============================================================================
384
+ # WAVELENGTH UNITS (for UV-Vis spectroscopy)
385
+ # =============================================================================
386
+
387
+ unit:nm_wavelength
388
+ a unit:WavelengthUnit ;
389
+ rdfs:label "Nanometer Wavelength"@en ;
390
+ unit:symbol "nm" ;
391
+ rdfs:comment "Wavelength in nanometers (UV-Vis spectroscopy)."@en .
392
+
393
+ unit:μm_wavelength
394
+ a unit:WavelengthUnit ;
395
+ rdfs:label "Micrometer Wavelength"@en ;
396
+ unit:symbol "μm" ;
397
+ rdfs:comment "Wavelength in micrometers (IR spectroscopy)."@en .
398
+
399
+ # =============================================================================
400
+ # WAVE NUMBER UNITS (for IR spectroscopy)
401
+ # =============================================================================
402
+
403
+ unit:cm_minus_1
404
+ a unit:WaveNumberUnit ;
405
+ rdfs:label "Reciprocal Centimeter"@en ;
406
+ unit:symbol "cm⁻¹" ;
407
+ unit:symbol "cm-1" ;
408
+ rdfs:comment "Wave number in reciprocal centimeters (IR spectroscopy)."@en .
409
+
410
+ # =============================================================================
411
+ # PRESSURE UNITS
412
+ # =============================================================================
413
+
414
+ unit:kPa
415
+ a unit:PressureUnit ;
416
+ rdfs:label "Kilopascal"@en ;
417
+ unit:symbol "kPa" ;
418
+ unit:siEquivalent "1000 Pa" ;
419
+ rdfs:comment "Pressure in kilopascals."@en .
420
+
421
+ unit:MPa
422
+ a unit:PressureUnit ;
423
+ rdfs:label "Megapascal"@en ;
424
+ unit:symbol "MPa" ;
425
+ unit:siEquivalent "1e6 Pa" ;
426
+ rdfs:comment "Pressure in megapascals."@en .
427
+
428
+ unit:bar
429
+ a unit:PressureUnit ;
430
+ rdfs:label "Bar"@en ;
431
+ unit:symbol "bar" ;
432
+ unit:siEquivalent "100 kPa" ;
433
+ rdfs:comment "Pressure in bars."@en .
434
+
435
+ unit:psi
436
+ a unit:PressureUnit ;
437
+ rdfs:label "Pounds per Square Inch"@en ;
438
+ unit:symbol "psi" ;
439
+ unit:siEquivalent "6.895 kPa" ;
440
+ rdfs:comment "Pressure in pounds per square inch."@en .
441
+
442
+ unit:mmHg
443
+ a unit:PressureUnit ;
444
+ rdfs:label "Millimeters of Mercury"@en ;
445
+ unit:symbol "mmHg" ;
446
+ rdfs:comment "Pressure in millimeters of mercury (torr)."@en .
447
+
448
+ # =============================================================================
449
+ # ROTATIONAL UNITS (optical rotation)
450
+ # =============================================================================
451
+
452
+ unit:deg_rotation
453
+ a unit:RotationalUnit ;
454
+ rdfs:label "Degree of Rotation"@en ;
455
+ unit:symbol "°" ;
456
+ rdfs:comment "Angular degrees for optical rotation."@en .
457
+
458
+ unit:deg_per_dm_per_g_per_mL
459
+ a unit:RotationalUnit ;
460
+ rdfs:label "Specific Rotation"@en ;
461
+ unit:symbol "[α]D" ;
462
+ rdfs:comment "Specific optical rotation (degrees per decimeter per g/mL)."@en .
463
+
464
+ # =============================================================================
465
+ # VISCOSITY UNITS
466
+ # =============================================================================
467
+
468
+ unit:mPa_s
469
+ a unit:ViscosityUnit ;
470
+ rdfs:label "Millipascal-Second"@en ;
471
+ unit:symbol "mPa·s" ;
472
+ unit:siEquivalent "1e-3 Pa·s" ;
473
+ rdfs:comment "Dynamic viscosity in millipascal-seconds."@en .
474
+
475
+ unit:cP
476
+ a unit:ViscosityUnit ;
477
+ rdfs:label "Centipoise"@en ;
478
+ unit:symbol "cP" ;
479
+ unit:siEquivalent "1 mPa·s" ;
480
+ rdfs:comment "Dynamic viscosity in centipoise."@en .
481
+
482
+ unit:mm2_per_s
483
+ a unit:ViscosityUnit ;
484
+ rdfs:label "Square Millimeter per Second"@en ;
485
+ unit:symbol "mm²/s" ;
486
+ rdfs:comment "Kinematic viscosity."@en .
487
+
488
+ unit:cSt
489
+ a unit:ViscosityUnit ;
490
+ rdfs:label "Centistoke"@en ;
491
+ unit:symbol "cSt" ;
492
+ unit:siEquivalent "1 mm²/s" ;
493
+ rdfs:comment "Kinematic viscosity in centistokes."@en .
@@ -0,0 +1,186 @@
1
+ # Open Pharmacopoeia - Chinese Pharmacopoeia (ChP) Extensions
2
+ #
3
+ # Defines extensions specific to the Chinese Pharmacopoeia, including
4
+ # publisher identity, type-specific monograph subclasses, and properties
5
+ # for ChP network-edition API fields.
6
+ #
7
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
8
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
10
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
11
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
12
+ @prefix op: <https://www.openphar.org/ontology/core/> .
13
+ @prefix chp: <https://www.openphar.org/ontology/publisher/chp/> .
14
+
15
+ <https://www.openphar.org/ontology/publisher/chp/>
16
+ a owl:Ontology ;
17
+ rdfs:label "Chinese Pharmacopoeia Extensions"@en ;
18
+ rdfs:comment "Ontology extensions specific to the Chinese Pharmacopoeia (ChP), 2020 and 2025 network editions."@en ;
19
+ owl:imports <https://www.openphar.org/ontology/core/> .
20
+
21
+ # =============================================================================
22
+ # PUBLISHER
23
+ # =============================================================================
24
+
25
+ <https://www.openphar.org/data/publisher/chp>
26
+ a op:Publisher ;
27
+ op:publisherCode "ChP" ;
28
+ rdfs:label "Chinese Pharmacopoeia Commission"@en,
29
+ "国家药典委员会"@zh ;
30
+ rdfs:seeAlso <https://www.chp.org.cn/> .
31
+
32
+ # =============================================================================
33
+ # CHP-SPECIFIC MONOGRAPH CLASSES
34
+ # Each subclasses the appropriate harmonized type so SPARQL consumers can
35
+ # query by either the ChP-specific or the harmonized type.
36
+ # =============================================================================
37
+
38
+ chp:Monograph
39
+ a owl:Class ;
40
+ rdfs:label "ChP Monograph (base)"@en ;
41
+ rdfs:comment "Base class for all Chinese Pharmacopoeia monographs. Carries ChP-specific identity (entryId, bookId, pageNum, etc.)."@en ;
42
+ rdfs:subClassOf op:Monograph .
43
+
44
+ chp:TcmCrudeDrug
45
+ a owl:Class ;
46
+ rdfs:label "ChP TCM Crude Drug"@en ;
47
+ rdfs:comment "TCM crude drug or decoction piece (药材和饮片), Vol I."@en ;
48
+ rdfs:subClassOf chp:Monograph, op:CrudeDrugMonograph .
49
+
50
+ chp:TcmExtract
51
+ a owl:Class ;
52
+ rdfs:label "ChP TCM Extract"@en ;
53
+ rdfs:comment "Processed plant extract or fixed oil (植物油脂和提取物), Vol I."@en ;
54
+ rdfs:subClassOf chp:Monograph, op:CrudeDrugMonograph .
55
+
56
+ chp:TcmFormulation
57
+ a owl:Class ;
58
+ rdfs:label "ChP TCM Formulation"@en ;
59
+ rdfs:comment "Classical TCM formula or single-herb preparation (成方制剂和单味制剂), Vol I."@en ;
60
+ rdfs:subClassOf chp:Monograph, op:FormulationMonograph .
61
+
62
+ chp:ChemicalSubstance
63
+ a owl:Class ;
64
+ rdfs:label "ChP Chemical Substance"@en ;
65
+ rdfs:comment "Chemical drug substance (品种正文 第一部分), Vol II."@en ;
66
+ rdfs:subClassOf chp:Monograph, op:ChemicalDrugMonograph .
67
+
68
+ chp:ChemicalPreparation
69
+ a owl:Class ;
70
+ rdfs:label "ChP Chemical Preparation"@en ;
71
+ rdfs:comment "Finished chemical drug product (品种正文 第二部分), Vol II."@en ;
72
+ rdfs:subClassOf chp:Monograph, op:FormulationMonograph .
73
+
74
+ chp:Biologic
75
+ a owl:Class ;
76
+ rdfs:label "ChP Biologic"@en ;
77
+ rdfs:comment "Biological product (生物制品), Vol III."@en ;
78
+ rdfs:subClassOf chp:Monograph, op:BiologicalSubstanceMonograph .
79
+
80
+ chp:GeneralChapter
81
+ a owl:Class ;
82
+ rdfs:label "ChP General Chapter"@en ;
83
+ rdfs:comment "General notice, general chapter, or guiding principle (通则 / 制剂通则 / 凡例 / 指导原则), Vol IV."@en ;
84
+ rdfs:subClassOf chp:Monograph .
85
+
86
+ # =============================================================================
87
+ # CHP-SPECIFIC DATATYPE PROPERTIES
88
+ # =============================================================================
89
+
90
+ chp:entryId
91
+ a owl:DatatypeProperty ;
92
+ rdfs:label "ChP entry ID"@en ;
93
+ rdfs:comment "Sequential identifier of the entry in the ChP network-edition API."@en ;
94
+ rdfs:domain chp:Monograph ;
95
+ rdfs:range xsd:integer .
96
+
97
+ chp:bookId
98
+ a owl:DatatypeProperty ;
99
+ rdfs:label "ChP book ID"@en ;
100
+ rdfs:comment "ChP volume number (1..4: 一部 / 二部 / 三部 / 四部)."@en ;
101
+ rdfs:domain chp:Monograph ;
102
+ rdfs:range xsd:integer .
103
+
104
+ chp:bookName
105
+ a owl:DatatypeProperty ;
106
+ rdfs:label "ChP book name"@en ;
107
+ rdfs:comment "Display name of the ChP volume."@en ;
108
+ rdfs:domain chp:Monograph ;
109
+ rdfs:range xsd:string .
110
+
111
+ chp:directoryId
112
+ a owl:DatatypeProperty ;
113
+ rdfs:label "ChP directory ID"@en ;
114
+ rdfs:comment "Identifier of the parent TOC node in the ChP network-edition API."@en ;
115
+ rdfs:domain chp:Monograph ;
116
+ rdfs:range xsd:integer .
117
+
118
+ chp:directoryTitle
119
+ a owl:DatatypeProperty ;
120
+ rdfs:label "ChP directory title"@en ;
121
+ rdfs:comment "Display name of the parent TOC section (e.g., 药材和饮片)."@en ;
122
+ rdfs:domain chp:Monograph ;
123
+ rdfs:range xsd:string .
124
+
125
+ chp:pinyinTitle
126
+ a owl:DatatypeProperty ;
127
+ rdfs:label "ChP pinyin title"@en ;
128
+ rdfs:comment "Pinyin rendering of the Chinese title."@en ;
129
+ rdfs:domain chp:Monograph ;
130
+ rdfs:range xsd:string .
131
+
132
+ chp:eTitle
133
+ a owl:DatatypeProperty ;
134
+ rdfs:label "ChP Latin/English title"@en ;
135
+ rdfs:comment "Latin botanical/zoological name (Vol I) or English name (Vol II–IV)."@en ;
136
+ rdfs:domain chp:Monograph ;
137
+ rdfs:range xsd:string .
138
+
139
+ chp:pageNum
140
+ a owl:DatatypeProperty ;
141
+ rdfs:label "ChP printed-edition page number"@en ;
142
+ rdfs:comment "Page reference in the corresponding printed ChP edition."@en ;
143
+ rdfs:domain chp:Monograph ;
144
+ rdfs:range xsd:integer .
145
+
146
+ chp:htmlContent
147
+ a owl:DatatypeProperty ;
148
+ rdfs:label "ChP HTML content"@en ;
149
+ rdfs:comment "Raw HTML body of the monograph as served by the network-edition API."@en ;
150
+ rdfs:domain chp:Monograph ;
151
+ rdfs:range xsd:string .
152
+
153
+ chp:partTitle
154
+ a owl:DatatypeProperty ;
155
+ rdfs:label "ChP part titles"@en ;
156
+ rdfs:comment "Ordered list of section names (e.g., 性状, 鉴别, 检查)."@en ;
157
+ rdfs:domain chp:Monograph ;
158
+ rdfs:range xsd:string .
159
+
160
+ chp:visitCount
161
+ a owl:DatatypeProperty ;
162
+ rdfs:label "ChP visit count"@en ;
163
+ rdfs:comment "Page-view counter from the network-edition API."@en ;
164
+ rdfs:domain chp:Monograph ;
165
+ rdfs:range xsd:integer .
166
+
167
+ # =============================================================================
168
+ # CHP EDITIONS
169
+ # =============================================================================
170
+
171
+ <https://www.openphar.org/data/edition/chp-2025>
172
+ a op:Edition ;
173
+ op:publisherCode "ChP" ;
174
+ op:editionNumber "2025" ;
175
+ op:editionLabel "Chinese Pharmacopoeia 2025 edition (12th)"@en,
176
+ "中华人民共和国药典 2025年版"@zh ;
177
+ op:effectiveDate "2025-10-01"^^xsd:date ;
178
+ rdfs:seeAlso <https://2025.chp.org.cn/> .
179
+
180
+ <https://www.openphar.org/data/edition/chp-2020>
181
+ a op:Edition ;
182
+ op:publisherCode "ChP" ;
183
+ op:editionNumber "2020" ;
184
+ op:editionLabel "Chinese Pharmacopoeia 2020 edition (11th)"@en,
185
+ "中华人民共和国药典 2020年版"@zh ;
186
+ rdfs:seeAlso <https://ydz.chp.org.cn/> .