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,3427 @@
1
+ # Open Pharmacopoeia Core Ontology - Pharmacopoeia Classes
2
+ #
3
+ # This ontology defines the core classes and properties for representing
4
+ # pharmacopoeia monographs, test specifications, and harmonized methods.
5
+ #
6
+ # Namespace: https://www.openphar.org/ontology/core/
7
+ # Prefix: op
8
+ #
9
+ # Integration with data-herbapedia:
10
+ # - HerbalPreparation: https://www.herbapedia.org/entity/preparation/{slug}
11
+ # - TCMProfile: https://www.herbapedia.org/system/tcm/profile/{slug}
12
+ # - AyurvedaProfile: https://www.herbapedia.org/system/ayurveda/dravya/{slug}
13
+ # - WesternProfile: https://www.herbapedia.org/system/western/profile/{slug}
14
+
15
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
16
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
17
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
18
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
19
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
20
+ @prefix dct: <http://purl.org/dc/terms/> .
21
+ @prefix op: <https://www.openphar.org/ontology/core/> .
22
+ @prefix herbapedia: <https://www.herbapedia.org/entity/> .
23
+
24
+ # =============================================================================
25
+ # ONTOLOGY METADATA
26
+ # =============================================================================
27
+
28
+ <https://www.openphar.org/ontology/core>
29
+ a owl:Ontology ;
30
+ rdfs:label "Open Pharmacopoeia Core Ontology"@en ;
31
+ rdfs:comment """
32
+ Core ontology for pharmacopoeia monographs and quality specifications.
33
+ This ontology is designed to integrate with data-herbapedia for botanical
34
+ and medicine system data, while open-pharmacopoeia focuses on quality
35
+ standards, test specifications, and cross-publisher harmonization.
36
+ """@en ;
37
+ dct:version "1.0.0" ;
38
+ dct:created "2026-02-23"^^xsd:date ;
39
+ owl:imports <http://www.w3.org/2004/02/skos/core> .
40
+
41
+ # =============================================================================
42
+ # CLASS HIERARCHY (MECE - Mutually Exclusive, Collectively Exhaustive)
43
+ # =============================================================================
44
+
45
+ # -----------------------------------------------------------------------------
46
+ # Core Classes
47
+ # -----------------------------------------------------------------------------
48
+
49
+ op:PharmacopoeiaMonograph
50
+ a owl:Class ;
51
+ rdfs:label "Pharmacopoeia Monograph"@en ;
52
+ rdfs:comment """
53
+ A pharmacopoeia monograph defines the quality standards for a medicinal
54
+ substance as published by an official pharmacopoeia publisher.
55
+
56
+ The monograph links to data-herbapedia for botanical and medicine system
57
+ data via referencesPreparation, referencesTCMProfile, etc.
58
+ """@en ;
59
+ rdfs:subClassOf [
60
+ a owl:Restriction ;
61
+ owl:onProperty op:publisher ;
62
+ owl:cardinality 1
63
+ ] , [
64
+ a owl:Restriction ;
65
+ owl:onProperty op:monographId ;
66
+ owl:cardinality 1
67
+ ] , [
68
+ a owl:Restriction ;
69
+ owl:onProperty skos:prefLabel ;
70
+ owl:minCardinality 1
71
+ ] .
72
+
73
+ op:CrudeDrugMonograph
74
+ a owl:Class ;
75
+ rdfs:label "Crude Drug Monograph"@en ;
76
+ rdfs:comment """
77
+ A pharmacopoeia monograph specifically for crude drugs (herbal medicines).
78
+ Extends the base PharmacopoeiaMonograph with botanical source information,
79
+ macroscopic and microscopic descriptions.
80
+ """@en ;
81
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
82
+ rdfs:subClassOf [
83
+ a owl:Restriction ;
84
+ owl:onProperty op:botanicalSource ;
85
+ owl:minCardinality 1
86
+ ] .
87
+
88
+ # -----------------------------------------------------------------------------
89
+ # Additional Herbal Preparation Types (from data-japan-pharmacopia)
90
+ # -----------------------------------------------------------------------------
91
+
92
+ op:PowderedCrudeDrug
93
+ a owl:Class ;
94
+ rdfs:label "Powdered Crude Drug"@en ;
95
+ rdfs:comment """
96
+ A powdered form of a crude drug. The crude drug has been processed
97
+ into a fine powder while maintaining its identity and properties.
98
+ """@en ;
99
+ rdfs:subClassOf op:CrudeDrugMonograph .
100
+
101
+ op:Extract
102
+ a owl:Class ;
103
+ rdfs:label "Extract"@en ;
104
+ rdfs:comment """
105
+ A preparation made by extracting medicinal components from crude drugs
106
+ using appropriate solvents (water, ethanol, etc.). Includes Kampo/TCM
107
+ formulations with multiple ingredients.
108
+ """@en ;
109
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
110
+ rdfs:subClassOf [
111
+ a owl:Restriction ;
112
+ owl:onProperty op:hasIngredient ;
113
+ owl:minCardinality 1
114
+ ] .
115
+
116
+ op:Tincture
117
+ a owl:Class ;
118
+ rdfs:label "Tincture"@en ;
119
+ rdfs:comment """
120
+ An alcoholic or hydroalcoholic solution of medicinal substances.
121
+ Typically prepared by macerating or percolating crude drugs in ethanol.
122
+ """@en ;
123
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
124
+ rdfs:subClassOf [
125
+ a owl:Restriction ;
126
+ owl:onProperty op:ethanolContent ;
127
+ owl:minCardinality 1
128
+ ] .
129
+
130
+ op:EssentialOil
131
+ a owl:Class ;
132
+ rdfs:label "Essential Oil"@en ;
133
+ rdfs:comment """
134
+ A volatile oil extracted from plants, typically by steam distillation
135
+ or hydrodistillation. Contains the volatile aromatic compounds of the plant.
136
+ """@en ;
137
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
138
+ rdfs:subClassOf [
139
+ a owl:Restriction ;
140
+ owl:onProperty op:volatileContent ;
141
+ owl:minCardinality 1
142
+ ] .
143
+
144
+ op:FixedOil
145
+ a owl:Class ;
146
+ rdfs:label "Fixed Oil"@en ;
147
+ rdfs:comment """
148
+ A non-volatile fatty oil obtained from plants or animals.
149
+ Unlike essential oils, fixed oils are composed of glycerides of fatty acids.
150
+ """@en ;
151
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
152
+ rdfs:subClassOf [
153
+ a owl:Restriction ;
154
+ owl:onProperty op:acidValue ;
155
+ owl:minCardinality 1
156
+ ] .
157
+
158
+ op:MedicinalWater
159
+ a owl:Class ;
160
+ rdfs:label "Medicinal Water"@en ;
161
+ rdfs:comment """
162
+ An aqueous preparation containing dissolved medicinal substances.
163
+ Typically prepared by dissolving or extracting medicinal components in water.
164
+ """@en ;
165
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
166
+ rdfs:subClassOf [
167
+ a owl:Restriction ;
168
+ owl:onProperty op:soluteConcentration ;
169
+ owl:minCardinality 1
170
+ ] .
171
+
172
+ op:Wax
173
+ a owl:Class ;
174
+ rdfs:label "Wax"@en ;
175
+ rdfs:comment """
176
+ A natural wax derived from plants or animals. Used in pharmaceutical
177
+ preparations as an emulsifying agent, stiffening agent, or base.
178
+ """@en ;
179
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
180
+ rdfs:subClassOf [
181
+ a owl:Restriction ;
182
+ owl:onProperty op:meltingPoint ;
183
+ owl:minCardinality 1
184
+ ] .
185
+
186
+ op:Spirit
187
+ a owl:Class ;
188
+ rdfs:label "Spirit"@en ;
189
+ rdfs:comment """
190
+ A high-alcohol medicinal preparation. Typically an alcoholic or
191
+ hydroalcoholic solution containing volatile medicinal substances.
192
+ """@en ;
193
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
194
+ rdfs:subClassOf [
195
+ a owl:Restriction ;
196
+ owl:onProperty op:ethanolContent ;
197
+ owl:minCardinality 1
198
+ ] .
199
+
200
+ op:Fluidextract
201
+ a owl:Class ;
202
+ rdfs:label "Fluidextract"@en ;
203
+ rdfs:comment """
204
+ A concentrated liquid extract prepared at a 1:1 ratio of crude drug
205
+ to finished product. Each mL represents 1 g of the crude drug.
206
+ """@en ;
207
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
208
+ rdfs:subClassOf [
209
+ a owl:Restriction ;
210
+ owl:onProperty op:extractionRatio ;
211
+ owl:minCardinality 1
212
+ ] .
213
+
214
+ # -----------------------------------------------------------------------------
215
+ # Chemical Drug Classes (MECE - for chemical drugs, vitamins, amino acids)
216
+ # -----------------------------------------------------------------------------
217
+
218
+ op:ChemicalDrugMonograph
219
+ a owl:Class ;
220
+ rdfs:label "Chemical Drug Monograph"@en ;
221
+ rdfs:comment """
222
+ A pharmacopoeia monograph for chemical substances including:
223
+ - Synthetic drugs (acetaminophen, ibuprofen)
224
+ - Isolated natural compounds (morphine, quinine)
225
+ - Inorganic compounds (sodium chloride, calcium carbonate)
226
+ - Vitamins (ascorbic acid, calciferol)
227
+ - Amino acids (lysine, tryptophan)
228
+ """@en ;
229
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
230
+ rdfs:subClassOf [
231
+ a owl:Restriction ;
232
+ owl:onProperty op:molecularFormula ;
233
+ owl:minCardinality 1
234
+ ] , [
235
+ a owl:Restriction ;
236
+ owl:onProperty op:molecularWeight ;
237
+ owl:minCardinality 1
238
+ ] , [
239
+ a owl:Restriction ;
240
+ owl:onProperty op:casNumber ;
241
+ owl:minCardinality 1
242
+ ] .
243
+
244
+ op:VitaminMonograph
245
+ a owl:Class ;
246
+ rdfs:label "Vitamin Monograph"@en ;
247
+ rdfs:comment """
248
+ A pharmacopoeia monograph specifically for vitamins.
249
+ Vitamins are nutritional molecular entities essential for health.
250
+ """@en ;
251
+ rdfs:subClassOf op:ChemicalDrugMonograph .
252
+
253
+ op:AminoAcidMonograph
254
+ a owl:Class ;
255
+ rdfs:label "Amino Acid Monograph"@en ;
256
+ rdfs:comment """
257
+ A pharmacopoeia monograph specifically for amino acids.
258
+ Includes essential and non-essential amino acids.
259
+ """@en ;
260
+ rdfs:subClassOf op:ChemicalDrugMonograph .
261
+
262
+ # -----------------------------------------------------------------------------
263
+ # Mineral Substance Classes (MECE - for minerals)
264
+ # -----------------------------------------------------------------------------
265
+
266
+ op:MineralSubstanceMonograph
267
+ a owl:Class ;
268
+ rdfs:label "Mineral Substance Monograph"@en ;
269
+ rdfs:comment """
270
+ A pharmacopoeia monograph for substances of geological origin:
271
+ - Simple minerals (zinc oxide, sulfur)
272
+ - Mineral mixtures (kaolin, bentonite)
273
+ """@en ;
274
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
275
+ rdfs:subClassOf [
276
+ a owl:Restriction ;
277
+ owl:onProperty op:elementalComposition ;
278
+ owl:minCardinality 1
279
+ ] .
280
+
281
+ # -----------------------------------------------------------------------------
282
+ # Biological Substance Classes (MECE - for complex natural substances)
283
+ # -----------------------------------------------------------------------------
284
+
285
+ op:BiologicalSubstanceMonograph
286
+ a owl:Class ;
287
+ rdfs:label "Biological Substance Monograph"@en ;
288
+ rdfs:comment """
289
+ A pharmacopoeia monograph for substances of biological origin:
290
+ - Enzyme preparations (pepsin, pancreatin)
291
+ - Hormone preparations (insulin, heparin)
292
+ - Blood products (albumin, immunoglobulins)
293
+ """@en ;
294
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
295
+ rdfs:subClassOf [
296
+ a owl:Restriction ;
297
+ owl:onProperty op:biologicalOrigin ;
298
+ owl:minCardinality 1
299
+ ] .
300
+
301
+ op:EnzymePreparationMonograph
302
+ a owl:Class ;
303
+ rdfs:label "Enzyme Preparation Monograph"@en ;
304
+ rdfs:comment """
305
+ A pharmacopoeia monograph specifically for enzyme preparations.
306
+ """@en ;
307
+ rdfs:subClassOf op:BiologicalSubstanceMonograph .
308
+
309
+ op:HormonePreparationMonograph
310
+ a owl:Class ;
311
+ rdfs:label "Hormone Preparation Monograph"@en ;
312
+ rdfs:comment """
313
+ A pharmacopoeia monograph specifically for hormone preparations.
314
+ """@en ;
315
+ rdfs:subClassOf op:BiologicalSubstanceMonograph .
316
+
317
+ # -----------------------------------------------------------------------------
318
+ # Formulation Classes (MECE - for combined substances)
319
+ # -----------------------------------------------------------------------------
320
+
321
+ op:FormulationMonograph
322
+ a owl:Class ;
323
+ rdfs:label "Formulation Monograph"@en ;
324
+ rdfs:comment """
325
+ A pharmacopoeia monograph for formulated products containing
326
+ one or more active ingredients:
327
+ - Single-component formulations (single drug tablets)
328
+ - Multi-component formulations (compound medicines)
329
+ """@en ;
330
+ rdfs:subClassOf op:PharmacopoeiaMonograph ;
331
+ rdfs:subClassOf [
332
+ a owl:Restriction ;
333
+ owl:onProperty op:hasComponent ;
334
+ owl:minCardinality 1
335
+ ] , [
336
+ a owl:Restriction ;
337
+ owl:onProperty op:dosageForm ;
338
+ owl:minCardinality 1
339
+ ] .
340
+
341
+ op:FormulationComponent
342
+ a owl:Class ;
343
+ rdfs:label "Formulation Component"@en ;
344
+ rdfs:comment """
345
+ A component of a formulation, either active or inactive.
346
+ """@en ;
347
+ rdfs:subClassOf [
348
+ a owl:Restriction ;
349
+ owl:onProperty op:componentRole ;
350
+ owl:cardinality 1
351
+ ] .
352
+
353
+ # -----------------------------------------------------------------------------
354
+ # Publisher and Status Classes
355
+ # -----------------------------------------------------------------------------
356
+
357
+ op:Publisher
358
+ a owl:Class ;
359
+ rdfs:label "Publisher"@en ;
360
+ rdfs:comment """
361
+ An official pharmacopoeia publisher. Publishers are enumerated as
362
+ individuals (e.g., op:JP, op:HKCMMS, op:API).
363
+ """@en ;
364
+ owl:equivalentClass [
365
+ a owl:Class ;
366
+ owl:oneOf (
367
+ op:AHP op:API op:JP op:HKCMMS op:THP
368
+ op:CMHerbarium op:WHO op:UPB op:UPI op:APB op:APS
369
+ )
370
+ ] .
371
+
372
+ op:MonographStatus
373
+ a owl:Class ;
374
+ rdfs:label "Monograph Status"@en ;
375
+ rdfs:comment "The publication status of a pharmacopoeia monograph."@en ;
376
+ owl:equivalentClass [
377
+ a owl:Class ;
378
+ owl:oneOf ( op:Official op:Withdrawn op:Draft op:Revised )
379
+ ] .
380
+
381
+ # -----------------------------------------------------------------------------
382
+ # Test Specification Classes (VALUE OBJECTS - no independent identity)
383
+ # -----------------------------------------------------------------------------
384
+
385
+ op:TestSpecification
386
+ a owl:Class ;
387
+ rdfs:label "Test Specification"@en ;
388
+ rdfs:comment """
389
+ A specification for a quality test to be performed on a medicinal substance.
390
+ This is a value object that belongs to a PharmacopoeiaMonograph.
391
+ """@en ;
392
+ rdfs:subClassOf [
393
+ a owl:Restriction ;
394
+ owl:onProperty op:testName ;
395
+ owl:cardinality 1
396
+ ] , [
397
+ a owl:Restriction ;
398
+ owl:onProperty op:testType ;
399
+ owl:cardinality 1
400
+ ] .
401
+
402
+ op:AssaySpecification
403
+ a owl:Class ;
404
+ rdfs:label "Assay Specification"@en ;
405
+ rdfs:comment """
406
+ A specification for quantitative analysis of a specific compound or
407
+ compound class (e.g., ginsenosides assay, volatile oil content).
408
+ """@en ;
409
+ rdfs:subClassOf op:TestSpecification ;
410
+ rdfs:subClassOf [
411
+ a owl:Restriction ;
412
+ owl:onProperty op:assayTarget ;
413
+ owl:cardinality 1
414
+ ] , [
415
+ a owl:Restriction ;
416
+ owl:onProperty op:limit ;
417
+ owl:minCardinality 1
418
+ ] .
419
+
420
+ op:PuritySpecification
421
+ a owl:Class ;
422
+ rdfs:label "Purity Specification"@en ;
423
+ rdfs:comment """
424
+ A specification for impurity limits (e.g., heavy metals, pesticide
425
+ residues, related substances).
426
+ """@en ;
427
+ rdfs:subClassOf op:TestSpecification ;
428
+ rdfs:subClassOf [
429
+ a owl:Restriction ;
430
+ owl:onProperty op:impurityType ;
431
+ owl:cardinality 1
432
+ ] .
433
+
434
+ op:IdentificationSpecification
435
+ a owl:Class ;
436
+ rdfs:label "Identification Specification"@en ;
437
+ rdfs:comment """
438
+ A specification for identity confirmation tests (e.g., TLC, UV spectrum,
439
+ chemical reactions).
440
+ """@en ;
441
+ rdfs:subClassOf op:TestSpecification .
442
+
443
+ op:PhysicalSpecification
444
+ a owl:Class ;
445
+ rdfs:label "Physical Specification"@en ;
446
+ rdfs:comment """
447
+ A specification for physical property tests (e.g., loss on drying,
448
+ residue on ignition, water content).
449
+ """@en ;
450
+ rdfs:subClassOf op:TestSpecification ;
451
+ rdfs:subClassOf [
452
+ a owl:Restriction ;
453
+ owl:onProperty op:physicalProperty ;
454
+ owl:cardinality 1
455
+ ] .
456
+
457
+ op:MicrobiologicalSpecification
458
+ a owl:Class ;
459
+ rdfs:label "Microbiological Specification"@en ;
460
+ rdfs:comment """
461
+ A specification for microbial limit tests (e.g., total aerobic count,
462
+ absence of specific pathogens).
463
+ """@en ;
464
+ rdfs:subClassOf op:TestSpecification .
465
+
466
+ # -----------------------------------------------------------------------------
467
+ # Test Method Classes (ENTITIES - have independent identity)
468
+ # -----------------------------------------------------------------------------
469
+
470
+ op:HarmonizedMethod
471
+ a owl:Class ;
472
+ rdfs:label "Harmonized Method"@en ;
473
+ rdfs:comment """
474
+ A harmonized test method that is equivalent across multiple publishers.
475
+ This enables cross-publisher comparison of test results.
476
+ """@en ;
477
+ rdfs:subClassOf [
478
+ a owl:Restriction ;
479
+ owl:onProperty skos:prefLabel ;
480
+ owl:cardinality 1
481
+ ] .
482
+
483
+ op:PublisherMethod
484
+ a owl:Class ;
485
+ rdfs:label "Publisher Method"@en ;
486
+ rdfs:comment """
487
+ A publisher-specific test method reference (e.g., JP General Tests,
488
+ API Appendix). These can be mapped to HarmonizedMethods.
489
+ """@en .
490
+
491
+ # -----------------------------------------------------------------------------
492
+ # Value Classes
493
+ # -----------------------------------------------------------------------------
494
+
495
+ op:Limit
496
+ a owl:Class ;
497
+ rdfs:label "Limit"@en ;
498
+ rdfs:comment """
499
+ A value object representing a quantitative limit (minimum, maximum,
500
+ or range).
501
+ """@en ;
502
+ rdfs:subClassOf [
503
+ a owl:Restriction ;
504
+ owl:onProperty op:limitType ;
505
+ owl:cardinality 1
506
+ ] .
507
+
508
+ op:TestType
509
+ a owl:Class ;
510
+ rdfs:label "Test Type"@en ;
511
+ rdfs:comment """
512
+ The type of test being specified. This is an enumeration of all
513
+ possible test types.
514
+ """@en ;
515
+ owl:equivalentClass [
516
+ a owl:Class ;
517
+ owl:oneOf (
518
+ op:TestType-Assay
519
+ op:TestType-Purity
520
+ op:TestType-Identification
521
+ op:TestType-Physical
522
+ op:TestType-Microbiological
523
+ op:TestType-ForeignMatter
524
+ op:TestType-Extractive
525
+ )
526
+ ] .
527
+
528
+ op:LimitType
529
+ a owl:Class ;
530
+ rdfs:label "Limit Type"@en ;
531
+ rdfs:comment """
532
+ The type of quantitative limit.
533
+ """@en ;
534
+ owl:equivalentClass [
535
+ a owl:Class ;
536
+ owl:oneOf (
537
+ op:LimitType-Minimum
538
+ op:LimitType-Maximum
539
+ op:LimitType-Range
540
+ op:LimitType-Exact
541
+ op:LimitType-NotMoreThan
542
+ op:LimitType-NotLessThan
543
+ )
544
+ ] .
545
+
546
+ op:Unit
547
+ a owl:Class ;
548
+ rdfs:label "Unit of Measurement"@en ;
549
+ rdfs:comment """
550
+ A unit of measurement for quantitative values.
551
+ """@en .
552
+
553
+ # -----------------------------------------------------------------------------
554
+ # Crude Drug Specific Classes
555
+ # -----------------------------------------------------------------------------
556
+
557
+ op:BotanicalSource
558
+ a owl:Class ;
559
+ rdfs:label "Botanical Source"@en ;
560
+ rdfs:comment """
561
+ Information about the botanical origin of a crude drug.
562
+ Links to data-herbapedia PlantSpecies via referencesPlantSpecies.
563
+ """@en .
564
+
565
+ op:MacroscopicDescription
566
+ a owl:Class ;
567
+ rdfs:label "Macroscopic Description"@en ;
568
+ rdfs:comment """
569
+ Visual and organoleptic characteristics of a crude drug that can be
570
+ observed without magnification (color, shape, texture, odor, taste).
571
+ """@en .
572
+
573
+ op:MicroscopicDescription
574
+ a owl:Class ;
575
+ rdfs:label "Microscopic Description"@en ;
576
+ rdfs:comment """
577
+ Characteristics of a crude drug observable under magnification
578
+ (cell types, tissue structures, diagnostic features).
579
+ """@en .
580
+
581
+ # -----------------------------------------------------------------------------
582
+ # Test Classes (from data-japan-pharmacopia for superset compatibility)
583
+ # -----------------------------------------------------------------------------
584
+
585
+ op:Test
586
+ a owl:Class ;
587
+ rdfs:label "Test"@en ;
588
+ rdfs:comment """
589
+ Abstract base class for all analytical tests specified in the pharmacopoeia.
590
+ This class hierarchy provides an alternative to TestSpecification for
591
+ representing tests as independent entities rather than value objects.
592
+ """@en ;
593
+ rdfs:subClassOf [
594
+ a owl:Restriction ;
595
+ owl:onProperty op:testName ;
596
+ owl:minCardinality 1
597
+ ] .
598
+
599
+ op:IdentificationTest
600
+ a owl:Class ;
601
+ rdfs:label "Identification Test"@en ;
602
+ rdfs:comment """
603
+ A test to confirm the identity of a drug substance through chemical,
604
+ physical, or chromatographic methods (e.g., TLC, UV spectrum, IR spectrum).
605
+ """@en ;
606
+ rdfs:subClassOf op:Test .
607
+
608
+ op:PurityTest
609
+ a owl:Class ;
610
+ rdfs:label "Purity Test"@en ;
611
+ rdfs:comment """
612
+ A test to detect or limit impurities in a drug substance
613
+ (e.g., heavy metals, pesticide residues, related substances).
614
+ """@en ;
615
+ rdfs:subClassOf op:Test .
616
+
617
+ op:LimitTest
618
+ a owl:Class ;
619
+ rdfs:label "Limit Test"@en ;
620
+ rdfs:comment """
621
+ A test for quality parameters with specified limits
622
+ (e.g., loss on drying, total ash, acid-insoluble ash, residue on ignition).
623
+ """@en ;
624
+ rdfs:subClassOf op:Test .
625
+
626
+ op:AssayTest
627
+ a owl:Class ;
628
+ rdfs:label "Assay Test"@en ;
629
+ rdfs:comment """
630
+ A quantitative test to determine the amount of active compounds
631
+ or marker substances in a preparation.
632
+ """@en ;
633
+ rdfs:subClassOf op:Test .
634
+
635
+ # -----------------------------------------------------------------------------
636
+ # Preparation Method Classes (from data-japan-pharmacopia)
637
+ # -----------------------------------------------------------------------------
638
+
639
+ op:PreparationMethod
640
+ a owl:Class ;
641
+ rdfs:label "Preparation Method"@en ;
642
+ rdfs:comment """
643
+ A recipe or formula for preparing an extract or other preparation.
644
+ Includes the list of ingredients with their quantities and processing instructions.
645
+ Used primarily for Kampo formulas and multi-herb extracts.
646
+ """@en ;
647
+ rdfs:subClassOf [
648
+ a owl:Restriction ;
649
+ owl:onProperty op:methodLabel ;
650
+ owl:minCardinality 1
651
+ ] .
652
+
653
+ op:Ingredient
654
+ a owl:Class ;
655
+ rdfs:label "Ingredient"@en ;
656
+ rdfs:comment """
657
+ An ingredient in a preparation method, typically a crude drug with a
658
+ specified amount. Used in multi-herb preparations like Kampo formulas.
659
+ """@en ;
660
+ rdfs:subClassOf [
661
+ a owl:Restriction ;
662
+ owl:onProperty op:ingredientAmount ;
663
+ owl:minCardinality 1
664
+ ] , [
665
+ a owl:Restriction ;
666
+ owl:onProperty op:usesCrudeDrug ;
667
+ owl:cardinality 1
668
+ ] .
669
+
670
+ # =============================================================================
671
+ # PROPERTIES - IDENTITY
672
+ # =============================================================================
673
+
674
+ op:monographId
675
+ a owl:DatatypeProperty ;
676
+ rdfs:label "monograph ID"@en ;
677
+ rdfs:comment "The publisher-specific identifier for this monograph."@en ;
678
+ rdfs:domain op:PharmacopoeiaMonograph ;
679
+ rdfs:range xsd:string .
680
+
681
+ op:publisher
682
+ a owl:ObjectProperty ;
683
+ rdfs:label "publisher"@en ;
684
+ rdfs:comment "The pharmacopoeia publisher that issued this monograph."@en ;
685
+ rdfs:domain op:PharmacopoeiaMonograph ;
686
+ rdfs:range op:Publisher .
687
+
688
+ op:status
689
+ a owl:ObjectProperty ;
690
+ rdfs:label "status"@en ;
691
+ rdfs:comment "The publication status of this monograph."@en ;
692
+ rdfs:domain op:PharmacopoeiaMonograph ;
693
+ rdfs:range op:MonographStatus .
694
+
695
+ op:effectiveDate
696
+ a owl:DatatypeProperty ;
697
+ rdfs:label "effective date"@en ;
698
+ rdfs:comment "The date from which this monograph is effective."@en ;
699
+ rdfs:domain op:PharmacopoeiaMonograph ;
700
+ rdfs:range xsd:date .
701
+
702
+ op:version
703
+ a owl:DatatypeProperty ;
704
+ rdfs:label "version"@en ;
705
+ rdfs:comment "The version number of the pharmacopoeia edition."@en ;
706
+ rdfs:domain op:PharmacopoeiaMonograph ;
707
+ rdfs:range xsd:string .
708
+
709
+ # =============================================================================
710
+ # PROPERTIES - EXTERNAL REFERENCES (to data-herbapedia)
711
+ # =============================================================================
712
+
713
+ op:referencesPreparation
714
+ a owl:ObjectProperty ;
715
+ rdfs:label "references preparation"@en ;
716
+ rdfs:comment """
717
+ Links to the HerbalPreparation entity in data-herbapedia.
718
+ This is the primary link that connects pharmacopoeia standards to
719
+ botanical data and medicine system profiles.
720
+ """@en ;
721
+ rdfs:domain op:PharmacopoeiaMonograph ;
722
+ rdfs:range <https://www.herbapedia.org/ontology/HerbalPreparation> .
723
+
724
+ op:referencesTCMProfile
725
+ a owl:ObjectProperty ;
726
+ rdfs:label "references TCM profile"@en ;
727
+ rdfs:comment """
728
+ Links to the TCMProfile entity in data-herbapedia for Traditional
729
+ Chinese Medicine properties (nature, flavor, meridian).
730
+ """@en ;
731
+ rdfs:domain op:PharmacopoeiaMonograph ;
732
+ rdfs:range <https://www.herbapedia.org/ontology/TCMProfile> .
733
+
734
+ op:referencesAyurvedaProfile
735
+ a owl:ObjectProperty ;
736
+ rdfs:label "references Ayurveda profile"@en ;
737
+ rdfs:comment """
738
+ Links to the AyurvedaProfile entity in data-herbapedia for Ayurvedic
739
+ properties (rasa, guna, virya, vipaka, karma).
740
+ """@en ;
741
+ rdfs:domain op:PharmacopoeiaMonograph ;
742
+ rdfs:range <https://www.herbapedia.org/ontology/AyurvedaProfile> .
743
+
744
+ op:referencesWesternProfile
745
+ a owl:ObjectProperty ;
746
+ rdfs:label "references Western profile"@en ;
747
+ rdfs:comment """
748
+ Links to the WesternProfile entity in data-herbapedia for Western
749
+ herbal medicine properties (actions, constituents, indications).
750
+ """@en ;
751
+ rdfs:domain op:PharmacopoeiaMonograph ;
752
+ rdfs:range <https://www.herbapedia.org/ontology/WesternProfile> .
753
+
754
+ op:referencesPlantSpecies
755
+ a owl:ObjectProperty ;
756
+ rdfs:label "references plant species"@en ;
757
+ rdfs:comment """
758
+ Links to the PlantSpecies entity in data-herbapedia for taxonomic
759
+ information.
760
+ """@en ;
761
+ rdfs:domain op:BotanicalSource ;
762
+ rdfs:range <https://www.herbapedia.org/ontology/PlantSpecies> .
763
+
764
+ # =============================================================================
765
+ # PROPERTIES - TEST SPECIFICATIONS
766
+ # =============================================================================
767
+
768
+ op:testSpecification
769
+ a owl:ObjectProperty ;
770
+ rdfs:label "test specification"@en ;
771
+ rdfs:comment "A test specification defined in this monograph."@en ;
772
+ rdfs:domain op:PharmacopoeiaMonograph ;
773
+ rdfs:range op:TestSpecification .
774
+
775
+ op:testName
776
+ a owl:DatatypeProperty ;
777
+ rdfs:label "test name"@en ;
778
+ rdfs:comment "The human-readable name of the test."@en ;
779
+ rdfs:domain op:TestSpecification ;
780
+ rdfs:range rdf:langString .
781
+
782
+ op:testType
783
+ a owl:ObjectProperty ;
784
+ rdfs:label "test type"@en ;
785
+ rdfs:comment "The type category of this test."@en ;
786
+ rdfs:domain op:TestSpecification ;
787
+ rdfs:range op:TestType .
788
+
789
+ op:harmonizedMethod
790
+ a owl:ObjectProperty ;
791
+ rdfs:label "harmonized method"@en ;
792
+ rdfs:comment """
793
+ The harmonized test method used for this specification.
794
+ Enables cross-publisher comparison.
795
+ """@en ;
796
+ rdfs:domain op:TestSpecification ;
797
+ rdfs:range op:HarmonizedMethod .
798
+
799
+ op:publisherMethod
800
+ a owl:ObjectProperty ;
801
+ rdfs:label "publisher method"@en ;
802
+ rdfs:comment """
803
+ The publisher-specific method reference for this test.
804
+ """@en ;
805
+ rdfs:domain op:TestSpecification ;
806
+ rdfs:range op:PublisherMethod .
807
+
808
+ op:testConditions
809
+ a owl:DatatypeProperty ;
810
+ rdfs:label "test conditions"@en ;
811
+ rdfs:comment """
812
+ Specific conditions under which the test should be performed
813
+ (e.g., temperature, duration, sample preparation).
814
+ """@en ;
815
+ rdfs:domain op:TestSpecification ;
816
+ rdfs:range rdf:langString .
817
+
818
+ # =============================================================================
819
+ # PROPERTIES - LIMITS
820
+ # =============================================================================
821
+
822
+ op:limit
823
+ a owl:ObjectProperty ;
824
+ rdfs:label "limit"@en ;
825
+ rdfs:comment "The quantitative limit for this specification."@en ;
826
+ rdfs:domain op:TestSpecification ;
827
+ rdfs:range op:Limit .
828
+
829
+ op:limitType
830
+ a owl:ObjectProperty ;
831
+ rdfs:label "limit type"@en ;
832
+ rdfs:comment "The type of this limit (minimum, maximum, range, etc.)."@en ;
833
+ rdfs:domain op:Limit ;
834
+ rdfs:range op:LimitType .
835
+
836
+ op:limitValue
837
+ a owl:DatatypeProperty ;
838
+ rdfs:label "limit value"@en ;
839
+ rdfs:comment "The numerical value of the limit."@en ;
840
+ rdfs:domain op:Limit ;
841
+ rdfs:range xsd:decimal .
842
+
843
+ op:lowerLimit
844
+ a owl:DatatypeProperty ;
845
+ rdfs:label "lower limit"@en ;
846
+ rdfs:comment "The lower bound of a range limit."@en ;
847
+ rdfs:domain op:Limit ;
848
+ rdfs:range xsd:decimal .
849
+
850
+ op:upperLimit
851
+ a owl:DatatypeProperty ;
852
+ rdfs:label "upper limit"@en ;
853
+ rdfs:comment "The upper bound of a range limit."@en ;
854
+ rdfs:domain op:Limit ;
855
+ rdfs:range xsd:decimal .
856
+
857
+ op:limitUnit
858
+ a owl:ObjectProperty ;
859
+ rdfs:label "limit unit"@en ;
860
+ rdfs:comment "The unit of measurement for this limit."@en ;
861
+ rdfs:domain op:Limit ;
862
+ rdfs:range op:Unit .
863
+
864
+ # =============================================================================
865
+ # PROPERTIES - ASSAY SPECIFIC
866
+ # =============================================================================
867
+
868
+ op:assayTarget
869
+ a owl:DatatypeProperty ;
870
+ rdfs:label "assay target"@en ;
871
+ rdfs:comment """
872
+ The compound or compound class being assayed
873
+ (e.g., "Ginsenosides Rb1", "Volatile Oil").
874
+ """@en ;
875
+ rdfs:domain op:AssaySpecification ;
876
+ rdfs:range rdf:langString .
877
+
878
+ op:assayExpression
879
+ a owl:DatatypeProperty ;
880
+ rdfs:label "assay expression"@en ;
881
+ rdfs:comment """
882
+ How the assay result is expressed
883
+ (e.g., "as Ginsenoside Rb1", "on dried basis").
884
+ """@en ;
885
+ rdfs:domain op:AssaySpecification ;
886
+ rdfs:range xsd:string .
887
+
888
+ # =============================================================================
889
+ # PROPERTIES - PURITY SPECIFIC
890
+ # =============================================================================
891
+
892
+ op:impurityType
893
+ a owl:DatatypeProperty ;
894
+ rdfs:label "impurity type"@en ;
895
+ rdfs:comment """
896
+ The type of impurity being limited
897
+ (e.g., "Heavy Metals", "Arsenic", "Pesticide Residues").
898
+ """@en ;
899
+ rdfs:domain op:PuritySpecification ;
900
+ rdfs:range rdf:langString .
901
+
902
+ # =============================================================================
903
+ # PROPERTIES - PHYSICAL SPECIFIC
904
+ # =============================================================================
905
+
906
+ op:physicalProperty
907
+ a owl:DatatypeProperty ;
908
+ rdfs:label "physical property"@en ;
909
+ rdfs:comment """
910
+ The physical property being measured
911
+ (e.g., "Loss on Drying", "Residue on Ignition", "Water Content").
912
+ """@en ;
913
+ rdfs:domain op:PhysicalSpecification ;
914
+ rdfs:range rdf:langString .
915
+
916
+ # =============================================================================
917
+ # PROPERTIES - BOTANICAL SOURCE
918
+ # =============================================================================
919
+
920
+ op:botanicalSource
921
+ a owl:ObjectProperty ;
922
+ rdfs:label "botanical source"@en ;
923
+ rdfs:comment "The botanical origin of this crude drug."@en ;
924
+ rdfs:domain op:CrudeDrugMonograph ;
925
+ rdfs:range op:BotanicalSource .
926
+
927
+ op:plantPartUsed
928
+ a owl:DatatypeProperty ;
929
+ rdfs:label "plant part used"@en ;
930
+ rdfs:comment """
931
+ The plant part used in the crude drug
932
+ (e.g., "Root", "Rhizome", "Leaf").
933
+ """@en ;
934
+ rdfs:domain op:BotanicalSource ;
935
+ rdfs:range rdf:langString .
936
+
937
+ op:collectionPeriod
938
+ a owl:DatatypeProperty ;
939
+ rdfs:label "collection period"@en ;
940
+ rdfs:comment """
941
+ The time of year when the plant material should be collected.
942
+ """@en ;
943
+ rdfs:domain op:BotanicalSource ;
944
+ rdfs:range rdf:langString .
945
+
946
+ # =============================================================================
947
+ # PROPERTIES - MACROSCOPIC DESCRIPTION
948
+ # =============================================================================
949
+
950
+ op:macroscopicDescription
951
+ a owl:ObjectProperty ;
952
+ rdfs:label "macroscopic description"@en ;
953
+ rdfs:comment "Visual characteristics observable without magnification."@en ;
954
+ rdfs:domain op:CrudeDrugMonograph ;
955
+ rdfs:range op:MacroscopicDescription .
956
+
957
+ op:color
958
+ a owl:DatatypeProperty ;
959
+ rdfs:label "color"@en ;
960
+ rdfs:comment "The color of the crude drug."@en ;
961
+ rdfs:domain op:MacroscopicDescription ;
962
+ rdfs:range rdf:langString .
963
+
964
+ op:shape
965
+ a owl:DatatypeProperty ;
966
+ rdfs:label "shape"@en ;
967
+ rdfs:comment "The shape or form of the crude drug."@en ;
968
+ rdfs:domain op:MacroscopicDescription ;
969
+ rdfs:range rdf:langString .
970
+
971
+ op:texture
972
+ a owl:DatatypeProperty ;
973
+ rdfs:label "texture"@en ;
974
+ rdfs:comment "The texture or surface characteristics."@en ;
975
+ rdfs:domain op:MacroscopicDescription ;
976
+ rdfs:range rdf:langString .
977
+
978
+ op:odor
979
+ a owl:DatatypeProperty ;
980
+ rdfs:label "odor"@en ;
981
+ rdfs:comment "The odor or smell of the crude drug."@en ;
982
+ rdfs:domain op:MacroscopicDescription ;
983
+ rdfs:range rdf:langString .
984
+
985
+ op:taste
986
+ a owl:DatatypeProperty ;
987
+ rdfs:label "taste"@en ;
988
+ rdfs:comment "The taste of the crude drug."@en ;
989
+ rdfs:domain op:MacroscopicDescription ;
990
+ rdfs:range rdf:langString .
991
+
992
+ op:fracture
993
+ a owl:DatatypeProperty ;
994
+ rdfs:label "fracture"@en ;
995
+ rdfs:comment "The appearance when the crude drug is broken."@en ;
996
+ rdfs:domain op:MacroscopicDescription ;
997
+ rdfs:range rdf:langString .
998
+
999
+ op:size
1000
+ a owl:DatatypeProperty ;
1001
+ rdfs:label "size"@en ;
1002
+ rdfs:comment "The typical size dimensions of the crude drug."@en ;
1003
+ rdfs:domain op:MacroscopicDescription ;
1004
+ rdfs:range rdf:langString .
1005
+
1006
+ # =============================================================================
1007
+ # PROPERTIES - MICROSCOPIC DESCRIPTION
1008
+ # =============================================================================
1009
+
1010
+ op:microscopicDescription
1011
+ a owl:ObjectProperty ;
1012
+ rdfs:label "microscopic description"@en ;
1013
+ rdfs:comment "Characteristics observable under magnification."@en ;
1014
+ rdfs:domain op:CrudeDrugMonograph ;
1015
+ rdfs:range op:MicroscopicDescription .
1016
+
1017
+ op:transverseSection
1018
+ a owl:DatatypeProperty ;
1019
+ rdfs:label "transverse section"@en ;
1020
+ rdfs:comment """
1021
+ Description of features visible in transverse (cross) section.
1022
+ """@en ;
1023
+ rdfs:domain op:MicroscopicDescription ;
1024
+ rdfs:range rdf:langString .
1025
+
1026
+ op:powderCharacteristics
1027
+ a owl:DatatypeProperty ;
1028
+ rdfs:label "powder characteristics"@en ;
1029
+ rdfs:comment """
1030
+ Description of diagnostic features in powdered material.
1031
+ """@en ;
1032
+ rdfs:domain op:MicroscopicDescription ;
1033
+ rdfs:range rdf:langString .
1034
+
1035
+ op:diagnosticFeatures
1036
+ a owl:DatatypeProperty ;
1037
+ rdfs:label "diagnostic features"@en ;
1038
+ rdfs:comment """
1039
+ Key microscopic features used for identification.
1040
+ """@en ;
1041
+ rdfs:domain op:MicroscopicDescription ;
1042
+ rdfs:range rdf:langString .
1043
+
1044
+ # =============================================================================
1045
+ # PROPERTIES - DEFINITION
1046
+ # =============================================================================
1047
+
1048
+ op:definition
1049
+ a owl:DatatypeProperty ;
1050
+ rdfs:label "definition"@en ;
1051
+ rdfs:comment """
1052
+ The formal definition of the substance as stated in the pharmacopoeia.
1053
+ """@en ;
1054
+ rdfs:domain op:PharmacopoeiaMonograph ;
1055
+ rdfs:range rdf:langString .
1056
+
1057
+ # =============================================================================
1058
+ # PROPERTIES - STORAGE
1059
+ # =============================================================================
1060
+
1061
+ op:storageContainer
1062
+ a owl:DatatypeProperty ;
1063
+ rdfs:label "storage container"@en ;
1064
+ rdfs:comment "The type of container for storage (e.g., 'well-closed container')."@en ;
1065
+ rdfs:domain op:PharmacopoeiaMonograph ;
1066
+ rdfs:range rdf:langString .
1067
+
1068
+ op:storageConditions
1069
+ a owl:DatatypeProperty ;
1070
+ rdfs:label "storage conditions"@en ;
1071
+ rdfs:comment "Special storage conditions (e.g., 'store in a cool place')."@en ;
1072
+ rdfs:domain op:PharmacopoeiaMonograph ;
1073
+ rdfs:range rdf:langString .
1074
+
1075
+ # =============================================================================
1076
+ # PROPERTIES - HARMONIZED METHOD
1077
+ # =============================================================================
1078
+
1079
+ op:equivalentMethod
1080
+ a owl:ObjectProperty ;
1081
+ rdfs:label "equivalent method"@en ;
1082
+ rdfs:comment """
1083
+ Links a HarmonizedMethod to equivalent PublisherMethods from
1084
+ different publishers.
1085
+ """@en ;
1086
+ rdfs:domain op:HarmonizedMethod ;
1087
+ rdfs:range op:PublisherMethod .
1088
+
1089
+ op:jpReference
1090
+ a owl:DatatypeProperty ;
1091
+ rdfs:label "JP reference"@en ;
1092
+ rdfs:comment """
1093
+ The reference text from Japan Pharmacopoeia for this method
1094
+ (e.g., "as directed under Liquid Chromatography").
1095
+ """@en ;
1096
+ rdfs:domain op:HarmonizedMethod ;
1097
+ rdfs:range xsd:string .
1098
+
1099
+ # =============================================================================
1100
+ # PROPERTIES - CHEMICAL DRUG (MOLECULAR ENTITY)
1101
+ # =============================================================================
1102
+
1103
+ op:molecularFormula
1104
+ a owl:DatatypeProperty ;
1105
+ rdfs:label "molecular formula"@en ;
1106
+ rdfs:comment """
1107
+ The molecular formula of the chemical substance
1108
+ (e.g., "C8H9NO2" for Acetaminophen).
1109
+ """@en ;
1110
+ rdfs:domain op:ChemicalDrugMonograph ;
1111
+ rdfs:range xsd:string .
1112
+
1113
+ op:molecularWeight
1114
+ a owl:DatatypeProperty ;
1115
+ rdfs:label "molecular weight"@en ;
1116
+ rdfs:comment """
1117
+ The molecular weight of the chemical substance
1118
+ (e.g., 151.16 for Acetaminophen).
1119
+ """@en ;
1120
+ rdfs:domain op:ChemicalDrugMonograph ;
1121
+ rdfs:range xsd:decimal .
1122
+
1123
+ op:casNumber
1124
+ a owl:DatatypeProperty ;
1125
+ rdfs:label "CAS Registry Number"@en ;
1126
+ rdfs:comment """
1127
+ The CAS Registry Number for the chemical substance
1128
+ (e.g., "103-90-2" for Acetaminophen).
1129
+ """@en ;
1130
+ rdfs:domain op:ChemicalDrugMonograph ;
1131
+ rdfs:range xsd:string .
1132
+
1133
+ op:chemicalName
1134
+ a owl:DatatypeProperty ;
1135
+ rdfs:label "chemical name"@en ;
1136
+ rdfs:comment """
1137
+ The systematic (IUPAC) chemical name of the substance.
1138
+ """@en ;
1139
+ rdfs:domain op:ChemicalDrugMonograph ;
1140
+ rdfs:range rdf:langString .
1141
+
1142
+ op:structuralFormula
1143
+ a owl:ObjectProperty ;
1144
+ rdfs:label "structural formula"@en ;
1145
+ rdfs:comment """
1146
+ Reference to the structural formula image of the chemical.
1147
+ """@en ;
1148
+ rdfs:domain op:ChemicalDrugMonograph ;
1149
+ rdfs:range xsd:anyURI .
1150
+
1151
+ op:stereochemistry
1152
+ a owl:DatatypeProperty ;
1153
+ rdfs:label "stereochemistry"@en ;
1154
+ rdfs:comment """
1155
+ The stereochemical designation (L, D, DL, R, S, etc.).
1156
+ """@en ;
1157
+ rdfs:domain op:AminoAcidMonograph ;
1158
+ rdfs:range xsd:string .
1159
+
1160
+ op:essentialAminoAcid
1161
+ a owl:DatatypeProperty ;
1162
+ rdfs:label "essential amino acid"@en ;
1163
+ rdfs:comment """
1164
+ Whether this amino acid is essential (must be obtained from diet).
1165
+ """@en ;
1166
+ rdfs:domain op:AminoAcidMonograph ;
1167
+ rdfs:range xsd:boolean .
1168
+
1169
+ # =============================================================================
1170
+ # PROPERTIES - MINERAL SUBSTANCE
1171
+ # =============================================================================
1172
+
1173
+ op:elementalComposition
1174
+ a owl:DatatypeProperty ;
1175
+ rdfs:label "elemental composition"@en ;
1176
+ rdfs:comment """
1177
+ The elemental composition of the mineral substance
1178
+ (e.g., "ZnO" for Zinc Oxide).
1179
+ """@en ;
1180
+ rdfs:domain op:MineralSubstanceMonograph ;
1181
+ rdfs:range xsd:string .
1182
+
1183
+ op:geologicalOrigin
1184
+ a owl:DatatypeProperty ;
1185
+ rdfs:label "geological origin"@en ;
1186
+ rdfs:comment """
1187
+ The geological source or origin of the mineral.
1188
+ """@en ;
1189
+ rdfs:domain op:MineralSubstanceMonograph ;
1190
+ rdfs:range rdf:langString .
1191
+
1192
+ # =============================================================================
1193
+ # PROPERTIES - BIOLOGICAL SUBSTANCE
1194
+ # =============================================================================
1195
+
1196
+ op:biologicalOrigin
1197
+ a owl:DatatypeProperty ;
1198
+ rdfs:label "biological origin"@en ;
1199
+ rdfs:comment """
1200
+ The biological source of the substance (organism, tissue, cell line).
1201
+ """@en ;
1202
+ rdfs:domain op:BiologicalSubstanceMonograph ;
1203
+ rdfs:range rdf:langString .
1204
+
1205
+ op:potencyUnit
1206
+ a owl:DatatypeProperty ;
1207
+ rdfs:label "potency unit"@en ;
1208
+ rdfs:comment """
1209
+ The unit for biological activity (e.g., "IU", "USP Units").
1210
+ """@en ;
1211
+ rdfs:domain op:BiologicalSubstanceMonograph ;
1212
+ rdfs:range xsd:string .
1213
+
1214
+ op:activityValue
1215
+ a owl:DatatypeProperty ;
1216
+ rdfs:label "activity value"@en ;
1217
+ rdfs:comment """
1218
+ The minimum activity per unit (e.g., "not less than 2500 IU/mg").
1219
+ """@en ;
1220
+ rdfs:domain op:BiologicalSubstanceMonograph ;
1221
+ rdfs:range xsd:string .
1222
+
1223
+ # =============================================================================
1224
+ # PROPERTIES - FORMULATION
1225
+ # =============================================================================
1226
+
1227
+ op:hasComponent
1228
+ a owl:ObjectProperty ;
1229
+ rdfs:label "has component"@en ;
1230
+ rdfs:comment """
1231
+ A component of this formulation.
1232
+ """@en ;
1233
+ rdfs:domain op:FormulationMonograph ;
1234
+ rdfs:range op:FormulationComponent .
1235
+
1236
+ op:dosageForm
1237
+ a owl:ObjectProperty ;
1238
+ rdfs:label "dosage form"@en ;
1239
+ rdfs:comment """
1240
+ The pharmaceutical dosage form (tablet, capsule, injection, etc.).
1241
+ """@en ;
1242
+ rdfs:domain op:FormulationMonograph ;
1243
+ rdfs:range op:DosageForm .
1244
+
1245
+ op:strength
1246
+ a owl:DatatypeProperty ;
1247
+ rdfs:label "strength"@en ;
1248
+ rdfs:comment """
1249
+ The strength of the formulation (e.g., "500 mg", "10 mg/mL").
1250
+ """@en ;
1251
+ rdfs:domain op:FormulationMonograph ;
1252
+ rdfs:range xsd:string .
1253
+
1254
+ # =============================================================================
1255
+ # PROPERTIES - FORMULATION COMPONENT
1256
+ # =============================================================================
1257
+
1258
+ op:componentSubstance
1259
+ a owl:ObjectProperty ;
1260
+ rdfs:label "component substance"@en ;
1261
+ rdfs:comment """
1262
+ Reference to the monograph of the component substance.
1263
+ """@en ;
1264
+ rdfs:domain op:FormulationComponent ;
1265
+ rdfs:range op:PharmacopoeiaMonograph .
1266
+
1267
+ op:componentQuantity
1268
+ a owl:DatatypeProperty ;
1269
+ rdfs:label "component quantity"@en ;
1270
+ rdfs:comment """
1271
+ The amount of this component per dosage unit.
1272
+ """@en ;
1273
+ rdfs:domain op:FormulationComponent ;
1274
+ rdfs:range xsd:string .
1275
+
1276
+ op:componentRole
1277
+ a owl:ObjectProperty ;
1278
+ rdfs:label "component role"@en ;
1279
+ rdfs:comment """
1280
+ The role of this component (Active, Excipient, etc.).
1281
+ """@en ;
1282
+ rdfs:domain op:FormulationComponent ;
1283
+ rdfs:range op:ComponentRole .
1284
+
1285
+ # =============================================================================
1286
+ # INDIVIDUALS - PUBLISHERS
1287
+ # =============================================================================
1288
+
1289
+ op:AHP
1290
+ a op:Publisher ;
1291
+ rdfs:label "American Herbal Pharmacopoeia"@en ;
1292
+ skos:altLabel "AHP"@en ;
1293
+ op:publisherCountry "US" ;
1294
+ op:publisherLanguage "en" .
1295
+
1296
+ op:API
1297
+ a op:Publisher ;
1298
+ rdfs:label "Ayurvedic Pharmacopoeia of India"@en ;
1299
+ skos:altLabel "API"@en ;
1300
+ op:publisherCountry "IN" ;
1301
+ op:publisherLanguage "en", "hi" .
1302
+
1303
+ op:JP
1304
+ a op:Publisher ;
1305
+ rdfs:label "Japan Pharmacopoeia"@en ;
1306
+ skos:altLabel "JP"@en ;
1307
+ rdfs:label "日本薬局方"@ja ;
1308
+ op:publisherCountry "JP" ;
1309
+ op:publisherLanguage "ja", "en" .
1310
+
1311
+ op:HKCMMS
1312
+ a op:Publisher ;
1313
+ rdfs:label "Hong Kong Chinese Materia Medica Standards"@en ;
1314
+ skos:altLabel "HKCMMS"@en ;
1315
+ rdfs:label "香港中藥材標準"@zh-Hant ;
1316
+ op:publisherCountry "HK" ;
1317
+ op:publisherLanguage "zh-Hant", "en" .
1318
+
1319
+ op:THP
1320
+ a op:Publisher ;
1321
+ rdfs:label "Thai Herbal Pharmacopoeia"@en ;
1322
+ skos:altLabel "THP"@en ;
1323
+ rdfs:label "ตำรับยาไทย"@th ;
1324
+ op:publisherCountry "TH" ;
1325
+ op:publisherLanguage "th", "en" .
1326
+
1327
+ op:CMHerbarium
1328
+ a op:Publisher ;
1329
+ rdfs:label "CM Herbarium"@en ;
1330
+ skos:altLabel "CMHerbarium"@en ;
1331
+ op:publisherCountry "CN" ;
1332
+ op:publisherLanguage "zh", "en" .
1333
+
1334
+ op:WHO
1335
+ a op:Publisher ;
1336
+ rdfs:label "WHO Monographs on Selected Medicinal Plants"@en ;
1337
+ skos:altLabel "WHO"@en ;
1338
+ op:publisherCountry "INT" ;
1339
+ op:publisherLanguage "en" .
1340
+
1341
+ op:UPB
1342
+ a op:Publisher ;
1343
+ rdfs:label "Unani Pharmacopoeia of Bangladesh"@en ;
1344
+ skos:altLabel "UPB"@en ;
1345
+ op:publisherCountry "BD" ;
1346
+ op:publisherLanguage "en", "ur" .
1347
+
1348
+ op:UPI
1349
+ a op:Publisher ;
1350
+ rdfs:label "Unani Pharmacopoeia of India"@en ;
1351
+ skos:altLabel "UPI"@en ;
1352
+ op:publisherCountry "IN" ;
1353
+ op:publisherLanguage "en", "ur" .
1354
+
1355
+ op:APB
1356
+ a op:Publisher ;
1357
+ rdfs:label "Ayurvedic Pharmacopoeia of Bangladesh"@en ;
1358
+ skos:altLabel "APB"@en ;
1359
+ op:publisherCountry "BD" ;
1360
+ op:publisherLanguage "en", "bn" .
1361
+
1362
+ op:APS
1363
+ a op:Publisher ;
1364
+ rdfs:label "Ayurvedic Pharmacopoeia of Sri Lanka"@en ;
1365
+ skos:altLabel "APS"@en ;
1366
+ op:publisherCountry "LK" ;
1367
+ op:publisherLanguage "en", "si" .
1368
+
1369
+ # =============================================================================
1370
+ # INDIVIDUALS - STATUS
1371
+ # =============================================================================
1372
+
1373
+ op:Official
1374
+ a op:MonographStatus ;
1375
+ rdfs:label "Official"@en ;
1376
+ skos:definition "Currently in force and legally binding."@en .
1377
+
1378
+ op:Withdrawn
1379
+ a op:MonographStatus ;
1380
+ rdfs:label "Withdrawn"@en ;
1381
+ skos:definition "No longer in force, removed from the pharmacopoeia."@en .
1382
+
1383
+ op:Draft
1384
+ a op:MonographStatus ;
1385
+ rdfs:label "Draft"@en ;
1386
+ skos:definition "Under development, not yet official."@en .
1387
+
1388
+ op:Revised
1389
+ a op:MonographStatus ;
1390
+ rdfs:label "Revised"@en ;
1391
+ skos:definition "Updated version of a previously official monograph."@en .
1392
+
1393
+ # =============================================================================
1394
+ # INDIVIDUALS - TEST TYPES
1395
+ # =============================================================================
1396
+
1397
+ op:TestType-Assay
1398
+ a op:TestType ;
1399
+ rdfs:label "Assay"@en ;
1400
+ skos:definition "Quantitative analysis of active constituents."@en .
1401
+
1402
+ op:TestType-Purity
1403
+ a op:TestType ;
1404
+ rdfs:label "Purity"@en ;
1405
+ skos:definition "Tests for impurities and contaminants."@en .
1406
+
1407
+ op:TestType-Identification
1408
+ a op:TestType ;
1409
+ rdfs:label "Identification"@en ;
1410
+ skos:definition "Tests to confirm identity of the substance."@en .
1411
+
1412
+ op:TestType-Physical
1413
+ a op:TestType ;
1414
+ rdfs:label "Physical"@en ;
1415
+ skos:definition "Physical property measurements."@en .
1416
+
1417
+ op:TestType-Microbiological
1418
+ a op:TestType ;
1419
+ rdfs:label "Microbiological"@en ;
1420
+ skos:definition "Microbial limit tests."@en .
1421
+
1422
+ op:TestType-ForeignMatter
1423
+ a op:TestType ;
1424
+ rdfs:label "Foreign Matter"@en ;
1425
+ skos:definition "Tests for extraneous materials."@en .
1426
+
1427
+ op:TestType-Extractive
1428
+ a op:TestType ;
1429
+ rdfs:label "Extractive"@en ;
1430
+ skos:definition "Solvent extraction tests."@en .
1431
+
1432
+ # =============================================================================
1433
+ # INDIVIDUALS - LIMIT TYPES
1434
+ # =============================================================================
1435
+
1436
+ op:LimitType-Minimum
1437
+ a op:LimitType ;
1438
+ rdfs:label "Minimum"@en ;
1439
+ skos:definition "Value must not be less than the specified amount."@en .
1440
+
1441
+ op:LimitType-Maximum
1442
+ a op:LimitType ;
1443
+ rdfs:label "Maximum"@en ;
1444
+ skos:definition "Value must not exceed the specified amount."@en .
1445
+
1446
+ op:LimitType-Range
1447
+ a op:LimitType ;
1448
+ rdfs:label "Range"@en ;
1449
+ skos:definition "Value must fall within the specified range."@en .
1450
+
1451
+ op:LimitType-Exact
1452
+ a op:LimitType ;
1453
+ rdfs:label "Exact"@en ;
1454
+ skos:definition "Value must equal the specified amount."@en .
1455
+
1456
+ op:LimitType-NotMoreThan
1457
+ a op:LimitType ;
1458
+ rdfs:label "Not More Than"@en ;
1459
+ skos:definition "Value must not exceed the specified amount (synonym for Maximum)."@en .
1460
+
1461
+ op:LimitType-NotLessThan
1462
+ a op:LimitType ;
1463
+ rdfs:label "Not Less Than"@en ;
1464
+ skos:definition "Value must not be less than the specified amount (synonym for Minimum)."@en .
1465
+
1466
+ # =============================================================================
1467
+ # ADDITIONAL PUBLISHER PROPERTIES
1468
+ # =============================================================================
1469
+
1470
+ op:publisherCountry
1471
+ a owl:DatatypeProperty ;
1472
+ rdfs:label "publisher country"@en ;
1473
+ rdfs:comment "ISO 3166-1 alpha-2 country code."@en ;
1474
+ rdfs:domain op:Publisher ;
1475
+ rdfs:range xsd:string .
1476
+
1477
+ op:publisherLanguage
1478
+ a owl:DatatypeProperty ;
1479
+ rdfs:label "publisher language"@en ;
1480
+ rdfs:comment "Languages used by this publisher."@en ;
1481
+ rdfs:domain op:Publisher ;
1482
+ rdfs:range xsd:string .
1483
+
1484
+ op:publisherBaseUrl
1485
+ a owl:DatatypeProperty ;
1486
+ rdfs:label "publisher base URL"@en ;
1487
+ rdfs:comment "Base URL for publisher's online resources."@en ;
1488
+ rdfs:domain op:Publisher ;
1489
+ rdfs:range xsd:anyURI .
1490
+
1491
+ # =============================================================================
1492
+ # INDIVIDUALS - DOSAGE FORMS (MECE)
1493
+ # =============================================================================
1494
+
1495
+ op:DosageForm
1496
+ a owl:Class ;
1497
+ rdfs:label "Dosage Form"@en ;
1498
+ rdfs:comment """
1499
+ The pharmaceutical dosage form of a formulation.
1500
+ This is an enumeration of all common dosage forms.
1501
+ """@en ;
1502
+ owl:equivalentClass [
1503
+ a owl:Class ;
1504
+ owl:oneOf (
1505
+ op:Tablet
1506
+ op:CoatedTablet
1507
+ op:FilmCoatedTablet
1508
+ op:SugarCoatedTablet
1509
+ op:EntericCoatedTablet
1510
+ op:SustainedReleaseTablet
1511
+ op:Capsule
1512
+ op:HardCapsule
1513
+ op:SoftCapsule
1514
+ op:Injection
1515
+ op:IntravenousInjection
1516
+ op:IntramuscularInjection
1517
+ op:SubcutaneousInjection
1518
+ op:Solution
1519
+ op:OralSolution
1520
+ op:TopicalSolution
1521
+ op:Suspension
1522
+ op:OralSuspension
1523
+ op:Syrup
1524
+ op:Elixir
1525
+ op:Tincture
1526
+ op:Extract
1527
+ op:Ointment
1528
+ op:Cream
1529
+ op:Gel
1530
+ op:Lotion
1531
+ op:Poultice
1532
+ op:Suppository
1533
+ op:Powder
1534
+ op:Granule
1535
+ op:Pellet
1536
+ op:Patch
1537
+ op:TransdermalPatch
1538
+ op:Inhaler
1539
+ op:NasalSpray
1540
+ op:EyeDrops
1541
+ op:EarDrops
1542
+ op:Lozenge
1543
+ op:Pastille
1544
+ )
1545
+ ] .
1546
+
1547
+ op:Tablet
1548
+ a op:DosageForm ;
1549
+ rdfs:label "Tablet"@en ;
1550
+ skos:altLabel "Uncoated Tablet"@en .
1551
+
1552
+ op:CoatedTablet
1553
+ a op:DosageForm ;
1554
+ rdfs:label "Coated Tablet"@en .
1555
+
1556
+ op:FilmCoatedTablet
1557
+ a op:DosageForm ;
1558
+ rdfs:label "Film-Coated Tablet"@en .
1559
+
1560
+ op:SugarCoatedTablet
1561
+ a op:DosageForm ;
1562
+ rdfs:label "Sugar-Coated Tablet"@en .
1563
+
1564
+ op:EntericCoatedTablet
1565
+ a op:DosageForm ;
1566
+ rdfs:label "Enteric-Coated Tablet"@en .
1567
+
1568
+ op:SustainedReleaseTablet
1569
+ a op:DosageForm ;
1570
+ rdfs:label "Sustained-Release Tablet"@en ;
1571
+ skos:altLabel "Extended-Release Tablet"@en .
1572
+
1573
+ op:Capsule
1574
+ a op:DosageForm ;
1575
+ rdfs:label "Capsule"@en .
1576
+
1577
+ op:HardCapsule
1578
+ a op:DosageForm ;
1579
+ rdfs:label "Hard Capsule"@en .
1580
+
1581
+ op:SoftCapsule
1582
+ a op:DosageForm ;
1583
+ rdfs:label "Soft Capsule"@en ;
1584
+ skos:altLabel "Softgel"@en .
1585
+
1586
+ op:Injection
1587
+ a op:DosageForm ;
1588
+ rdfs:label "Injection"@en .
1589
+
1590
+ op:IntravenousInjection
1591
+ a op:DosageForm ;
1592
+ rdfs:label "Intravenous Injection"@en ;
1593
+ skos:altLabel "IV Injection"@en .
1594
+
1595
+ op:IntramuscularInjection
1596
+ a op:DosageForm ;
1597
+ rdfs:label "Intramuscular Injection"@en ;
1598
+ skos:altLabel "IM Injection"@en .
1599
+
1600
+ op:SubcutaneousInjection
1601
+ a op:DosageForm ;
1602
+ rdfs:label "Subcutaneous Injection"@en ;
1603
+ skos:altLabel "SC Injection"@en .
1604
+
1605
+ op:Solution
1606
+ a op:DosageForm ;
1607
+ rdfs:label "Solution"@en .
1608
+
1609
+ op:OralSolution
1610
+ a op:DosageForm ;
1611
+ rdfs:label "Oral Solution"@en .
1612
+
1613
+ op:TopicalSolution
1614
+ a op:DosageForm ;
1615
+ rdfs:label "Topical Solution"@en .
1616
+
1617
+ op:Suspension
1618
+ a op:DosageForm ;
1619
+ rdfs:label "Suspension"@en .
1620
+
1621
+ op:OralSuspension
1622
+ a op:DosageForm ;
1623
+ rdfs:label "Oral Suspension"@en .
1624
+
1625
+ op:Syrup
1626
+ a op:DosageForm ;
1627
+ rdfs:label "Syrup"@en .
1628
+
1629
+ op:Elixir
1630
+ a op:DosageForm ;
1631
+ rdfs:label "Elixir"@en .
1632
+
1633
+ op:Tincture
1634
+ a op:DosageForm ;
1635
+ rdfs:label "Tincture"@en .
1636
+
1637
+ op:Extract
1638
+ a op:DosageForm ;
1639
+ rdfs:label "Extract"@en .
1640
+
1641
+ op:Ointment
1642
+ a op:DosageForm ;
1643
+ rdfs:label "Ointment"@en .
1644
+
1645
+ op:Cream
1646
+ a op:DosageForm ;
1647
+ rdfs:label "Cream"@en .
1648
+
1649
+ op:Gel
1650
+ a op:DosageForm ;
1651
+ rdfs:label "Gel"@en .
1652
+
1653
+ op:Lotion
1654
+ a op:DosageForm ;
1655
+ rdfs:label "Lotion"@en .
1656
+
1657
+ op:Poultice
1658
+ a op:DosageForm ;
1659
+ rdfs:label "Poultice"@en .
1660
+
1661
+ op:Suppository
1662
+ a op:DosageForm ;
1663
+ rdfs:label "Suppository"@en .
1664
+
1665
+ op:Powder
1666
+ a op:DosageForm ;
1667
+ rdfs:label "Powder"@en .
1668
+
1669
+ op:Granule
1670
+ a op:DosageForm ;
1671
+ rdfs:label "Granule"@en .
1672
+
1673
+ op:Pellet
1674
+ a op:DosageForm ;
1675
+ rdfs:label "Pellet"@en .
1676
+
1677
+ op:Patch
1678
+ a op:DosageForm ;
1679
+ rdfs:label "Patch"@en .
1680
+
1681
+ op:TransdermalPatch
1682
+ a op:DosageForm ;
1683
+ rdfs:label "Transdermal Patch"@en .
1684
+
1685
+ op:Inhaler
1686
+ a op:DosageForm ;
1687
+ rdfs:label "Inhaler"@en .
1688
+
1689
+ op:NasalSpray
1690
+ a op:DosageForm ;
1691
+ rdfs:label "Nasal Spray"@en .
1692
+
1693
+ op:EyeDrops
1694
+ a op:DosageForm ;
1695
+ rdfs:label "Eye Drops"@en .
1696
+
1697
+ op:EarDrops
1698
+ a op:DosageForm ;
1699
+ rdfs:label "Ear Drops"@en .
1700
+
1701
+ op:Lozenge
1702
+ a op:DosageForm ;
1703
+ rdfs:label "Lozenge"@en .
1704
+
1705
+ op:Pastille
1706
+ a op:DosageForm ;
1707
+ rdfs:label "Pastille"@en .
1708
+
1709
+ # =============================================================================
1710
+ # INDIVIDUALS - COMPONENT ROLES (MECE)
1711
+ # =============================================================================
1712
+
1713
+ op:ComponentRole
1714
+ a owl:Class ;
1715
+ rdfs:label "Component Role"@en ;
1716
+ rdfs:comment """
1717
+ The role of a component in a formulation.
1718
+ """@en ;
1719
+ owl:equivalentClass [
1720
+ a owl:Class ;
1721
+ owl:oneOf (
1722
+ op:ActiveIngredient
1723
+ op:Excipient
1724
+ op:Binder
1725
+ op:Disintegrant
1726
+ op:Filler
1727
+ op:Lubricant
1728
+ op:Preservative
1729
+ op:Colorant
1730
+ op:Flavor
1731
+ op:Sweetener
1732
+ op:CoatingAgent
1733
+ op:Solvent
1734
+ op:Buffer
1735
+ )
1736
+ ] .
1737
+
1738
+ op:ActiveIngredient
1739
+ a op:ComponentRole ;
1740
+ rdfs:label "Active Ingredient"@en ;
1741
+ skos:altLabel "API"@en ;
1742
+ skos:definition "The therapeutically active component."@en .
1743
+
1744
+ op:Excipient
1745
+ a op:ComponentRole ;
1746
+ rdfs:label "Excipient"@en ;
1747
+ skos:definition "An inactive component used as a carrier or vehicle."@en .
1748
+
1749
+ op:Binder
1750
+ a op:ComponentRole ;
1751
+ rdfs:label "Binder"@en ;
1752
+ skos:definition "An excipient that holds ingredients together."@en .
1753
+
1754
+ op:Disintegrant
1755
+ a op:ComponentRole ;
1756
+ rdfs:label "Disintegrant"@en ;
1757
+ skos:definition "An excipient that helps the formulation break apart."@en .
1758
+
1759
+ op:Filler
1760
+ a op:ComponentRole ;
1761
+ rdfs:label "Filler"@en ;
1762
+ skos:altLabel "Diluent"@en ;
1763
+ skos:definition "An excipient that adds bulk to the formulation."@en .
1764
+
1765
+ op:Lubricant
1766
+ a op:ComponentRole ;
1767
+ rdfs:label "Lubricant"@en ;
1768
+ skos:definition "An excipient that reduces friction during manufacturing."@en .
1769
+
1770
+ op:Preservative
1771
+ a op:ComponentRole ;
1772
+ rdfs:label "Preservative"@en ;
1773
+ skos:definition "An excipient that prevents microbial growth."@en .
1774
+
1775
+ op:Colorant
1776
+ a op:ComponentRole ;
1777
+ rdfs:label "Colorant"@en ;
1778
+ skos:definition "An excipient that adds color to the formulation."@en .
1779
+
1780
+ op:Flavor
1781
+ a op:ComponentRole ;
1782
+ rdfs:label "Flavor"@en ;
1783
+ skos:definition "An excipient that adds flavor to the formulation."@en .
1784
+
1785
+ op:Sweetener
1786
+ a op:ComponentRole ;
1787
+ rdfs:label "Sweetener"@en ;
1788
+ skos:definition "An excipient that adds sweetness to the formulation."@en .
1789
+
1790
+ op:CoatingAgent
1791
+ a op:ComponentRole ;
1792
+ rdfs:label "Coating Agent"@en ;
1793
+ skos:definition "An excipient used to coat tablets or pellets."@en .
1794
+
1795
+ op:Solvent
1796
+ a op:ComponentRole ;
1797
+ rdfs:label "Solvent"@en ;
1798
+ skos:definition "A liquid used to dissolve other components."@en .
1799
+
1800
+ op:Buffer
1801
+ a op:ComponentRole ;
1802
+ rdfs:label "Buffer"@en ;
1803
+ skos:definition "An excipient that maintains pH stability."@en .
1804
+
1805
+ # =============================================================================
1806
+ # ADDITIONAL TEST TYPES (Formulation-Specific)
1807
+ # =============================================================================
1808
+
1809
+ op:ContentUniformitySpecification
1810
+ a owl:Class ;
1811
+ rdfs:label "Content Uniformity Specification"@en ;
1812
+ rdfs:comment """
1813
+ A specification for content uniformity of individual dosage units.
1814
+ """@en ;
1815
+ rdfs:subClassOf op:TestSpecification .
1816
+
1817
+ op:DissolutionSpecification
1818
+ a owl:Class ;
1819
+ rdfs:label "Dissolution Specification"@en ;
1820
+ rdfs:comment """
1821
+ A specification for drug release from the dosage form.
1822
+ """@en ;
1823
+ rdfs:subClassOf op:TestSpecification .
1824
+
1825
+ op:DisintegrationSpecification
1826
+ a owl:Class ;
1827
+ rdfs:label "Disintegration Specification"@en ;
1828
+ rdfs:comment """
1829
+ A specification for time to disintegrate the dosage form.
1830
+ """@en ;
1831
+ rdfs:subClassOf op:TestSpecification .
1832
+
1833
+ op:WeightVariationSpecification
1834
+ a owl:Class ;
1835
+ rdfs:label "Weight Variation Specification"@en ;
1836
+ rdfs:comment """
1837
+ A specification for uniformity of weight across dosage units.
1838
+ """@en ;
1839
+ rdfs:subClassOf op:TestSpecification .
1840
+
1841
+ # =============================================================================
1842
+ # ADDITIONAL TEST TYPE INDIVIDUALS
1843
+ # =============================================================================
1844
+
1845
+ op:TestType-ContentUniformity
1846
+ a op:TestType ;
1847
+ rdfs:label "Content Uniformity"@en ;
1848
+ skos:definition "Tests for uniformity of active ingredient across dosage units."@en .
1849
+
1850
+ op:TestType-Dissolution
1851
+ a op:TestType ;
1852
+ rdfs:label "Dissolution"@en ;
1853
+ skos:definition "Tests for drug release rate from the dosage form."@en .
1854
+
1855
+ op:TestType-Disintegration
1856
+ a op:TestType ;
1857
+ rdfs:label "Disintegration"@en ;
1858
+ skos:definition "Tests for time to break apart the dosage form."@en .
1859
+
1860
+ op:TestType-WeightVariation
1861
+ a op:TestType ;
1862
+ rdfs:label "Weight Variation"@en ;
1863
+ skos:definition "Tests for uniformity of weight across dosage units."@en .
1864
+
1865
+ op:TestType-Hardness
1866
+ a op:TestType ;
1867
+ rdfs:label "Hardness"@en ;
1868
+ skos:definition "Tests for tablet hardness or crushing strength."@en .
1869
+
1870
+ op:TestType-Friability
1871
+ a op:TestType ;
1872
+ rdfs:label "Friability"@en ;
1873
+ skos:definition "Tests for tablet friability or tendency to chip."@en .
1874
+
1875
+ # =============================================================================
1876
+ # PROPERTIES - FORMULATION-SPECIFIC TESTS
1877
+ # =============================================================================
1878
+
1879
+ op:dissolutionMedium
1880
+ a owl:DatatypeProperty ;
1881
+ rdfs:label "dissolution medium"@en ;
1882
+ rdfs:comment """
1883
+ The medium used for dissolution testing (e.g., "Water", "0.1N HCl").
1884
+ """@en ;
1885
+ rdfs:domain op:DissolutionSpecification ;
1886
+ rdfs:range xsd:string .
1887
+
1888
+ op:dissolutionApparatus
1889
+ a owl:DatatypeProperty ;
1890
+ rdfs:label "dissolution apparatus"@en ;
1891
+ rdfs:comment """
1892
+ The apparatus used for dissolution testing (e.g., "Apparatus 1", "Apparatus 2").
1893
+ """@en ;
1894
+ rdfs:domain op:DissolutionSpecification ;
1895
+ rdfs:range xsd:string .
1896
+
1897
+ op:dissolutionTime
1898
+ a owl:DatatypeProperty ;
1899
+ rdfs:label "dissolution time"@en ;
1900
+ rdfs:comment """
1901
+ The time point(s) for dissolution measurement (e.g., "30 min").
1902
+ """@en ;
1903
+ rdfs:domain op:DissolutionSpecification ;
1904
+ rdfs:range xsd:string .
1905
+
1906
+ op:dissolutionPercentage
1907
+ a owl:DatatypeProperty ;
1908
+ rdfs:label "dissolution percentage"@en ;
1909
+ rdfs:comment """
1910
+ The percentage of drug released (e.g., "Not less than 80%").
1911
+ """@en ;
1912
+ rdfs:domain op:DissolutionSpecification ;
1913
+ rdfs:range xsd:string .
1914
+
1915
+ op:disintegrationTime
1916
+ a owl:DatatypeProperty ;
1917
+ rdfs:label "disintegration time"@en ;
1918
+ rdfs:comment """
1919
+ The maximum time for disintegration (e.g., "within 30 minutes").
1920
+ """@en ;
1921
+ rdfs:domain op:DisintegrationSpecification ;
1922
+ rdfs:range xsd:string .
1923
+
1924
+ op:disintegrationMedium
1925
+ a owl:DatatypeProperty ;
1926
+ rdfs:label "disintegration medium"@en ;
1927
+ rdfs:comment """
1928
+ The medium used for disintegration testing (e.g., "Water", "Simulated Gastric Fluid").
1929
+ """@en ;
1930
+ rdfs:domain op:DisintegrationSpecification ;
1931
+ rdfs:range xsd:string .
1932
+
1933
+ # =============================================================================
1934
+ # CHEMICAL-SPECIFIC TEST CLASSES
1935
+ # =============================================================================
1936
+
1937
+ op:MeltingPointSpecification
1938
+ a owl:Class ;
1939
+ rdfs:label "Melting Point Specification"@en ;
1940
+ rdfs:comment """
1941
+ A specification for the melting point or melting range of a chemical substance.
1942
+ """@en ;
1943
+ rdfs:subClassOf op:TestSpecification ;
1944
+ rdfs:subClassOf [
1945
+ a owl:Restriction ;
1946
+ owl:onProperty op:meltingPointRange ;
1947
+ owl:minCardinality 1
1948
+ ] .
1949
+
1950
+ op:BoilingPointSpecification
1951
+ a owl:Class ;
1952
+ rdfs:label "Boiling Point Specification"@en ;
1953
+ rdfs:comment """
1954
+ A specification for the boiling point or boiling range of a liquid chemical.
1955
+ """@en ;
1956
+ rdfs:subClassOf op:TestSpecification .
1957
+
1958
+ op:SpecificRotationSpecification
1959
+ a owl:Class ;
1960
+ rdfs:label "Specific Rotation Specification"@en ;
1961
+ rdfs:comment """
1962
+ A specification for the optical rotation of a chiral chemical substance.
1963
+ Used to verify identity and purity of optically active compounds.
1964
+ """@en ;
1965
+ rdfs:subClassOf op:TestSpecification .
1966
+
1967
+ op:RefractiveIndexSpecification
1968
+ a owl:Class ;
1969
+ rdfs:label "Refractive Index Specification"@en ;
1970
+ rdfs:comment """
1971
+ A specification for the refractive index of a liquid chemical.
1972
+ Used for identity and purity verification.
1973
+ """@en ;
1974
+ rdfs:subClassOf op:TestSpecification .
1975
+
1976
+ op:RelatedSubstancesSpecification
1977
+ a owl:Class ;
1978
+ rdfs:label "Related Substances Specification"@en ;
1979
+ rdfs:comment """
1980
+ A specification for impurities related to the active substance,
1981
+ including degradation products and synthetic by-products.
1982
+ """@en ;
1983
+ rdfs:subClassOf op:PuritySpecification .
1984
+
1985
+ op:ResidualSolventsSpecification
1986
+ a owl:Class ;
1987
+ rdfs:label "Residual Solvents Specification"@en ;
1988
+ rdfs:comment """
1989
+ A specification for residual solvent content in a chemical substance.
1990
+ Solvents are classified as Class 1, 2, or 3 based on toxicity.
1991
+ """@en ;
1992
+ rdfs:subClassOf op:PuritySpecification .
1993
+
1994
+ op:pHSpecification
1995
+ a owl:Class ;
1996
+ rdfs:label "pH Specification"@en ;
1997
+ rdfs:comment """
1998
+ A specification for the pH of a solution or aqueous suspension.
1999
+ """@en ;
2000
+ rdfs:subClassOf op:PhysicalSpecification .
2001
+
2002
+ # =============================================================================
2003
+ # CHEMICAL-SPECIFIC TEST PROPERTIES
2004
+ # =============================================================================
2005
+
2006
+ op:meltingPointRange
2007
+ a owl:DatatypeProperty ;
2008
+ rdfs:label "melting point range"@en ;
2009
+ rdfs:comment """
2010
+ The melting point or range in degrees Celsius (e.g., "169-172°C").
2011
+ """@en ;
2012
+ rdfs:domain op:MeltingPointSpecification ;
2013
+ rdfs:range xsd:string .
2014
+
2015
+ op:meltingPointMethod
2016
+ a owl:DatatypeProperty ;
2017
+ rdfs:label "melting point method"@en ;
2018
+ rdfs:comment """
2019
+ The method used for melting point determination (e.g., "Method 1", "Capillary method").
2020
+ """@en ;
2021
+ rdfs:domain op:MeltingPointSpecification ;
2022
+ rdfs:range xsd:string .
2023
+
2024
+ op:boilingPointRange
2025
+ a owl:DatatypeProperty ;
2026
+ rdfs:label "boiling point range"@en ;
2027
+ rdfs:comment """
2028
+ The boiling point or range at specified pressure (e.g., "205-210°C at 10 mmHg").
2029
+ """@en ;
2030
+ rdfs:domain op:BoilingPointSpecification ;
2031
+ rdfs:range xsd:string .
2032
+
2033
+ op:specificRotationValue
2034
+ a owl:DatatypeProperty ;
2035
+ rdfs:label "specific rotation value"@en ;
2036
+ rdfs:comment """
2037
+ The specific rotation value (e.g., "+20.5 to +23.0°").
2038
+ """@en ;
2039
+ rdfs:domain op:SpecificRotationSpecification ;
2040
+ rdfs:range xsd:string .
2041
+
2042
+ op:rotationSolvent
2043
+ a owl:DatatypeProperty ;
2044
+ rdfs:label "rotation solvent"@en ;
2045
+ rdfs:comment """
2046
+ The solvent used for optical rotation measurement (e.g., "Water", "Ethanol").
2047
+ """@en ;
2048
+ rdfs:domain op:SpecificRotationSpecification ;
2049
+ rdfs:range xsd:string .
2050
+
2051
+ op:rotationConcentration
2052
+ a owl:DatatypeProperty ;
2053
+ rdfs:label "rotation concentration"@en ;
2054
+ rdfs:comment """
2055
+ The concentration of the solution for rotation measurement (e.g., "100 mg/mL").
2056
+ """@en ;
2057
+ rdfs:domain op:SpecificRotationSpecification ;
2058
+ rdfs:range xsd:string .
2059
+
2060
+ op:rotationTemperature
2061
+ a owl:DatatypeProperty ;
2062
+ rdfs:label "rotation temperature"@en ;
2063
+ rdfs:comment """
2064
+ The temperature for rotation measurement (e.g., "20°C").
2065
+ """@en ;
2066
+ rdfs:domain op:SpecificRotationSpecification ;
2067
+ rdfs:range xsd:string .
2068
+
2069
+ op:refractiveIndexValue
2070
+ a owl:DatatypeProperty ;
2071
+ rdfs:label "refractive index value"@en ;
2072
+ rdfs:comment """
2073
+ The refractive index value (e.g., "1.498 to 1.500").
2074
+ """@en ;
2075
+ rdfs:domain op:RefractiveIndexSpecification ;
2076
+ rdfs:range xsd:string .
2077
+
2078
+ op:refractiveIndexTemperature
2079
+ a owl:DatatypeProperty ;
2080
+ rdfs:label "refractive index temperature"@en ;
2081
+ rdfs:comment """
2082
+ The temperature for refractive index measurement (e.g., "20°C").
2083
+ """@en ;
2084
+ rdfs:domain op:RefractiveIndexSpecification ;
2085
+ rdfs:range xsd:string .
2086
+
2087
+ op:individualImpurityLimit
2088
+ a owl:DatatypeProperty ;
2089
+ rdfs:label "individual impurity limit"@en ;
2090
+ rdfs:comment """
2091
+ The limit for any single impurity (e.g., "Not more than 0.5%").
2092
+ """@en ;
2093
+ rdfs:domain op:RelatedSubstancesSpecification ;
2094
+ rdfs:range xsd:string .
2095
+
2096
+ op:totalImpuritiesLimit
2097
+ a owl:DatatypeProperty ;
2098
+ rdfs:label "total impurities limit"@en ;
2099
+ rdfs:comment """
2100
+ The limit for total impurities (e.g., "Not more than 2.0%").
2101
+ """@en ;
2102
+ rdfs:domain op:RelatedSubstancesSpecification ;
2103
+ rdfs:range xsd:string .
2104
+
2105
+ op:solventClass
2106
+ a owl:DatatypeProperty ;
2107
+ rdfs:label "solvent class"@en ;
2108
+ rdfs:comment """
2109
+ The ICH classification of the solvent (Class 1, 2, or 3).
2110
+ """@en ;
2111
+ rdfs:domain op:ResidualSolventsSpecification ;
2112
+ rdfs:range xsd:string .
2113
+
2114
+ op:solventName
2115
+ a owl:DatatypeProperty ;
2116
+ rdfs:label "solvent name"@en ;
2117
+ rdfs:comment """
2118
+ The name of the residual solvent being limited (e.g., "Benzene", "Methanol").
2119
+ """@en ;
2120
+ rdfs:domain op:ResidualSolventsSpecification ;
2121
+ rdfs:range xsd:string .
2122
+
2123
+ op:pHRange
2124
+ a owl:DatatypeProperty ;
2125
+ rdfs:label "pH range"@en ;
2126
+ rdfs:comment """
2127
+ The acceptable pH range (e.g., "4.5 to 7.0").
2128
+ """@en ;
2129
+ rdfs:domain op:pHSpecification ;
2130
+ rdfs:range xsd:string .
2131
+
2132
+ op:pHConcentration
2133
+ a owl:DatatypeProperty ;
2134
+ rdfs:label "pH concentration"@en ;
2135
+ rdfs:comment """
2136
+ The concentration of the solution for pH measurement (e.g., "1% w/v").
2137
+ """@en ;
2138
+ rdfs:domain op:pHSpecification ;
2139
+ rdfs:range xsd:string .
2140
+
2141
+ # =============================================================================
2142
+ # ADDITIONAL TEST TYPE INDIVIDUALS (Chemical-Specific)
2143
+ # =============================================================================
2144
+
2145
+ op:TestType-MeltingPoint
2146
+ a op:TestType ;
2147
+ rdfs:label "Melting Point"@en ;
2148
+ skos:definition "Tests for the melting point or range of a solid substance."@en .
2149
+
2150
+ op:TestType-BoilingPoint
2151
+ a op:TestType ;
2152
+ rdfs:label "Boiling Point"@en ;
2153
+ skos:definition "Tests for the boiling point or range of a liquid substance."@en .
2154
+
2155
+ op:TestType-SpecificRotation
2156
+ a op:TestType ;
2157
+ rdfs:label "Specific Rotation"@en ;
2158
+ skos:definition "Tests for optical rotation of chiral substances."@en .
2159
+
2160
+ op:TestType-RefractiveIndex
2161
+ a op:TestType ;
2162
+ rdfs:label "Refractive Index"@en ;
2163
+ skos:definition "Tests for the refractive index of liquid substances."@en .
2164
+
2165
+ op:TestType-RelatedSubstances
2166
+ a op:TestType ;
2167
+ rdfs:label "Related Substances"@en ;
2168
+ skos:definition "Tests for impurities related to the active substance."@en .
2169
+
2170
+ op:TestType-ResidualSolvents
2171
+ a op:TestType ;
2172
+ rdfs:label "Residual Solvents"@en ;
2173
+ skos:definition "Tests for residual solvent content."@en .
2174
+
2175
+ op:TestType-pH
2176
+ a op:TestType ;
2177
+ rdfs:label "pH"@en ;
2178
+ skos:definition "Tests for the pH of a solution or suspension."@en .
2179
+
2180
+ # =============================================================================
2181
+ # VITAMIN TYPE VOCABULARY (MECE)
2182
+ # =============================================================================
2183
+
2184
+ op:VitaminType
2185
+ a owl:Class ;
2186
+ rdfs:label "Vitamin Type"@en ;
2187
+ rdfs:comment "Classification of vitamins by chemical structure and biological function."@en ;
2188
+ rdfs:subClassOf skos:Concept .
2189
+
2190
+ op:VitaminA
2191
+ a op:VitaminType ;
2192
+ rdfs:label "Vitamin A"@en ;
2193
+ skos:altLabel "Retinoids"@en ;
2194
+ skos:definition "Fat-soluble vitamins including retinol, retinal, and retinoic acid."@en .
2195
+
2196
+ op:VitaminB1
2197
+ a op:VitaminType ;
2198
+ rdfs:label "Vitamin B1"@en ;
2199
+ skos:altLabel "Thiamine"@en ;
2200
+ skos:definition "Water-soluble vitamin, cofactor for carbohydrate metabolism."@en .
2201
+
2202
+ op:VitaminB2
2203
+ a op:VitaminType ;
2204
+ rdfs:label "Vitamin B2"@en ;
2205
+ skos:altLabel "Riboflavin"@en ;
2206
+ skos:definition "Water-soluble vitamin, component of FAD and FMN."@en .
2207
+
2208
+ op:VitaminB3
2209
+ a op:VitaminType ;
2210
+ rdfs:label "Vitamin B3"@en ;
2211
+ skos:altLabel "Niacin"@en , "Nicotinic Acid"@en ;
2212
+ skos:definition "Water-soluble vitamin, precursor to NAD and NADP."@en .
2213
+
2214
+ op:VitaminB5
2215
+ a op:VitaminType ;
2216
+ rdfs:label "Vitamin B5"@en ;
2217
+ skos:altLabel "Pantothenic Acid"@en ;
2218
+ skos:definition "Water-soluble vitamin, component of coenzyme A."@en .
2219
+
2220
+ op:VitaminB6
2221
+ a op:VitaminType ;
2222
+ rdfs:label "Vitamin B6"@en ;
2223
+ skos:altLabel "Pyridoxine"@en ;
2224
+ skos:definition "Water-soluble vitamin, cofactor for amino acid metabolism."@en .
2225
+
2226
+ op:VitaminB7
2227
+ a op:VitaminType ;
2228
+ rdfs:label "Vitamin B7"@en ;
2229
+ skos:altLabel "Biotin"@en ;
2230
+ skos:definition "Water-soluble vitamin, cofactor for carboxylase enzymes."@en .
2231
+
2232
+ op:VitaminB9
2233
+ a op:VitaminType ;
2234
+ rdfs:label "Vitamin B9"@en ;
2235
+ skos:altLabel "Folic Acid"@en , "Folate"@en ;
2236
+ skos:definition "Water-soluble vitamin, essential for DNA synthesis."@en .
2237
+
2238
+ op:VitaminB12
2239
+ a op:VitaminType ;
2240
+ rdfs:label "Vitamin B12"@en ;
2241
+ skos:altLabel "Cobalamin"@en ;
2242
+ skos:definition "Water-soluble vitamin, cofactor for methylmalonyl-CoA mutase."@en .
2243
+
2244
+ op:VitaminC
2245
+ a op:VitaminType ;
2246
+ rdfs:label "Vitamin C"@en ;
2247
+ skos:altLabel "Ascorbic Acid"@en ;
2248
+ skos:definition "Water-soluble vitamin, antioxidant and collagen synthesis cofactor."@en .
2249
+
2250
+ op:VitaminD
2251
+ a op:VitaminType ;
2252
+ rdfs:label "Vitamin D"@en ;
2253
+ skos:altLabel "Calciferol"@en ;
2254
+ skos:definition "Fat-soluble vitamin, regulates calcium and phosphate metabolism."@en .
2255
+
2256
+ op:VitaminE
2257
+ a op:VitaminType ;
2258
+ rdfs:label "Vitamin E"@en ;
2259
+ skos:altLabel "Tocopherol"@en ;
2260
+ skos:definition "Fat-soluble vitamin, antioxidant protecting cell membranes."@en .
2261
+
2262
+ op:VitaminK
2263
+ a op:VitaminType ;
2264
+ rdfs:label "Vitamin K"@en ;
2265
+ skos:altLabel "Phylloquinone"@en ;
2266
+ skos:definition "Fat-soluble vitamin, essential for blood coagulation."@en .
2267
+
2268
+ # Property for vitamin type
2269
+ op:vitaminType
2270
+ a owl:ObjectProperty ;
2271
+ rdfs:label "vitamin type"@en ;
2272
+ rdfs:comment "The specific vitamin classification for a vitamin monograph."@en ;
2273
+ rdfs:domain op:VitaminMonograph ;
2274
+ rdfs:range op:VitaminType .
2275
+
2276
+ # Property for biological activity (vitamin potency)
2277
+ op:biologicalActivity
2278
+ a owl:DatatypeProperty ;
2279
+ rdfs:label "biological activity"@en ;
2280
+ rdfs:comment """
2281
+ The biological activity expressed in appropriate units (e.g., IU/mg for vitamins).
2282
+ """@en ;
2283
+ rdfs:domain op:VitaminMonograph ;
2284
+ rdfs:range rdf:langString .
2285
+
2286
+ # =============================================================================
2287
+ # AMINO ACID TYPE VOCABULARY (MECE)
2288
+ # =============================================================================
2289
+
2290
+ op:AminoAcidType
2291
+ a owl:Class ;
2292
+ rdfs:label "Amino Acid Type"@en ;
2293
+ rdfs:comment "Classification of amino acids by structure and metabolic role."@en ;
2294
+ rdfs:subClassOf skos:Concept .
2295
+
2296
+ # Essential amino acids
2297
+ op:AminoAcid-Histidine
2298
+ a op:AminoAcidType ;
2299
+ rdfs:label "Histidine"@en ;
2300
+ skos:altLabel "L-Histidine"@en ;
2301
+ skos:definition "Essential amino acid with an imidazole side chain."@en .
2302
+
2303
+ op:AminoAcid-Isoleucine
2304
+ a op:AminoAcidType ;
2305
+ rdfs:label "Isoleucine"@en ;
2306
+ skos:altLabel "L-Isoleucine"@en ;
2307
+ skos:definition "Essential branched-chain amino acid."@en .
2308
+
2309
+ op:AminoAcid-Leucine
2310
+ a op:AminoAcidType ;
2311
+ rdfs:label "Leucine"@en ;
2312
+ skos:altLabel "L-Leucine"@en ;
2313
+ skos:definition "Essential branched-chain amino acid."@en .
2314
+
2315
+ op:AminoAcid-Lysine
2316
+ a op:AminoAcidType ;
2317
+ rdfs:label "Lysine"@en ;
2318
+ skos:altLabel "L-Lysine"@en ;
2319
+ skos:definition "Essential amino acid with an ε-amino group."@en .
2320
+
2321
+ op:AminoAcid-Methionine
2322
+ a op:AminoAcidType ;
2323
+ rdfs:label "Methionine"@en ;
2324
+ skos:altLabel "L-Methionine"@en ;
2325
+ skos:definition "Essential sulfur-containing amino acid."@en .
2326
+
2327
+ op:AminoAcid-Phenylalanine
2328
+ a op:AminoAcidType ;
2329
+ rdfs:label "Phenylalanine"@en ;
2330
+ skos:altLabel "L-Phenylalanine"@en ;
2331
+ skos:definition "Essential aromatic amino acid."@en .
2332
+
2333
+ op:AminoAcid-Threonine
2334
+ a op:AminoAcidType ;
2335
+ rdfs:label "Threonine"@en ;
2336
+ skos:altLabel "L-Threonine"@en ;
2337
+ skos:definition "Essential amino acid with a hydroxyl group."@en .
2338
+
2339
+ op:AminoAcid-Tryptophan
2340
+ a op:AminoAcidType ;
2341
+ rdfs:label "Tryptophan"@en ;
2342
+ skos:altLabel "L-Tryptophan"@en ;
2343
+ skos:definition "Essential amino acid with an indole group."@en .
2344
+
2345
+ op:AminoAcid-Valine
2346
+ a op:AminoAcidType ;
2347
+ rdfs:label "Valine"@en ;
2348
+ skos:altLabel "L-Valine"@en ;
2349
+ skos:definition "Essential branched-chain amino acid."@en .
2350
+
2351
+ # Non-essential amino acids (commonly used in pharmacopoeia)
2352
+ op:AminoAcid-Alanine
2353
+ a op:AminoAcidType ;
2354
+ rdfs:label "Alanine"@en ;
2355
+ skos:altLabel "L-Alanine"@en ;
2356
+ skos:definition "Non-essential simple amino acid."@en .
2357
+
2358
+ op:AminoAcid-Arginine
2359
+ a op:AminoAcidType ;
2360
+ rdfs:label "Arginine"@en ;
2361
+ skos:altLabel "L-Arginine"@en ;
2362
+ skos:definition "Conditionally essential amino acid with a guanidino group."@en .
2363
+
2364
+ op:AminoAcid-Asparagine
2365
+ a op:AminoAcidType ;
2366
+ rdfs:label "Asparagine"@en ;
2367
+ skos:altLabel "L-Asparagine"@en ;
2368
+ skos:definition "Non-essential amino acid with an amide group."@en .
2369
+
2370
+ op:AminoAcid-AsparticAcid
2371
+ a op:AminoAcidType ;
2372
+ rdfs:label "Aspartic Acid"@en ;
2373
+ skos:altLabel "L-Aspartic Acid"@en , "Aspartate"@en ;
2374
+ skos:definition "Non-essential acidic amino acid."@en .
2375
+
2376
+ op:AminoAcid-Cysteine
2377
+ a op:AminoAcidType ;
2378
+ rdfs:label "Cysteine"@en ;
2379
+ skos:altLabel "L-Cysteine"@en ;
2380
+ skos:definition "Conditionally essential sulfur-containing amino acid."@en .
2381
+
2382
+ op:AminoAcid-GlutamicAcid
2383
+ a op:AminoAcidType ;
2384
+ rdfs:label "Glutamic Acid"@en ;
2385
+ skos:altLabel "L-Glutamic Acid"@en , "Glutamate"@en ;
2386
+ skos:definition "Non-essential acidic amino acid."@en .
2387
+
2388
+ op:AminoAcid-Glutamine
2389
+ a op:AminoAcidType ;
2390
+ rdfs:label "Glutamine"@en ;
2391
+ skos:altLabel "L-Glutamine"@en ;
2392
+ skos:definition "Conditionally essential amino acid with an amide group."@en .
2393
+
2394
+ op:AminoAcid-Glycine
2395
+ a op:AminoAcidType ;
2396
+ rdfs:label "Glycine"@en ;
2397
+ skos:definition "Simplest non-essential amino acid."@en .
2398
+
2399
+ op:AminoAcid-Proline
2400
+ a op:AminoAcidType ;
2401
+ rdfs:label "Proline"@en ;
2402
+ skos:altLabel "L-Proline"@en ;
2403
+ skos:definition "Non-essential cyclic amino acid."@en .
2404
+
2405
+ op:AminoAcid-Serine
2406
+ a op:AminoAcidType ;
2407
+ rdfs:label "Serine"@en ;
2408
+ skos:altLabel "L-Serine"@en ;
2409
+ skos:definition "Non-essential amino acid with a hydroxyl group."@en .
2410
+
2411
+ op:AminoAcid-Tyrosine
2412
+ a op:AminoAcidType ;
2413
+ rdfs:label "Tyrosine"@en ;
2414
+ skos:altLabel "L-Tyrosine"@en ;
2415
+ skos:definition "Conditionally essential aromatic amino acid."@en .
2416
+
2417
+ # Properties for amino acid
2418
+ op:aminoAcidType
2419
+ a owl:ObjectProperty ;
2420
+ rdfs:label "amino acid type"@en ;
2421
+ rdfs:comment "The specific amino acid classification."@en ;
2422
+ rdfs:domain op:AminoAcidMonograph ;
2423
+ rdfs:range op:AminoAcidType .
2424
+
2425
+ op:essentialAminoAcid
2426
+ a owl:DatatypeProperty ;
2427
+ rdfs:label "essential amino acid"@en ;
2428
+ rdfs:comment "Whether the amino acid is essential (must be obtained from diet)."@en ;
2429
+ rdfs:domain op:AminoAcidMonograph ;
2430
+ rdfs:range xsd:boolean .
2431
+
2432
+ op:stereochemistry
2433
+ a owl:DatatypeProperty ;
2434
+ rdfs:label "stereochemistry"@en ;
2435
+ rdfs:comment "The stereochemical configuration (L, D, DL, or meso)."@en ;
2436
+ rdfs:domain op:AminoAcidMonograph ;
2437
+ rdfs:range xsd:string .
2438
+
2439
+ # =============================================================================
2440
+ # MINERAL TYPE VOCABULARY (MECE)
2441
+ # =============================================================================
2442
+
2443
+ op:MineralType
2444
+ a owl:Class ;
2445
+ rdfs:label "Mineral Type"@en ;
2446
+ rdfs:comment "Classification of mineral substances by composition."@en ;
2447
+ rdfs:subClassOf skos:Concept .
2448
+
2449
+ op:SimpleMineral
2450
+ a op:MineralType ;
2451
+ rdfs:label "Simple Mineral"@en ;
2452
+ skos:definition "Single chemical compound of mineral origin (e.g., zinc oxide, sulfur)."@en .
2453
+
2454
+ op:MineralMixture
2455
+ a op:MineralType ;
2456
+ rdfs:label "Mineral Mixture"@en ;
2457
+ skos:definition "Natural mixture of minerals (e.g., kaolin, bentonite, talc)."@en .
2458
+
2459
+ op:MineralSalt
2460
+ a op:MineralType ;
2461
+ rdfs:label "Mineral Salt"@en ;
2462
+ skos:definition "Ionic compound containing mineral elements (e.g., calcium carbonate, sodium chloride)."@en .
2463
+
2464
+ # Property for mineral type
2465
+ op:mineralType
2466
+ a owl:ObjectProperty ;
2467
+ rdfs:label "mineral type"@en ;
2468
+ rdfs:comment "The mineral classification type."@en ;
2469
+ rdfs:domain op:MineralSubstanceMonograph ;
2470
+ rdfs:range op:MineralType .
2471
+
2472
+ op:mineralFormula
2473
+ a owl:DatatypeProperty ;
2474
+ rdfs:label "mineral formula"@en ;
2475
+ rdfs:comment "The chemical formula of the mineral substance."@en ;
2476
+ rdfs:domain op:MineralSubstanceMonograph ;
2477
+ rdfs:range xsd:string .
2478
+
2479
+ op:mineralSource
2480
+ a owl:DatatypeProperty ;
2481
+ rdfs:label "mineral source"@en ;
2482
+ rdfs:comment "The natural or synthetic source of the mineral."@en ;
2483
+ rdfs:domain op:MineralSubstanceMonograph ;
2484
+ rdfs:range rdf:langString .
2485
+
2486
+ # =============================================================================
2487
+ # BIOLOGICAL SOURCE TYPE VOCABULARY (MECE)
2488
+ # =============================================================================
2489
+
2490
+ op:BiologicalSourceType
2491
+ a owl:Class ;
2492
+ rdfs:label "Biological Source Type"@en ;
2493
+ rdfs:comment "Classification of biological substances by source type."@en ;
2494
+ rdfs:subClassOf skos:Concept .
2495
+
2496
+ op:BiologicalSourceType-Enzyme
2497
+ a op:BiologicalSourceType ;
2498
+ rdfs:label "Enzyme"@en ;
2499
+ skos:definition "Protein catalysts derived from biological sources."@en .
2500
+
2501
+ op:BiologicalSourceType-Hormone
2502
+ a op:BiologicalSourceType ;
2503
+ rdfs:label "Hormone"@en ;
2504
+ skos:definition "Signaling molecules produced by endocrine tissues."@en .
2505
+
2506
+ op:BiologicalSourceType-BloodProduct
2507
+ a op:BiologicalSourceType ;
2508
+ rdfs:label "Blood Product"@en ;
2509
+ skos:definition "Products derived from blood or plasma."@en .
2510
+
2511
+ op:BiologicalSourceType-Vaccine
2512
+ a op:BiologicalSourceType ;
2513
+ rdfs:label "Vaccine"@en ;
2514
+ skos:definition "Immunogenic preparations for disease prevention."@en .
2515
+
2516
+ op:BiologicalSourceType-Antitoxin
2517
+ a op:BiologicalSourceType ;
2518
+ rdfs:label "Antitoxin"@en ;
2519
+ skos:definition "Antibodies that neutralize toxins."@en .
2520
+
2521
+ op:BiologicalSourceType-Antiserum
2522
+ a op:BiologicalSourceType ;
2523
+ rdfs:label "Antiserum"@en ;
2524
+ skos:definition "Serum containing antibodies against specific antigens."@en .
2525
+
2526
+ op:BiologicalSourceType-Cytokine
2527
+ a op:BiologicalSourceType ;
2528
+ rdfs:label "Cytokine"@en ;
2529
+ skos:definition "Signaling proteins involved in immune responses."@en .
2530
+
2531
+ op:BiologicalSourceType-GrowthFactor
2532
+ a op:BiologicalSourceType ;
2533
+ rdfs:label "Growth Factor"@en ;
2534
+ skos:definition "Proteins that stimulate cellular growth and differentiation."@en .
2535
+
2536
+ # Property for biological source type
2537
+ op:biologicalSourceType
2538
+ a owl:ObjectProperty ;
2539
+ rdfs:label "biological source type"@en ;
2540
+ rdfs:comment "The type of biological substance."@en ;
2541
+ rdfs:domain op:BiologicalSubstanceMonograph ;
2542
+ rdfs:range op:BiologicalSourceType .
2543
+
2544
+ op:sourceOrganism
2545
+ a owl:DatatypeProperty ;
2546
+ rdfs:label "source organism"@en ;
2547
+ rdfs:comment "The organism from which the biological substance is derived."@en ;
2548
+ rdfs:domain op:BiologicalSubstanceMonograph ;
2549
+ rdfs:range rdf:langString .
2550
+
2551
+ # =============================================================================
2552
+ # ORGANISM CLASS (from data-japan-pharmacopia)
2553
+ # =============================================================================
2554
+
2555
+ op:Organism
2556
+ a owl:Class ;
2557
+ rdfs:label "Organism"@en ;
2558
+ rdfs:comment """
2559
+ Represents a biological organism (plant, animal, fungus, etc.)
2560
+ used as a source for pharmacopoeial substances.
2561
+ """@en .
2562
+
2563
+ op:organismName
2564
+ a owl:DatatypeProperty ;
2565
+ rdfs:label "organism name"@en ;
2566
+ rdfs:comment "The scientific name of the organism."@en ;
2567
+ rdfs:domain op:Organism ;
2568
+ rdfs:range rdf:langString .
2569
+
2570
+ op:commonName
2571
+ a owl:DatatypeProperty ;
2572
+ rdfs:label "common name"@en ;
2573
+ rdfs:comment "The common or vernacular name of the organism."@en ;
2574
+ rdfs:domain op:Organism ;
2575
+ rdfs:range rdf:langString .
2576
+
2577
+ op:taxonomicFamily
2578
+ a owl:DatatypeProperty ;
2579
+ rdfs:label "taxonomic family"@en ;
2580
+ rdfs:comment "The taxonomic family of the organism."@en ;
2581
+ rdfs:domain op:Organism ;
2582
+ rdfs:range rdf:langString .
2583
+
2584
+ op:derivedFromOrganism
2585
+ a owl:ObjectProperty ;
2586
+ rdfs:label "derived from organism"@en ;
2587
+ rdfs:comment "Links a biological source to the organism it is derived from."@en ;
2588
+ rdfs:range op:Organism .
2589
+
2590
+ op:organismPart
2591
+ a owl:DatatypeProperty ;
2592
+ rdfs:label "organism part"@en ;
2593
+ rdfs:comment "The part of the organism used (root, leaf, flower, etc.)."@en ;
2594
+ rdfs:domain op:BiologicalSource ;
2595
+ rdfs:range rdf:langString .
2596
+
2597
+ # =============================================================================
2598
+ # MARKER COMPOUND CLASS (from data-japan-pharmacopia)
2599
+ # =============================================================================
2600
+
2601
+ op:MarkerCompound
2602
+ a owl:Class ;
2603
+ rdfs:label "Marker Compound"@en ;
2604
+ rdfs:comment """
2605
+ A marker compound used for identification or assay of herbal preparations.
2606
+ Marker compounds are chemical constituents used to assess quality.
2607
+ """@en .
2608
+
2609
+ op:markerName
2610
+ a owl:DatatypeProperty ;
2611
+ rdfs:label "marker name"@en ;
2612
+ rdfs:comment "The name of the marker compound."@en ;
2613
+ rdfs:domain op:MarkerCompound ;
2614
+ rdfs:range rdf:langString .
2615
+
2616
+ op:containsCompound
2617
+ a owl:ObjectProperty ;
2618
+ rdfs:label "contains compound"@en ;
2619
+ rdfs:comment "Links a marker to the chemical compound it represents."@en ;
2620
+ rdfs:domain op:MarkerCompound ;
2621
+ rdfs:range op:ChemicalCompound .
2622
+
2623
+ op:minimumAmount
2624
+ a owl:DatatypeProperty ;
2625
+ rdfs:label "minimum amount"@en ;
2626
+ rdfs:comment "The minimum required amount of the marker compound."@en ;
2627
+ rdfs:domain op:MarkerCompound ;
2628
+ rdfs:range xsd:decimal .
2629
+
2630
+ # =============================================================================
2631
+ # CONTAINERS AND STORAGE CLASS (from data-japan-pharmacopia)
2632
+ # =============================================================================
2633
+
2634
+ op:ContainersAndStorage
2635
+ a owl:Class ;
2636
+ rdfs:label "Containers and Storage"@en ;
2637
+ rdfs:comment """
2638
+ Storage requirements and container specifications for pharmacopoeial substances.
2639
+ Includes container type, storage conditions, and shelf life.
2640
+ """@en .
2641
+
2642
+ op:containerType
2643
+ a owl:DatatypeProperty ;
2644
+ rdfs:label "container type"@en ;
2645
+ rdfs:comment "The type of container required for storage."@en ;
2646
+ rdfs:domain op:ContainersAndStorage ;
2647
+ rdfs:range rdf:langString .
2648
+
2649
+ op:storageConditions
2650
+ a owl:DatatypeProperty ;
2651
+ rdfs:label "storage conditions"@en ;
2652
+ rdfs:comment "Required storage conditions (temperature, humidity, light)."@en ;
2653
+ rdfs:domain op:ContainersAndStorage ;
2654
+ rdfs:range rdf:langString .
2655
+
2656
+ op:shelfLife
2657
+ a owl:DatatypeProperty ;
2658
+ rdfs:label "shelf life"@en ;
2659
+ rdfs:comment "The expiration period of the substance."@en ;
2660
+ rdfs:domain op:ContainersAndStorage ;
2661
+ rdfs:range rdf:langString .
2662
+
2663
+ op:protectionFromLight
2664
+ a owl:DatatypeProperty ;
2665
+ rdfs:label "protection from light"@en ;
2666
+ rdfs:comment "Whether the substance requires protection from light."@en ;
2667
+ rdfs:domain op:ContainersAndStorage ;
2668
+ rdfs:range xsd:boolean .
2669
+
2670
+ # =============================================================================
2671
+ # HORMONE TYPE VOCABULARY (MECE)
2672
+ # =============================================================================
2673
+
2674
+ op:HormoneType
2675
+ a owl:Class ;
2676
+ rdfs:label "Hormone Type"@en ;
2677
+ rdfs:comment "Classification of hormones by structure and function."@en ;
2678
+ rdfs:subClassOf skos:Concept .
2679
+
2680
+ # Peptide hormones
2681
+ op:HormoneType-Insulin
2682
+ a op:HormoneType ;
2683
+ rdfs:label "Insulin"@en ;
2684
+ skos:definition "Peptide hormone regulating glucose metabolism."@en .
2685
+
2686
+ op:HormoneType-Glucagon
2687
+ a op:HormoneType ;
2688
+ rdfs:label "Glucagon"@en ;
2689
+ skos:definition "Peptide hormone that raises blood glucose levels."@en .
2690
+
2691
+ op:HormoneType-Oxytocin
2692
+ a op:HormoneType ;
2693
+ rdfs:label "Oxytocin"@en ;
2694
+ skos:definition "Peptide hormone involved in childbirth and lactation."@en .
2695
+
2696
+ op:HormoneType-Vasopressin
2697
+ a op:HormoneType ;
2698
+ rdfs:label "Vasopressin"@en ;
2699
+ skos:altLabel "Antidiuretic Hormone"@en ;
2700
+ skos:definition "Peptide hormone regulating water retention."@en .
2701
+
2702
+ # Steroid hormones
2703
+ op:HormoneType-Cortisol
2704
+ a op:HormoneType ;
2705
+ rdfs:label "Cortisol"@en ;
2706
+ skos:altLabel "Hydrocortisone"@en ;
2707
+ skos:definition "Glucocorticoid hormone involved in stress response."@en .
2708
+
2709
+ op:HormoneType-Cortisone
2710
+ a op:HormoneType ;
2711
+ rdfs:label "Cortisone"@en ;
2712
+ skos:definition "Glucocorticoid hormone with anti-inflammatory effects."@en .
2713
+
2714
+ op:HormoneType-Prednisolone
2715
+ a op:HormoneType ;
2716
+ rdfs:label "Prednisolone"@en ;
2717
+ skos:definition "Synthetic glucocorticoid with anti-inflammatory effects."@en .
2718
+
2719
+ op:HormoneType-Estrogen
2720
+ a op:HormoneType ;
2721
+ rdfs:label "Estrogen"@en ;
2722
+ skos:definition "Steroid hormones responsible for female characteristics."@en .
2723
+
2724
+ op:HormoneType-Progesterone
2725
+ a op:HormoneType ;
2726
+ rdfs:label "Progesterone"@en ;
2727
+ skos:definition "Steroid hormone involved in menstrual cycle and pregnancy."@en .
2728
+
2729
+ op:HormoneType-Testosterone
2730
+ a op:HormoneType ;
2731
+ rdfs:label "Testosterone"@en ;
2732
+ skos:definition "Steroid hormone responsible for male characteristics."@en .
2733
+
2734
+ # Glycoprotein hormones
2735
+ op:HormoneType-Thyroid
2736
+ a op:HormoneType ;
2737
+ rdfs:label "Thyroid Hormone"@en ;
2738
+ skos:altLabel "Thyroxine"@en , "T3/T4"@en ;
2739
+ skos:definition "Iodinated hormones regulating metabolism."@en .
2740
+
2741
+ # Property for hormone type
2742
+ op:hormoneType
2743
+ a owl:ObjectProperty ;
2744
+ rdfs:label "hormone type"@en ;
2745
+ rdfs:comment "The specific hormone classification."@en ;
2746
+ rdfs:domain op:HormonePreparationMonograph ;
2747
+ rdfs:range op:HormoneType .
2748
+
2749
+ op:biologicalPotency
2750
+ a owl:DatatypeProperty ;
2751
+ rdfs:label "biological potency"@en ;
2752
+ rdfs:comment "The biological potency expressed in appropriate units (e.g., IU/mg)."@en ;
2753
+ rdfs:domain op:HormonePreparationMonograph ;
2754
+ rdfs:range rdf:langString .
2755
+
2756
+ # =============================================================================
2757
+ # TEMPERATURE UNIT VOCABULARY
2758
+ # =============================================================================
2759
+
2760
+ op:TemperatureUnit
2761
+ a owl:Class ;
2762
+ rdfs:label "Temperature Unit"@en ;
2763
+ rdfs:comment "Units of temperature measurement."@en ;
2764
+ rdfs:subClassOf skos:Concept .
2765
+
2766
+ op:Celsius
2767
+ a op:TemperatureUnit ;
2768
+ rdfs:label "Celsius"@en ;
2769
+ skos:altLabel "°C"@en ;
2770
+ skos:definition "Temperature scale where 0°C is the freezing point of water."@en .
2771
+
2772
+ op:Fahrenheit
2773
+ a op:TemperatureUnit ;
2774
+ rdfs:label "Fahrenheit"@en ;
2775
+ skos:altLabel "°F"@en ;
2776
+ skos:definition "Temperature scale where 32°F is the freezing point of water."@en .
2777
+
2778
+ op:Kelvin
2779
+ a op:TemperatureUnit ;
2780
+ rdfs:label "Kelvin"@en ;
2781
+ skos:altLabel "K"@en ;
2782
+ skos:definition "Absolute temperature scale where 0 K is absolute zero."@en .
2783
+
2784
+ # Property for temperature unit
2785
+ op:temperatureUnit
2786
+ a owl:ObjectProperty ;
2787
+ rdfs:label "temperature unit"@en ;
2788
+ rdfs:comment "The unit of temperature measurement."@en ;
2789
+ rdfs:domain op:MeltingPointSpecification ;
2790
+ rdfs:range op:TemperatureUnit .
2791
+
2792
+ # =============================================================================
2793
+ # ENZYME-SPECIFIC PROPERTIES
2794
+ # =============================================================================
2795
+
2796
+ op:enzymeCommissionNumber
2797
+ a owl:DatatypeProperty ;
2798
+ rdfs:label "enzyme commission number"@en ;
2799
+ rdfs:comment "The EC number classification for enzymes (e.g., EC 3.4.23.1)."@en ;
2800
+ rdfs:domain op:EnzymePreparationMonograph ;
2801
+ rdfs:range xsd:string .
2802
+
2803
+ op:enzymeActivity
2804
+ a owl:DatatypeProperty ;
2805
+ rdfs:label "enzyme activity"@en ;
2806
+ rdfs:comment """
2807
+ The catalytic activity of the enzyme preparation expressed in appropriate units
2808
+ (e.g., Units/mg, Units/g).
2809
+ """@en ;
2810
+ rdfs:domain op:EnzymePreparationMonograph ;
2811
+ rdfs:range rdf:langString .
2812
+
2813
+ op:optimalPH
2814
+ a owl:DatatypeProperty ;
2815
+ rdfs:label "optimal pH"@en ;
2816
+ rdfs:comment "The pH at which the enzyme exhibits maximum activity."@en ;
2817
+ rdfs:domain op:EnzymePreparationMonograph ;
2818
+ rdfs:range xsd:decimal .
2819
+
2820
+ op:optimalTemperature
2821
+ a owl:DatatypeProperty ;
2822
+ rdfs:label "optimal temperature"@en ;
2823
+ rdfs:comment "The temperature at which the enzyme exhibits maximum activity (in °C)."@en ;
2824
+ rdfs:domain op:EnzymePreparationMonograph ;
2825
+ rdfs:range xsd:decimal .
2826
+
2827
+ op:activityUnit
2828
+ a owl:DatatypeProperty ;
2829
+ rdfs:label "activity unit"@en ;
2830
+ rdfs:comment """
2831
+ The definition of one unit of enzyme/biological activity.
2832
+ """@en ;
2833
+ rdfs:domain op:BiologicalSubstanceMonograph ;
2834
+ rdfs:range rdf:langString .
2835
+
2836
+ # =============================================================================
2837
+ # THERAPEUTIC CATEGORY CLASS (from data-japan-pharmacopia)
2838
+ # =============================================================================
2839
+
2840
+ op:TherapeuticCategory
2841
+ a owl:Class ;
2842
+ rdfs:label "Therapeutic Category"@en ;
2843
+ rdfs:comment """
2844
+ A classification of drugs by their therapeutic use or clinical application.
2845
+ Enables grouping of drugs by therapeutic class (e.g., analgesics, antibiotics).
2846
+ """@en .
2847
+
2848
+ op:categoryCode
2849
+ a owl:DatatypeProperty ;
2850
+ rdfs:label "category code"@en ;
2851
+ rdfs:comment "A code identifying the therapeutic category."@en ;
2852
+ rdfs:domain op:TherapeuticCategory ;
2853
+ rdfs:range xsd:string .
2854
+
2855
+ op:categoryName
2856
+ a owl:DatatypeProperty ;
2857
+ rdfs:label "category name"@en ;
2858
+ rdfs:comment "The name of the therapeutic category."@en ;
2859
+ rdfs:domain op:TherapeuticCategory ;
2860
+ rdfs:range rdf:langString .
2861
+
2862
+ # =============================================================================
2863
+ # PLANT PART CLASS (from data-japan-pharmacopia)
2864
+ # =============================================================================
2865
+
2866
+ op:PlantPart
2867
+ a owl:Class ;
2868
+ rdfs:label "Plant Part"@en ;
2869
+ rdfs:comment """
2870
+ A standardized vocabulary for plant parts used in pharmacopoeial substances.
2871
+ Provides consistent naming for roots, leaves, flowers, etc.
2872
+ """@en .
2873
+
2874
+ op:plantPartCode
2875
+ a owl:DatatypeProperty ;
2876
+ rdfs:label "plant part code"@en ;
2877
+ rdfs:comment "A code identifying the plant part."@en ;
2878
+ rdfs:domain op:PlantPart ;
2879
+ rdfs:range xsd:string .
2880
+
2881
+ op:plantPartName
2882
+ a owl:DatatypeProperty ;
2883
+ rdfs:label "plant part name"@en ;
2884
+ rdfs:comment "The name of the plant part."@en ;
2885
+ rdfs:domain op:PlantPart ;
2886
+ rdfs:range rdf:langString .
2887
+
2888
+ # =============================================================================
2889
+ # THERAPEUTIC PROPERTIES (for PharmacopoeiaMonograph)
2890
+ # =============================================================================
2891
+
2892
+ op:therapeuticClass
2893
+ a owl:DatatypeProperty ;
2894
+ rdfs:label "therapeutic class"@en ;
2895
+ rdfs:comment """
2896
+ The therapeutic classification of the drug (e.g., "Antipyretic", "Analgesic").
2897
+ """@en ;
2898
+ rdfs:domain op:PharmacopoeiaMonograph ;
2899
+ rdfs:range xsd:string .
2900
+
2901
+ op:contraindications
2902
+ a owl:DatatypeProperty ;
2903
+ rdfs:label "contraindications"@en ;
2904
+ rdfs:comment """
2905
+ Contraindications or warnings for use of the drug.
2906
+ """@en ;
2907
+ rdfs:domain op:PharmacopoeiaMonograph ;
2908
+ rdfs:range rdf:langString .
2909
+
2910
+ op:belongsToTherapeuticCategory
2911
+ a owl:ObjectProperty ;
2912
+ rdfs:label "belongs to therapeutic category"@en ;
2913
+ rdfs:comment "Links a monograph to its therapeutic category."@en ;
2914
+ rdfs:domain op:PharmacopoeiaMonograph ;
2915
+ rdfs:range op:TherapeuticCategory .
2916
+
2917
+ op:hasTherapeuticUse
2918
+ a owl:ObjectProperty ;
2919
+ rdfs:label "has therapeutic use"@en ;
2920
+ rdfs:comment "Links a monograph to its therapeutic use or indication."@en ;
2921
+ rdfs:domain op:PharmacopoeiaMonograph ;
2922
+ rdfs:range rdf:langString .
2923
+
2924
+ op:hasContraindication
2925
+ a owl:ObjectProperty ;
2926
+ rdfs:label "has contraindication"@en ;
2927
+ rdfs:comment "Links a monograph to a specific contraindication."@en ;
2928
+ rdfs:domain op:PharmacopoeiaMonograph ;
2929
+ rdfs:range rdf:langString .
2930
+
2931
+ # =============================================================================
2932
+ # TEST METHOD PROPERTIES (from data-japan-pharmacopia)
2933
+ # =============================================================================
2934
+
2935
+ op:chromatographyType
2936
+ a owl:DatatypeProperty ;
2937
+ rdfs:label "chromatography type"@en ;
2938
+ rdfs:comment """
2939
+ The type of chromatography used (e.g., "HPLC", "GC", "TLC").
2940
+ """@en ;
2941
+ rdfs:domain op:TestSpecification ;
2942
+ rdfs:range xsd:string .
2943
+
2944
+ op:usesStandardSubstance
2945
+ a owl:DatatypeProperty ;
2946
+ rdfs:label "uses standard substance"@en ;
2947
+ rdfs:comment """
2948
+ The reference substance used for comparison in the test.
2949
+ """@en ;
2950
+ rdfs:domain op:TestSpecification ;
2951
+ rdfs:range xsd:string .
2952
+
2953
+ op:expectedResult
2954
+ a owl:DatatypeProperty ;
2955
+ rdfs:label "expected result"@en ;
2956
+ rdfs:comment """
2957
+ The expected result of the test
2958
+ (e.g., "Positive reaction", "Rf value 0.2-0.4").
2959
+ """@en ;
2960
+ rdfs:domain op:TestSpecification ;
2961
+ rdfs:range xsd:string .
2962
+
2963
+ # =============================================================================
2964
+ # STORAGE PROPERTIES (from data-japan-pharmacopia)
2965
+ # =============================================================================
2966
+
2967
+ op:lightProtection
2968
+ a owl:DatatypeProperty ;
2969
+ rdfs:label "light protection"@en ;
2970
+ rdfs:comment """
2971
+ Whether the substance requires protection from light.
2972
+ """@en ;
2973
+ rdfs:domain op:ContainersAndStorage ;
2974
+ rdfs:range xsd:boolean .
2975
+
2976
+ op:humidityControl
2977
+ a owl:DatatypeProperty ;
2978
+ rdfs:label "humidity control"@en ;
2979
+ rdfs:comment """
2980
+ Humidity requirements for storage (e.g., "Store in a dry place").
2981
+ """@en ;
2982
+ rdfs:domain op:ContainersAndStorage ;
2983
+ rdfs:range xsd:string .
2984
+
2985
+ # =============================================================================
2986
+ # EXTRACT-SPECIFIC PROPERTIES
2987
+ # =============================================================================
2988
+
2989
+ op:extractionRatio
2990
+ a owl:DatatypeProperty ;
2991
+ rdfs:label "extraction ratio"@en ;
2992
+ rdfs:comment """
2993
+ The extraction ratio (e.g., "5:1", "10:1").
2994
+ """@en ;
2995
+ rdfs:domain op:Extract ;
2996
+ rdfs:range xsd:string .
2997
+
2998
+ op:extractionSolvent
2999
+ a owl:DatatypeProperty ;
3000
+ rdfs:label "extraction solvent"@en ;
3001
+ rdfs:comment """
3002
+ The solvent used for extraction (e.g., "70% Ethanol", "Water").
3003
+ """@en ;
3004
+ rdfs:domain op:Extract ;
3005
+ rdfs:range xsd:string .
3006
+
3007
+ op:hasIngredient
3008
+ a owl:ObjectProperty ;
3009
+ rdfs:label "has ingredient"@en ;
3010
+ rdfs:comment """
3011
+ An ingredient in a multi-herb preparation.
3012
+ """@en ;
3013
+ rdfs:domain op:Extract ;
3014
+ rdfs:range op:CrudeDrugMonograph .
3015
+
3016
+ # =============================================================================
3017
+ # TINCTURE-SPECIFIC PROPERTIES
3018
+ # =============================================================================
3019
+
3020
+ op:ethanolContent
3021
+ a owl:DatatypeProperty ;
3022
+ rdfs:label "ethanol content"@en ;
3023
+ rdfs:comment """
3024
+ The ethanol concentration in tinctures and spirits (e.g., "45-50% v/v").
3025
+ """@en ;
3026
+ rdfs:domain op:Tincture ;
3027
+ rdfs:range xsd:string .
3028
+
3029
+ op:drugStrength
3030
+ a owl:DatatypeProperty ;
3031
+ rdfs:label "drug strength"@en ;
3032
+ rdfs:comment """
3033
+ The concentration of drug in the tincture (e.g., "1:10", "1:5").
3034
+ """@en ;
3035
+ rdfs:domain op:Tincture ;
3036
+ rdfs:range xsd:string .
3037
+
3038
+ # =============================================================================
3039
+ # WAX-SPECIFIC PROPERTIES
3040
+ # =============================================================================
3041
+
3042
+ op:waxType
3043
+ a owl:DatatypeProperty ;
3044
+ rdfs:label "wax type"@en ;
3045
+ rdfs:comment """
3046
+ The type of wax (e.g., "Beeswax", "Carnauba Wax", "Candelilla Wax").
3047
+ """@en ;
3048
+ rdfs:domain op:Wax ;
3049
+ rdfs:range xsd:string .
3050
+
3051
+ # =============================================================================
3052
+ # MARKER COMPOUND ADDITIONAL PROPERTIES
3053
+ # =============================================================================
3054
+
3055
+ op:referenceStandard
3056
+ a owl:DatatypeProperty ;
3057
+ rdfs:label "reference standard"@en ;
3058
+ rdfs:comment """
3059
+ The reference standard used for the marker compound.
3060
+ """@en ;
3061
+ rdfs:domain op:MarkerCompound ;
3062
+ rdfs:range xsd:string .
3063
+
3064
+ op:concentrationRange
3065
+ a owl:DatatypeProperty ;
3066
+ rdfs:label "concentration range"@en ;
3067
+ rdfs:comment """
3068
+ The required concentration range for the marker compound.
3069
+ """@en ;
3070
+ rdfs:domain op:MarkerCompound ;
3071
+ rdfs:range xsd:string .
3072
+
3073
+ op:activeComponent
3074
+ a owl:DatatypeProperty ;
3075
+ rdfs:label "active component"@en ;
3076
+ rdfs:comment """
3077
+ The main active component name in the marker compound.
3078
+ """@en ;
3079
+ rdfs:domain op:MarkerCompound ;
3080
+ rdfs:range xsd:string .
3081
+
3082
+ # =============================================================================
3083
+ # BOTANICAL SOURCE LINK TO PLANT PART
3084
+ # =============================================================================
3085
+
3086
+ op:hasPlantPart
3087
+ a owl:ObjectProperty ;
3088
+ rdfs:label "has plant part"@en ;
3089
+ rdfs:comment "Links a botanical source to the specific plant part used."@en ;
3090
+ rdfs:domain op:BotanicalSource ;
3091
+ rdfs:range op:PlantPart .
3092
+
3093
+ # =============================================================================
3094
+ # KAMPO PRESCRIPTION PROPERTIES
3095
+ # =============================================================================
3096
+
3097
+ op:prescriptionNumber
3098
+ a owl:DatatypeProperty ;
3099
+ rdfs:label "prescription number"@en ;
3100
+ rdfs:comment """
3101
+ The Kampo prescription number for multi-ingredient preparations.
3102
+ """@en ;
3103
+ rdfs:domain op:Extract ;
3104
+ rdfs:range xsd:string .
3105
+
3106
+ op:japaneseStandardName
3107
+ a owl:DatatypeProperty ;
3108
+ rdfs:label "Japanese standard name"@en ;
3109
+ rdfs:comment """
3110
+ The Japanese standard name for Kampo preparations.
3111
+ """@en ;
3112
+ rdfs:domain op:Extract ;
3113
+ rdfs:range rdf:langString .
3114
+
3115
+ # =============================================================================
3116
+ # POWDERED CRUDE DRUG PROPERTIES (from data-japan-pharmacopia)
3117
+ # =============================================================================
3118
+
3119
+ op:isPowderedFormOf
3120
+ a owl:ObjectProperty ;
3121
+ rdfs:label "is powdered form of"@en ;
3122
+ rdfs:comment """
3123
+ Links a powdered crude drug to its source crude drug.
3124
+ This is a sub-property of derivedFrom specific to powdered forms.
3125
+ """@en ;
3126
+ rdfs:subPropertyOf op:derivedFrom ;
3127
+ rdfs:domain op:PowderedCrudeDrug ;
3128
+ rdfs:range op:CrudeDrugMonograph .
3129
+
3130
+ op:derivedFrom
3131
+ a owl:ObjectProperty ;
3132
+ rdfs:label "derived from"@en ;
3133
+ rdfs:comment """
3134
+ Indicates the source monograph from which a preparation is made.
3135
+ """@en ;
3136
+ rdfs:domain op:PharmacopoeiaMonograph ;
3137
+ rdfs:range op:PharmacopoeiaMonograph .
3138
+
3139
+ # =============================================================================
3140
+ # TEST CLASS PROPERTIES (from data-japan-pharmacopia)
3141
+ # =============================================================================
3142
+
3143
+ op:hasIdentificationTest
3144
+ a owl:ObjectProperty ;
3145
+ rdfs:label "has identification test"@en ;
3146
+ rdfs:comment "Links a monograph to its identification tests."@en ;
3147
+ rdfs:domain op:PharmacopoeiaMonograph ;
3148
+ rdfs:range op:IdentificationTest .
3149
+
3150
+ op:hasPurityTest
3151
+ a owl:ObjectProperty ;
3152
+ rdfs:label "has purity test"@en ;
3153
+ rdfs:comment "Links a monograph to its purity tests."@en ;
3154
+ rdfs:domain op:PharmacopoeiaMonograph ;
3155
+ rdfs:range op:PurityTest .
3156
+
3157
+ op:hasLimitTest
3158
+ a owl:ObjectProperty ;
3159
+ rdfs:label "has limit test"@en ;
3160
+ rdfs:comment """
3161
+ Links a monograph to its limit tests (e.g., loss on drying, total ash).
3162
+ """@en ;
3163
+ rdfs:domain op:PharmacopoeiaMonograph ;
3164
+ rdfs:range op:LimitTest .
3165
+
3166
+ op:hasAssayTest
3167
+ a owl:ObjectProperty ;
3168
+ rdfs:label "has assay test"@en ;
3169
+ rdfs:comment "Links a monograph to its quantitative assay tests."@en ;
3170
+ rdfs:domain op:PharmacopoeiaMonograph ;
3171
+ rdfs:range op:AssayTest .
3172
+
3173
+ op:usesTestMethod
3174
+ a owl:ObjectProperty ;
3175
+ rdfs:label "uses test method"@en ;
3176
+ rdfs:comment """
3177
+ Links a test to the general test method (e.g., JP general test method)
3178
+ that it follows.
3179
+ """@en ;
3180
+ rdfs:domain op:Test ;
3181
+ rdfs:range op:HarmonizedMethod .
3182
+
3183
+ # =============================================================================
3184
+ # PREPARATION METHOD PROPERTIES (from data-japan-pharmacopia)
3185
+ # =============================================================================
3186
+
3187
+ op:hasPreparationMethod
3188
+ a owl:ObjectProperty ;
3189
+ rdfs:label "has preparation method"@en ;
3190
+ rdfs:comment """
3191
+ Links an extract to its preparation method/recipe.
3192
+ """@en ;
3193
+ rdfs:domain op:Extract ;
3194
+ rdfs:range op:PreparationMethod .
3195
+
3196
+ op:methodLabel
3197
+ a owl:DatatypeProperty ;
3198
+ rdfs:label "method label"@en ;
3199
+ rdfs:comment """
3200
+ The name or label of the preparation method (e.g., "Kakkonto Formula").
3201
+ """@en ;
3202
+ rdfs:domain op:PreparationMethod ;
3203
+ rdfs:range rdf:langString .
3204
+
3205
+ op:methodDescription
3206
+ a owl:DatatypeProperty ;
3207
+ rdfs:label "method description"@en ;
3208
+ rdfs:comment """
3209
+ Detailed description of the preparation method including processing steps.
3210
+ """@en ;
3211
+ rdfs:domain op:PreparationMethod ;
3212
+ rdfs:range rdf:langString .
3213
+
3214
+ op:usesCrudeDrug
3215
+ a owl:ObjectProperty ;
3216
+ rdfs:label "uses crude drug"@en ;
3217
+ rdfs:comment """
3218
+ Links an ingredient to the crude drug it represents.
3219
+ """@en ;
3220
+ rdfs:domain op:Ingredient ;
3221
+ rdfs:range op:CrudeDrugMonograph .
3222
+
3223
+ op:ingredientAmount
3224
+ a owl:DatatypeProperty ;
3225
+ rdfs:label "ingredient amount"@en ;
3226
+ rdfs:comment """
3227
+ The amount of the ingredient in the preparation
3228
+ (e.g., "5.0", "3.0" with unit specified separately).
3229
+ """@en ;
3230
+ rdfs:domain op:Ingredient ;
3231
+ rdfs:range xsd:decimal .
3232
+
3233
+ op:ingredientAmountUnit
3234
+ a owl:DatatypeProperty ;
3235
+ rdfs:label "ingredient amount unit"@en ;
3236
+ rdfs:comment """
3237
+ The unit for the ingredient amount (e.g., "g", "mg", "mL").
3238
+ """@en ;
3239
+ rdfs:domain op:Ingredient ;
3240
+ rdfs:range xsd:string .
3241
+
3242
+ op:ingredientRatio
3243
+ a owl:DatatypeProperty ;
3244
+ rdfs:label "ingredient ratio"@en ;
3245
+ rdfs:comment """
3246
+ The ratio or proportion of the ingredient in the formula
3247
+ (e.g., "3", "5" for relative proportions).
3248
+ """@en ;
3249
+ rdfs:domain op:Ingredient ;
3250
+ rdfs:range xsd:decimal .
3251
+
3252
+ # =============================================================================
3253
+ # INGREDIENT LINK PROPERTY (update existing hasIngredient)
3254
+ # =============================================================================
3255
+
3256
+ # Note: op:hasIngredient already exists for Extract -> CrudeDrugMonograph
3257
+ # This property allows linking PreparationMethod -> Ingredient
3258
+
3259
+ op:hasIngredientItem
3260
+ a owl:ObjectProperty ;
3261
+ rdfs:label "has ingredient item"@en ;
3262
+ rdfs:comment """
3263
+ Links a preparation method to its ingredient items with amounts.
3264
+ """@en ;
3265
+ rdfs:domain op:PreparationMethod ;
3266
+ rdfs:range op:Ingredient .
3267
+
3268
+ # =============================================================================
3269
+ # CROSS-PUBLISHER LINKING PROPERTIES
3270
+ # =============================================================================
3271
+
3272
+ op:sameSubstanceAs
3273
+ a owl:ObjectProperty, owl:SymmetricProperty ;
3274
+ rdfs:label "same substance as"@en ;
3275
+ rdfs:comment """
3276
+ Links monographs for the same substance in different pharmacopoeias.
3277
+ This indicates that the monographs describe the exact same substance,
3278
+ even if the test specifications may differ.
3279
+
3280
+ Example: JP Paracetamol sameSubstanceAs Ph.Int. Paracetamol
3281
+ """@en ;
3282
+ rdfs:domain op:PharmacopoeiaMonograph ;
3283
+ rdfs:range op:PharmacopoeiaMonograph .
3284
+
3285
+ op:hasEquivalentIn
3286
+ a owl:ObjectProperty ;
3287
+ rdfs:label "has equivalent in"@en ;
3288
+ rdfs:comment """
3289
+ Links a monograph to an equivalent monograph in another pharmacopoeia.
3290
+ This indicates that while the substances may have different names or
3291
+ slight variations, they are considered therapeutically equivalent.
3292
+
3293
+ Example: USP Acetaminophen hasEquivalentIn JP Paracetamol
3294
+ """@en ;
3295
+ rdfs:domain op:PharmacopoeiaMonograph ;
3296
+ rdfs:range op:PharmacopoeiaMonograph .
3297
+
3298
+ op:similarTo
3299
+ a owl:ObjectProperty, owl:SymmetricProperty ;
3300
+ rdfs:label "similar to"@en ;
3301
+ rdfs:comment """
3302
+ Links monographs for similar but not identical substances.
3303
+ This is useful for comparing related substances or different
3304
+ salt forms of the same active ingredient.
3305
+
3306
+ Example: Metformin Hydrochloride similarTo Metformin
3307
+ """@en ;
3308
+ rdfs:domain op:PharmacopoeiaMonograph ;
3309
+ rdfs:range op:PharmacopoeiaMonograph .
3310
+
3311
+ op:relatedTo
3312
+ a owl:ObjectProperty ;
3313
+ rdfs:label "related to"@en ;
3314
+ rdfs:comment """
3315
+ A general property for linking related monographs.
3316
+ Use more specific properties (sameSubstanceAs, hasEquivalentIn, similarTo)
3317
+ when appropriate.
3318
+ """@en ;
3319
+ rdfs:domain op:PharmacopoeiaMonograph ;
3320
+ rdfs:range op:PharmacopoeiaMonograph .
3321
+
3322
+ # Cross-publisher comparison properties
3323
+
3324
+ op:hasComparableSpecification
3325
+ a owl:ObjectProperty ;
3326
+ rdfs:label "has comparable specification"@en ;
3327
+ rdfs:comment """
3328
+ Links a test specification to a comparable specification in another
3329
+ monograph. This enables direct comparison of test limits across publishers.
3330
+
3331
+ Example: JP Ginseng Total Ash spec hasComparableSpecification HKCMMS Ginseng Total Ash spec
3332
+ """@en ;
3333
+ rdfs:domain op:TestSpecification ;
3334
+ rdfs:range op:TestSpecification .
3335
+
3336
+ op:specificationDifference
3337
+ a owl:DatatypeProperty ;
3338
+ rdfs:label "specification difference"@en ;
3339
+ rdfs:comment """
3340
+ Describes the difference between two comparable specifications.
3341
+ This can be used to document how specifications differ across publishers.
3342
+ """@en ;
3343
+ rdfs:domain op:TestSpecification ;
3344
+ rdfs:range rdf:langString .
3345
+
3346
+ # Match confidence level
3347
+
3348
+ op:matchConfidence
3349
+ a owl:DatatypeProperty ;
3350
+ rdfs:label "match confidence"@en ;
3351
+ rdfs:comment """
3352
+ The confidence level of a cross-publisher match (0.0 to 1.0).
3353
+ Higher values indicate more confident matches based on
3354
+ multiple identifiers (CAS, INN, chemical structure).
3355
+ """@en ;
3356
+ rdfs:domain op:PharmacopoeiaMonograph ;
3357
+ rdfs:range xsd:decimal .
3358
+
3359
+ op:matchMethod
3360
+ a owl:DatatypeProperty ;
3361
+ rdfs:label "match method"@en ;
3362
+ rdfs:comment """
3363
+ The method used to determine the cross-publisher match.
3364
+ Values: 'cas-number', 'inn', 'chemical-structure', 'name-match', 'manual'
3365
+ """@en ;
3366
+ rdfs:domain op:PharmacopoeiaMonograph ;
3367
+ rdfs:range xsd:string .
3368
+
3369
+ # =============================================================================
3370
+ # Cross-Publisher Link Class
3371
+ # =============================================================================
3372
+
3373
+ op:CrossPublisherLink
3374
+ a owl:Class ;
3375
+ rdfs:label "Cross-Publisher Link"@en ;
3376
+ rdfs:comment """
3377
+ A structured link between monographs in different pharmacopoeias.
3378
+ This class provides additional context and metadata about the
3379
+ relationship between monographs, including match confidence,
3380
+ common identifiers, and link type.
3381
+ """@en ;
3382
+ rdfs:subClassOf [
3383
+ a owl:Restriction ;
3384
+ owl:onProperty op:sourceMonograph ;
3385
+ owl:cardinality 1
3386
+ ] ;
3387
+ rdfs:subClassOf [
3388
+ a owl:Restriction ;
3389
+ owl:onProperty op:targetMonograph ;
3390
+ owl:cardinality 1
3391
+ ] .
3392
+
3393
+ op:sourceMonograph
3394
+ a owl:ObjectProperty ;
3395
+ rdfs:label "source monograph"@en ;
3396
+ rdfs:comment "The source monograph in a cross-publisher link."@en ;
3397
+ rdfs:domain op:CrossPublisherLink ;
3398
+ rdfs:range op:PharmacopoeiaMonograph .
3399
+
3400
+ op:targetMonograph
3401
+ a owl:ObjectProperty ;
3402
+ rdfs:label "target monograph"@en ;
3403
+ rdfs:comment "The target monograph in a cross-publisher link."@en ;
3404
+ rdfs:domain op:CrossPublisherLink ;
3405
+ rdfs:range op:PharmacopoeiaMonograph .
3406
+
3407
+ op:linkType
3408
+ a owl:DatatypeProperty ;
3409
+ rdfs:label "link type"@en ;
3410
+ rdfs:comment """
3411
+ The type of relationship between monographs.
3412
+ Values: 'sameSubstanceAs', 'hasEquivalentIn', 'similarTo', 'relatedTo'
3413
+ """@en ;
3414
+ rdfs:domain op:CrossPublisherLink ;
3415
+ rdfs:range xsd:string .
3416
+
3417
+ op:commonIdentifiers
3418
+ a owl:DatatypeProperty ;
3419
+ rdfs:label "common identifiers"@en ;
3420
+ rdfs:comment """
3421
+ Identifiers that are shared between the linked monographs,
3422
+ such as CAS number, INN, or molecular formula.
3423
+ """@en ;
3424
+ rdfs:domain op:CrossPublisherLink ;
3425
+ rdfs:range xsd:string .
3426
+
3427
+ # END OF ONTOLOGY