diff --git a/SUPPORTED_INSTRUMENT_SOFTWARE.adoc b/SUPPORTED_INSTRUMENT_SOFTWARE.adoc index 4e4d48018..ac9cb5d97 100644 --- a/SUPPORTED_INSTRUMENT_SOFTWARE.adoc +++ b/SUPPORTED_INSTRUMENT_SOFTWARE.adoc @@ -51,9 +51,9 @@ The parsers follow maturation levels of: Recommended, Candidate Release, Working |Tecan Magellan|Recommended|REC/2024/06 |Thermo Fisher Scientific SkanIt|Recommended|REC/2025/03 |Unchained Labs Lunatic & Stunner|Recommended|REC/2025/03 -.3+|Solution Analyzer|Beckman Coulter PharmSpec|Recommended|REC/2024/09 +.3+|Solution Analyzer|Beckman Coulter PharmSpec|Recommended|REC/2026/03 |NovaBio Flex2|Recommended|BENCHLING/2024/09 -|Roche Cedex BioHT|Recommended|REC/2024/09 +|Roche Cedex BioHT|Recommended|REC/2026/03 .8+|Spectrophotometry|Thermo Fisher Scientific Genesys30|Recommended|BENCHLING/2023/12 |Thermo Fisher Scientific Genesys On-Board|Recommended|BENCHLING/2023/12 |Thermo Fisher Scientific NanoDrop 8000|Recommended|BENCHLING/2023/12 diff --git a/src/allotropy/allotrope/models/adm/absorbance/rec/_2026/_03/absorbance_point_detector.py b/src/allotropy/allotrope/models/adm/absorbance/rec/_2026/_03/absorbance_point_detector.py new file mode 100644 index 000000000..a90db651f --- /dev/null +++ b/src/allotropy/allotrope/models/adm/absorbance/rec/_2026/_03/absorbance_point_detector.py @@ -0,0 +1,40 @@ +# generated by allotropy.schema_gen + +from __future__ import annotations + +from dataclasses import dataclass + +from allotropy.allotrope.models.adm.core.rec._2026._03.core import OrderedItem +from allotropy.allotrope.models.shared.definitions.quantity_values import ( + TQuantityValueMilliAbsorbanceUnit, + TQuantityValueNanometer, + TQuantityValuePicogramPerMilliliter, + TQuantityValueUnitless, +) + + +@dataclass(frozen=True, kw_only=True) +class DeviceControlDocumentItem(OrderedItem): + detector_bandwidth_setting: TQuantityValueNanometer | None = None + detector_wavelength_setting: TQuantityValueNanometer | None = None + electronic_absorbance_bandwidth_setting: TQuantityValueNanometer | None = None + electronic_absorbance_reference_bandwidth_setting: TQuantityValueNanometer | None = ( + None + ) + electronic_absorbance_reference_wavelength_setting: TQuantityValueNanometer | None = ( + None + ) + electronic_absorbance_wavelength_setting: TQuantityValueNanometer | None = None + + +@dataclass(frozen=True, kw_only=True) +class DeviceControlAggregateDocument: + device_control_document: list[DeviceControlDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class MeasurementDocumentItems: + absorbance: TQuantityValueMilliAbsorbanceUnit + device_control_aggregate_document: DeviceControlAggregateDocument | None = None + mass_concentration: TQuantityValuePicogramPerMilliliter | None = None + transmittance: TQuantityValueUnitless | None = None diff --git a/src/allotropy/allotrope/models/adm/bga/rec/_2026/_03/blood_gas_detector.py b/src/allotropy/allotrope/models/adm/bga/rec/_2026/_03/blood_gas_detector.py new file mode 100644 index 000000000..b77e260e2 --- /dev/null +++ b/src/allotropy/allotrope/models/adm/bga/rec/_2026/_03/blood_gas_detector.py @@ -0,0 +1,7 @@ +# generated by allotropy.schema_gen + +from __future__ import annotations + +from typing import Any + +MeasurementDocumentItems = Any diff --git a/src/allotropy/allotrope/models/adm/cell_counting/rec/_2026/_03/cell_counting_detector.py b/src/allotropy/allotrope/models/adm/cell_counting/rec/_2026/_03/cell_counting_detector.py new file mode 100644 index 000000000..5fff7306f --- /dev/null +++ b/src/allotropy/allotrope/models/adm/cell_counting/rec/_2026/_03/cell_counting_detector.py @@ -0,0 +1,33 @@ +# generated by allotropy.schema_gen + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Any + +from allotropy.allotrope.models.adm.core.rec._2026._03.core import OrderedItem +from allotropy.allotrope.models.shared.definitions.quantity_values import ( + TQuantityValueNanometer, +) + + +@dataclass(frozen=True, kw_only=True) +class DeviceControlDocumentItem(OrderedItem): + detector_wavelength_setting: TQuantityValueNanometer | None = None + excitation_wavelength_setting: TQuantityValueNanometer | None = None + + +@dataclass(frozen=True, kw_only=True) +class ProcessedDataAggregateDocument: + processed_data_document: list[Any] + + +@dataclass(frozen=True, kw_only=True) +class DeviceControlAggregateDocument: + device_control_document: list[DeviceControlDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class MeasurementDocumentItems: + processed_data_aggregate_document: ProcessedDataAggregateDocument + device_control_aggregate_document: DeviceControlAggregateDocument | None = None diff --git a/src/allotropy/allotrope/models/adm/core/rec/_2026/_03/core.py b/src/allotropy/allotrope/models/adm/core/rec/_2026/_03/core.py new file mode 100644 index 000000000..3418968cb --- /dev/null +++ b/src/allotropy/allotrope/models/adm/core/rec/_2026/_03/core.py @@ -0,0 +1,270 @@ +# generated by allotropy.schema_gen +# Re-exports imported types so downstream modules can import from here. +# ruff: noqa: F401 + +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import Any + +from allotropy.allotrope.models.shared.definitions.definitions import ( + TClass, + TQuantityValue, + TStatisticDatumRole, + TUnit, +) + + +@dataclass(frozen=True, kw_only=True) +class Asm: + pass + + +@dataclass(frozen=True, kw_only=True) +class MixedItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + + +@dataclass(frozen=True, kw_only=True) +class OrderedItem: + field_index: int | None = field(default=None, metadata={"json_name": "@index"}) + + +TArray = list[Any] + + +@dataclass(frozen=True, kw_only=True) +class TBooleanValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: bool + + +@dataclass(frozen=True, kw_only=True) +class TByteValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: int + + +@dataclass(frozen=True, kw_only=True) +class TDateTimeStampValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: str + + +@dataclass(frozen=True, kw_only=True) +class TDateTimeValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: str + + +@dataclass(frozen=True, kw_only=True) +class TDateValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: str + + +@dataclass(frozen=True, kw_only=True) +class TDecimalValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: float + + +@dataclass(frozen=True, kw_only=True) +class TDoubleValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: float + + +@dataclass(frozen=True, kw_only=True) +class TDurationValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: str + + +@dataclass(frozen=True, kw_only=True) +class TFloatValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: float + + +@dataclass(frozen=True, kw_only=True) +class TIRIValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: str + + +@dataclass(frozen=True, kw_only=True) +class TIntValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: int + + +@dataclass(frozen=True, kw_only=True) +class TIntegerValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: int + + +@dataclass(frozen=True, kw_only=True) +class TLongValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: int + + +TNamed = str + + +@dataclass(frozen=True, kw_only=True) +class TObject: + pass + + +TReference = str + + +TResource = str + + +@dataclass(frozen=True, kw_only=True) +class TShortValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: int + + +@dataclass(frozen=True, kw_only=True) +class TStringValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: str + + +@dataclass(frozen=True, kw_only=True) +class TTimeValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: str + + +@dataclass(frozen=True, kw_only=True) +class TUnsignedByteValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: int + + +@dataclass(frozen=True, kw_only=True) +class TUnsignedIntValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: int + + +@dataclass(frozen=True, kw_only=True) +class TUnsignedLongValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: int + + +@dataclass(frozen=True, kw_only=True) +class TUnsignedShortValueItem: + field_type: TClass = field(metadata={"json_name": "@type"}) + value: int + + +TBooleanValue = TBooleanValueItem | bool + + +TByteValue = TByteValueItem | int + + +TDateTimeStampValue = TDateTimeStampValueItem | str + + +TDateTimeValue = TDateTimeValueItem | str + + +TDateValue = TDateValueItem | str + + +TDecimalValue = TDecimalValueItem | float + + +TDoubleValue = TDoubleValueItem | float + + +TDurationValue = TDurationValueItem | str + + +TFloatValue = TFloatValueItem | float + + +TIRIValue = TIRIValueItem | str + + +TIntValue = TIntValueItem | int + + +TIntegerValue = TIntegerValueItem | int + + +TLongValue = TLongValueItem | int + + +TShortValue = TShortValueItem | int + + +TStringValue = TStringValueItem | str + + +TTimeValue = TTimeValueItem | str + + +TUnsignedByteValue = TUnsignedByteValueItem | int + + +TUnsignedIntValue = TUnsignedIntValueItem | int + + +TUnsignedLongValue = TUnsignedLongValueItem | int + + +TUnsignedShortValue = TUnsignedShortValueItem | int + + +TNumericValue = ( + TByteValue + | TDecimalValue + | TDoubleValue + | TFloatValue + | TIntValue + | TIntegerValue + | TLongValue + | TShortValue + | TUnsignedByteValue + | TUnsignedIntValue + | TUnsignedLongValue + | TUnsignedShortValue +) + + +TOrderedValue = ( + TDateTimeStampValue + | TDateTimeValue + | TDateValue + | TNumericValue + | TStringValue + | TTimeValue +) + + +@dataclass(frozen=True, kw_only=True) +class TRangeValue: + max_exclusive: TOrderedValue | None = field( + default=None, metadata={"json_name": "maxExclusive"} + ) + max_inclusive: TOrderedValue | None = field( + default=None, metadata={"json_name": "maxInclusive"} + ) + min_exclusive: TOrderedValue | None = field( + default=None, metadata={"json_name": "minExclusive"} + ) + min_inclusive: TOrderedValue | None = field( + default=None, metadata={"json_name": "minInclusive"} + ) + unit: TUnit | None = None diff --git a/src/allotropy/allotrope/models/adm/core/rec/_2026/_03/cube.py b/src/allotropy/allotrope/models/adm/core/rec/_2026/_03/cube.py new file mode 100644 index 000000000..ba5dd95d1 --- /dev/null +++ b/src/allotropy/allotrope/models/adm/core/rec/_2026/_03/cube.py @@ -0,0 +1,114 @@ +# generated by allotropy.schema_gen + +from __future__ import annotations + +from dataclasses import dataclass, field +from enum import Enum + +from allotropy.allotrope.models.adm.core.rec._2026._03.core import ( + TClass, + TUnit, +) + + +class ComponentDatatype(Enum): + double = "double" + float = "float" + decimal = "decimal" + integer = "integer" + byte = "byte" + int = "int" + short = "short" + long = "long" + string = "string" + boolean = "boolean" + date_time = "dateTime" + + +class Scale(Enum): + nominal = "nominal" + ordinal = "ordinal" + cardinal = "cardinal" + interval = "interval" + range = "range" + + +TBooleanArray = list[bool] + + +TBooleanOrNullArray = list[None | bool] + + +TNumberArray = list[float] + + +TNumberOrNullArray = list[None | float] + + +TStringArray = list[str] + + +TStringOrNullArray = list[None | str] + + +TTupleData = list[None | bool | float | str] + + +class Type(Enum): + linear = "linear" + logarithmic = "logarithmic" + + +@dataclass(frozen=True, kw_only=True) +class TDatacubeComponent: + field_component_datatype: ComponentDatatype = field( + metadata={"json_name": "@componentDatatype"} + ) + concept: TClass + scale: Scale | None = None + unit: TUnit | None = None + + +TDimensionArray = TBooleanArray | TNumberArray | TStringArray + + +TMeasureArray = TBooleanOrNullArray | TNumberOrNullArray | TStringOrNullArray + + +@dataclass(frozen=True, kw_only=True) +class TFunction: + incr: float | None = None + length: float | None = None + start: float | None = None + type: Type | None = None + + +@dataclass(frozen=True, kw_only=True) +class TDatacubeStructure: + dimensions: list[TDatacubeComponent] + measures: list[TDatacubeComponent] + + +@dataclass(frozen=True, kw_only=True) +class TMeasureData: + measures: list[TMeasureArray] | None = None + points: list[TTupleData] | None = None + + +@dataclass(frozen=True, kw_only=True) +class TDimensionData: + dimensions: list[TDimensionArray | TFunction] + + +@dataclass(frozen=True, kw_only=True) +class TDatacubeData(TDimensionData, TMeasureData): + pass + + +@dataclass(frozen=True, kw_only=True) +class TDatacube: + cube_structure: TDatacubeStructure | None = field( + default=None, metadata={"json_name": "cube-structure"} + ) + data: TDatacubeData | None = None + label: str | None = None diff --git a/src/allotropy/allotrope/models/adm/core/rec/_2026/_03/hierarchy.py b/src/allotropy/allotrope/models/adm/core/rec/_2026/_03/hierarchy.py new file mode 100644 index 000000000..070f4c2e2 --- /dev/null +++ b/src/allotropy/allotrope/models/adm/core/rec/_2026/_03/hierarchy.py @@ -0,0 +1,900 @@ +# generated by allotropy.schema_gen + +from __future__ import annotations + +from dataclasses import dataclass, field +from enum import Enum +from typing import Any + +from allotropy.allotrope.models.adm.core.rec._2026._03.core import ( + OrderedItem, + TDateTimeStampValue, + TDateTimeValue, + TDoubleValue, + TIntegerValue, + TQuantityValue, + TStringValue, +) +from allotropy.allotrope.models.adm.core.rec._2026._03.cube import ( + TDatacube, + TDatacubeStructure, +) +from allotropy.allotrope.models.shared.definitions.quantity_values import ( + TQuantityValueMinuteTime, + TQuantityValueSecondTime, +) + + +@dataclass(frozen=True, kw_only=True) +class CustomInformationDocumentItem(OrderedItem): + datum_label: TStringValue + + +@dataclass(frozen=True, kw_only=True) +class DataCube(TDatacube): + cube_structure: TDatacubeStructure | None = field( + default=None, metadata={"json_name": "cube-structure"} + ) + + +@dataclass(frozen=True, kw_only=True) +class DataProcessingDocument: + data_processing_time: TDateTimeStampValue | None = None + data_processing_type: TStringValue | None = None + method_identifier: TStringValue | None = None + method_name: TStringValue | None = None + method_version: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class DataSourceDocumentItem(OrderedItem): + data_source_identifier: TStringValue + data_source_feature: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class ElectronicProjectRecord: + written_name: TStringValue + description: Any | None = None + start_time: TDateTimeValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class ElectronicSignatureDocumentItem(OrderedItem): + account_identifier: TStringValue + personal_name: TStringValue + signature_role_type: TStringValue + time: TStringValue + identifier: TStringValue | None = None + measurement_identifier: TStringValue | None = None + method_identifier: TStringValue | None = None + processed_data_identifier: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class ErrorDocumentItem: + error: TStringValue + error_feature: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class ImageDocumentItem: + experimental_data_identifier: TStringValue | None = None + index: TIntegerValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class MatchQualityIndexDocumentItem: + match_quality_index: TDoubleValue + algorithm_name: TStringValue | None = None + description: TStringValue | None = None + lower_limit: TDoubleValue | None = None + upper_limit: TDoubleValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class ParameterDocumentItem: + parameter_datum: TQuantityValue + parameter_identifier: TStringValue + written_name: TStringValue | None = None + + +class RegressionFeature(Enum): + bet_c_constant = "BET C constant" + raman_intensity = "Raman intensity" + raman_interferogram_intensity = "Raman interferogram intensity" + raman_wavenumber_shift = "Raman wavenumber shift" + young_modulus = "Young modulus" + abrasion_weight = "abrasion weight" + absolute_intensity = "absolute intensity" + absolute_water_content = "absolute water content" + absorbance = "absorbance" + acquisition_volume = "acquisition volume" + actual_p_p0_result = "actual P/P0 result" + adsorbed_volume_at_stp = "adsorbed volume at STP" + ambient_humidity = "ambient humidity" + ambient_pressure = "ambient pressure" + ambient_temperature = "ambient temperature" + amount_of_substance = "amount of substance" + angle = "angle" + angle_of_optical_rotation = "angle of optical rotation" + angular_velocity = "angular velocity" + area = "area" + attenuation_coefficient = "attenuation coefficient" + average_dead_cell_diameter__cell_counter_ = ( + "average dead cell diameter (cell counter)" + ) + average_particle_size = "average particle size" + average_total_cell_circularity = "average total cell circularity" + average_total_cell_diameter = "average total cell diameter" + average_viable_cell_circularity = "average viable cell circularity" + background_corrected_turbidity = "background corrected turbidity" + birefringence = "birefringence" + break_strain = "break strain" + break_stress = "break stress" + cell_path_length = "cell path length" + chemical_shift = "chemical shift" + chromatography_column_film_thickness = "chromatography column film thickness" + chromatography_column_length = "chromatography column length" + chromatography_column_particle_size = "chromatography column particle size" + circularity = "circularity" + coating_gap_height = "coating gap height" + collision_energy = "collision energy" + column_inner_diameter = "column inner diameter" + compartment_temperature = "compartment temperature" + concentration = "concentration" + container_diameter = "container diameter" + container_height = "container height" + degassed_sample_weight = "degassed sample weight" + detector_view_volume = "detector view volume" + diameter = "diameter" + dielectric_polarization = "dielectric polarization" + dilution_factor = "dilution factor" + dilution_volume = "dilution volume" + dispensed_volume = "dispensed volume" + dry_gas_flow_rate = "dry gas flow rate" + dry_sample_weight = "dry sample weight" + eccentricity = "eccentricity" + electric_charge = "electric charge" + electric_conductance = "electric conductance" + electric_conductivity = "electric conductivity" + electric_current = "electric current" + electric_impedance = "electric impedance" + electric_resistance = "electric resistance" + electric_resistivity = "electric resistivity" + electron_beam_working_distance = "electron beam working distance" + end_height = "end height" + energy__datum_ = "energy (datum)" + enthalpy = "enthalpy" + enthalpy_of_fusion = "enthalpy of fusion" + enthalpy_of_sublimation = "enthalpy of sublimation" + enthalpy_of_vaporization = "enthalpy of vaporization" + exhaust_gas_flow_rate = "exhaust gas flow rate" + extrapolated_moisture_content = "extrapolated moisture content" + fill_depth = "fill depth" + flow_rate = "flow rate" + flow_ratio = "flow ratio" + fluorescence = "fluorescence" + foam_height = "foam height" + force = "force" + fracture_energy = "fracture energy" + glass_transition_temperature = "glass transition temperature" + gloss = "gloss" + gross_weight = "gross weight" + hardness = "hardness" + heat_capacity = "heat capacity" + heat_capacity__dsc_ = "heat capacity (dsc)" + heat_flow = "heat flow" + heat_seal_length = "heat seal length" + heat_transfer_coefficient = "heat transfer coefficient" + height = "height" + hold_up_volume = "hold-up volume" + humidity = "humidity" + image_height = "image height" + image_width = "image width" + incident_radiation_angle = "incident radiation angle" + inlet_gas_pressure = "inlet gas pressure" + inner_diameter = "inner diameter" + intensity = "intensity" + isocyanate_reservoir_temperature = "isocyanate reservoir temperature" + length = "length" + linear_velocity = "linear velocity" + liquid_height = "liquid height" + luminescence = "luminescence" + m_z = "m/z" + mass = "mass" + mass_attenuation_coefficient = "mass attenuation coefficient" + mass_change = "mass change" + mass_concentration = "mass concentration" + mass_fraction = "mass fraction" + measurement_chamber_free_space_volume = "measurement chamber free space volume" + molar_attenuation_coefficient = "molar attenuation coefficient" + molar_concentration = "molar concentration" + molar_enthalpy_of_fusion = "molar enthalpy of fusion" + molar_enthalpy_of_sublimation = "molar enthalpy of sublimation" + molar_enthalpy_of_vaporization = "molar enthalpy of vaporization" + molar_mass = "molar mass" + molecular_mass = "molecular mass" + monolayer_quantity = "monolayer quantity" + normalized_foam_height = "normalized foam height" + number_concentration = "number concentration" + osmolality = "osmolality" + p_co2 = "pCO2" + p_co2__bga_ = "pCO2 (bga)" + p_h = "pH" + p_o2 = "pO2" + p_o2__bga_ = "pO2 (bga)" + partial_pressure = "partial pressure" + particle_size = "particle size" + peak_analyte_amount = "peak analyte amount" + peak_load_force = "peak load force" + peak_onset_temperature = "peak onset temperature" + peak_temperature = "peak temperature" + plate_heater_temperature = "plate heater temperature" + plate_temperature = "plate temperature" + plate_well_count = "plate well count" + polarity = "polarity" + polyol_reservoir_temperature = "polyol reservoir temperature" + position_count = "position count" + power = "power" + pressure = "pressure" + probe_volume = "probe volume" + protein_attenuation_coefficient = "protein attenuation coefficient" + purity = "purity" + q_nmr_purity_result = "qNMR purity result" + reference_material_weight = "reference material weight" + reflectance = "reflectance" + refractive_index = "refractive index" + relative_humidity = "relative humidity" + relative_intensity = "relative intensity" + relative_permittivity = "relative permittivity" + relative_pressure__bet_ = "relative pressure (BET)" + relative_response = "relative response" + relative_weight_loss_on_drying = "relative weight loss on drying" + reservoir_temperature = "reservoir temperature" + rotational_speed = "rotational speed" + sample_temperature = "sample temperature" + sample_thickness = "sample thickness" + sample_weight = "sample weight" + sample_weight_before_drying = "sample weight before drying" + sample_width = "sample width" + saturated_gas_flow_rate = "saturated gas flow rate" + saturation_vapor_pressure = "saturation vapor pressure" + seal_initiation_temperature = "seal initiation temperature" + size__datum_ = "size (datum)" + solvent_reservoir_temperature = "solvent reservoir temperature" + specific_enthalpy_of_fusion = "specific enthalpy of fusion" + specific_enthalpy_of_sublimation = "specific enthalpy of sublimation" + specific_enthalpy_of_vaporization = "specific enthalpy of vaporization" + specific_heat_capacity = "specific heat capacity" + specific_rotation = "specific rotation" + specific_surface_area = "specific surface area" + start_height = "start height" + stirring_rate = "stirring rate" + strain = "strain" + stress = "stress" + tablet_thickness = "tablet thickness" + tare_weight = "tare weight" + temperature = "temperature" + temperature_rate = "temperature rate" + thermal_conductance = "thermal conductance" + thermal_conductivity = "thermal conductivity" + thickness = "thickness" + titer = "titer" + torque = "torque" + total_cell_diameter = "total cell diameter" + total_foam_height = "total foam height" + total_gas_flow_rate = "total gas flow rate" + total_material_height = "total material height" + transition_enthalpy = "transition enthalpy" + transmittance = "transmittance" + turbidity = "turbidity" + velocity = "velocity" + viscosity = "viscosity" + void_volume = "void volume" + voltage = "voltage" + voltage_range = "voltage range" + volume = "volume" + volume_concentration = "volume concentration" + volume_fraction = "volume fraction" + water_mass_concentration = "water mass concentration" + water_mass_fraction = "water mass fraction" + wavelength = "wavelength" + wavenumber = "wavenumber" + weight_loss = "weight loss" + well_volume = "well volume" + width = "width" + yield_strain = "yield strain" + yield_stress = "yield stress" + + +class SampleRoleType(Enum): + control_sample_role = "control sample role" + standard_sample_role = "standard sample role" + validation_sample_role = "validation sample role" + experiment_sample_role = "experiment sample role" + sample_role = "sample role" + spiked_sample_role = "spiked sample role" + blank_role = "blank role" + unknown_sample_role = "unknown sample role" + calibration_sample_role = "calibration sample role" + unspiked_sample_role = "unspiked sample role" + specimen_role = "specimen role" + quality_control_sample_role = "quality control sample role" + reference_sample_role = "reference sample role" + + +class StatisticalFeature(Enum): + bet_c_constant = "BET C constant" + raman_intensity = "Raman intensity" + raman_interferogram_intensity = "Raman interferogram intensity" + raman_wavenumber_shift = "Raman wavenumber shift" + young_modulus = "Young modulus" + abrasion_weight = "abrasion weight" + absolute_intensity = "absolute intensity" + absolute_water_content = "absolute water content" + absorbance = "absorbance" + acquisition_volume = "acquisition volume" + actual_p_p0_result = "actual P/P0 result" + adsorbed_volume_at_stp = "adsorbed volume at STP" + ambient_humidity = "ambient humidity" + ambient_pressure = "ambient pressure" + ambient_temperature = "ambient temperature" + amount_of_substance = "amount of substance" + angle = "angle" + angle_of_optical_rotation = "angle of optical rotation" + angular_velocity = "angular velocity" + area = "area" + attenuation_coefficient = "attenuation coefficient" + average_dead_cell_diameter__cell_counter_ = ( + "average dead cell diameter (cell counter)" + ) + average_particle_size = "average particle size" + average_total_cell_circularity = "average total cell circularity" + average_total_cell_diameter = "average total cell diameter" + average_viable_cell_circularity = "average viable cell circularity" + background_corrected_turbidity = "background corrected turbidity" + birefringence = "birefringence" + break_strain = "break strain" + break_stress = "break stress" + cell_path_length = "cell path length" + chemical_shift = "chemical shift" + chromatography_column_film_thickness = "chromatography column film thickness" + chromatography_column_length = "chromatography column length" + chromatography_column_particle_size = "chromatography column particle size" + circularity = "circularity" + coating_gap_height = "coating gap height" + collision_energy = "collision energy" + column_inner_diameter = "column inner diameter" + compartment_temperature = "compartment temperature" + concentration = "concentration" + container_diameter = "container diameter" + container_height = "container height" + degassed_sample_weight = "degassed sample weight" + detector_view_volume = "detector view volume" + diameter = "diameter" + dielectric_polarization = "dielectric polarization" + dilution_factor = "dilution factor" + dilution_volume = "dilution volume" + dispensed_volume = "dispensed volume" + dry_gas_flow_rate = "dry gas flow rate" + dry_sample_weight = "dry sample weight" + eccentricity = "eccentricity" + electric_charge = "electric charge" + electric_conductance = "electric conductance" + electric_conductivity = "electric conductivity" + electric_current = "electric current" + electric_impedance = "electric impedance" + electric_resistance = "electric resistance" + electric_resistivity = "electric resistivity" + electron_beam_working_distance = "electron beam working distance" + end_height = "end height" + energy__datum_ = "energy (datum)" + enthalpy = "enthalpy" + enthalpy_of_fusion = "enthalpy of fusion" + enthalpy_of_sublimation = "enthalpy of sublimation" + enthalpy_of_vaporization = "enthalpy of vaporization" + exhaust_gas_flow_rate = "exhaust gas flow rate" + extrapolated_moisture_content = "extrapolated moisture content" + fill_depth = "fill depth" + flow_rate = "flow rate" + flow_ratio = "flow ratio" + fluorescence = "fluorescence" + foam_height = "foam height" + force = "force" + fracture_energy = "fracture energy" + glass_transition_temperature = "glass transition temperature" + gloss = "gloss" + gross_weight = "gross weight" + hardness = "hardness" + heat_capacity = "heat capacity" + heat_capacity__dsc_ = "heat capacity (dsc)" + heat_flow = "heat flow" + heat_seal_length = "heat seal length" + heat_transfer_coefficient = "heat transfer coefficient" + height = "height" + hold_up_volume = "hold-up volume" + humidity = "humidity" + image_height = "image height" + image_width = "image width" + incident_radiation_angle = "incident radiation angle" + inlet_gas_pressure = "inlet gas pressure" + inner_diameter = "inner diameter" + intensity = "intensity" + isocyanate_reservoir_temperature = "isocyanate reservoir temperature" + length = "length" + linear_velocity = "linear velocity" + liquid_height = "liquid height" + luminescence = "luminescence" + m_z = "m/z" + mass = "mass" + mass_attenuation_coefficient = "mass attenuation coefficient" + mass_change = "mass change" + mass_concentration = "mass concentration" + mass_fraction = "mass fraction" + measurement_chamber_free_space_volume = "measurement chamber free space volume" + molar_attenuation_coefficient = "molar attenuation coefficient" + molar_concentration = "molar concentration" + molar_enthalpy_of_fusion = "molar enthalpy of fusion" + molar_enthalpy_of_sublimation = "molar enthalpy of sublimation" + molar_enthalpy_of_vaporization = "molar enthalpy of vaporization" + molar_mass = "molar mass" + molecular_mass = "molecular mass" + monolayer_quantity = "monolayer quantity" + normalized_foam_height = "normalized foam height" + number_concentration = "number concentration" + osmolality = "osmolality" + p_co2 = "pCO2" + p_co2__bga_ = "pCO2 (bga)" + p_h = "pH" + p_o2 = "pO2" + p_o2__bga_ = "pO2 (bga)" + partial_pressure = "partial pressure" + particle_size = "particle size" + peak_analyte_amount = "peak analyte amount" + peak_load_force = "peak load force" + peak_onset_temperature = "peak onset temperature" + peak_temperature = "peak temperature" + plate_heater_temperature = "plate heater temperature" + plate_temperature = "plate temperature" + plate_well_count = "plate well count" + polarity = "polarity" + polyol_reservoir_temperature = "polyol reservoir temperature" + position_count = "position count" + power = "power" + pressure = "pressure" + probe_volume = "probe volume" + protein_attenuation_coefficient = "protein attenuation coefficient" + purity = "purity" + q_nmr_purity_result = "qNMR purity result" + reference_material_weight = "reference material weight" + reflectance = "reflectance" + refractive_index = "refractive index" + relative_humidity = "relative humidity" + relative_intensity = "relative intensity" + relative_permittivity = "relative permittivity" + relative_pressure__bet_ = "relative pressure (BET)" + relative_response = "relative response" + relative_weight_loss_on_drying = "relative weight loss on drying" + reservoir_temperature = "reservoir temperature" + rotational_speed = "rotational speed" + sample_temperature = "sample temperature" + sample_thickness = "sample thickness" + sample_weight = "sample weight" + sample_weight_before_drying = "sample weight before drying" + sample_width = "sample width" + saturated_gas_flow_rate = "saturated gas flow rate" + saturation_vapor_pressure = "saturation vapor pressure" + seal_initiation_temperature = "seal initiation temperature" + size__datum_ = "size (datum)" + solvent_reservoir_temperature = "solvent reservoir temperature" + specific_enthalpy_of_fusion = "specific enthalpy of fusion" + specific_enthalpy_of_sublimation = "specific enthalpy of sublimation" + specific_enthalpy_of_vaporization = "specific enthalpy of vaporization" + specific_heat_capacity = "specific heat capacity" + specific_rotation = "specific rotation" + specific_surface_area = "specific surface area" + start_height = "start height" + stirring_rate = "stirring rate" + strain = "strain" + stress = "stress" + tablet_thickness = "tablet thickness" + tare_weight = "tare weight" + temperature = "temperature" + temperature_rate = "temperature rate" + thermal_conductance = "thermal conductance" + thermal_conductivity = "thermal conductivity" + thickness = "thickness" + titer = "titer" + torque = "torque" + total_cell_diameter = "total cell diameter" + total_foam_height = "total foam height" + total_gas_flow_rate = "total gas flow rate" + total_material_height = "total material height" + transition_enthalpy = "transition enthalpy" + transmittance = "transmittance" + turbidity = "turbidity" + velocity = "velocity" + viscosity = "viscosity" + void_volume = "void volume" + voltage = "voltage" + voltage_range = "voltage range" + volume = "volume" + volume_concentration = "volume concentration" + volume_fraction = "volume fraction" + water_mass_concentration = "water mass concentration" + water_mass_fraction = "water mass fraction" + wavelength = "wavelength" + wavenumber = "wavenumber" + weight_loss = "weight loss" + well_volume = "well volume" + width = "width" + yield_strain = "yield strain" + yield_stress = "yield stress" + + +@dataclass(frozen=True, kw_only=True) +class SynonymDocumentItem: + written_name: TStringValue + + +@dataclass(frozen=True, kw_only=True) +class CustomInformationAggregateDocument: + custom_information_document: list[CustomInformationDocumentItem] + + +@dataclass(frozen=True, kw_only=True) +class DataSourceAggregateDocument: + data_source_document: list[DataSourceDocumentItem] + + +@dataclass(frozen=True, kw_only=True) +class ElectronicSignatureAggregateDocument: + electronic_signature_document: list[ElectronicSignatureDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class ErrorAggregateDocument: + error_document: list[ErrorDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class ImageAggregateDocument: + image_document: list[ImageDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class MatchQualityIndexAggregateDocument: + match_quality_index_document: list[MatchQualityIndexDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class ParameterAggregateDocument: + parameter_document: list[ParameterDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class RegressionPointDocumentItem: + regression_feature: RegressionFeature + standard_name: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class StatisticsDocumentItem: + statistical_feature: StatisticalFeature + + +@dataclass(frozen=True, kw_only=True) +class SynonymAggregateDocument: + synonym_document: list[SynonymDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class AnalysisSequenceDocument: + written_name: TStringValue + unc_path: TStringValue | None = field( + default=None, metadata={"json_name": "UNC path"} + ) + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + end_time: TDateTimeValue | None = None + file_name: TStringValue | None = None + identifier: TStringValue | None = None + method_identifier: TStringValue | None = None + method_name: TStringValue | None = None + start_time: TDateTimeValue | None = None + version_number: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class DataSystemDocument: + asm_file_identifier: TStringValue = field( + metadata={"json_name": "ASM file identifier"} + ) + data_system_instance_identifier: TStringValue + asm_conversion_time: TDateTimeValue | None = field( + default=None, metadata={"json_name": "ASM conversion time"} + ) + asm_converter_name: TStringValue | None = field( + default=None, metadata={"json_name": "ASM converter name"} + ) + asm_converter_version: TStringValue | None = field( + default=None, metadata={"json_name": "ASM converter version"} + ) + unc_path: TStringValue | None = field( + default=None, metadata={"json_name": "UNC path"} + ) + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + database_primary_key: TStringValue | None = None + file_name: TStringValue | None = None + software_name: TStringValue | None = None + software_version: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class DeviceControlDocumentItem(OrderedItem): + device_type: TStringValue + brand_name: TStringValue | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + detection_type: TStringValue | None = None + device_identifier: TStringValue | None = None + duration_setting: TQuantityValueSecondTime | None = None + equipment_serial_number: TStringValue | None = None + firmware_version: TStringValue | None = None + model_number: TStringValue | None = None + product_manufacturer: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class DeviceDocumentItem(OrderedItem): + device_type: TStringValue + brand_name: TStringValue | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + device_identifier: TStringValue | None = None + equipment_serial_number: TStringValue | None = None + firmware_version: TStringValue | None = None + model_number: TStringValue | None = None + product_manufacturer: TStringValue | None = None + written_name: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class DiagnosticTraceDocumentItem: + description: Any + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + + +@dataclass(frozen=True, kw_only=True) +class LogEntryItem: + observation: TStringValue + scalar_timestamp_datum: TDateTimeValue + author: TStringValue | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + elapsed_time: TQuantityValueMinuteTime | None = None + identifier: TStringValue | None = None + log_source_name: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class SampleDocument: + sample_identifier: TStringValue + batch_identifier: TStringValue | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + description: Any | None = None + location_identifier: TStringValue | None = None + sample_role_type: SampleRoleType | None = None + written_name: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class CalculatedDataDocumentItem(OrderedItem): + calculated_data_name: TStringValue + calculated_result: TQuantityValue + calculated_data_identifier: TStringValue | None = None + calculation_description: TStringValue | None = None + data_source_aggregate_document: DataSourceAggregateDocument | None = None + electronic_project_record: ElectronicProjectRecord | None = None + + +@dataclass(frozen=True, kw_only=True) +class RegressionPointAggregateDocument: + regression_point_document: list[RegressionPointDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class StatisticsAggregateDocument: + statistics_document: list[StatisticsDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class MatchResultDocumentItem: + in_ch_i_molecular_structure: TStringValue | None = field( + default=None, metadata={"json_name": "InChI molecular structure"} + ) + in_ch_ikey_molecular_structure: TStringValue | None = field( + default=None, metadata={"json_name": "InChIKey molecular structure"} + ) + molfile_molecular_structure: TStringValue | None = field( + default=None, metadata={"json_name": "Molfile molecular structure"} + ) + smiles_molecular_structure: TStringValue | None = field( + default=None, metadata={"json_name": "SMILES molecular structure"} + ) + database_identifier: TStringValue | None = None + description: TStringValue | None = None + fingerprint_identifier: TStringValue | None = None + match_quality_index_aggregate_document: MatchQualityIndexAggregateDocument | None = ( + None + ) + molecular_formula: TStringValue | None = None + reference_identifier: TStringValue | None = None + synonym_aggregate_document: SynonymAggregateDocument | None = None + + +@dataclass(frozen=True, kw_only=True) +class DeviceControlAggregateDocument: + device_control_document: list[DeviceControlDocumentItem] + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + + +@dataclass(frozen=True, kw_only=True) +class DeviceSystemDocument: + asset_management_identifier: TStringValue | None = None + brand_name: TStringValue | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + description: Any | None = None + device_document: list[DeviceDocumentItem] | None = None + device_identifier: TStringValue | None = None + equipment_serial_number: TStringValue | None = None + firmware_version: TStringValue | None = None + model_number: TStringValue | None = None + product_manufacturer: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class DiagnosticTraceAggregateDocument: + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + diagnostic_trace_document: list[DiagnosticTraceDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class Log: + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + log_entry: list[LogEntryItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class CalculatedDataAggregateDocument: + calculated_data_document: list[CalculatedDataDocumentItem] + + +@dataclass(frozen=True, kw_only=True) +class RegressionDocumentItem: + data_cube: DataCube | None = None + data_source_aggregate_document: DataSourceAggregateDocument | None = None + description: TStringValue | None = None + parameter_aggregate_document: ParameterAggregateDocument | None = None + regression_equation: TStringValue | None = None + regression_identifier: TStringValue | None = None + regression_point_aggregate_document: RegressionPointAggregateDocument | None = None + regression_type: TStringValue | None = None + written_name: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class MatchResultAggregateDocument: + match_result_document: list[MatchResultDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class RegressionAggregateDocument: + regression_document: list[RegressionDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class ProcessedDataDocumentItem(OrderedItem): + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + data_processing_document: DataProcessingDocument | None = None + data_source_aggregate_document: DataSourceAggregateDocument | None = None + description: TStringValue | None = None + electronic_project_record: ElectronicProjectRecord | None = None + group_identifier: TStringValue | None = None + match_result_aggregate_document: MatchResultAggregateDocument | None = None + processed_data_identifier: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class ProcessedDataAggregateDocument: + processed_data_document: list[ProcessedDataDocumentItem] + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + electronic_project_record: ElectronicProjectRecord | None = None + + +@dataclass(frozen=True, kw_only=True) +class MeasurementDocumentItem: + device_control_aggregate_document: DeviceControlAggregateDocument + sample_document: SampleDocument + analytical_method_identifier: TStringValue | None = None + calculated_data_aggregate_document: CalculatedDataAggregateDocument | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + detection_type: TStringValue | None = None + duration: TQuantityValueSecondTime | None = None + electronic_project_record: ElectronicProjectRecord | None = None + error_aggregate_document: ErrorAggregateDocument | None = None + experimental_data_identifier: TStringValue | None = None + image_aggregate_document: ImageAggregateDocument | None = None + measurement_identifier: TStringValue | None = None + measurement_time: TDateTimeStampValue | None = None + method_version: TStringValue | None = None + processed_data_aggregate_document: ProcessedDataAggregateDocument | None = None + statistics_aggregate_document: StatisticsAggregateDocument | None = None + + +@dataclass(frozen=True, kw_only=True) +class TechniqueAggregateDocument: + analysis_sequence_document: AnalysisSequenceDocument | None = None + calculated_data_aggregate_document: CalculatedDataAggregateDocument | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + data_system_document: DataSystemDocument | None = None + device_system_document: DeviceSystemDocument | None = None + electronic_project_record: ElectronicProjectRecord | None = None + electronic_signature_aggregate_document: ElectronicSignatureAggregateDocument | None = ( + None + ) + processed_data_aggregate_document: ProcessedDataAggregateDocument | None = None + statistics_aggregate_document: StatisticsAggregateDocument | None = None + + +@dataclass(frozen=True, kw_only=True) +class MeasurementAggregateDocument: + measurement_document: list[MeasurementDocumentItem] + calculated_data_aggregate_document: CalculatedDataAggregateDocument | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + diagnostic_trace_aggregate_document: DiagnosticTraceAggregateDocument | None = None + error_aggregate_document: ErrorAggregateDocument | None = None + image_aggregate_document: ImageAggregateDocument | None = None + processed_data_aggregate_document: ProcessedDataAggregateDocument | None = None + statistics_aggregate_document: StatisticsAggregateDocument | None = None + + +@dataclass(frozen=True, kw_only=True) +class TechniqueDocument: + measurement_aggregate_document: MeasurementAggregateDocument + analyst: TStringValue | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + electronic_project_record: ElectronicProjectRecord | None = None + log: Log | None = None + submitter: TStringValue | None = None diff --git a/src/allotropy/allotrope/models/adm/light_obscuration/rec/_2026/_03/light_obscuration_detector.py b/src/allotropy/allotrope/models/adm/light_obscuration/rec/_2026/_03/light_obscuration_detector.py new file mode 100644 index 000000000..fcd649788 --- /dev/null +++ b/src/allotropy/allotrope/models/adm/light_obscuration/rec/_2026/_03/light_obscuration_detector.py @@ -0,0 +1,68 @@ +# generated by allotropy.schema_gen + +from __future__ import annotations + +from dataclasses import dataclass + +from allotropy.allotrope.models.adm.core.rec._2026._03.core import ( + TBooleanValue, + TIntValue, + TStringValue, +) +from allotropy.allotrope.models.shared.definitions.quantity_values import ( + TQuantityValueCountsPerMilliliter, + TQuantityValueMicrometer, + TQuantityValueMilliliter, + TQuantityValueUnitless, +) + + +@dataclass(frozen=True, kw_only=True) +class DataProcessingDocument: + dilution_factor_setting: TQuantityValueUnitless + data_processing_omission_setting: TBooleanValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class DeviceControlDocumentItem: + detector_view_volume: TQuantityValueMilliliter + flush_volume_setting: TQuantityValueMilliliter + repetition_setting: TIntValue + sample_volume_setting: TQuantityValueMilliliter + + +@dataclass(frozen=True, kw_only=True) +class DistributionDocumentItem: + cumulative_count: TQuantityValueUnitless + cumulative_particle_density: TQuantityValueCountsPerMilliliter + differential_count: TQuantityValueUnitless + differential_particle_density: TQuantityValueCountsPerMilliliter + particle_size: TQuantityValueMicrometer + distribution_identifier: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class DeviceControlAggregateDocument: + device_control_document: list[DeviceControlDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class DistributionAggregateDocument: + distribution_document: list[DistributionDocumentItem] + + +@dataclass(frozen=True, kw_only=True) +class ProcessedDataDocumentItem: + distribution_aggregate_document: DistributionAggregateDocument + data_processing_document: DataProcessingDocument | None = None + + +@dataclass(frozen=True, kw_only=True) +class ProcessedDataAggregateDocument: + processed_data_document: list[ProcessedDataDocumentItem] + + +@dataclass(frozen=True, kw_only=True) +class MeasurementDocumentItems: + processed_data_aggregate_document: ProcessedDataAggregateDocument + device_control_aggregate_document: DeviceControlAggregateDocument | None = None diff --git a/src/allotropy/allotrope/models/adm/metabolite_analyzer/rec/_2026/_03/metabolite_detector.py b/src/allotropy/allotrope/models/adm/metabolite_analyzer/rec/_2026/_03/metabolite_detector.py new file mode 100644 index 000000000..66293d9f5 --- /dev/null +++ b/src/allotropy/allotrope/models/adm/metabolite_analyzer/rec/_2026/_03/metabolite_detector.py @@ -0,0 +1,30 @@ +# generated by allotropy.schema_gen + +from __future__ import annotations + +from dataclasses import dataclass + +from allotropy.allotrope.models.adm.core.rec._2026._03.core import TStringValue +from allotropy.allotrope.models.shared.definitions.quantity_values import ( + TQuantityValueGramPerLiter, + TQuantityValueMilliliterPerLiter, + TQuantityValueMillimolePerLiter, +) + + +@dataclass(frozen=True, kw_only=True) +class AnalyteDocumentItem: + analyte_name: TStringValue + mass_concentration: TQuantityValueGramPerLiter | None = None + molar_concentration: TQuantityValueMillimolePerLiter | None = None + volume_concentration: TQuantityValueMilliliterPerLiter | None = None + + +@dataclass(frozen=True, kw_only=True) +class AnalyteAggregateDocument: + analyte_document: list[AnalyteDocumentItem] + + +@dataclass(frozen=True, kw_only=True) +class MeasurementDocumentItems: + analyte_aggregate_document: AnalyteAggregateDocument diff --git a/src/allotropy/allotrope/models/adm/osmolality/rec/_2026/_03/osmolality_detector.py b/src/allotropy/allotrope/models/adm/osmolality/rec/_2026/_03/osmolality_detector.py new file mode 100644 index 000000000..82a738b90 --- /dev/null +++ b/src/allotropy/allotrope/models/adm/osmolality/rec/_2026/_03/osmolality_detector.py @@ -0,0 +1,14 @@ +# generated by allotropy.schema_gen + +from __future__ import annotations + +from dataclasses import dataclass + +from allotropy.allotrope.models.shared.definitions.quantity_values import ( + TQuantityValueMilliOsmolesPerKilogram, +) + + +@dataclass(frozen=True, kw_only=True) +class MeasurementDocumentItems: + osmolality: TQuantityValueMilliOsmolesPerKilogram diff --git a/src/allotropy/allotrope/models/adm/ph/rec/_2026/_03/ph_detector.py b/src/allotropy/allotrope/models/adm/ph/rec/_2026/_03/ph_detector.py new file mode 100644 index 000000000..77027b54f --- /dev/null +++ b/src/allotropy/allotrope/models/adm/ph/rec/_2026/_03/ph_detector.py @@ -0,0 +1,16 @@ +# generated by allotropy.schema_gen + +from __future__ import annotations + +from dataclasses import dataclass, field + +from allotropy.allotrope.models.shared.definitions.quantity_values import ( + TQuantityValueDegreeCelsius, + TQuantityValuePH, +) + + +@dataclass(frozen=True, kw_only=True) +class MeasurementDocumentItems: + p_h: TQuantityValuePH = field(metadata={"json_name": "pH"}) + temperature: TQuantityValueDegreeCelsius | None = None diff --git a/src/allotropy/allotrope/models/adm/solution_analyzer/rec/_2026/_03/solution_analyzer.py b/src/allotropy/allotrope/models/adm/solution_analyzer/rec/_2026/_03/solution_analyzer.py new file mode 100644 index 000000000..034eada9f --- /dev/null +++ b/src/allotropy/allotrope/models/adm/solution_analyzer/rec/_2026/_03/solution_analyzer.py @@ -0,0 +1,308 @@ +# generated by allotropy.schema_gen + +from __future__ import annotations + +from dataclasses import dataclass, field +from enum import Enum +from typing import Any + +from allotropy.allotrope.models.adm.core.rec._2026._03.core import ( + OrderedItem, + TBooleanValue, + TDateTimeStampValue, + TIntValue, + TStringValue, +) +from allotropy.allotrope.models.adm.core.rec._2026._03.cube import ( + TDatacube, + TDatacubeStructure, +) +from allotropy.allotrope.models.adm.core.rec._2026._03.hierarchy import ( + CalculatedDataAggregateDocument, + CustomInformationAggregateDocument, + DataSourceAggregateDocument, + ElectronicProjectRecord, + ErrorAggregateDocument, + ImageAggregateDocument, + MatchResultAggregateDocument, + StatisticsAggregateDocument, + TechniqueAggregateDocument, + TechniqueDocument, +) +from allotropy.allotrope.models.shared.definitions.quantity_values import ( + TQuantityValueCell, + TQuantityValueCountsPerMilliliter, + TQuantityValueDegreeCelsius, + TQuantityValueGramPerLiter, + TQuantityValueMicrometer, + TQuantityValueMilliAbsorbanceUnit, + TQuantityValueMilliliter, + TQuantityValueMilliliterPerLiter, + TQuantityValueMillimeterOfMercury, + TQuantityValueMillimolePerLiter, + TQuantityValueMillionCellsPerMilliliter, + TQuantityValueMilliOsmolesPerKilogram, + TQuantityValueNanometer, + TQuantityValuePercent, + TQuantityValuePH, + TQuantityValuePicogramPerMilliliter, + TQuantityValueSecondTime, + TQuantityValueUnitless, +) + + +@dataclass(frozen=True, kw_only=True) +class AnalyteDocumentItem: + analyte_name: TStringValue | None = None + mass_concentration: TQuantityValueGramPerLiter | None = None + molar_concentration: TQuantityValueMillimolePerLiter | None = None + volume_concentration: TQuantityValueMilliliterPerLiter | None = None + + +@dataclass(frozen=True, kw_only=True) +class DataProcessingDocument: + cell_density_dilution_factor: TQuantityValueUnitless | None = None + cell_type_processing_method: TStringValue | None = None + maximum_cell_diameter_setting: TQuantityValueMicrometer | None = None + minimum_cell_diameter_setting: TQuantityValueMicrometer | None = None + data_processing_time: TDateTimeStampValue | None = None + data_processing_type: TStringValue | None = None + method_identifier: TStringValue | None = None + method_name: TStringValue | None = None + method_version: TStringValue | None = None + data_processing_omission_setting: TBooleanValue | None = None + dilution_factor_setting: TQuantityValueUnitless | None = None + + +@dataclass(frozen=True, kw_only=True) +class DeviceControlDocumentItem(OrderedItem): + brand_name: TStringValue | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + detection_type: TStringValue | None = None + device_identifier: TStringValue | None = None + device_type: TStringValue | None = None + duration_setting: TQuantityValueSecondTime | None = None + equipment_serial_number: TStringValue | None = None + firmware_version: TStringValue | None = None + model_number: TStringValue | None = None + product_manufacturer: TStringValue | None = None + detector_bandwidth_setting: TQuantityValueNanometer | None = None + detector_wavelength_setting: TQuantityValueNanometer | None = None + electronic_absorbance_bandwidth_setting: TQuantityValueNanometer | None = None + electronic_absorbance_reference_bandwidth_setting: TQuantityValueNanometer | None = ( + None + ) + electronic_absorbance_reference_wavelength_setting: TQuantityValueNanometer | None = ( + None + ) + electronic_absorbance_wavelength_setting: TQuantityValueNanometer | None = None + excitation_wavelength_setting: TQuantityValueNanometer | None = None + detector_view_volume: TQuantityValueMilliliter | None = None + flush_volume_setting: TQuantityValueMilliliter | None = None + repetition_setting: TIntValue | None = None + sample_volume_setting: TQuantityValueMilliliter | None = None + + +@dataclass(frozen=True, kw_only=True) +class DiagnosticTraceDocumentItem: + description: Any + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + + +@dataclass(frozen=True, kw_only=True) +class DistributionDocumentItem: + cumulative_count: TQuantityValueUnitless | None = None + cumulative_particle_density: TQuantityValueCountsPerMilliliter | None = None + differential_count: TQuantityValueUnitless | None = None + differential_particle_density: TQuantityValueCountsPerMilliliter | None = None + distribution_identifier: TStringValue | None = None + particle_size: TQuantityValueMicrometer | None = None + + +class SampleRoleType(Enum): + control_sample_role = "control sample role" + standard_sample_role = "standard sample role" + validation_sample_role = "validation sample role" + experiment_sample_role = "experiment sample role" + sample_role = "sample role" + spiked_sample_role = "spiked sample role" + blank_role = "blank role" + unknown_sample_role = "unknown sample role" + calibration_sample_role = "calibration sample role" + unspiked_sample_role = "unspiked sample role" + specimen_role = "specimen role" + quality_control_sample_role = "quality control sample role" + reference_sample_role = "reference sample role" + + +@dataclass(frozen=True, kw_only=True) +class TotalCellDiameterDistribution(TDatacube): + cube_structure: TDatacubeStructure | None = field( + default=None, metadata={"json_name": "cube-structure"} + ) + + +@dataclass(frozen=True, kw_only=True) +class AnalyteAggregateDocument: + analyte_document: list[AnalyteDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class DeviceControlAggregateDocument: + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + device_control_document: list[DeviceControlDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class DiagnosticTraceAggregateDocument: + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + diagnostic_trace_document: list[DiagnosticTraceDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class DistributionAggregateDocument: + distribution_document: list[DistributionDocumentItem] | None = None + + +@dataclass(frozen=True, kw_only=True) +class SampleDocument: + sample_identifier: TStringValue + batch_identifier: TStringValue | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + description: Any | None = None + location_identifier: TStringValue | None = None + sample_role_type: SampleRoleType | None = None + written_name: TStringValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class ProcessedDataDocumentItem(OrderedItem): + average_dead_cell_diameter__cell_counter_: TQuantityValueMicrometer | None = field( + default=None, + metadata={"json_name": "average dead cell diameter (cell counter)"}, + ) + average_total_cell_circularity: TQuantityValueUnitless | None = None + average_total_cell_diameter: TQuantityValueMicrometer | None = None + average_viable_cell_circularity: TQuantityValueUnitless | None = None + average_viable_cell_diameter__cell_counter_: TQuantityValueMicrometer | None = ( + field( + default=None, + metadata={"json_name": "average viable cell diameter (cell counter)"}, + ) + ) + data_processing_document: DataProcessingDocument | None = None + dead_cell_count: TQuantityValueCell | None = None + dead_cell_density__cell_counter_: TQuantityValueMillionCellsPerMilliliter | None = ( + field(default=None, metadata={"json_name": "dead cell density (cell counter)"}) + ) + total_cell_count: TQuantityValueCell | None = None + total_cell_density__cell_counter_: TQuantityValueMillionCellsPerMilliliter | None = field( + default=None, metadata={"json_name": "total cell density (cell counter)"} + ) + total_cell_diameter_distribution: TotalCellDiameterDistribution | None = None + viability__cell_counter_: TQuantityValuePercent | None = field( + default=None, metadata={"json_name": "viability (cell counter)"} + ) + viable_cell_count: TQuantityValueCell | None = None + viable_cell_density__cell_counter_: TQuantityValueMillionCellsPerMilliliter | None = field( + default=None, metadata={"json_name": "viable cell density (cell counter)"} + ) + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + data_source_aggregate_document: DataSourceAggregateDocument | None = None + description: TStringValue | None = None + electronic_project_record: ElectronicProjectRecord | None = None + group_identifier: TStringValue | None = None + match_result_aggregate_document: MatchResultAggregateDocument | None = None + processed_data_identifier: TStringValue | None = None + distribution_aggregate_document: DistributionAggregateDocument | None = None + + +@dataclass(frozen=True, kw_only=True) +class ProcessedDataAggregateDocument: + processed_data_document: list[ProcessedDataDocumentItem] + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + electronic_project_record: ElectronicProjectRecord | None = None + + +@dataclass(frozen=True, kw_only=True) +class MeasurementDocumentItem(OrderedItem): + device_control_aggregate_document: DeviceControlAggregateDocument + measurement_identifier: TStringValue + measurement_time: TDateTimeStampValue + sample_document: SampleDocument + analytical_method_identifier: TStringValue | None = None + calculated_data_aggregate_document: CalculatedDataAggregateDocument | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + detection_type: TStringValue | None = None + duration: TQuantityValueSecondTime | None = None + electronic_project_record: ElectronicProjectRecord | None = None + error_aggregate_document: ErrorAggregateDocument | None = None + experimental_data_identifier: TStringValue | None = None + image_aggregate_document: ImageAggregateDocument | None = None + method_version: TStringValue | None = None + processed_data_aggregate_document: ProcessedDataAggregateDocument | None = None + statistics_aggregate_document: StatisticsAggregateDocument | None = None + osmolality: TQuantityValueMilliOsmolesPerKilogram | None = None + absorbance: TQuantityValueMilliAbsorbanceUnit | None = None + mass_concentration: TQuantityValuePicogramPerMilliliter | None = None + transmittance: TQuantityValueUnitless | None = None + p_h: TQuantityValuePH | None = field(default=None, metadata={"json_name": "pH"}) + temperature: TQuantityValueDegreeCelsius | None = None + carbon_dioxide_saturation: TQuantityValuePercent | None = None + oxygen_saturation: TQuantityValuePercent | None = None + p_co2: TQuantityValueMillimeterOfMercury | None = field( + default=None, metadata={"json_name": "pCO2"} + ) + p_o2: TQuantityValueMillimeterOfMercury | None = field( + default=None, metadata={"json_name": "pO2"} + ) + analyte_aggregate_document: AnalyteAggregateDocument | None = None + + +@dataclass(frozen=True, kw_only=True) +class MeasurementAggregateDocument: + measurement_document: list[MeasurementDocumentItem] + calculated_data_aggregate_document: CalculatedDataAggregateDocument | None = None + custom_information_aggregate_document: CustomInformationAggregateDocument | None = ( + None + ) + diagnostic_trace_aggregate_document: DiagnosticTraceAggregateDocument | None = None + error_aggregate_document: ErrorAggregateDocument | None = None + image_aggregate_document: ImageAggregateDocument | None = None + processed_data_aggregate_document: ProcessedDataAggregateDocument | None = None + statistics_aggregate_document: StatisticsAggregateDocument | None = None + data_processing_time: TDateTimeStampValue | None = None + + +@dataclass(frozen=True, kw_only=True) +class SolutionAnalyzerDocumentItem(TechniqueDocument): + measurement_aggregate_document: MeasurementAggregateDocument | None = None + + +@dataclass(frozen=True, kw_only=True) +class SolutionAnalyzerAggregateDocument(TechniqueAggregateDocument): + solution_analyzer_document: list[SolutionAnalyzerDocumentItem] + + +@dataclass(kw_only=True) +class Model: + field_asm_manifest: str = field(metadata={"json_name": "$asm.manifest"}) + solution_analyzer_aggregate_document: SolutionAnalyzerAggregateDocument | None = ( + None + ) diff --git a/src/allotropy/allotrope/models/shared/definitions/quantity_values.py b/src/allotropy/allotrope/models/shared/definitions/quantity_values.py index 7774737c4..6247829cd 100644 --- a/src/allotropy/allotrope/models/shared/definitions/quantity_values.py +++ b/src/allotropy/allotrope/models/shared/definitions/quantity_values.py @@ -3575,11 +3575,21 @@ class TQuantityValueSquareMetersPerGram(TQuantityValue): unit: str = "m^2/g" +@dataclass(frozen=True, kw_only=True) +class TQuantityValueSquareMicrometer(TQuantityValue): + unit: str = "µm^2" + + @dataclass(frozen=True, kw_only=True) class TQuantityValueSquareMile(TQuantityValue): unit: str = "mi^2" +@dataclass(frozen=True, kw_only=True) +class TQuantityValueSquarePixel(TQuantityValue): + unit: str = "pixel^2" + + @dataclass(frozen=True, kw_only=True) class TQuantityValueSquareYard(TQuantityValue): unit: str = "yd^2" diff --git a/src/allotropy/allotrope/models/shared/definitions/units.py b/src/allotropy/allotrope/models/shared/definitions/units.py index 8ca74a89b..254869296 100644 --- a/src/allotropy/allotrope/models/shared/definitions/units.py +++ b/src/allotropy/allotrope/models/shared/definitions/units.py @@ -3584,11 +3584,21 @@ class SquareMetersPerGram(HasUnit): unit: str = "m^2/g" +@dataclass(frozen=True, kw_only=True) +class SquareMicrometer(HasUnit): + unit: str = "µm^2" + + @dataclass(frozen=True, kw_only=True) class SquareMile(HasUnit): unit: str = "mi^2" +@dataclass(frozen=True, kw_only=True) +class SquarePixel(HasUnit): + unit: str = "pixel^2" + + @dataclass(frozen=True, kw_only=True) class SquareYard(HasUnit): unit: str = "yd^2" diff --git a/src/allotropy/allotrope/schema_mappers/adm/solution_analyzer/rec/_2026/_03/__init__.py b/src/allotropy/allotrope/schema_mappers/adm/solution_analyzer/rec/_2026/_03/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/allotropy/allotrope/schema_mappers/adm/solution_analyzer/rec/_2026/_03/solution_analyzer.py b/src/allotropy/allotrope/schema_mappers/adm/solution_analyzer/rec/_2026/_03/solution_analyzer.py new file mode 100644 index 000000000..ca87fcfa6 --- /dev/null +++ b/src/allotropy/allotrope/schema_mappers/adm/solution_analyzer/rec/_2026/_03/solution_analyzer.py @@ -0,0 +1,498 @@ +from dataclasses import dataclass +from typing import Any + +from allotropy.allotrope.converter import add_custom_information_document +from allotropy.allotrope.models.adm.core.rec._2026._03.hierarchy import ( + CalculatedDataAggregateDocument, + CalculatedDataDocumentItem, + DataSourceAggregateDocument, + DataSourceDocumentItem, + DataSystemDocument, + DeviceSystemDocument, + ErrorAggregateDocument, + ErrorDocumentItem, +) +from allotropy.allotrope.models.adm.solution_analyzer.rec._2026._03.solution_analyzer import ( + AnalyteAggregateDocument, + AnalyteDocumentItem, + DataProcessingDocument, + DeviceControlAggregateDocument, + DeviceControlDocumentItem, + DistributionAggregateDocument, + DistributionDocumentItem, + MeasurementAggregateDocument, + MeasurementDocumentItem, + Model, + ProcessedDataAggregateDocument, + ProcessedDataDocumentItem, + SampleDocument, + SolutionAnalyzerAggregateDocument, + SolutionAnalyzerDocumentItem, +) +from allotropy.allotrope.models.shared.definitions.definitions import TQuantityValue +from allotropy.allotrope.models.shared.definitions.quantity_values import ( + TQuantityValueCell, + TQuantityValueCountsPerMilliliter, + TQuantityValueDegreeCelsius, + TQuantityValueGramPerLiter, + TQuantityValueMicrometer, + TQuantityValueMilliAbsorbanceUnit, + TQuantityValueMilliliter, + TQuantityValueMilliliterPerLiter, + TQuantityValueMillimeterOfMercury, + TQuantityValueMillimolePerLiter, + TQuantityValueMillionCellsPerMilliliter, + TQuantityValueMilliOsmolesPerKilogram, + TQuantityValuePercent, + TQuantityValuePH, + TQuantityValueUnitless, +) +from allotropy.allotrope.schema_mappers.schema_mapper import SchemaMapper +from allotropy.constants import ASM_CONVERTER_VERSION +from allotropy.exceptions import AllotropeConversionError +from allotropy.parsers.utils.values import quantity_or_none + + +@dataclass(frozen=True) +class Analyte: + name: str + value: float + unit: str + + # Custom information document fields + custom_info: dict[str, Any] | None = None + + def __lt__(self, other: Any) -> bool: + if not isinstance(other, Analyte): + return False + + return self.name < other.name + + +@dataclass(frozen=True) +class DistributionDocument: + particle_size: float + cumulative_count: float + cumulative_particle_density: float + differential_particle_density: float + differential_count: float + distribution_identifier: str + custom_info: dict[str, Any] | None = None + + +@dataclass(frozen=True) +class Error: + error: str + feature: str | None = None + + +@dataclass(frozen=True) +class DataProcessing: + cell_type_processing_method: str | None = None + cell_density_dilution_factor: float | None = None + dilution_factor_setting: float | None = None + data_processing_omission_setting: bool | None = None + + +@dataclass(frozen=True) +class Measurement: + # Measurement metadata + identifier: str + measurement_time: str + sample_identifier: str + description: str | None = None + batch_identifier: str | None = None + detection_type: str | None = None + + # Measurements + absorbance: float | None = None + po2: float | None = None + pco2: float | None = None + carbon_dioxide_saturation: float | None = None + oxygen_saturation: float | None = None + ph: float | None = None + temperature: float | None = None + osmolality: float | None = None + viability: float | None = None + total_cell_density: float | None = None + viable_cell_density: float | None = None + average_live_cell_diameter: float | None = None + total_cell_count: float | None = None + viable_cell_count: float | None = None + analytes: list[Analyte] | None = None + data_processing: DataProcessing | None = None + distribution_documents: list[DistributionDocument] | None = None + + # Errors + errors: list[Error] | None = None + custom_info: dict[str, Any] | None = None + device_control_custom_info: dict[str, Any] | None = None + sample_custom_info: dict[str, Any] | None = None + + +@dataclass(frozen=True) +class MeasurementGroup: + measurements: list[Measurement] + analyst: str | None + data_processing_time: str | None + errors: list[Error] | None = None + + +@dataclass(frozen=True) +class Metadata: + device_type: str + asm_file_identifier: str + data_system_instance_identifier: str + unc_path: str + device_identifier: str | None = None + model_number: str | None = None + software_name: str | None = None + detection_type: str | None = None + software_version: str | None = None + equipment_serial_number: str | None = None + product_manufacturer: str | None = None + brand_name: str | None = None + file_name: str | None = None + analyst: str | None = None + measurement_time: str | None = None + analytical_method_identifier: str | None = None + method_version: str | None = None + experimental_data_identifier: str | None = None + flush_volume_setting: float | None = None + detector_view_volume: float | None = None + repetition_setting: int | None = None + sample_volume_setting: float | None = None + custom_info: dict[str, Any] | None = None + + +@dataclass(frozen=True) +class DataSource: + identifier: str + feature: str + + +@dataclass(frozen=True) +class CalculatedDataItem: + identifier: str + name: str + value: float + unit: str + data_sources: list[DataSource] + + +@dataclass(frozen=True) +class Data: + metadata: Metadata + measurement_groups: list[MeasurementGroup] + calculated_data: list[CalculatedDataItem] | None = None + + +class Mapper(SchemaMapper[Data, Model]): + MANIFEST = "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest" + + def map_model(self, data: Data) -> Model: + return Model( + field_asm_manifest=self.MANIFEST, + solution_analyzer_aggregate_document=add_custom_information_document( + SolutionAnalyzerAggregateDocument( + device_system_document=add_custom_information_document( + DeviceSystemDocument( + model_number=data.metadata.model_number, + equipment_serial_number=data.metadata.equipment_serial_number, + device_identifier=data.metadata.device_identifier, + product_manufacturer=data.metadata.product_manufacturer, + ), + None, + ), + data_system_document=add_custom_information_document( + DataSystemDocument( + asm_file_identifier=data.metadata.asm_file_identifier, + data_system_instance_identifier=data.metadata.data_system_instance_identifier, + file_name=data.metadata.file_name, + unc_path=data.metadata.unc_path, + software_name=data.metadata.software_name, + software_version=data.metadata.software_version, + asm_converter_name=self.converter_name, + asm_converter_version=ASM_CONVERTER_VERSION, + ), + None, + ), + solution_analyzer_document=[ + self._get_technique_document(measurement_group, data.metadata) + for measurement_group in data.measurement_groups + ], + calculated_data_aggregate_document=self._get_calculated_data_aggregate_document( + data.calculated_data + ), + ), + None, + ), + ) + + def _get_technique_document( + self, measurement_group: MeasurementGroup, metadata: Metadata + ) -> SolutionAnalyzerDocumentItem: + return SolutionAnalyzerDocumentItem( + analyst=measurement_group.analyst, + measurement_aggregate_document=add_custom_information_document( + MeasurementAggregateDocument( + data_processing_time=self.get_date_time( + measurement_group.data_processing_time + ) + if measurement_group.data_processing_time + else None, + measurement_document=[ + self._get_measurement_document_item(measurement, metadata) + for measurement in measurement_group.measurements + ], + error_aggregate_document=self._get_error_aggregate_document( + measurement_group.errors + ), + ), + None, + ), + ) + + def _get_measurement_document_item( + self, measurement: Measurement, metadata: Metadata + ) -> MeasurementDocumentItem: + return add_custom_information_document( + MeasurementDocumentItem( + measurement_identifier=measurement.identifier, + measurement_time=self.get_date_time(measurement.measurement_time), + sample_document=self._get_sample_document(measurement), + device_control_aggregate_document=DeviceControlAggregateDocument( + device_control_document=[ + add_custom_information_document( + DeviceControlDocumentItem( + device_type=metadata.device_type, + detection_type=measurement.detection_type, + flush_volume_setting=quantity_or_none( + TQuantityValueMilliliter, + metadata.flush_volume_setting, + ), + detector_view_volume=quantity_or_none( + TQuantityValueMilliliter, + metadata.detector_view_volume, + ), + repetition_setting=metadata.repetition_setting, + sample_volume_setting=quantity_or_none( + TQuantityValueMilliliter, + metadata.sample_volume_setting, + ), + ), + measurement.device_control_custom_info, + ), + ] + ), + analyte_aggregate_document=AnalyteAggregateDocument( + analyte_document=[ + self._create_analyte_document(analyte) + for analyte in measurement.analytes + ] + ) + if measurement.analytes + else None, + processed_data_aggregate_document=self._create_processed_data_document( + measurement + ), + error_aggregate_document=self._get_error_aggregate_document( + measurement.errors + ), + absorbance=quantity_or_none( + TQuantityValueMilliAbsorbanceUnit, measurement.absorbance + ), + p_o2=quantity_or_none( + TQuantityValueMillimeterOfMercury, measurement.po2 + ), + p_co2=quantity_or_none( + TQuantityValueMillimeterOfMercury, measurement.pco2 + ), + carbon_dioxide_saturation=quantity_or_none( + TQuantityValuePercent, measurement.carbon_dioxide_saturation + ), + oxygen_saturation=quantity_or_none( + TQuantityValuePercent, measurement.oxygen_saturation + ), + p_h=quantity_or_none(TQuantityValuePH, measurement.ph), + temperature=quantity_or_none( + TQuantityValueDegreeCelsius, measurement.temperature + ), + osmolality=quantity_or_none( + TQuantityValueMilliOsmolesPerKilogram, measurement.osmolality + ), + ), + measurement.custom_info, + ) + + def _get_sample_document(self, measurement: Measurement) -> SampleDocument: + return add_custom_information_document( + SampleDocument( + sample_identifier=measurement.sample_identifier, + batch_identifier=measurement.batch_identifier, + description=measurement.description, + ), + measurement.sample_custom_info, + ) + + def _create_analyte_document(self, analyte: Analyte) -> AnalyteDocumentItem: + output: AnalyteDocumentItem + if analyte.unit == "g/L": + output = AnalyteDocumentItem( + analyte_name=analyte.name, + mass_concentration=TQuantityValueGramPerLiter(value=analyte.value), + ) + elif analyte.unit == "mL/L": + output = AnalyteDocumentItem( + analyte_name=analyte.name, + volume_concentration=TQuantityValueMilliliterPerLiter( + value=analyte.value + ), + ) + elif analyte.unit == "mmol/L": + output = AnalyteDocumentItem( + analyte_name=analyte.name, + molar_concentration=TQuantityValueMillimolePerLiter( + value=analyte.value + ), + ) + elif analyte.unit == "U/L": + if analyte.name == "ldh": + output = AnalyteDocumentItem( + analyte_name=analyte.name, + molar_concentration=TQuantityValueMillimolePerLiter( + value=analyte.value * 0.0167 + if analyte.value > 0 + else analyte.value, + ), + ) + else: + msg = f"Invalid unit for {analyte.name}: {analyte.unit}" + raise AllotropeConversionError(msg) + else: + msg = f"Invalid unit for analyte: {analyte.unit}, possible values are: g/L, mL/L, mmol/L" + raise AllotropeConversionError(msg) + + output = add_custom_information_document(output, analyte.custom_info or {}) + + return output + + def _create_processed_data_document( + self, measurement: Measurement + ) -> ProcessedDataAggregateDocument | None: + processed_data_document = add_custom_information_document( + ProcessedDataDocumentItem( + viability__cell_counter_=quantity_or_none( + TQuantityValuePercent, measurement.viability + ), + total_cell_density__cell_counter_=quantity_or_none( + TQuantityValueMillionCellsPerMilliliter, + measurement.total_cell_density, + ), + viable_cell_density__cell_counter_=quantity_or_none( + TQuantityValueMillionCellsPerMilliliter, + measurement.viable_cell_density, + ), + average_viable_cell_diameter__cell_counter_=quantity_or_none( + TQuantityValueMicrometer, measurement.average_live_cell_diameter + ), + total_cell_count=quantity_or_none( + TQuantityValueCell, measurement.total_cell_count + ), + viable_cell_count=quantity_or_none( + TQuantityValueCell, measurement.viable_cell_count + ), + data_processing_document=DataProcessingDocument( + cell_type_processing_method=measurement.data_processing.cell_type_processing_method, + cell_density_dilution_factor=quantity_or_none( + TQuantityValueUnitless, + measurement.data_processing.cell_density_dilution_factor, + ), + dilution_factor_setting=quantity_or_none( + TQuantityValueUnitless, + measurement.data_processing.dilution_factor_setting, + ), + data_processing_omission_setting=measurement.data_processing.data_processing_omission_setting, + ) + if measurement.data_processing + else None, + distribution_aggregate_document=DistributionAggregateDocument( + distribution_document=[ + add_custom_information_document( + DistributionDocumentItem( + distribution_identifier=distribution.distribution_identifier, + particle_size=TQuantityValueMicrometer( + value=distribution.particle_size + ), + cumulative_count=TQuantityValueUnitless( + value=distribution.cumulative_count + ), + cumulative_particle_density=TQuantityValueCountsPerMilliliter( + value=distribution.cumulative_particle_density + ), + differential_particle_density=TQuantityValueCountsPerMilliliter( + value=distribution.differential_particle_density + ), + differential_count=TQuantityValueUnitless( + value=distribution.differential_count + ), + ), + distribution.custom_info, + ) + for distribution in measurement.distribution_documents + ] + ) + if measurement.distribution_documents + else None, + ), + None, + ) + + if all(value is None for value in processed_data_document.__dict__.values()): + return None + + return ProcessedDataAggregateDocument( + processed_data_document=[processed_data_document] + ) + + def _get_error_aggregate_document( + self, errors: list[Error] | None + ) -> ErrorAggregateDocument | None: + if not errors: + return None + + return ErrorAggregateDocument( + error_document=[ + ErrorDocumentItem(error=error.error, error_feature=error.feature) + for error in errors + ] + ) + + def _get_calculated_data_aggregate_document( + self, calculated_data_items: list[CalculatedDataItem] | None + ) -> CalculatedDataAggregateDocument | None: + if not calculated_data_items: + return None + + return CalculatedDataAggregateDocument( + calculated_data_document=[ + CalculatedDataDocumentItem( + calculated_data_identifier=calculated_data_item.identifier, + calculated_data_name=calculated_data_item.name, + calculated_result=TQuantityValue( + value=calculated_data_item.value, + unit=calculated_data_item.unit, + ), + data_source_aggregate_document=DataSourceAggregateDocument( + data_source_document=[ + DataSourceDocumentItem( + data_source_identifier=item.identifier, + data_source_feature=item.feature, + ) + for item in calculated_data_item.data_sources + ] + ), + ) + for calculated_data_item in calculated_data_items + ] + ) diff --git a/src/allotropy/allotrope/schema_mappers/adm/solution_analyzer/rec/_2026/__init__.py b/src/allotropy/allotrope/schema_mappers/adm/solution_analyzer/rec/_2026/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/allotropy/allotrope/schemas/adm/absorbance/REC/2026/03/absorbance-point-detector.schema.json b/src/allotropy/allotrope/schemas/adm/absorbance/REC/2026/03/absorbance-point-detector.schema.json new file mode 100644 index 000000000..d89bf3b7c --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/absorbance/REC/2026/03/absorbance-point-detector.schema.json @@ -0,0 +1,139 @@ +{ + "$defs": { + "measurementDocumentItems": { + "properties": { + "absorbance": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001157", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/mAU" + } + ] + }, + "device control aggregate document": { + "properties": { + "device control document": { + "items": { + "allOf": [ + { + "properties": { + "detector bandwidth setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002477", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/nm" + } + ] + }, + "detector wavelength setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002456", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/nm" + } + ] + }, + "electronic absorbance bandwidth setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001253", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/nm" + } + ] + }, + "electronic absorbance reference bandwidth setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001251", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/nm" + } + ] + }, + "electronic absorbance reference wavelength setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001252", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/nm" + } + ] + }, + "electronic absorbance wavelength setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001254", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/nm" + } + ] + } + } + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/orderedItem" + } + ] + }, + "minItems": 1 + } + } + }, + "mass concentration": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001661", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/pg~1mL" + } + ] + }, + "transmittance": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002261", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/(unitless)" + } + ] + } + }, + "required": [ + "absorbance" + ] + } + }, + "$id": "http://purl.allotrope.org/json-schemas/adm/absorbance/REC/2026/03/absorbance-point-detector.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema" +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/adm/bga/REC/2026/03/blood-gas-detector.schema.json b/src/allotropy/allotrope/schemas/adm/bga/REC/2026/03/blood-gas-detector.schema.json new file mode 100644 index 000000000..ebc3f8f6f --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/bga/REC/2026/03/blood-gas-detector.schema.json @@ -0,0 +1,82 @@ +{ + "$defs": { + "measurementDocumentItems": { + "anyOf": [ + { + "required": [ + "pO2" + ] + }, + { + "required": [ + "pCO2" + ] + } + ], + "properties": { + "carbon dioxide saturation": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002921", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/%25" + } + ] + }, + "oxygen saturation": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002922", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/%25" + } + ] + }, + "pCO2": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002923", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/mmHg" + } + ] + }, + "pO2": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002924", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/mmHg" + } + ] + }, + "temperature": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001584", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/degC" + } + ] + } + } + } + }, + "$id": "http://purl.allotrope.org/json-schemas/adm/bga/REC/2026/03/blood-gas-detector.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema" +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/adm/cell-counting/REC/2026/03/cell-counting-detector.schema.json b/src/allotropy/allotrope/schemas/adm/cell-counting/REC/2026/03/cell-counting-detector.schema.json new file mode 100644 index 000000000..74dc89c03 --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/cell-counting/REC/2026/03/cell-counting-detector.schema.json @@ -0,0 +1,329 @@ +{ + "$defs": { + "measurementDocumentItems": { + "properties": { + "device control aggregate document": { + "properties": { + "device control document": { + "items": { + "allOf": [ + { + "properties": { + "detector wavelength setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002456", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/nm" + } + ] + }, + "excitation wavelength setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002479", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/nm" + } + ] + } + } + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/orderedItem" + } + ] + }, + "minItems": 1 + } + } + }, + "processed data aggregate document": { + "properties": { + "processed data document": { + "items": { + "anyOf": [ + { + "required": [ + "viability (cell counter)" + ] + }, + { + "required": [ + "viable cell density (cell counter)" + ] + } + ], + "properties": { + "average dead cell diameter (cell counter)": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002866", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/%C2%B5m" + } + ] + }, + "average total cell circularity": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002867", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/(unitless)" + } + ] + }, + "average total cell diameter": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002335", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/%C2%B5m" + } + ] + }, + "average viable cell circularity": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002868", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/(unitless)" + } + ] + }, + "average viable cell diameter (cell counter)": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001113", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/%C2%B5m" + } + ] + }, + "data processing document": { + "properties": { + "cell density dilution factor": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001109", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/(unitless)" + } + ] + }, + "cell type processing method": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001110", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "maximum cell diameter setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002864", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/%C2%B5m" + } + ] + }, + "minimum cell diameter setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002863", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/%C2%B5m" + } + ] + } + } + }, + "dead cell count": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002048", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/cell" + } + ] + }, + "dead cell density (cell counter)": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002865", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/10%5E6%20cells~1mL" + } + ] + }, + "total cell count": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001114", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/cell" + } + ] + }, + "total cell density (cell counter)": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001112", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/10%5E6%20cells~1mL" + } + ] + }, + "total cell diameter distribution": { + "$asm.pattern": "datacube", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002336", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/cube.schema#/$defs/tDatacube" + }, + { + "properties": { + "cube-structure": { + "properties": { + "dimensions": { + "maxItems": 1, + "minItems": 1, + "prefixItems": [ + { + "properties": { + "@componentDatatype": { + "const": "double" + }, + "concept": { + "const": "total cell diameter" + }, + "unit": { + "const": "µm" + } + } + } + ] + }, + "measures": { + "contains": { + "oneOf": [ + { + "properties": { + "@componentDatatype": { + "const": "double" + }, + "concept": { + "const": "total cell count" + }, + "unit": { + "const": "cell" + } + } + } + ] + }, + "maxItems": 1, + "minItems": 1 + } + } + } + } + } + ], + "type": "object" + }, + "viability (cell counter)": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001111", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/%25" + } + ] + }, + "viable cell count": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001115", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/cell" + } + ] + }, + "viable cell density (cell counter)": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001108", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/10%5E6%20cells~1mL" + } + ] + } + } + }, + "minItems": 1 + } + }, + "required": [ + "processed data document" + ] + } + }, + "required": [ + "processed data aggregate document" + ] + } + }, + "$id": "http://purl.allotrope.org/json-schemas/adm/cell-counting/REC/2026/03/cell-counting-detector.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema" +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/core.schema.json b/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/core.schema.json new file mode 100644 index 000000000..ec94ff1c0 --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/core.schema.json @@ -0,0 +1,764 @@ +{ + "$defs": { + "asm": { + "properties": { + "$asm.manifest": { + "oneOf": [ + { + "format": "iri", + "type": "string" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/manifest.schema" + } + ] + } + } + }, + "mixedItem": { + "description": "A schema for a polymorphic array item, which requires that each item has a @type declaration", + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + } + }, + "required": [ + "@type" + ] + }, + "orderedItem": { + "description": "A schema for an array item, that is ordered in a not-natural way. This means that it MUST have an explicit @index property stating the position. The index value is a strict positive 32bit signed integer (excluding 0).", + "properties": { + "@index": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + } + } + }, + "tArray": { + "$asm.type": "http://purl.allotrope.org/ontologies/common#AFC_0000160", + "description": "An JSON array. This will be mapped to a list, which can be a blank node.", + "type": "array" + }, + "tBooleanValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#boolean", + "description": "A boolean value.", + "oneOf": [ + { + "type": "boolean" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "type": "boolean" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tByteValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#byte", + "description": "A signed 8 bit integer value.", + "oneOf": [ + { + "maximum": 127, + "minimum": -128, + "type": "integer" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "maximum": 127, + "minimum": -128, + "type": "integer" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tClass": { + "$asm.lookup-property": "http://www.w3.org/2004/02/skos/core#prefLabel", + "$asm.type": "http://www.w3.org/2000/01/rdf-schema#Class", + "description": "A class reference is the SKOS preferred label of a class. This label MUST be unique within the transitive closure of the vocabulary referenced by the manifest.", + "type": "string" + }, + "tDateTimeStampValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#dateTimeStamp", + "description": "All timestamps MUST be in ISO8601 date/time format.", + "oneOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tDateTimeValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#dateTime", + "description": "All timestamps MUST be in ISO8601 date/time format.", + "oneOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tDateValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#date", + "description": "All timestamps MUST be in ISO8601 date format.", + "oneOf": [ + { + "format": "date", + "type": "string" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "format": "date", + "type": "string" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tDecimalValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#decimal", + "description": "A number value stored as an XSD decimal.", + "oneOf": [ + { + "type": "number" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "type": "number" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tDoubleValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#double", + "description": "A number value stored as an XSD double.", + "oneOf": [ + { + "type": "number" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "type": "number" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tDurationValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#duration", + "description": "All durations MUST be in ISO8601 duration format.", + "oneOf": [ + { + "format": "duration", + "type": "string" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "format": "duration", + "type": "string" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tFloatValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#float", + "description": "A number value stored as an XSD float.", + "oneOf": [ + { + "type": "number" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "type": "number" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tIRIValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#anyURI", + "description": "A literal IRI reference, not to be confused with a resource reference (tResource)", + "oneOf": [ + { + "format": "iri", + "type": "string" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "format": "iri", + "type": "string" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tIntValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#int", + "description": "A signed 32 bit integer value.", + "oneOf": [ + { + "maximum": 2147483647, + "minimum": -2147483648, + "type": "integer" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "maximum": 2147483647, + "minimum": -2147483648, + "type": "integer" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tIntegerValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#integer", + "description": "A arbitrary length integer value.", + "oneOf": [ + { + "type": "integer" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "type": "integer" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tLongValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#long", + "description": "A signed 64 bit integer value.", + "oneOf": [ + { + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tNamed": { + "$asm.lookup-property": "http://www.w3.org/2004/02/skos/core#prefLabel", + "$asm.type": "http://www.w3.org/2000/01/rdf-schema#Resource", + "description": "A reference to an arbitrary RDF resource identified by a SKOS preferred label. The label MUST be unique.", + "type": "string" + }, + "tNumericValue": { + "anyOf": [ + { + "$ref": "#/$defs/tByteValue" + }, + { + "$ref": "#/$defs/tShortValue" + }, + { + "$ref": "#/$defs/tIntValue" + }, + { + "$ref": "#/$defs/tLongValue" + }, + { + "$ref": "#/$defs/tUnsignedByteValue" + }, + { + "$ref": "#/$defs/tUnsignedShortValue" + }, + { + "$ref": "#/$defs/tUnsignedIntValue" + }, + { + "$ref": "#/$defs/tUnsignedLongValue" + }, + { + "$ref": "#/$defs/tFloatValue" + }, + { + "$ref": "#/$defs/tDoubleValue" + }, + { + "$ref": "#/$defs/tDecimalValue" + }, + { + "$ref": "#/$defs/tIntegerValue" + } + ] + }, + "tObject": { + "$asm.type": "http://www.w3.org/2000/01/rdf-schema#Resource", + "description": "An JSON object with properties. This will be mapped to an RDF resource, which can be a blank node.", + "type": "object" + }, + "tOrderedValue": { + "oneOf": [ + { + "$ref": "#/$defs/tNumericValue" + }, + { + "$ref": "#/$defs/tStringValue" + }, + { + "$ref": "#/$defs/tDateTimeValue" + }, + { + "$ref": "#/$defs/tDateTimeStampValue" + }, + { + "$ref": "#/$defs/tDateValue" + }, + { + "$ref": "#/$defs/tTimeValue" + } + ] + }, + "tQuantityValue": { + "$asm.type": "http://qudt.org/schema/qudt#QuantityValue", + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "has statistic datum role": { + "$ref": "#/$defs/tStatisticDatumRole" + }, + "unit": { + "$ref": "#/$defs/tUnit" + }, + "value": { + "type": "number" + } + }, + "required": [ + "value", + "unit" + ], + "type": "object" + }, + "tRangeValue": { + "$asm.type": "http://purl.allotrope.org/ontologies/common#AFC_0000021", + "dependencies": { + "maxExclusive": { + "not": { + "required": [ + "max" + ] + } + }, + "maxInclusive": { + "not": { + "required": [ + "maxExclusive" + ] + } + }, + "minExclusive": { + "not": { + "required": [ + "min" + ] + } + }, + "minInclusive": { + "not": { + "required": [ + "minExclusive" + ] + } + } + }, + "properties": { + "maxExclusive": { + "$ref": "#/$defs/tOrderedValue" + }, + "maxInclusive": { + "$ref": "#/$defs/tOrderedValue" + }, + "minExclusive": { + "$ref": "#/$defs/tOrderedValue" + }, + "minInclusive": { + "$ref": "#/$defs/tOrderedValue" + }, + "unit": { + "$ref": "#/$defs/tUnit" + } + }, + "type": "object" + }, + "tReference": { + "$asm.type": "http://www.w3.org/2000/01/rdf-schema#Resource", + "description": "A reference to an object within an JSON document using JSON pointers.", + "format": "uri-reference", + "type": "string" + }, + "tResource": { + "$asm.type": "http://www.w3.org/2000/01/rdf-schema#Resource", + "description": "A reference to an arbitrary RDF resource identified by an IRI. The mapping to RDF will introduce a node reference instead of a literal IRI.", + "format": "iri", + "type": "string" + }, + "tShortValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#short", + "description": "A signed 16 bit integer value.", + "oneOf": [ + { + "maximum": 32767, + "minimum": -32768, + "type": "integer" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "maximum": 32767, + "minimum": -32768, + "type": "integer" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tStatisticDatumRole": { + "$asm.lookup-property": "http://www.w3.org/2004/02/skos/core#prefLabel", + "$asm.type": "http://www.w3.org/2000/01/rdf-schema#Class", + "$asm.value-sub-class-of": "http://purl.allotrope.org/ontologies/role#AFRL_0000328", + "description": "A statistic datum role.", + "enum": [ + "arithmetic mean role", + "median role", + "relative standard deviation role", + "skewness role", + "standard deviation role", + "variance role", + "maximum value role", + "minimum value role", + "initial value role", + "final value role", + "geometric mean role", + "coefficient of variation role", + "median absolute deviation role" + ], + "type": "string" + }, + "tStringValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "description": "A literal string in UTF-8 encoding.", + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "type": "string" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tTimeValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#time", + "description": "All timestamps MUST be in ISO8601 time format.", + "oneOf": [ + { + "format": "time", + "type": "string" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "format": "time", + "type": "string" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tUnit": { + "$asm.lookup-property": "http://purl.allotrope.org/ontology/qudt-ext/schema#symbol", + "$asm.type": "http://qudt.org/schema/qudt#Unit", + "description": "A unit is referenced by its QUDT symbol. It MUST be unique within the QUDT units defined in the vocabularies declared in the manifest.", + "type": "string" + }, + "tUnsignedByteValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#unsignedByte", + "description": "An unsigned 8 bit integer value.", + "oneOf": [ + { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "maximum": 255, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tUnsignedIntValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#unsignedInt", + "description": "A signed 32 bit integer value.", + "oneOf": [ + { + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tUnsignedLongValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#unsignedLong", + "description": "A signed 64 bit integer value.", + "oneOf": [ + { + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + }, + "tUnsignedShortValue": { + "$asm.type": "http://www.w3.org/2001/XMLSchema#unsignedShort", + "description": "An unsigned 16 bit integer value.", + "oneOf": [ + { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + { + "properties": { + "@type": { + "$ref": "#/$defs/tClass" + }, + "value": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "@type", + "value" + ], + "type": "object" + } + ] + } + }, + "$id": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Schema for leaf node values." +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/cube.schema.json b/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/cube.schema.json new file mode 100644 index 000000000..0e203710a --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/cube.schema.json @@ -0,0 +1,378 @@ +{ + "$defs": { + "cFillValueBoolean": { + "$comment": "constraint on fill values if component data type is boolean", + "if": { + "properties": { + "@componentDatatype": { + "const": "boolean" + } + } + }, + "then": { + "$asm.fill-value": { + "default": false, + "type": "boolean" + } + } + }, + "cFillValueDecimal": { + "$comment": "constraint on fill values if component data type is any numeric type", + "if": { + "properties": { + "@componentDatatype": { + "pattern": "integer|decimal|long|int|short|byte" + } + } + }, + "then": { + "$asm.fill-value": { + "default": 0, + "type": "number" + } + } + }, + "cFillValueIEEE": { + "$comment": "constraint on fill values if component data type is any numeric type", + "if": { + "properties": { + "@componentDatatype": { + "pattern": "double|float" + } + } + }, + "then": { + "$asm.fill-value": { + "default": 0.0, + "oneOf": [ + { + "type": "number" + }, + { + "const": "NaN" + }, + { + "const": "+Infinity" + }, + { + "const": "-Infinity" + } + ] + } + } + }, + "cFillValueString": { + "$comment": "constraint on fill values if component data type is string", + "if": { + "properties": { + "@componentDatatype": { + "pattern": "string|dateTime|date" + } + } + }, + "then": { + "$asm.fill-value": { + "default": "", + "type": "string" + } + } + }, + "tBooleanArray": { + "$comment": "homogenous array of booleans", + "items": { + "type": "boolean" + }, + "type": "array" + }, + "tBooleanOrNullArray": { + "$comment": "homogenous array of booleans, may contain null values", + "items": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "type": "array" + }, + "tDatacube": { + "properties": { + "cube-structure": { + "$ref": "#/$defs/tDatacubeStructure" + }, + "data": { + "$ref": "#/$defs/tDatacubeData" + }, + "label": { + "type": "string" + } + }, + "type": "object" + }, + "tDatacubeComponent": { + "allOf": [ + { + "$ref": "#/$defs/cFillValueIEEE" + }, + { + "$ref": "#/$defs/cFillValueDecimal" + }, + { + "$ref": "#/$defs/cFillValueBoolean" + }, + { + "$ref": "#/$defs/cFillValueString" + } + ], + "properties": { + "$asm.fill-value": { + "type": [ + "string", + "number", + "integer", + "boolean" + ] + }, + "@componentDatatype": { + "default": "double", + "description": "Subset of XSD datatypes supported in simple models", + "enum": [ + "double", + "float", + "decimal", + "integer", + "byte", + "int", + "short", + "long", + "string", + "boolean", + "dateTime" + ] + }, + "concept": { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tClass" + }, + "scale": { + "enum": [ + "nominal", + "ordinal", + "cardinal", + "interval", + "range" + ] + }, + "unit": { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tUnit" + } + }, + "required": [ + "@componentDatatype", + "concept" + ], + "type": "object" + }, + "tDatacubeData": { + "allOf": [ + { + "$ref": "#/$defs/tDimensionData" + }, + { + "$ref": "#/$defs/tMeasureData" + } + ] + }, + "tDatacubeStructure": { + "properties": { + "dimensions": { + "items": { + "$ref": "#/$defs/tDatacubeComponent" + }, + "type": "array", + "uniqueItems": true + }, + "measures": { + "items": { + "$ref": "#/$defs/tDatacubeComponent" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "dimensions", + "measures" + ], + "type": "object" + }, + "tDimensionArray": { + "$comment": "homogenous array of data used in explicit dimension arrays", + "oneOf": [ + { + "$ref": "#/$defs/tNumberArray" + }, + { + "$ref": "#/$defs/tBooleanArray" + }, + { + "$ref": "#/$defs/tStringArray" + } + ] + }, + "tDimensionData": { + "properties": { + "dimensions": { + "items": { + "oneOf": [ + { + "$ref": "#/$defs/tDimensionArray" + }, + { + "$ref": "#/$defs/tFunction" + } + ] + }, + "type": "array" + } + }, + "required": [ + "dimensions" + ] + }, + "tFunction": { + "properties": { + "incr": { + "default": 1, + "type": "number" + }, + "length": { + "type": "number" + }, + "start": { + "default": 1, + "type": "number" + }, + "type": { + "default": "linear", + "enum": [ + "linear", + "logarithmic" + ] + } + }, + "type": "object" + }, + "tMeasureArray": { + "$comment": "homogenous array of data used in explicit measure arrays, may contain null values", + "oneOf": [ + { + "$ref": "#/$defs/tNumberOrNullArray" + }, + { + "$ref": "#/$defs/tBooleanOrNullArray" + }, + { + "$ref": "#/$defs/tStringOrNullArray" + } + ] + }, + "tMeasureData": { + "oneOf": [ + { + "properties": { + "measures": { + "items": { + "$ref": "#/$defs/tMeasureArray" + }, + "type": "array" + } + }, + "required": [ + "measures" + ] + }, + { + "properties": { + "points": { + "items": { + "$ref": "#/$defs/tTupleData" + }, + "type": "array" + } + }, + "required": [ + "points" + ] + } + ] + }, + "tNumberArray": { + "$comment": "homogenous array of numbers", + "items": { + "type": "number" + }, + "type": "array" + }, + "tNumberOrNullArray": { + "$comment": "homogenous array of numbers, may contain null values", + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array" + }, + "tStringArray": { + "$comment": "homogenous array of strings", + "items": { + "type": "string" + }, + "type": "array" + }, + "tStringOrNullArray": { + "$comment": "homogenous array of strings, may contain null values", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": "array" + }, + "tTupleData": { + "$comment": "heterogenous array of data used in point arrays", + "items": { + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": "array" + } + }, + "$id": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/cube.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema" +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/hierarchy.schema.json b/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/hierarchy.schema.json new file mode 100644 index 000000000..0ea67c185 --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/hierarchy.schema.json @@ -0,0 +1,2228 @@ +{ + "$defs": { + "calculatedDataAggregateDocument": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002889", + "properties": { + "calculated data document": { + "$asm.array-mixed": false, + "$asm.array-ordered": true, + "$asm.pattern": "indexed datum", + "items": { + "allOf": [ + { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002890", + "properties": { + "calculated data identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002893", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "calculated data name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002891", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "calculated result": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002892", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + } + ] + }, + "calculation description": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002141", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "data source aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/dataSourceAggregateDocument" + } + ] + }, + "electronic project record": { + "allOf": [ + { + "$ref": "#/$defs/electronicProjectRecord" + } + ] + } + }, + "required": [ + "calculated data name", + "calculated result" + ], + "type": "object" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/orderedItem" + } + ] + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "calculated data document" + ], + "type": "object" + }, + "customInformationAggregateDocument": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002858", + "properties": { + "custom information document": { + "$asm.array-mixed": false, + "$asm.array-ordered": true, + "$asm.pattern": "indexed datum", + "items": { + "allOf": [ + { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002764", + "properties": { + "datum label": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.obolibrary.org/obo/IAO_0000009", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "datum label" + ], + "type": "object" + }, + { + "oneOf": [ + { + "properties": { + "scalar double datum": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001104", + "$asm.type": "http://www.w3.org/2001/XMLSchema#double", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDoubleValue" + }, + "unit": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003122", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "scalar double datum" + ] + }, + { + "properties": { + "scalar string datum": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001511", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "scalar string datum" + ] + }, + { + "properties": { + "scalar timestamp datum": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001512", + "$asm.type": "http://www.w3.org/2001/XMLSchema#dateTime", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDateTimeValue" + } + }, + "required": [ + "scalar timestamp datum" + ] + }, + { + "properties": { + "scalar boolean datum": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001510", + "$asm.type": "http://www.w3.org/2001/XMLSchema#boolean", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tBooleanValue" + } + }, + "required": [ + "scalar boolean datum" + ] + } + ] + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/orderedItem" + } + ] + }, + "type": "array" + } + }, + "required": [ + "custom information document" + ], + "type": "object" + }, + "dataSourceAggregateDocument": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002894", + "properties": { + "data source document": { + "$asm.array-mixed": false, + "$asm.array-ordered": true, + "$asm.pattern": "indexed datum", + "items": { + "allOf": [ + { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002895", + "properties": { + "data source feature": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002898", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "data source identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002896", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "data source identifier" + ], + "type": "object" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/orderedItem" + } + ] + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "data source document" + ], + "type": "object" + }, + "electronicProjectRecord": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002331", + "properties": { + "description": { + "$asm.pattern": "any datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000922" + }, + "start time": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002422", + "$asm.type": "http://www.w3.org/2001/XMLSchema#dateTime", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDateTimeValue" + }, + "written name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.obolibrary.org/obo/IAO_0000590", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "written name" + ], + "type": "object" + }, + "electronicSignatureAggregateDocument": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003033", + "properties": { + "electronic signature document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "allOf": [ + { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002769", + "properties": { + "account identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002770", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000917", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "measurement identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001121", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "method identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002034", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "personal name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001063", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "processed data identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002897", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "signature role type": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002794", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "time": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000937", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "account identifier", + "personal name", + "signature role type", + "time" + ], + "type": "object" + }, + { + "anyOf": [ + { + "required": [ + "identifier" + ] + }, + { + "required": [ + "measurement identifier" + ] + }, + { + "required": [ + "processed data identifier" + ] + }, + { + "required": [ + "method identifier" + ] + } + ] + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/orderedItem" + } + ] + }, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "errorAggregateDocument": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002951", + "properties": { + "error document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002952", + "properties": { + "error": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002804", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "error feature": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002953", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "error" + ], + "type": "object" + }, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "imageAggregateDocument": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002869", + "properties": { + "image document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002225", + "properties": { + "experimental data identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001977", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "index": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000928", + "$asm.type": "http://www.w3.org/2001/XMLSchema#integer", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tIntegerValue" + } + }, + "type": "object" + }, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "log": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000900", + "properties": { + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "log entry": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000901", + "properties": { + "author": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003096", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "elapsed time": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002050", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/min" + } + ] + }, + "identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000917", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "log source name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002743", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "observation": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000955", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "scalar timestamp datum": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001512", + "$asm.type": "http://www.w3.org/2001/XMLSchema#dateTime", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDateTimeValue" + } + }, + "required": [ + "observation", + "scalar timestamp datum" + ], + "type": "object" + }, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "matchResultAggregateDocument": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003227", + "properties": { + "match result document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003228", + "properties": { + "InChI molecular structure": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002296", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "InChIKey molecular structure": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002297", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "Molfile molecular structure": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002308", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "SMILES molecular structure": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002295", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "database identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003234", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "description": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000922", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "fingerprint identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003235", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "match quality index aggregate document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003231", + "properties": { + "match quality index document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003232", + "properties": { + "algorithm name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003233", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "description": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000922", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "lower limit": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003260", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDoubleValue" + }, + "match quality index": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003237", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDoubleValue" + }, + "upper limit": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003285", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDoubleValue" + } + }, + "required": [ + "match quality index" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "molecular formula": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001952", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "reference identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001992", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "synonym aggregate document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003229", + "properties": { + "synonym document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003230", + "properties": { + "written name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.obolibrary.org/obo/IAO_0000590", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "written name" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "processedDataAggregateDocument": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002658", + "properties": { + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "electronic project record": { + "allOf": [ + { + "$ref": "#/$defs/electronicProjectRecord" + } + ] + }, + "processed data document": { + "$asm.array-mixed": false, + "$asm.array-ordered": true, + "$asm.pattern": "indexed datum", + "items": { + "allOf": [ + { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002659", + "properties": { + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "data processing document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002655", + "properties": { + "data processing time": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002095", + "$asm.type": "http://www.w3.org/2001/XMLSchema#dateTimeStamp", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDateTimeStampValue" + }, + "data processing type": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002656", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "method identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002034", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "method name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001606", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "method version": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002837", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "type": "object" + }, + "data source aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/dataSourceAggregateDocument" + } + ] + }, + "description": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000922", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "electronic project record": { + "allOf": [ + { + "$ref": "#/$defs/electronicProjectRecord" + } + ] + }, + "group identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002918", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "match result aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/matchResultAggregateDocument" + } + ] + }, + "processed data identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002897", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "type": "object" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/orderedItem" + } + ] + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "processed data document" + ], + "type": "object" + }, + "regressionAggregateDocument": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003178", + "properties": { + "regression document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003179", + "properties": { + "data cube": { + "$asm.pattern": "datacube", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003018", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/cube.schema#/$defs/tDatacube" + }, + { + "properties": { + "cube-structure": { + "properties": { + "dimensions": { + "minItems": 1, + "prefixItems": [ + { + "oneOf": [ + { + "properties": { + "@componentDatatype": { + "const": "double" + } + } + } + ] + } + ] + }, + "measures": { + "contains": { + "oneOf": [ + { + "properties": { + "@componentDatatype": { + "const": "double" + } + } + } + ] + }, + "minItems": 1 + } + } + } + } + } + ], + "type": "object" + }, + "data source aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/dataSourceAggregateDocument" + } + ] + }, + "description": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000922", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "parameter aggregate document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003186", + "properties": { + "parameter document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003187", + "properties": { + "parameter datum": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003189", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + } + ] + }, + "parameter identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003188", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "written name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.obolibrary.org/obo/IAO_0000590", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "parameter identifier", + "parameter datum" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "regression equation": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003185", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "regression identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003180", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "regression point aggregate document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003181", + "properties": { + "regression point document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003182", + "properties": { + "regression feature": { + "$asm.pattern": "class datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003183", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tClass" + }, + { + "$asm.value-sub-class-of": "http://purl.allotrope.org/ontologies/result#AFR_0001583", + "enum": [ + "BET C constant", + "Raman intensity", + "Raman interferogram intensity", + "Raman wavenumber shift", + "Young modulus", + "abrasion weight", + "absolute intensity", + "absolute water content", + "absorbance", + "acquisition volume", + "actual P/P0 result", + "adsorbed volume at STP", + "ambient humidity", + "ambient pressure", + "ambient temperature", + "amount of substance", + "angle", + "angle of optical rotation", + "angular velocity", + "area", + "attenuation coefficient", + "average dead cell diameter (cell counter)", + "average particle size", + "average total cell circularity", + "average total cell diameter", + "average viable cell circularity", + "background corrected turbidity", + "birefringence", + "break strain", + "break stress", + "cell path length", + "chemical shift", + "chromatography column film thickness", + "chromatography column length", + "chromatography column particle size", + "circularity", + "coating gap height", + "collision energy", + "column inner diameter", + "compartment temperature", + "concentration", + "container diameter", + "container height", + "degassed sample weight", + "detector view volume", + "diameter", + "dielectric polarization", + "dilution factor", + "dilution volume", + "dispensed volume", + "dry gas flow rate", + "dry sample weight", + "eccentricity", + "electric charge", + "electric conductance", + "electric conductivity", + "electric current", + "electric impedance", + "electric resistance", + "electric resistivity", + "electron beam working distance", + "end height", + "energy (datum)", + "enthalpy", + "enthalpy of fusion", + "enthalpy of sublimation", + "enthalpy of vaporization", + "exhaust gas flow rate", + "extrapolated moisture content", + "fill depth", + "flow rate", + "flow ratio", + "fluorescence", + "foam height", + "force", + "fracture energy", + "glass transition temperature", + "gloss", + "gross weight", + "hardness", + "heat capacity", + "heat capacity (dsc)", + "heat flow", + "heat seal length", + "heat transfer coefficient", + "height", + "hold-up volume", + "humidity", + "image height", + "image width", + "incident radiation angle", + "inlet gas pressure", + "inner diameter", + "intensity", + "isocyanate reservoir temperature", + "length", + "linear velocity", + "liquid height", + "luminescence", + "m/z", + "mass", + "mass attenuation coefficient", + "mass change", + "mass concentration", + "mass fraction", + "measurement chamber free space volume", + "molar attenuation coefficient", + "molar concentration", + "molar enthalpy of fusion", + "molar enthalpy of sublimation", + "molar enthalpy of vaporization", + "molar mass", + "molecular mass", + "monolayer quantity", + "normalized foam height", + "number concentration", + "osmolality", + "pCO2", + "pCO2 (bga)", + "pH", + "pO2", + "pO2 (bga)", + "partial pressure", + "particle size", + "peak analyte amount", + "peak load force", + "peak onset temperature", + "peak temperature", + "plate heater temperature", + "plate temperature", + "plate well count", + "polarity", + "polyol reservoir temperature", + "position count", + "power", + "pressure", + "probe volume", + "protein attenuation coefficient", + "purity", + "qNMR purity result", + "reference material weight", + "reflectance", + "refractive index", + "relative humidity", + "relative intensity", + "relative permittivity", + "relative pressure (BET)", + "relative response", + "relative weight loss on drying", + "reservoir temperature", + "rotational speed", + "sample temperature", + "sample thickness", + "sample weight", + "sample weight before drying", + "sample width", + "saturated gas flow rate", + "saturation vapor pressure", + "seal initiation temperature", + "size (datum)", + "solvent reservoir temperature", + "specific enthalpy of fusion", + "specific enthalpy of sublimation", + "specific enthalpy of vaporization", + "specific heat capacity", + "specific rotation", + "specific surface area", + "start height", + "stirring rate", + "strain", + "stress", + "tablet thickness", + "tare weight", + "temperature", + "temperature rate", + "thermal conductance", + "thermal conductivity", + "thickness", + "titer", + "torque", + "total cell diameter", + "total foam height", + "total gas flow rate", + "total material height", + "transition enthalpy", + "transmittance", + "turbidity", + "velocity", + "viscosity", + "void volume", + "voltage", + "voltage range", + "volume", + "volume concentration", + "volume fraction", + "water mass concentration", + "water mass fraction", + "wavelength", + "wavenumber", + "weight loss", + "well volume", + "width", + "yield strain", + "yield stress" + ], + "type": "string" + } + ] + }, + "standard name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003196", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "regression feature" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "regression type": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003184", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "written name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.obolibrary.org/obo/IAO_0000590", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "statisticsAggregateDocument": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002697", + "properties": { + "statistics document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002698", + "properties": { + "statistical feature": { + "$asm.pattern": "class datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002699", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tClass" + }, + { + "$asm.value-sub-class-of": "http://purl.allotrope.org/ontologies/result#AFR_0001583", + "enum": [ + "BET C constant", + "Raman intensity", + "Raman interferogram intensity", + "Raman wavenumber shift", + "Young modulus", + "abrasion weight", + "absolute intensity", + "absolute water content", + "absorbance", + "acquisition volume", + "actual P/P0 result", + "adsorbed volume at STP", + "ambient humidity", + "ambient pressure", + "ambient temperature", + "amount of substance", + "angle", + "angle of optical rotation", + "angular velocity", + "area", + "attenuation coefficient", + "average dead cell diameter (cell counter)", + "average particle size", + "average total cell circularity", + "average total cell diameter", + "average viable cell circularity", + "background corrected turbidity", + "birefringence", + "break strain", + "break stress", + "cell path length", + "chemical shift", + "chromatography column film thickness", + "chromatography column length", + "chromatography column particle size", + "circularity", + "coating gap height", + "collision energy", + "column inner diameter", + "compartment temperature", + "concentration", + "container diameter", + "container height", + "degassed sample weight", + "detector view volume", + "diameter", + "dielectric polarization", + "dilution factor", + "dilution volume", + "dispensed volume", + "dry gas flow rate", + "dry sample weight", + "eccentricity", + "electric charge", + "electric conductance", + "electric conductivity", + "electric current", + "electric impedance", + "electric resistance", + "electric resistivity", + "electron beam working distance", + "end height", + "energy (datum)", + "enthalpy", + "enthalpy of fusion", + "enthalpy of sublimation", + "enthalpy of vaporization", + "exhaust gas flow rate", + "extrapolated moisture content", + "fill depth", + "flow rate", + "flow ratio", + "fluorescence", + "foam height", + "force", + "fracture energy", + "glass transition temperature", + "gloss", + "gross weight", + "hardness", + "heat capacity", + "heat capacity (dsc)", + "heat flow", + "heat seal length", + "heat transfer coefficient", + "height", + "hold-up volume", + "humidity", + "image height", + "image width", + "incident radiation angle", + "inlet gas pressure", + "inner diameter", + "intensity", + "isocyanate reservoir temperature", + "length", + "linear velocity", + "liquid height", + "luminescence", + "m/z", + "mass", + "mass attenuation coefficient", + "mass change", + "mass concentration", + "mass fraction", + "measurement chamber free space volume", + "molar attenuation coefficient", + "molar concentration", + "molar enthalpy of fusion", + "molar enthalpy of sublimation", + "molar enthalpy of vaporization", + "molar mass", + "molecular mass", + "monolayer quantity", + "normalized foam height", + "number concentration", + "osmolality", + "pCO2", + "pCO2 (bga)", + "pH", + "pO2", + "pO2 (bga)", + "partial pressure", + "particle size", + "peak analyte amount", + "peak load force", + "peak onset temperature", + "peak temperature", + "plate heater temperature", + "plate temperature", + "plate well count", + "polarity", + "polyol reservoir temperature", + "position count", + "power", + "pressure", + "probe volume", + "protein attenuation coefficient", + "purity", + "qNMR purity result", + "reference material weight", + "reflectance", + "refractive index", + "relative humidity", + "relative intensity", + "relative permittivity", + "relative pressure (BET)", + "relative response", + "relative weight loss on drying", + "reservoir temperature", + "rotational speed", + "sample temperature", + "sample thickness", + "sample weight", + "sample weight before drying", + "sample width", + "saturated gas flow rate", + "saturation vapor pressure", + "seal initiation temperature", + "size (datum)", + "solvent reservoir temperature", + "specific enthalpy of fusion", + "specific enthalpy of sublimation", + "specific enthalpy of vaporization", + "specific heat capacity", + "specific rotation", + "specific surface area", + "start height", + "stirring rate", + "strain", + "stress", + "tablet thickness", + "tare weight", + "temperature", + "temperature rate", + "thermal conductance", + "thermal conductivity", + "thickness", + "titer", + "torque", + "total cell diameter", + "total foam height", + "total gas flow rate", + "total material height", + "transition enthalpy", + "transmittance", + "turbidity", + "velocity", + "viscosity", + "void volume", + "voltage", + "voltage range", + "volume", + "volume concentration", + "volume fraction", + "water mass concentration", + "water mass fraction", + "wavelength", + "wavenumber", + "weight loss", + "well volume", + "width", + "yield strain", + "yield stress" + ], + "type": "string" + } + ] + } + }, + "required": [ + "statistical feature" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "techniqueAggregateDocument": { + "$asm.pattern": "aggregate datum", + "properties": { + "analysis sequence document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003054", + "properties": { + "UNC path": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001906", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "end time": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002423", + "$asm.type": "http://www.w3.org/2001/XMLSchema#dateTime", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDateTimeValue" + }, + "file name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001926", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000917", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "method identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002034", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "method name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001606", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "start time": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002422", + "$asm.type": "http://www.w3.org/2001/XMLSchema#dateTime", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDateTimeValue" + }, + "version number": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001700", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "written name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.obolibrary.org/obo/IAO_0000590", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "written name" + ], + "type": "object" + }, + "calculated data aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/calculatedDataAggregateDocument" + } + ] + }, + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "data system document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002771", + "oneOf": [ + { + "required": [ + "UNC path", + "file name" + ] + }, + { + "required": [ + "database primary key" + ] + } + ], + "properties": { + "ASM conversion time": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003171", + "$asm.type": "http://www.w3.org/2001/XMLSchema#dateTime", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDateTimeValue" + }, + "ASM converter name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002748", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "ASM converter version": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002749", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "ASM file identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002969", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "UNC path": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001906", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "data system instance identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002772", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "database primary key": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002041", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "file name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001926", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "software name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002802", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "software version": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001700", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "ASM file identifier", + "data system instance identifier" + ], + "type": "object" + }, + "device system document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002526", + "properties": { + "asset management identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001976", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "brand name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001680", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "description": { + "$asm.pattern": "any datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000922" + }, + "device document": { + "$asm.array-mixed": false, + "$asm.array-ordered": true, + "$asm.pattern": "indexed datum", + "items": { + "allOf": [ + { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002567", + "properties": { + "brand name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001680", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "device identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002018", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "device type": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002568", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "equipment serial number": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001119", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "firmware version": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001259", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "model number": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.obolibrary.org/obo/IAO_0000017", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "product manufacturer": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001258", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "written name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.obolibrary.org/obo/IAO_0000590", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "device type" + ], + "type": "object" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/orderedItem" + } + ] + }, + "minItems": 1, + "type": "array" + }, + "device identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002018", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "equipment serial number": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001119", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "firmware version": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001259", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "model number": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.obolibrary.org/obo/IAO_0000017", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "product manufacturer": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001258", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "type": "object" + }, + "electronic project record": { + "allOf": [ + { + "$ref": "#/$defs/electronicProjectRecord" + } + ] + }, + "electronic signature aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/electronicSignatureAggregateDocument" + } + ] + }, + "processed data aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/processedDataAggregateDocument" + } + ] + }, + "statistics aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/statisticsAggregateDocument" + } + ] + } + }, + "type": "object" + }, + "techniqueDocument": { + "$asm.pattern": "aggregate datum", + "properties": { + "analyst": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001116", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "electronic project record": { + "allOf": [ + { + "$ref": "#/$defs/electronicProjectRecord" + } + ] + }, + "log": { + "allOf": [ + { + "$ref": "#/$defs/log" + } + ] + }, + "measurement aggregate document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002374", + "properties": { + "calculated data aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/calculatedDataAggregateDocument" + } + ] + }, + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "diagnostic trace aggregate document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002705", + "properties": { + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "diagnostic trace document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002706", + "patternProperties": { + "data cube$": { + "$asm.pattern": "datacube", + "$asm.property-class": "http://purl.org/linked-data/cube#DataSet", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/cube.schema#/$defs/tDatacube" + } + ] + } + }, + "properties": { + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "description": { + "$asm.pattern": "any datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000922" + } + }, + "required": [ + "description" + ], + "type": "object" + }, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "error aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/errorAggregateDocument" + } + ] + }, + "image aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/imageAggregateDocument" + } + ] + }, + "measurement document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002375", + "properties": { + "analytical method identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001978", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "calculated data aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/calculatedDataAggregateDocument" + } + ] + }, + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "detection type": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002534", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "device control aggregate document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002722", + "properties": { + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "device control document": { + "$asm.array-mixed": false, + "$asm.array-ordered": true, + "$asm.pattern": "indexed datum", + "items": { + "allOf": [ + { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002723", + "properties": { + "brand name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001680", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "detection type": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002534", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "device identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002018", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "device type": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002568", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "duration setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001815", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/s" + } + ] + }, + "equipment serial number": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001119", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "firmware version": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001259", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "model number": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.obolibrary.org/obo/IAO_0000017", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "product manufacturer": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001258", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "device type" + ], + "type": "object" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/orderedItem" + } + ] + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "device control document" + ], + "type": "object" + }, + "duration": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000951", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/s" + } + ] + }, + "electronic project record": { + "allOf": [ + { + "$ref": "#/$defs/electronicProjectRecord" + } + ] + }, + "error aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/errorAggregateDocument" + } + ] + }, + "experimental data identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001977", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "image aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/imageAggregateDocument" + } + ] + }, + "measurement identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001121", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "measurement time": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000952", + "$asm.type": "http://www.w3.org/2001/XMLSchema#dateTimeStamp", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDateTimeStampValue" + }, + "method version": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002837", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "processed data aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/processedDataAggregateDocument" + } + ] + }, + "sample document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002083", + "properties": { + "batch identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001120", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "custom information aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/customInformationAggregateDocument" + } + ] + }, + "description": { + "$asm.pattern": "any datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0000922" + }, + "location identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002844", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "sample identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001118", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "sample role type": { + "$asm.pattern": "class datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002242", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tClass" + }, + { + "$asm.value-sub-class-of": "http://purl.allotrope.org/ontologies/role#AFRL_0000035", + "enum": [ + "control sample role", + "standard sample role", + "validation sample role", + "experiment sample role", + "sample role", + "spiked sample role", + "blank role", + "unknown sample role", + "calibration sample role", + "unspiked sample role", + "specimen role", + "quality control sample role", + "reference sample role" + ], + "type": "string" + } + ] + }, + "written name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.obolibrary.org/obo/IAO_0000590", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "sample identifier" + ], + "type": "object" + }, + "statistics aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/statisticsAggregateDocument" + } + ] + } + }, + "required": [ + "sample document", + "device control aggregate document" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" + }, + "processed data aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/processedDataAggregateDocument" + } + ] + }, + "statistics aggregate document": { + "allOf": [ + { + "$ref": "#/$defs/statisticsAggregateDocument" + } + ] + } + }, + "required": [ + "measurement document" + ], + "type": "object" + }, + "submitter": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002531", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + } + }, + "required": [ + "measurement aggregate document" + ], + "type": "object" + } + }, + "$id": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/hierarchy.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Common hierarchy schema defs." +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/manifest.schema.json b/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/manifest.schema.json new file mode 100644 index 000000000..99cdd8cd2 --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/core/REC/2026/03/manifest.schema.json @@ -0,0 +1,48 @@ +{ + "$id": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/manifest.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "properties": { + "@id": { + "format": "uri", + "maxItems": 1, + "minItems": 1, + "type": "string" + }, + "@type": { + "format": "uri", + "maxItems": 1, + "minItems": 1, + "type": "string" + }, + "json-schemas": { + "items": { + "format": "uri", + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "shapes": { + "items": { + "format": "uri", + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "vocabulary": { + "items": { + "format": "uri", + "type": "string" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "vocabulary", + "json-schemas" + ], + "title": "Schema for manifests.", + "type": "object" +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/adm/light-obscuration/REC/2026/03/light-obscuration-detector.schema.json b/src/allotropy/allotrope/schemas/adm/light-obscuration/REC/2026/03/light-obscuration-detector.schema.json new file mode 100644 index 000000000..15e150670 --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/light-obscuration/REC/2026/03/light-obscuration-detector.schema.json @@ -0,0 +1,217 @@ +{ + "$defs": { + "measurementDocumentItems": { + "properties": { + "device control aggregate document": { + "properties": { + "device control document": { + "items": { + "allOf": [ + { + "properties": { + "detector view volume": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002491", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/mL" + } + ] + }, + "flush volume setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002493", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/mL" + } + ] + }, + "repetition setting": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001678", + "$asm.type": "http://www.w3.org/2001/XMLSchema#int", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tIntValue" + }, + "sample volume setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002492", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/mL" + } + ] + } + }, + "required": [ + "detector view volume", + "flush volume setting", + "repetition setting", + "sample volume setting" + ] + } + ] + } + } + } + }, + "processed data aggregate document": { + "properties": { + "processed data document": { + "items": { + "allOf": [ + { + "properties": { + "data processing document": { + "properties": { + "data processing omission setting": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002497", + "$asm.type": "http://www.w3.org/2001/XMLSchema#boolean", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tBooleanValue" + }, + "dilution factor setting": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002498", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/(unitless)" + } + ] + } + }, + "required": [ + "dilution factor setting" + ] + }, + "distribution aggregate document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003057", + "properties": { + "distribution document": { + "$asm.array-mixed": false, + "$asm.array-ordered": true, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002193", + "properties": { + "cumulative count": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002132", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/(unitless)" + } + ] + }, + "cumulative particle density": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002495", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/Counts~1mL" + } + ] + }, + "differential count": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002494", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/(unitless)" + } + ] + }, + "differential particle density": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002496", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/Counts~1mL" + } + ] + }, + "distribution identifier": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0003058", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "particle size": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002027", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/%C2%B5m" + } + ] + } + }, + "required": [ + "particle size", + "cumulative count", + "cumulative particle density", + "differential particle density", + "differential count" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "distribution document" + ], + "type": "object" + } + }, + "required": [ + "distribution aggregate document" + ] + } + ] + } + } + }, + "required": [ + "processed data document" + ] + } + }, + "required": [ + "processed data aggregate document" + ] + } + }, + "$id": "http://purl.allotrope.org/json-schemas/adm/light-obscuration/REC/2026/03/light-obscuration-detector.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema" +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/adm/metabolite-analyzer/REC/2026/03/metabolite-detector.schema.json b/src/allotropy/allotrope/schemas/adm/metabolite-analyzer/REC/2026/03/metabolite-detector.schema.json new file mode 100644 index 000000000..b233b2659 --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/metabolite-analyzer/REC/2026/03/metabolite-detector.schema.json @@ -0,0 +1,99 @@ +{ + "$defs": { + "measurementDocumentItems": { + "properties": { + "analyte aggregate document": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002319", + "properties": { + "analyte document": { + "$asm.array-mixed": false, + "$asm.array-ordered": false, + "$asm.pattern": "indexed datum", + "items": { + "$asm.pattern": "aggregate datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002320", + "anyOf": [ + { + "required": [ + "mass concentration" + ] + }, + { + "required": [ + "molar concentration" + ] + }, + { + "required": [ + "volume concentration" + ] + } + ], + "properties": { + "analyte name": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001604", + "$asm.type": "http://www.w3.org/2001/XMLSchema#string", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tStringValue" + }, + "mass concentration": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001661", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/g~1L" + } + ] + }, + "molar concentration": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002006", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/mmol~1L" + } + ] + }, + "volume concentration": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002110", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/mL~1L" + } + ] + } + }, + "required": [ + "analyte name" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "analyte document" + ], + "type": "object" + } + }, + "required": [ + "analyte aggregate document" + ] + } + }, + "$id": "http://purl.allotrope.org/json-schemas/adm/metabolite-analyzer/REC/2026/03/metabolite-detector.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema" +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/adm/osmolality/REC/2026/03/osmolality-detector.schema.json b/src/allotropy/allotrope/schemas/adm/osmolality/REC/2026/03/osmolality-detector.schema.json new file mode 100644 index 000000000..e9b832641 --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/osmolality/REC/2026/03/osmolality-detector.schema.json @@ -0,0 +1,25 @@ +{ + "$defs": { + "measurementDocumentItems": { + "properties": { + "osmolality": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001586", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/mosm~1kg" + } + ] + } + }, + "required": [ + "osmolality" + ] + } + }, + "$id": "http://purl.allotrope.org/json-schemas/adm/osmolality/REC/2026/03/osmolality-detector.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema" +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/adm/ph/REC/2026/03/ph-detector.schema.json b/src/allotropy/allotrope/schemas/adm/ph/REC/2026/03/ph-detector.schema.json new file mode 100644 index 000000000..cd19fb779 --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/ph/REC/2026/03/ph-detector.schema.json @@ -0,0 +1,37 @@ +{ + "$defs": { + "measurementDocumentItems": { + "properties": { + "pH": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001142", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/pH" + } + ] + }, + "temperature": { + "$asm.pattern": "quantity datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0001584", + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tQuantityValue" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema#/$defs/degC" + } + ] + } + }, + "required": [ + "pH" + ] + } + }, + "$id": "http://purl.allotrope.org/json-schemas/adm/ph/REC/2026/03/ph-detector.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema" +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/adm/solution-analyzer/REC/2026/03/solution-analyzer.schema.json b/src/allotropy/allotrope/schemas/adm/solution-analyzer/REC/2026/03/solution-analyzer.schema.json new file mode 100644 index 000000000..1fdbcabe8 --- /dev/null +++ b/src/allotropy/allotrope/schemas/adm/solution-analyzer/REC/2026/03/solution-analyzer.schema.json @@ -0,0 +1,100 @@ +{ + "$id": "http://purl.allotrope.org/json-schemas/adm/solution-analyzer/REC/2026/03/solution-analyzer.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "allOf": [ + { + "properties": { + "solution analyzer aggregate document": { + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/hierarchy.schema#/$defs/techniqueAggregateDocument" + }, + { + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002919", + "properties": { + "solution analyzer document": { + "$asm.array-mixed": false, + "$asm.array-ordered": true, + "$asm.pattern": "indexed datum", + "items": { + "allOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/hierarchy.schema#/$defs/techniqueDocument" + }, + { + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002920", + "properties": { + "measurement aggregate document": { + "properties": { + "data processing time": { + "$asm.pattern": "value datum", + "$asm.property-class": "http://purl.allotrope.org/ontologies/result#AFR_0002095", + "$asm.type": "http://www.w3.org/2001/XMLSchema#dateTimeStamp", + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/tDateTimeStampValue" + }, + "measurement document": { + "items": { + "allOf": [ + { + "required": [ + "measurement identifier", + "measurement time" + ] + }, + { + "anyOf": [ + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/osmolality/REC/2026/03/osmolality-detector.schema#/$defs/measurementDocumentItems" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/absorbance/REC/2026/03/absorbance-point-detector.schema#/$defs/measurementDocumentItems" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/ph/REC/2026/03/ph-detector.schema#/$defs/measurementDocumentItems" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/bga/REC/2026/03/blood-gas-detector.schema#/$defs/measurementDocumentItems" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/cell-counting/REC/2026/03/cell-counting-detector.schema#/$defs/measurementDocumentItems" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/metabolite-analyzer/REC/2026/03/metabolite-detector.schema#/$defs/measurementDocumentItems" + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/light-obscuration/REC/2026/03/light-obscuration-detector.schema#/$defs/measurementDocumentItems" + } + ] + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/orderedItem" + } + ] + } + } + } + } + } + } + ] + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "solution analyzer document" + ] + } + ] + } + } + }, + { + "$ref": "http://purl.allotrope.org/json-schemas/adm/core/REC/2026/03/core.schema#/$defs/asm" + } + ], + "required": [ + "$asm.manifest" + ] +} \ No newline at end of file diff --git a/src/allotropy/allotrope/schemas/qudt/REC/2026/03/units.schema.json b/src/allotropy/allotrope/schemas/qudt/REC/2026/03/units.schema.json new file mode 100644 index 000000000..61ea97706 --- /dev/null +++ b/src/allotropy/allotrope/schemas/qudt/REC/2026/03/units.schema.json @@ -0,0 +1,9295 @@ +{ + "$comment": "Auto-generated from QUDT 1.1 and Allotrope Extensions for QUDT", + "$defs": { + "\"": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SecondAngle", + "const": "\"", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "#": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Number", + "const": "#", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "#/yr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#NumberPerYear", + "const": "#/yr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "%": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Percent", + "const": "%", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "'": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MinuteAngle", + "const": "'", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "(K^2) m/W": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareMeterKelvinPerWatt", + "const": "(K^2) m/W", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "(unitless)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Unitless", + "const": "(unitless)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "(°F h ft^2)/Btu": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareFootHourDegreeFahrenheitPerBtu", + "const": "(°F h ft^2)/Btu", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "1/cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#ReciprocalCentimeter", + "const": "1/cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "10^-6/bar": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#DimensionlessMicroPerBar", + "const": "10^-6/bar", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "10^6 cells/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MillionCellsPerMilliliter", + "const": "10^6 cells/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "10^9.CFU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#BillionCFU", + "const": "10^9.CFU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "2θ": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#TwoTheta", + "const": "2θ", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "A": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Ampere", + "const": "A", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "A J^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AmperePerJoule", + "const": "A J^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "A h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AmpereHour", + "const": "A h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "A/deg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AmperePerDegree", + "const": "A/deg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "A/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AmperePerMeter", + "const": "A/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "A/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AmperePerSquareMeter", + "const": "A/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "A/rad": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AmperePerRadian", + "const": "A/rad", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "AMU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#UnifiedAtomicMassUnit", + "const": "AMU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "AT": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#TonAssay", + "const": "AT", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "AU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#AbsorbanceUnit", + "const": "AU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "AU.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#AbsorbanceUnitTimesSecond", + "const": "AU.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "At": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AmpereTurn", + "const": "At", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "At/in": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AmpereTurnPerInch", + "const": "At/in", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "At/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AmpereTurnPerMeter", + "const": "At/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "B": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Byte", + "const": "B", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "BPM": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HeartBeatsPerMinute", + "const": "BPM", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Bf": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BoardFoot", + "const": "Bf", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Bi": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Biot", + "const": "Bi", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Bq": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Becquerel", + "const": "Bq", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Bq/g": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#BecquerelPerGram", + "const": "Bq/g", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu (it)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BritishThermalUnitInternationalTable", + "const": "Btu (it)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu (th)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BritishThermalUnitThermochemical", + "const": "Btu (th)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu ft": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuFoot", + "const": "Btu ft", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu ft/(h ft^2 °F)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuFootPerSquareFootHourDegreeFahrenheit", + "const": "Btu ft/(h ft^2 °F)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu in": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuInch", + "const": "Btu in", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu in/(ft^2 s °F)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuInchPerSquareFootSecondDegreeFahrenheit", + "const": "Btu in/(ft^2 s °F)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu in/(h ft^2 °F)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuInchPerSquareFootHourDegreeFahrenheit", + "const": "Btu in/(h ft^2 °F)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/(ft^2 s °F)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerSquareFootSecondDegreeFahrenheit", + "const": "Btu/(ft^2 s °F)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/(h ft^2 °F)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerSquareFootHourDegreeFahrenheit", + "const": "Btu/(h ft^2 °F)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/(h ft^2)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerHourSquareFoot", + "const": "Btu/(h ft^2)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/(lb mol °F)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerPoundMoleDegreeFahrenheit", + "const": "Btu/(lb mol °F)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/(lb mol)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerPoundMole", + "const": "Btu/(lb mol)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/(lb °F)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerPoundDegreeFahrenheit", + "const": "Btu/(lb °F)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/(lb °R)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerPoundDegreeRankine", + "const": "Btu/(lb °R)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/(s ft^2)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerSecondSquareFoot", + "const": "Btu/(s ft^2)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerSquareFoot", + "const": "Btu/ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerHour", + "const": "Btu/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/lb": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerPound", + "const": "Btu/lb", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerSecond", + "const": "Btu/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/°F": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerDegreeFahrenheit", + "const": "Btu/°F", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Btu/°R": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BtuPerDegreeRankine", + "const": "Btu/°R", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "C": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Coulomb", + "const": "C", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "C m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CoulombMeter", + "const": "C m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "C m^-2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CoulombPerSquareMeter", + "const": "C m^-2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "C m^-3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CoulombPerCubicMeter", + "const": "C m^-3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "C m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CoulombSquareMeter", + "const": "C m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "C/kg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CoulombPerKilogram", + "const": "C/kg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "C/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CoulombPerMeter", + "const": "C/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "C/mol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CoulombPerMole", + "const": "C/mol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "CCID50/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#CCID50PerMilliliter", + "const": "CCID50/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "CFU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ColonyFormingUnit", + "const": "CFU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "C^2 m^2 J^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareCoulombMeterPerJoule", + "const": "C^2 m^2 J^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "C^3 m^3 J^-2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicCoulombMeterPerSquareJoule", + "const": "C^3 m^3 J^-2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "C^4 m^4 J^-3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#QuarticCoulombMeterPerCubicEnergy", + "const": "C^4 m^4 J^-3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Cal": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CalorieNutritional", + "const": "Cal", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Ci": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Curie", + "const": "Ci", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Counts": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Counts", + "const": "Counts", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Counts.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#CountsTimesSecond", + "const": "Counts.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Counts/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#CountsPerMilliliter", + "const": "Counts/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Counts/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#CountsPerSecond", + "const": "Counts/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Counts/μL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#CountsPerMicroliter", + "const": "Counts/μL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "D": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Debye", + "const": "D", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Da": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Dalton", + "const": "Da", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "E_h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Hartree", + "const": "E_h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "F": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Farad", + "const": "F", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "F/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FaradPerMeter", + "const": "F/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "FFU/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#FocusFormingUnitPerMilliliter", + "const": "FFU/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Fd": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Faraday", + "const": "Fd", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Fr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Franklin", + "const": "Fr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "G": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Gravity", + "const": "G", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "GHz": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#GigaHertz", + "const": "GHz", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "GU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GlossUnit", + "const": "GU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Gal": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Gal", + "const": "Gal", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "GeV": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#GigaElectronVolt", + "const": "GeV", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "GeV^-2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PerSquareGigaElectronVolt", + "const": "GeV^-2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Gi": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Gilbert", + "const": "Gi", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Gs": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Gauss", + "const": "Gs", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Gy": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Gray", + "const": "Gy", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Gy/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#GrayPerSecond", + "const": "Gy/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "H": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Henry", + "const": "H", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "H/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HenryPerMeter", + "const": "H/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "HP": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Horsepower", + "const": "HP", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Hz": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Hertz", + "const": "Hz", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Hz.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#HertzTimesSecond", + "const": "Hz.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Hz/K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HertzPerKelvin", + "const": "Hz/K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Hz/T": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HertzPerTesla", + "const": "Hz/T", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Hz/V": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HertzPerVolt", + "const": "Hz/V", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "IU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#InternationalUnit", + "const": "IU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "IU/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#InternationalUnitPerLiter", + "const": "IU/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Joule", + "const": "J", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J T^-2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerSquareTesla", + "const": "J T^-2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J m mol^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JouleMeterPerMole", + "const": "J m mol^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J mol^-1 K^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerMoleKelvin", + "const": "J mol^-1 K^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JouleSecond", + "const": "J s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J s mol^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JouleSecondPerMole", + "const": "J s mol^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/(g °C)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#JoulePerGramDegreeCelsius", + "const": "J/(g °C)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/(kg K Pa)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerKilogramKelvinPerPascal", + "const": "J/(kg K Pa)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/(kg K m^3)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerKilogramKelvinPerCubicMeter", + "const": "J/(kg K m^3)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/(kg K)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerKilogramKelvin", + "const": "J/(kg K)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/(m^3 K)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerCubicMeterKelvin", + "const": "J/(m^3 K)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerKelvin", + "const": "J/K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/T": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerTesla", + "const": "J/T", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/g": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#JoulePerGram", + "const": "J/g", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/kg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerKilogram", + "const": "J/kg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerSquareMeter", + "const": "J/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/m^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerCubicMeter", + "const": "J/m^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/mol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#JoulePerMole", + "const": "J/mol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "J/°C": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#JoulePerDegreeCelsius", + "const": "J/°C", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Kelvin", + "const": "K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "K-m/W": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MeterKelvinPerWatt", + "const": "K-m/W", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "K/T": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KelvinPerTesla", + "const": "K/T", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "K/W": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KelvinPerWatt", + "const": "K/W", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "K/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KelvinPerHour", + "const": "K/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "K/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KelvinPerMinute", + "const": "K/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "K/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KelvinPerSecond", + "const": "K/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Liter", + "const": "L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "L/(g cm)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#LiterPerGramCentimeter", + "const": "L/(g cm)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "L/kg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#LiterPerKilogram", + "const": "L/kg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "L/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#LiterPerMinute", + "const": "L/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "L/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#LiterPerSecond", + "const": "L/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "LU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#LuminescenceUnits", + "const": "LU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Lmb": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Lambert", + "const": "Lmb", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "M": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Molar", + "const": "M", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "M$/Flight": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MillionDollarsPerFlight", + "const": "M$/Flight", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "M$/yr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MillionDollarsPerYear", + "const": "M$/yr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "M-1s-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PerMolarPerSecond", + "const": "M-1s-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "MHz": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MegaHertz", + "const": "MHz", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "MHz K^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MegaHertzPerKelvin", + "const": "MHz K^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "MHz T^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MegaHertzPerTesla", + "const": "MHz T^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "MPa": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MegaPascal", + "const": "MPa", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "MeV": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MegaElectronVolt", + "const": "MeV", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "MeV fm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MegaElectronVoltFemtometer", + "const": "MeV fm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "MeV/c": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MegaElectronVoltPerSpeedOfLight", + "const": "MeV/c", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "MeV/cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MegaElectronVoltPerCentimeter", + "const": "MeV/cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Mx": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Maxwell", + "const": "Mx", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "N": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Newton", + "const": "N", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "N m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#NewtonMeter", + "const": "N m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "N/C": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#NewtonPerCoulomb", + "const": "N/C", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "N/kg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#NewtonPerKilogram", + "const": "N/kg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "N/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#NewtonPerMeter", + "const": "N/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "N/mm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NewtonPerSquareMillimeter", + "const": "N/mm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "NTU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#NephelometricTurbidityUnit", + "const": "NTU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Nm/ct": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Carat", + "const": "Nm/ct", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Oe": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Oersted", + "const": "Oe", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Oe cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#OerstedCentimeter", + "const": "Oe cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "P": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Poise", + "const": "P", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "PFU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PlaqueFormingUnit", + "const": "PFU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Pa": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Pascal", + "const": "Pa", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Pa s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PascalSecond", + "const": "Pa s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Pa/hr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PascalPerHour", + "const": "Pa/hr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Pa/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PascalPerSecond", + "const": "Pa/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Pm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Pica", + "const": "Pm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Q_p": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PlanckCharge", + "const": "Q_p", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "R": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Roentgen", + "const": "R", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "RFU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#RelativeFluorescenceUnit", + "const": "RFU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "RFU.mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#RelativeFluorescenceUnitTimesMilliliter", + "const": "RFU.mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "RFU.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#RelativeFluorescenceUnitTimesSecond", + "const": "RFU.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "RIU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#RefractiveIndexUnit", + "const": "RIU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "RLU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#RelativeLightUnit", + "const": "RLU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "RLU.mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#RelativeLightUnitTimesMilliliter", + "const": "RLU.mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "RLU.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#RelativeLightUnitTimesSecond", + "const": "RLU.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "RT": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#RegisterTon", + "const": "RT", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "RU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#ResponseUnit", + "const": "RU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "RU/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#ResponseUnitPerSecond", + "const": "RU/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "S": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Siemens", + "const": "S", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "S.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#SiemensTimesSecond", + "const": "S.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "S/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#SiemensPerMeter", + "const": "S/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Sh": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Shake", + "const": "Sh", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "St": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Stokes", + "const": "St", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Sv": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Sievert", + "const": "Sv", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "T": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Tesla", + "const": "T", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "U": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#EnzymeUnit", + "const": "U", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "U/nWb": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#UnitPole", + "const": "U/nWb", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "US gal": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#GallonUS", + "const": "US gal", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "V": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Volt", + "const": "V", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "V m^-2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#VoltPerSquareMeter", + "const": "V m^-2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "V/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#VoltPerMeter", + "const": "V/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "V/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#VoltPerSecond", + "const": "V/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Watt", + "const": "W", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Watthour", + "const": "W h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W m^-2 K^-4": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#WattPerSquareMeterQuarticKelvin", + "const": "W m^-2 K^-4", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#WattSquareMeter", + "const": "W m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W m^2 sr^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#WattSquareMeterPerSteradian", + "const": "W m^2 sr^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W/(m K)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#WattPerMeterKelvin", + "const": "W/(m K)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W/(m^2 K)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#WattPerSquareMeterKelvin", + "const": "W/(m^2 K)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W/(m^2 sr)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#WattPerSquareMeterSteradian", + "const": "W/(m^2 sr)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W/K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#WattPerKelvin", + "const": "W/K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#WattPerSquareCentimeter", + "const": "W/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W/ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#WattPerSquareFoot", + "const": "W/ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W/g": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#WattPerGram", + "const": "W/g", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W/in^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#WattPerSquareInch", + "const": "W/in^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "W/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#WattPerSquareMeter", + "const": "W/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Wb": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Weber", + "const": "Wb", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Z": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AtomicNumber", + "const": "Z", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "[S/m].L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#SiemensPerMeterTimesLiter", + "const": "[S/m].L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "[S/m].s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#SiemensPerMeterTimesSecond", + "const": "[S/m].s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "[sps]": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#SamplePerSecond", + "const": "[sps]", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "a": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Are", + "const": "a", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "aS": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Absiemen", + "const": "aS", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abA": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Abampere", + "const": "abA", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abC": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Abcoulomb", + "const": "abC", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abC/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AbcoulombPerSquareCentimeter", + "const": "abC/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abF": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Abfarad", + "const": "abF", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abF/cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AbfaradPerCentimeter", + "const": "abF/cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abH": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Abhenry", + "const": "abH", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abT": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Abtesla", + "const": "abT", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abV": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Abvolt", + "const": "abV", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abV cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AbvoltCentimeter", + "const": "abV cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abV-s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AbvoltSecond", + "const": "abV-s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abV/cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AbvoltPerCentimeter", + "const": "abV/cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "abΩ": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Abohm", + "const": "abΩ", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ac": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Acre", + "const": "ac", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ac ft": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AcreFoot", + "const": "ac ft", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "amu": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AtomicMassUnit", + "const": "amu", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "arb'U": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#ArbitraryUnit", + "const": "arb'U", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "arb'U.Hz": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#ArbitraryUnitTimesHertz", + "const": "arb'U.Hz", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "arb'U/V": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#ArbitraryUnitPerVolt", + "const": "arb'U/V", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "arcMin": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ArcMinute", + "const": "arcMin", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "arcSec": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ArcSecond", + "const": "arcSec", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "at": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AtmosphereTechnical", + "const": "at", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "atm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AtmosphereStandard", + "const": "atm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "au": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#AstronomicalUnit", + "const": "au", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "b": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Barn", + "const": "b", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ban": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Ban", + "const": "ban", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "bar": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Bar", + "const": "bar", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "bbl": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Barrel", + "const": "bbl", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "bit": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Bit", + "const": "bit", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "bps": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BitsPerSecond", + "const": "bps", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "breaths/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#BreathPerMinute", + "const": "breaths/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "bu": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Bushel", + "const": "bu", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cP": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Centipoise", + "const": "cP", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cSt": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Centistokes", + "const": "cSt", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cal": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CalorieThermochemical", + "const": "cal", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cal/(cm s °C)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilocaloriePerCentimeterSecondDegreeCelsius", + "const": "cal/(cm s °C)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cal/(g.s)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#CaloriePerGramSecond", + "const": "cal/(g.s)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cal/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#CaloriePerSecond", + "const": "cal/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cd": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Candela", + "const": "cd", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cd/in^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CandelaPerSquareInch", + "const": "cd/in^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cd/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CandelaPerSquareMeter", + "const": "cd/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cdl": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Candle", + "const": "cdl", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cell": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Cell", + "const": "cell", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ch": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Chain", + "const": "ch", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "clo": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Clo", + "const": "clo", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Centimeter", + "const": "cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm s °C": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CentimeterSecondDegreeCelsius", + "const": "cm s °C", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm-degC": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeCelsiusCentimeter", + "const": "cm-degC", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CentimeterPerSecond", + "const": "cm/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm/s^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CentimeterPerSecondSquared", + "const": "cm/s^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cmH2O": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CentimeterOfWater", + "const": "cmH2O", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareCentimeter", + "const": "cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm^2 min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareCentimeterMinute", + "const": "cm^2 min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm^2 s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareCentimeterSecond", + "const": "cm^2 s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm^2/g": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#SquareCentimetersPerGram", + "const": "cm^2/g", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm^2/mol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#SquareCentimetersPerMole", + "const": "cm^2/mol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicCentimeter", + "const": "cm^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm^3/g STP": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#CubicCentimeterPerGramAtSTP", + "const": "cm^3/g STP", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cm^3/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#CubicCentimeterPerMinute", + "const": "cm^3/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cmil": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CircularMil", + "const": "cmil", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cord": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Cord", + "const": "cord", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cp": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Candlepower", + "const": "cp", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "cup": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#LiquidCupUS", + "const": "cup", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "d": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Day", + "const": "d", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "d (s)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DaySidereal", + "const": "d (s)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dB": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Decibel", + "const": "dB", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dBc": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DecibelCarrier", + "const": "dBc", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dBm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DecibelReferredToOneMilliwatt", + "const": "dBm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "degC": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeCelsius", + "const": "degC", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "deg^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareDegree", + "const": "deg^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "deg·mL·g−1·dm−1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#DegreeTimesMilliliterPerGramTimesDecimeter", + "const": "deg·mL·g−1·dm−1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Decimeter", + "const": "dm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dpt": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Diopter", + "const": "dpt", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "drp": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Drop", + "const": "drp", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dry_gal": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DryGallonUS", + "const": "dry_gal", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dry_pt": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DryPintUS", + "const": "dry_pt", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dry_qt": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DryQuartUS", + "const": "dry_qt", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dwt": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PennyWeight", + "const": "dwt", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dyn": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Dyne", + "const": "dyn", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dyn cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DyneCentimeter", + "const": "dyn cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "dyn/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DynePerSquareCentimeter", + "const": "dyn/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "e": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#E", + "const": "e", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "eV": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ElectronVolt", + "const": "eV", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "eV s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ElectronVoltSecond", + "const": "eV s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "eV/K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ElectronVoltPerKelvin", + "const": "eV/K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "eV/T": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ElectronVoltPerTesla", + "const": "eV/T", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "erg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Erg", + "const": "erg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "erg s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ErgSecond", + "const": "erg s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "erg/(cm^2 s)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ErgPerSquareCentimeterSecond", + "const": "erg/(cm^2 s)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "erg/cm^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ErgPerCubicCentimeter", + "const": "erg/cm^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "erg/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ErgPerSecond", + "const": "erg/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Femtoliter", + "const": "fL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fa": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FractionalArea", + "const": "fa", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fath": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Fathom", + "const": "fath", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fc": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootCandle", + "const": "fc", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fermi": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Fermi", + "const": "fermi", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Femtogram", + "const": "fg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fg/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#FemtogramPerLiter", + "const": "fg/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fg/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#FemtogramPerSquareCentimeter", + "const": "fg/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fg/fL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#FemtogramPerFemtoliter", + "const": "fg/fL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fg/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#FemtogramPerMilliliter", + "const": "fg/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fg/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#FemtogramPerSquareMeter", + "const": "fg/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fg/nL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#FemtogramPerNanoliter", + "const": "fg/nL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fg/pL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#FemtogramPerPicoliter", + "const": "fg/pL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fg/μL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#FemtogramPerMicroliter", + "const": "fg/μL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "flight": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Flight", + "const": "flight", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Femtometer", + "const": "fm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fmol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Femtomole", + "const": "fmol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fmol/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Femtomolar", + "const": "fmol/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fps": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FramePerSecond", + "const": "fps", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Foot", + "const": "ft", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootLambert", + "const": "ft L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft lbf": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPoundForce", + "const": "ft lbf", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft lbf/(ft^2 s)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPoundForcePerSquareFootSecond", + "const": "ft lbf/(ft^2 s)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft lbf/ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPoundForcePerSquareFoot", + "const": "ft lbf/ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft lbf/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPoundForcePerHour", + "const": "ft lbf/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft lbf/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPoundForcePerSquareMeter", + "const": "ft lbf/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft lbf/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPoundForcePerMinute", + "const": "ft lbf/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft lbf/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPoundForcePerSecond", + "const": "ft lbf/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft-pdl": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPoundal", + "const": "ft-pdl", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPerHour", + "const": "ft/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPerMinute", + "const": "ft/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPerSecond", + "const": "ft/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft/s^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPerSecondSquared", + "const": "ft/s^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ftH2O": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootOfWater", + "const": "ftH2O", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ftUS": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootUSSurvey", + "const": "ftUS", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareFoot", + "const": "ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft^2 h °F": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareFootHourDegreeFahrenheit", + "const": "ft^2 h °F", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft^2 s °F": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareFootSecondDegreeFahrenheit", + "const": "ft^2 s °F", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft^2 °F": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareFootDegreeFahrenheit", + "const": "ft^2 °F", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft^2/(Btu in)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareFootPerBtuInch", + "const": "ft^2/(Btu in)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft^2/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareFootPerHour", + "const": "ft^2/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft^2/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareFootPerSecond", + "const": "ft^2/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicFoot", + "const": "ft^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft^3/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicFootPerMinute", + "const": "ft^3/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ft^3/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicFootPerSecond", + "const": "ft^3/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "fur": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Furlong", + "const": "fur", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Gram", + "const": "g", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g °C": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#GramDegreeCelsius", + "const": "g °C", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GramPerLiter", + "const": "g/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GramPerSquareCentimeter", + "const": "g/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g/cm^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GramPerCubicCentimeter", + "const": "g/cm^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g/fL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GramPerFemtoliter", + "const": "g/fL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GramPerMilliliter", + "const": "g/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GramPerSquareMeter", + "const": "g/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GramsPerMinute", + "const": "g/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g/mol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GramPerMole", + "const": "g/mol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g/nL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GramPerNanoliter", + "const": "g/nL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g/pL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GramPerPicoliter", + "const": "g/pL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "g/μL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#GramPerMicroliter", + "const": "g/μL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "gal/d": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#GallonUSPerDay", + "const": "gal/d", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "gal/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#GallonUSPerMinute", + "const": "gal/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "gamma": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Gamma", + "const": "gamma", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "gon": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Gon", + "const": "gon", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "gr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Grain", + "const": "gr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "gr/gal": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#GrainPerGallon", + "const": "gr/gal", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "grad": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Grad", + "const": "grad", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "grd": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Grade", + "const": "grd", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Hour", + "const": "h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "h ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HourSquareFoot", + "const": "h ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ha": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Hectare", + "const": "ha", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "hp/H2O": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HorsepowerWater", + "const": "hp/H2O", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "hp/V": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HorsepowerElectric", + "const": "hp/V", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "hp/boiler": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HorsepowerBoiler", + "const": "hp/boiler", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "hp/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HorsepowerMetric", + "const": "hp/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "hr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HourSidereal", + "const": "hr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "imp gal": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#GallonImperial", + "const": "imp gal", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "in": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Inch", + "const": "in", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "in lbf": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#InchPoundForce", + "const": "in lbf", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "in/s^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#InchPerSecondSquared", + "const": "in/s^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "inAq": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#InchOfWater", + "const": "inAq", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "inHg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#InchOfMercury", + "const": "inHg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "in^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareInch", + "const": "in^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "in^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicInch", + "const": "in^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "in^3/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicInchPerMinute", + "const": "in^3/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kHz": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KiloHertz", + "const": "kHz", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kJ/(mol K)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#KiloJoulePerMoleKelvin", + "const": "kJ/(mol K)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kPa": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KiloPascal", + "const": "kPa", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kPaA": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KiloPascalAbsolute", + "const": "kPaA", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kV": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#KiloVolt", + "const": "kV", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kW": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Kilowatt", + "const": "kW", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kW h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Kilowatthour", + "const": "kW h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kat": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Katal", + "const": "kat", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kbps": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilobitsPerSecond", + "const": "kbps", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kcal": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Kilocalorie", + "const": "kcal", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kcal/(cm^2 min)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilocaloriePerSquareCentimeterMinute", + "const": "kcal/(cm^2 min)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kcal/(cm^2 s)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilocaloriePerSquareCentimeterSecond", + "const": "kcal/(cm^2 s)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kcal/(g °C)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilocaloriePerGramDegreeCelsius", + "const": "kcal/(g °C)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kcal/(mol °C)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilocaloriePerMoleDegreeCelsius", + "const": "kcal/(mol °C)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kcal/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilocaloriePerSquareCentimeter", + "const": "kcal/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kcal/g": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilocaloriePerGram", + "const": "kcal/g", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kcal/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilocaloriePerMinute", + "const": "kcal/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kcal/mol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilocaloriePerMole", + "const": "kcal/mol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kcal/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilocaloriePerSecond", + "const": "kcal/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "keV": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KiloElectronVolt", + "const": "keV", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "keV/µm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KiloElectronVoltPerMicrometer", + "const": "keV/µm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Kilogram", + "const": "kg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramKelvin", + "const": "kg K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg m s^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramMeterPerSecond", + "const": "kg m s^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramMeterSquared", + "const": "kg m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg mol^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramPerMole", + "const": "kg mol^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg s^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramSecondSquared", + "const": "kg s^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#KilogramPerLiter", + "const": "kg/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#KilogramPerSquareCentimeter", + "const": "kg/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/fL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#KilogramPerFemtoliter", + "const": "kg/fL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramPerHour", + "const": "kg/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramPerMeter", + "const": "kg/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#KilogramPerMilliliter", + "const": "kg/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramPerSquareMeter", + "const": "kg/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/m^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramPerCubicMeter", + "const": "kg/m^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/nL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#KilogramPerNanoliter", + "const": "kg/nL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/pL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#KilogramPerPicoliter", + "const": "kg/pL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramPerSecond", + "const": "kg/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kg/μL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#KilogramPerMicroliter", + "const": "kg/μL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kgf": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramForce", + "const": "kgf", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kgf m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramForceMeter", + "const": "kgf m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kgf/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilogramForcePerSquareCentimeter", + "const": "kgf/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kip": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Kip", + "const": "kip", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kip/in^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KipPerSquareInch", + "const": "kip/in^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "km": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Kilometer", + "const": "km", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "km/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilometerPerHour", + "const": "km/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "km/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KilometerPerSecond", + "const": "km/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "km^3/s^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicKilometerPerSecondSquared", + "const": "km^3/s^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kn": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Knot", + "const": "kn", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kp": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KiloPond", + "const": "kp", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "kt/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#KnotPerSecond", + "const": "kt/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "l_P": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PlanckLength", + "const": "l_P", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb mol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundMole", + "const": "lb mol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb mol °F": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundMoleDegreeFahrenheit", + "const": "lb mol °F", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb-degF": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundDegreeFahrenheit", + "const": "lb-degF", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb-degR": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundDegreeRankine", + "const": "lb-degR", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb/(ft-hr)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerFootHour", + "const": "lb/(ft-hr)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb/(ft-s)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerFootSecond", + "const": "lb/(ft-s)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb/ft": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerFoot", + "const": "lb/ft", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb/ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerSquareFoot", + "const": "lb/ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb/ft^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerCubicFoot", + "const": "lb/ft^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb/gal": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerGallon", + "const": "lb/gal", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb/hr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerHour", + "const": "lb/hr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb/in": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerInch", + "const": "lb/in", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb/in^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerCubicInch", + "const": "lb/in^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerMinute", + "const": "lb/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb/yd^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerCubicYard", + "const": "lb/yd^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lb_av": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#AvoirdupoisPound", + "const": "lb_av", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbf": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundForce", + "const": "lbf", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbf / in^2-s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundForcePerSquareInchSecond", + "const": "lbf / in^2-s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbf-ft": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundForceFoot", + "const": "lbf-ft", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbf-in": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundForceInch", + "const": "lbf-in", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbf-s/ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundForceSecondPerSquareFoot", + "const": "lbf-s/ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbf-s/in^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundForceSecondPerSquareInch", + "const": "lbf-s/in^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbf/ft": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundForcePerFoot", + "const": "lbf/ft", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbf/ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundForcePerSquareFoot", + "const": "lbf/ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbf/in": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundForcePerInch", + "const": "lbf/in", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbf/lb": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundForcePerPound", + "const": "lbf/lb", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbf/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#FootPoundForceSecond", + "const": "lbf/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundMass", + "const": "lbm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbm (tr)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundTroy", + "const": "lbm (tr)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lbm/m^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundPerCubicMeter", + "const": "lbm/m^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lcwt": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HundredWeightLong", + "const": "lcwt", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Lumen", + "const": "lm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "lx": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Lux", + "const": "lx", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ly": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#LightYear", + "const": "ly", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Meter", + "const": "m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MeterKelvin", + "const": "m K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m T": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#TeslaMeter", + "const": "m T", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m V": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#VoltMeter", + "const": "m V", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m h^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MeterPerHour", + "const": "m h^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m min^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MeterPerMinute", + "const": "m min^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m s^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MeterPerSecond", + "const": "m s^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m s^-2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MeterPerSecondSquared", + "const": "m s^-2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m-kg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MeterKilogram", + "const": "m-kg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m/F": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MeterPerFarad", + "const": "m/F", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m/K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MeterPerKelvin", + "const": "m/K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m/z": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MassPerCharge", + "const": "m/z", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mA": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliAmpere", + "const": "mA", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mAU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliAbsorbanceUnit", + "const": "mAU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mAU.L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliAbsorbanceUnitTimesLiter", + "const": "mAU.L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mAU.mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliAbsorbanceUnitTimesMilliliter", + "const": "mAU.mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mAU.min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliAbsorbanceUnitTimesMinute", + "const": "mAU.min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mAU.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliAbsorbanceUnitTimesSecond", + "const": "mAU.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mArbU": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliArbitraryUnit", + "const": "mArbU", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mF/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicroFaradPerMeter", + "const": "mF/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mF/m kHz": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicroFaradPerMeterKiloHertz", + "const": "mF/m kHz", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mG": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Milligravity", + "const": "mG", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mH": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MilliHenry", + "const": "mH", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Milliliter", + "const": "mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mL/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliliterPerLiter", + "const": "mL/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mL/kg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliliterPerKilogram", + "const": "mL/kg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mL/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliliterPerMinute", + "const": "mL/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mL/min^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliliterPerMinuteSquared", + "const": "mL/min^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mL/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliliterPerSecond", + "const": "mL/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mL/s^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliliterPerSecondSquared", + "const": "mL/s^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mM": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Millimolar", + "const": "mM", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mS/cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MillisiemenPerCentimeter", + "const": "mS/cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mT": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MetricTon", + "const": "mT", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mV": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Millivolt", + "const": "mV", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mV.L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MillivoltTimesLiter", + "const": "mV.L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mV.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MillivoltTimesSecond", + "const": "mV.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mW": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliWatt", + "const": "mW", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mW/g": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliWattPerGram", + "const": "mW/g", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PerMeter", + "const": "m^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^-1 K^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PerMeterKelvin", + "const": "m^-1 K^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^-1 T^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PerTeslaMeter", + "const": "m^-1 T^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^-3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PerCubicMeter", + "const": "m^-3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareMeter", + "const": "m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^2 K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareMeterKelvin", + "const": "m^2 K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^2 sr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareMeterSteradian", + "const": "m^2 sr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^2/K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareMeterPerKelvin", + "const": "m^2/K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^2/g": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#SquareMetersPerGram", + "const": "m^2/g", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^2/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareMeterPerSecond", + "const": "m^2/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicMeter", + "const": "m^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^3 kg^-1 s^-2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicMeterPerKilogramSecondSquared", + "const": "m^3 kg^-1 s^-2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^3 mol^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicMeterPerMole", + "const": "m^3 mol^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^3/K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicMeterPerKelvin", + "const": "m^3/K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^3/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicMeterPerHour", + "const": "m^3/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^3/kg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicMeterPerKilogram", + "const": "m^3/kg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^3/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicMeterPerSecond", + "const": "m^3/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m^3/s^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicMeterPerSecondSquared", + "const": "m^3/s^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m_P": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PlanckMass", + "const": "m_P", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mbar": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Millibar", + "const": "mbar", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mbps": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MegabitsPerSecond", + "const": "mbps", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mcal/(mol °C)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliCaloriePerMoleDegreeCelsius", + "const": "mcal/(mol °C)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mcal/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliCaloriePerMinute", + "const": "mcal/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mcal/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliCaloriePerSecond", + "const": "mcal/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Milligram", + "const": "mg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerLiter", + "const": "mg/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerSquareCentimeter", + "const": "mg/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/dL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerDeciliter", + "const": "mg/dL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/fL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerFemtoliter", + "const": "mg/fL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/kg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerKilogram", + "const": "mg/kg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerMilliliter", + "const": "mg/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerSquareMeter", + "const": "mg/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerMinute", + "const": "mg/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/nL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerNanoliter", + "const": "mg/nL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/pL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerPicoliter", + "const": "mg/pL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerSecond", + "const": "mg/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mg/μL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilligramPerMicroliter", + "const": "mg/μL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mho": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Mho", + "const": "mho", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mi": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MileInternational", + "const": "mi", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mi/hr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MilePerHour", + "const": "mi/hr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mi/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MilePerMinute", + "const": "mi/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "miUS": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MileUSStatute", + "const": "miUS", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mi^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareMile", + "const": "mi^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mi^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicMile", + "const": "mi^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "microF": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MicroFarad", + "const": "microF", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mil": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MilAngle", + "const": "mil", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mil (l)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MilLength", + "const": "mil (l)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MinuteTime", + "const": "min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "min (s)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MinuteSidereal", + "const": "min (s)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "min^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PerMinute", + "const": "min^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Millimeter", + "const": "mm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mm/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MillimeterPerMinute", + "const": "mm/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mm/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MillimeterPerSecond", + "const": "mm/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mmHg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MillimeterOfMercury", + "const": "mmHg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mmHg/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MillimeterOfMercuryPerMinute", + "const": "mmHg/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mmHgA": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MillimeterOfMercuryAbsolute", + "const": "mmHgA", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mm^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicMillimeter", + "const": "mm^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mmol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Millimole", + "const": "mmol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mmol/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MillimolePerLiter", + "const": "mmol/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mmol/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MillimolePerMilliliter", + "const": "mmol/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Mole", + "const": "mol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mol K": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MoleKelvin", + "const": "mol K", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mol-degC": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MoleDegreeCelsius", + "const": "mol-degC", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mol/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MolePerLiter", + "const": "mol/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mol/dm^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MolePerCubicDecimeter", + "const": "mol/dm^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mol/kg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MolePerKilogram", + "const": "mol/kg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mol/m^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MolePerCubicMeter", + "const": "mol/m^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mol^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PerMole", + "const": "mol^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mosm/kg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliOsmolesPerKilogram", + "const": "mosm/kg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ms": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MilliSecond", + "const": "ms", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "mtorr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MilliTorr", + "const": "mtorr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m°": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliDegreeAngle", + "const": "m°", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "m°.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MilliDegreeAngleTimesSecond", + "const": "m°.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "n mile": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#NauticalMile", + "const": "n mile", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nA": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanoAmpere", + "const": "nA", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nC": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanoCoulomb", + "const": "nC", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nC.L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanoCoulombTimesLiter", + "const": "nC.L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nC.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanoCoulombTimesSecond", + "const": "nC.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nF": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#NanoFarad", + "const": "nF", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Nanoliter", + "const": "nL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nano RIU.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanoRefractiveIndexUnitTimesSecond", + "const": "nano RIU.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nat": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Nat", + "const": "nat", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ng": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Nanogram", + "const": "ng", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ng/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanogramPerLiter", + "const": "ng/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ng/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanogramPerSquareCentimeter", + "const": "ng/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ng/fL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanogramPerFemtoliter", + "const": "ng/fL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ng/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanogramPerMilliliter", + "const": "ng/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ng/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanogramPerSquareMeter", + "const": "ng/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ng/nL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanogramPerNanoliter", + "const": "ng/nL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ng/pL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanogramPerPicoliter", + "const": "ng/pL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ng/μL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#NanogramPerMicroliter", + "const": "ng/μL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Nanometer", + "const": "nm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nmi/hr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#NauticalMilePerHour", + "const": "nmi/hr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nmi/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#NauticalMilePerMinute", + "const": "nmi/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nmol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Nanomole", + "const": "nmol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "nmol/dm^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Nanomolar", + "const": "nmol/dm^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "osm/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#OsmolesPerLiter", + "const": "osm/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "oz": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#OunceImperial", + "const": "oz", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "oz (tr)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#OunceTroy", + "const": "oz (tr)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "oz fl": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#LiquidOunceUS", + "const": "oz fl", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "oz/ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#OuncePerSquareFoot", + "const": "oz/ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "oz/gal": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#OuncePerGallon", + "const": "oz/gal", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "oz/in^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#OuncePerCubicInch", + "const": "oz/in^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "oz/yd^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#OuncePerSquareYard", + "const": "oz/yd^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ozf": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#OunceForce", + "const": "ozf", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ozf in": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#OunceForceInch", + "const": "ozf in", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ozm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#OunceMass", + "const": "ozm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pA": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicoAmpere", + "const": "pA", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pA.L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicoAmpereTimesLiter", + "const": "pA.L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pA.min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicoAmperesTimesMinute", + "const": "pA.min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pA.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicoAmpereTimesSecond", + "const": "pA.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pF": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PicoFarad", + "const": "pF", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pH": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PH", + "const": "pH", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Picoliter", + "const": "pL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pc": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Parsec", + "const": "pc", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pdl": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Poundal", + "const": "pdl", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pdl/ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundalPerSquareFoot", + "const": "pdl/ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "person": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Person", + "const": "person", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Picogram", + "const": "pg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pg/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicogramPerLiter", + "const": "pg/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pg/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicogramPerSquareCentimeter", + "const": "pg/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pg/fL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicogramPerFemtoliter", + "const": "pg/fL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pg/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicogramPerMilliliter", + "const": "pg/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pg/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicogramPerSquareMeter", + "const": "pg/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pg/nL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicogramPerNanoliter", + "const": "pg/nL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pg/pL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicogramPerPicoliter", + "const": "pg/pL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pg/μL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PicogramPerMicroliter", + "const": "pg/μL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ph": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Phot", + "const": "ph", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pi": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PintImperial", + "const": "pi", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pixel": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Pixel", + "const": "pixel", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pixel/mm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PixelPerMillimeter", + "const": "pixel/mm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pixel^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#SquarePixel", + "const": "pixel^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pk": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Peck", + "const": "pk", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "plates/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PlatesPerMeter", + "const": "plates/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Picometer", + "const": "pm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pmol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Picomole", + "const": "pmol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pmol/dm^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Picomolar", + "const": "pmol/dm^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pnt": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Point", + "const": "pnt", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ppb": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PartsPerBillion", + "const": "ppb", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ppm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PartsPerMillion", + "const": "ppm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ppm.arb'U": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#PartsPerMillionTimesArbitraryUnit", + "const": "ppm.arb'U", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "psi": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PoundForcePerSquareInch", + "const": "psi", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "pt": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#LiquidPintUS", + "const": "pt", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "qt": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#LiquidQuartUS", + "const": "qt", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "quad": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Quad", + "const": "quad", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "r": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Radian", + "const": "r", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "rad": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Rad", + "const": "rad", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "rad/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#RadianPerHour", + "const": "rad/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "rad/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#RadianPerMinute", + "const": "rad/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "rad/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#RadianPerSecond", + "const": "rad/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "rad/s^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#RadianPerSecondSquared", + "const": "rad/s^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "rd": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Rod", + "const": "rd", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "rem": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Rem", + "const": "rem", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "rev": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Revolution", + "const": "rev", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "rev/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#RevolutionPerHour", + "const": "rev/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "rev/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#RevolutionPerMinute", + "const": "rev/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "rev/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#RevolutionPerSecond", + "const": "rev/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SecondTime", + "const": "s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "s T": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#TeslaSecond", + "const": "s T", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "s ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SecondSquareFoot", + "const": "s ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "s^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PerSecond", + "const": "s^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "s^-1 T^-1": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PerTeslaSecond", + "const": "s^-1 T^-1", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "s^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SecondTimeSquared", + "const": "s^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "sb": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Stilb", + "const": "sb", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "scwt": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#HundredWeightShort", + "const": "scwt", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "slug": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Slug", + "const": "slug", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "slug/(ft s)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SlugPerFootSecond", + "const": "slug/(ft s)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "slug/ft": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SlugPerFoot", + "const": "slug/ft", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "slug/ft^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SlugPerSquareFoot", + "const": "slug/ft^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "slug/ft^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SlugPerCubicFoot", + "const": "slug/ft^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "slug/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SlugPerSecond", + "const": "slug/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "sr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Steradian", + "const": "sr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "st": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Stere", + "const": "st", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statA": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Statampere", + "const": "statA", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statC": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Statcoulomb", + "const": "statC", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statC/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#StatcoulombPerSquareCentimeter", + "const": "statC/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statC/mol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#StatcoulombPerMole", + "const": "statC/mol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statF": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Statfarad", + "const": "statF", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statH": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Stathenry", + "const": "statH", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statH/cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#StathenryPerCentimeter", + "const": "statH/cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statS": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Statmho", + "const": "statS", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statV": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Statvolt", + "const": "statV", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statV cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#StatvoltCentimeter", + "const": "statV cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statV/cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#StatvoltPerCentimeter", + "const": "statV/cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "statΩ": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Statohm", + "const": "statΩ", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "t/fg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#TonOfRefrigeration", + "const": "t/fg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "t/lbf": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#TonEnergy", + "const": "t/lbf", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "t_P": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PlanckTime", + "const": "t_P", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "tbsp": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Tablespoon", + "const": "tbsp", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "tex": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Tex", + "const": "tex", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "therm (EC)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ThermEEC", + "const": "therm (EC)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "therm (US)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#ThermUS", + "const": "therm (US)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "toe": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#TonOfOilEquivalent", + "const": "toe", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ton (l)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#TonLong", + "const": "ton (l)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ton (s)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#TonShort", + "const": "ton (s)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ton/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#TonShortPerHour", + "const": "ton/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ton/yd": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#TonShortPerCubicYard", + "const": "ton/yd", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "ton/yd^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#TonLongPerCubicYard", + "const": "ton/yd^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "torr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Torr", + "const": "torr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "tsp": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Teaspoon", + "const": "tsp", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "u": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Dalton2", + "const": "u", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "unitless": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Unitless", + "const": "unitless", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "yd": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Yard", + "const": "yd", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "yd^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#SquareYard", + "const": "yd^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "yd^3": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicYard", + "const": "yd^3", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "yd^3/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#CubicYardPerMinute", + "const": "yd^3/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "yr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Year365Day", + "const": "yr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "yr (s)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#YearSidereal", + "const": "yr (s)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "yr (t)": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#YearTropical", + "const": "yr (t)", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeAngle", + "const": "°", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "° s^-2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreePerSecondSquared", + "const": "° s^-2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreePerHour", + "const": "°/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreePerMinute", + "const": "°/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreePerSecond", + "const": "°/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°C": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeCentigrade", + "const": "°C", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°C/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeCelsiusPerHour", + "const": "°C/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°C/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeCelsiusPerMinute", + "const": "°C/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°C/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeCelsiusPerSecond", + "const": "°C/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°F": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeFahrenheit", + "const": "°F", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°F h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeFahrenheitHour", + "const": "°F h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°F h/Btu": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeFahrenheitHourPerBtu", + "const": "°F h/Btu", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°F/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeFahrenheitPerHour", + "const": "°F/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°F/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeFahrenheitPerMinute", + "const": "°F/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°F/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeFahrenheitPerSecond", + "const": "°F/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°R": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeRankine", + "const": "°R", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°R/h": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeRankinePerHour", + "const": "°R/h", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°R/m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeRankinePerMinute", + "const": "°R/m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "°R/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#DegreeRankinePerSecond", + "const": "°R/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µG": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Microgravity", + "const": "µG", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µH": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MicroHenry", + "const": "µH", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µL/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicroliterPerMinute", + "const": "µL/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µL/s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicroliterPerSecond", + "const": "µL/s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µV": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Microvolt", + "const": "µV", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µW": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicroWatt", + "const": "µW", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µW/g": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicroWattPerGram", + "const": "µW/g", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µcal/°C": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicroCaloriePerDegreeCelsius", + "const": "µcal/°C", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µin": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MicroInch", + "const": "µin", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Micrometer", + "const": "µm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#SquareMicrometer", + "const": "µm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µs": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MicroSecond", + "const": "µs", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "µtorr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#MicroTorr", + "const": "µtorr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Å": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Angstrom", + "const": "Å", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Å^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#SquareAngstrom", + "const": "Å^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Θ_P": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#PlanckTemperature", + "const": "Θ_P", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Ω": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Ohm", + "const": "Ω", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "Ω m": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#OhmMeter", + "const": "Ω m", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "εr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#RelativePermittivity", + "const": "εr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Microliter", + "const": "μL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μM": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Micromolar", + "const": "μM", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μS/cm": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicroSiemensPerCentimeter", + "const": "μS/cm", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μV.s": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicroVoltTimesSecond", + "const": "μV.s", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μg": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Microgram", + "const": "μg", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μg/L": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicrogramPerLiter", + "const": "μg/L", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μg/cm^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicrogramPerSquareCentimeter", + "const": "μg/cm^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μg/fL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicrogramPerFemtoliter", + "const": "μg/fL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μg/mL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicrogramPerMilliliter", + "const": "μg/mL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μg/m^2": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicrogramPerSquareMeter", + "const": "μg/m^2", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μg/min": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicrogramPerMinute", + "const": "μg/min", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μg/nL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicrogramPerNanoliter", + "const": "μg/nL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μg/pL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicrogramPerPicoliter", + "const": "μg/pL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μg/μL": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#MicrogramPerMicroliter", + "const": "μg/μL", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μmol": { + "properties": { + "unit": { + "$asm.unit-iri": "http://purl.allotrope.org/ontology/qudt-ext/unit#Micromole", + "const": "μmol", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "μr": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#RelativePermeability", + "const": "μr", + "type": "string" + } + }, + "required": [ + "unit" + ] + }, + "€": { + "properties": { + "unit": { + "$asm.unit-iri": "http://qudt.org/vocab/unit#Euro", + "const": "€", + "type": "string" + } + }, + "required": [ + "unit" + ] + } + }, + "$id": "http://purl.allotrope.org/json-schemas/qudt/REC/2026/03/units.schema", + "$schema": "https://json-schema.org/draft/2020-12/schema" +} \ No newline at end of file diff --git a/src/allotropy/parsers/beckman_pharmspec/beckman_pharmspec_parser.py b/src/allotropy/parsers/beckman_pharmspec/beckman_pharmspec_parser.py index acfb3a64d..4deb00d4e 100644 --- a/src/allotropy/parsers/beckman_pharmspec/beckman_pharmspec_parser.py +++ b/src/allotropy/parsers/beckman_pharmspec/beckman_pharmspec_parser.py @@ -1,7 +1,7 @@ -from allotropy.allotrope.models.adm.solution_analyzer.rec._2024._09.solution_analyzer import ( +from allotropy.allotrope.models.adm.solution_analyzer.rec._2026._03.solution_analyzer import ( Model, ) -from allotropy.allotrope.schema_mappers.adm.solution_analyzer.rec._2024._09.solution_analyzer import ( +from allotropy.allotrope.schema_mappers.adm.solution_analyzer.rec._2026._03.solution_analyzer import ( Data, Mapper, ) diff --git a/src/allotropy/parsers/beckman_pharmspec/beckman_pharmspec_structure.py b/src/allotropy/parsers/beckman_pharmspec/beckman_pharmspec_structure.py index 1d568bf88..cc3f547d3 100644 --- a/src/allotropy/parsers/beckman_pharmspec/beckman_pharmspec_structure.py +++ b/src/allotropy/parsers/beckman_pharmspec/beckman_pharmspec_structure.py @@ -9,7 +9,7 @@ import pandas as pd -from allotropy.allotrope.schema_mappers.adm.solution_analyzer.rec._2024._09.solution_analyzer import ( +from allotropy.allotrope.schema_mappers.adm.solution_analyzer.rec._2026._03.solution_analyzer import ( CalculatedDataItem, DataProcessing, DataSource, diff --git a/src/allotropy/parsers/roche_cedex_bioht/roche_cedex_bioht_parser.py b/src/allotropy/parsers/roche_cedex_bioht/roche_cedex_bioht_parser.py index c78226697..ecc434a2d 100644 --- a/src/allotropy/parsers/roche_cedex_bioht/roche_cedex_bioht_parser.py +++ b/src/allotropy/parsers/roche_cedex_bioht/roche_cedex_bioht_parser.py @@ -1,7 +1,7 @@ -from allotropy.allotrope.models.adm.solution_analyzer.rec._2024._09.solution_analyzer import ( +from allotropy.allotrope.models.adm.solution_analyzer.rec._2026._03.solution_analyzer import ( Model, ) -from allotropy.allotrope.schema_mappers.adm.solution_analyzer.rec._2024._09.solution_analyzer import ( +from allotropy.allotrope.schema_mappers.adm.solution_analyzer.rec._2026._03.solution_analyzer import ( Data, Mapper, ) diff --git a/src/allotropy/parsers/roche_cedex_bioht/roche_cedex_bioht_structure.py b/src/allotropy/parsers/roche_cedex_bioht/roche_cedex_bioht_structure.py index d1a9a6cbc..33e7c8c33 100644 --- a/src/allotropy/parsers/roche_cedex_bioht/roche_cedex_bioht_structure.py +++ b/src/allotropy/parsers/roche_cedex_bioht/roche_cedex_bioht_structure.py @@ -9,7 +9,7 @@ import pandas as pd from allotropy.allotrope.models.shared.definitions.definitions import JsonFloat, NaN -from allotropy.allotrope.schema_mappers.adm.solution_analyzer.rec._2024._09.solution_analyzer import ( +from allotropy.allotrope.schema_mappers.adm.solution_analyzer.rec._2026._03.solution_analyzer import ( Analyte, Error, Measurement, diff --git a/tests/parsers/beckman_pharmspec/beckman_pharmspec_parser_test.py b/tests/parsers/beckman_pharmspec/beckman_pharmspec_parser_test.py index 2fd033d0d..893e51b99 100644 --- a/tests/parsers/beckman_pharmspec/beckman_pharmspec_parser_test.py +++ b/tests/parsers/beckman_pharmspec/beckman_pharmspec_parser_test.py @@ -2,10 +2,10 @@ import pytest -from allotropy.allotrope.models.adm.core.rec._2024._09.hierarchy import ( +from allotropy.allotrope.models.adm.core.rec._2026._03.hierarchy import ( DeviceSystemDocument, ) -from allotropy.allotrope.models.adm.solution_analyzer.rec._2024._09.solution_analyzer import ( +from allotropy.allotrope.models.adm.solution_analyzer.rec._2026._03.solution_analyzer import ( DistributionAggregateDocument, DistributionDocumentItem, MeasurementDocumentItem, diff --git a/tests/parsers/beckman_pharmspec/testdata/hiac_example_1.json b/tests/parsers/beckman_pharmspec/testdata/hiac_example_1.json index d062a774b..6d58e1cfe 100644 --- a/tests/parsers/beckman_pharmspec/testdata/hiac_example_1.json +++ b/tests/parsers/beckman_pharmspec/testdata/hiac_example_1.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -728,7 +728,7 @@ "file name": "hiac_example_1.xlsx", "UNC path": "tests/parsers/beckman_pharmspec/testdata/hiac_example_1.xlsx", "ASM converter name": "allotropy_beckman_coulter_pharmspec", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "PharmSpec", "software version": "3.0" }, diff --git a/tests/parsers/beckman_pharmspec/testdata/hiac_example_2.json b/tests/parsers/beckman_pharmspec/testdata/hiac_example_2.json index 7c628010e..b6bf49b1b 100644 --- a/tests/parsers/beckman_pharmspec/testdata/hiac_example_2.json +++ b/tests/parsers/beckman_pharmspec/testdata/hiac_example_2.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -990,7 +990,7 @@ "file name": "hiac_example_2.xlsx", "UNC path": "tests/parsers/beckman_pharmspec/testdata/hiac_example_2.xlsx", "ASM converter name": "allotropy_beckman_coulter_pharmspec", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "PharmSpec", "software version": "3.0" }, diff --git a/tests/parsers/beckman_pharmspec/testdata/hiac_example_3.json b/tests/parsers/beckman_pharmspec/testdata/hiac_example_3.json index b8f8d5878..4930478df 100644 --- a/tests/parsers/beckman_pharmspec/testdata/hiac_example_3.json +++ b/tests/parsers/beckman_pharmspec/testdata/hiac_example_3.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -466,7 +466,7 @@ "file name": "hiac_example_3.xlsx", "UNC path": "tests/parsers/beckman_pharmspec/testdata/hiac_example_3.xlsx", "ASM converter name": "allotropy_beckman_coulter_pharmspec", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "PharmSpec", "software version": "3.0" }, diff --git a/tests/parsers/beckman_pharmspec/testdata/hiac_example_4.json b/tests/parsers/beckman_pharmspec/testdata/hiac_example_4.json index c99ef334f..288649567 100644 --- a/tests/parsers/beckman_pharmspec/testdata/hiac_example_4.json +++ b/tests/parsers/beckman_pharmspec/testdata/hiac_example_4.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -222,7 +222,7 @@ "file name": "hiac_example_4.xlsx", "UNC path": "tests/parsers/beckman_pharmspec/testdata/hiac_example_4.xlsx", "ASM converter name": "allotropy_beckman_coulter_pharmspec", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "PharmSpec", "software version": "3.0" }, diff --git a/tests/parsers/beckman_pharmspec/testdata/hiac_example_5.json b/tests/parsers/beckman_pharmspec/testdata/hiac_example_5.json index dd7718c69..48cd78e85 100644 --- a/tests/parsers/beckman_pharmspec/testdata/hiac_example_5.json +++ b/tests/parsers/beckman_pharmspec/testdata/hiac_example_5.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -626,7 +626,7 @@ "file name": "hiac_example_5.xlsx", "UNC path": "tests/parsers/beckman_pharmspec/testdata/hiac_example_5.xlsx", "ASM converter name": "allotropy_beckman_coulter_pharmspec", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "PharmSpec", "software version": "3.0" }, diff --git a/tests/parsers/beckman_pharmspec/testdata/pharmspec_example_01.json b/tests/parsers/beckman_pharmspec/testdata/pharmspec_example_01.json index d41791524..29c6549a8 100644 --- a/tests/parsers/beckman_pharmspec/testdata/pharmspec_example_01.json +++ b/tests/parsers/beckman_pharmspec/testdata/pharmspec_example_01.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -728,7 +728,7 @@ "file name": "pharmspec_example_01.xlsx", "UNC path": "tests/parsers/beckman_pharmspec/testdata/pharmspec_example_01.xlsx", "ASM converter name": "allotropy_beckman_coulter_pharmspec", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "PharmSpec", "software version": "3.0" }, diff --git a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example01.json b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example01.json index ded28eb92..e6e21980e 100644 --- a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example01.json +++ b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example01.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -515,7 +515,7 @@ "file name": "roche_cedex_bioht_example01.txt", "UNC path": "tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example01.txt", "ASM converter name": "allotropy_roche_cedex_bioht", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "CEDEX BIO HT", "software version": "6.0.0.1905 (1905)" }, diff --git a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example02.json b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example02.json index 7ec7083a5..ad7dd7ac0 100644 --- a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example02.json +++ b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example02.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -495,7 +495,7 @@ "file name": "roche_cedex_bioht_example02.txt", "UNC path": "tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example02.txt", "ASM converter name": "allotropy_roche_cedex_bioht", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "CEDEX BIO HT", "software version": "6.0.0.1905 (1905)" }, diff --git a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example03.json b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example03.json index 69e87a043..ff20606a9 100644 --- a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example03.json +++ b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example03.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -19565,7 +19565,7 @@ "file name": "roche_cedex_bioht_example03.txt", "UNC path": "tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example03.txt", "ASM converter name": "allotropy_roche_cedex_bioht", - "ASM converter version": "0.1.113", + "ASM converter version": "0.1.118", "software name": "CEDEX BIO HT", "software version": "6.0.0.1905 (1905)" }, diff --git a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example04.json b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example04.json index 4bc2ca3ce..278c1e707 100644 --- a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example04.json +++ b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example04.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -225,7 +225,7 @@ "file name": "roche_cedex_bioht_example04.txt", "UNC path": "tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example04.txt", "ASM converter name": "allotropy_roche_cedex_bioht", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "CEDEX BIO HT", "software version": "6.0.0.1905 (1905)" }, diff --git a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example_with_mg_L.json b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example_with_mg_L.json index 72c9d5725..6a30ca631 100644 --- a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example_with_mg_L.json +++ b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example_with_mg_L.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -515,7 +515,7 @@ "file name": "roche_cedex_bioht_example_with_mg_L.txt", "UNC path": "tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_example_with_mg_L.txt", "ASM converter name": "allotropy_roche_cedex_bioht", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "CEDEX BIO HT", "software version": "6.0.0.1905 (1905)" }, diff --git a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_example01.json b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_example01.json index 759192ff6..bceb44cdd 100644 --- a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_example01.json +++ b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_example01.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -2532,7 +2532,7 @@ "file name": "roche_cedex_bioht_v5_example01.txt", "UNC path": "tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_example01.txt", "ASM converter name": "allotropy_roche_cedex_bioht", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "CEDEX BIO HT", "software version": "5.0.0.1206 (1206.0)" }, diff --git a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_example02.json b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_example02.json index f8dff25b4..1829f8e79 100644 --- a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_example02.json +++ b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_example02.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -3105,7 +3105,7 @@ "file name": "roche_cedex_bioht_v5_example02.txt", "UNC path": "tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_example02.txt", "ASM converter name": "allotropy_roche_cedex_bioht", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "CEDEX BIO HT", "software version": "5.0.0.1206 (1206.0)" }, diff --git a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_multiple_detection_ranges.json b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_multiple_detection_ranges.json index 7eddd4e0e..9649f7870 100644 --- a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_multiple_detection_ranges.json +++ b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_multiple_detection_ranges.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -304,7 +304,7 @@ "file name": "roche_cedex_bioht_v5_multiple_detection_ranges.txt", "UNC path": "tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v5_multiple_detection_ranges.txt", "ASM converter name": "allotropy_roche_cedex_bioht", - "ASM converter version": "0.1.105", + "ASM converter version": "0.1.118", "software name": "CEDEX BIO HT", "software version": "5.0.0.1206 (1206.0)" }, diff --git a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v7_example_01.json b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v7_example_01.json index bd9c947e2..e10768c0f 100644 --- a/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v7_example_01.json +++ b/tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v7_example_01.json @@ -1,5 +1,5 @@ { - "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2024/09/solution-analyzer.manifest", + "$asm.manifest": "http://purl.allotrope.org/manifests/solution-analyzer/REC/2026/03/solution-analyzer.manifest", "solution analyzer aggregate document": { "solution analyzer document": [ { @@ -826,7 +826,7 @@ "file name": "roche_cedex_bioht_v7_example_01.txt", "UNC path": "tests/parsers/roche_cedex_bioht/testdata/roche_cedex_bioht_v7_example_01.txt", "ASM converter name": "allotropy_roche_cedex_bioht", - "ASM converter version": "0.1.111", + "ASM converter version": "0.1.118", "software name": "CEDEX BIO HT", "software version": "7.0.0.2410 (2410)" },