@qudtlib/core
Version:
Data model for QUDTLib
53 lines (35 loc) • 2.95 kB
Markdown
# QUDTLib: JS Unit Conversion Library based on QUDT
Package of [qudtlib-js](https://github.com/qudtlib/qudtlib-js)
[Changelog](https://github.com/qudtlib/qudtlib-js/blob/main/CHANGELOG.md)
Provides unit conversion and related functionality for Javascript (Typescript).
Based on the excellent [QUDT ontology](https://qudt.org), available in
a js package without any RDF manipulation needed.
This package is a port of [qudtlib-java](https://github.com/qudtlib/qudtlib-java/). The major version of this package is the same as that of `qudtlib-java`.
This package offers the core functionality, but defines no units/quantitykinds/prefixes. It is meant to be
imported and re-exported by packages providing such data. At the time of this writing, there is only one package
that provides units, ` /allunits`.
Most users will want to use ` /allunits` (which re-exports everything in this package).
## Usage
`Qudt` is your friend. All functionality is accessed through static methods of that class. You can explore the API from that starting point.
The main Model classes are:
Unit: encapsulates IRI, label, dimension vector, multiplier/offset, factor units (if any). Descriptions are omitted (create an issue if you want them.)
QuantityKind: IRI, label, applicable units, broader quantity kinds
QuantityValue: value and unit.
Values are always Decimal (from [Decimal.js](https://mikemcl.github.io/decimal.js/)) and there are no convenience methods allowing you to provide other numeric types. This is intentiaonal so as not to mask any conversion problems. You'll be fine. When you need a value, use `new Decimal(number|string)`.
All units, quantityKinds and prefixes are avalable as constants (exported by the package providing the units, such as ` /allunits`):
Units: all units, such as Units.KiloM__PER__SEC
QuantityKinds:: all quantityKinds, such as QuantityKinds.BloodGlucoseLevel
Prefixes: all prefixes, such as Prefixes.Atto
The functionality comprises:
Qudt.convert(...): Convert a value
Qudt.scaleUnit(...): Scale a unit (e.g., make KiloM from M and kilo)
Qudt.unscaleUnit(..): Unscale a unit:
Qudt.unit(...): Get Unit by IRI
Qudt.quantityKind(...): Get QuantityKind by IRI
Qudt.unitFromLocalName(...): Get Unit by local name (i.e., last part of IRI)
Qudt.quantityKindFromLocalName(...): Get QuantityKind by local name (i.e., last part of IRI)
Qudt.derivedUnitsFrom...(...): Get Units by 'factor units', e.g. find N for factors m, kg, and s^-2. Different matching modes available for broader or narrower matching.
Qudt.unitFromLabel(...): Get Unit by label
## Acknowledgments
This project has been developed at the [Research Studio Smart Application Technologies](https://sat.researchstudio.at) in the project ‘BIM-Interoperables Merkmalservice’, funded by the
Austrian Research Promotion Agency and Österreichische Bautechnik Veranstaltungs GmbH.