@itwin/rpcinterface-full-stack-tests 5.14.0-dev.20 → 5.14.0-dev.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -48405,7 +48405,7 @@ var QueryParamType;
|
|
|
48405
48405
|
* @see
|
|
48406
48406
|
* - [ECSQL Parameters]($docs/learning/ECSQL.md#ecsql-parameters)
|
|
48407
48407
|
* - [ECSQL Parameter Types]($docs/learning/ECSQLParameterTypes)
|
|
48408
|
-
* - [ECSQL Code Examples]($docs/learning/
|
|
48408
|
+
* - [ECSQL Code Examples]($docs/learning/ECSQLCodeExamples#parameter-bindings)
|
|
48409
48409
|
*
|
|
48410
48410
|
* @public
|
|
48411
48411
|
*/
|
|
@@ -50765,7 +50765,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
50765
50765
|
* There are three primary ways to interact with and read the results:
|
|
50766
50766
|
* - Stream them using ECSqlReader as an asynchronous iterator.
|
|
50767
50767
|
* - Iterator over them manually using [[ECSqlReader.step]].
|
|
50768
|
-
* - Capture all of the results at once in an array using [[
|
|
50768
|
+
* - Capture all of the results at once in an array using [[ECSqlReader.toArray]].
|
|
50769
50769
|
*
|
|
50770
50770
|
* @see
|
|
50771
50771
|
* - [ECSQL Overview]($docs/learning/backend/ExecutingECSQL)
|
|
@@ -50807,7 +50807,7 @@ class ECSqlReader extends _ECSqlReaderBase__WEBPACK_IMPORTED_MODULE_1__.ECSqlRea
|
|
|
50807
50807
|
this.reset(options);
|
|
50808
50808
|
}
|
|
50809
50809
|
/**
|
|
50810
|
-
* @deprecated in 5.6 - will not be removed until after 2027-04-02.
|
|
50810
|
+
* @deprecated in 5.6 - will not be removed until after 2027-04-02. Should not be used. Will be made private in a future release.
|
|
50811
50811
|
*/
|
|
50812
50812
|
setParams(param) {
|
|
50813
50813
|
if (this._lockArgs) {
|
|
@@ -50816,7 +50816,7 @@ class ECSqlReader extends _ECSqlReaderBase__WEBPACK_IMPORTED_MODULE_1__.ECSqlRea
|
|
|
50816
50816
|
this._param = param.serialize();
|
|
50817
50817
|
}
|
|
50818
50818
|
/**
|
|
50819
|
-
* @deprecated in 5.6 - will not be removed until after 2027-04-02.
|
|
50819
|
+
* @deprecated in 5.6 - will not be removed until after 2027-04-02. Should not be used. Will be made private in a future release.
|
|
50820
50820
|
*/
|
|
50821
50821
|
reset(options) {
|
|
50822
50822
|
if (options) {
|
|
@@ -50840,7 +50840,7 @@ class ECSqlReader extends _ECSqlReaderBase__WEBPACK_IMPORTED_MODULE_1__.ECSqlRea
|
|
|
50840
50840
|
}
|
|
50841
50841
|
/**
|
|
50842
50842
|
* Clear all bindings.
|
|
50843
|
-
* @deprecated in 5.6 - will not be removed until after 2027-04-02.
|
|
50843
|
+
* @deprecated in 5.6 - will not be removed until after 2027-04-02. Should not be used. Will be made private in a future release.
|
|
50844
50844
|
*/
|
|
50845
50845
|
resetBindings() {
|
|
50846
50846
|
this._param = new _ConcurrentQuery__WEBPACK_IMPORTED_MODULE_0__.QueryBinder().serialize();
|
|
@@ -85985,9 +85985,17 @@ class ECName {
|
|
|
85985
85985
|
}
|
|
85986
85986
|
return new ECName(output);
|
|
85987
85987
|
}
|
|
85988
|
+
/** Decode EC name escape sequences without requiring a valid EC identifier.
|
|
85989
|
+
* @internal
|
|
85990
|
+
*/
|
|
85991
|
+
static decode(name) {
|
|
85992
|
+
if (!name.includes("__x"))
|
|
85993
|
+
return name;
|
|
85994
|
+
return name.replace(ecNameReplacerRegex, (_match, hex) => String.fromCharCode(Number.parseInt(hex, 16)));
|
|
85995
|
+
}
|
|
85988
85996
|
/** Decode this ECName, replacing encoded special characters with the characters they encode. */
|
|
85989
85997
|
decode() {
|
|
85990
|
-
return this.name
|
|
85998
|
+
return ECName.decode(this.name);
|
|
85991
85999
|
}
|
|
85992
86000
|
}
|
|
85993
86001
|
|
|
@@ -86676,48 +86684,79 @@ class FormatSetFormatsProvider {
|
|
|
86676
86684
|
this._fallbackProvider = undefined;
|
|
86677
86685
|
}
|
|
86678
86686
|
/**
|
|
86679
|
-
* Retrieves a format definition
|
|
86680
|
-
* If the format is a string reference to another format, it resolves the reference and returns the FormatDefinition.
|
|
86687
|
+
* Retrieves a format definition from the format set, resolving string references and consulting the fallback provider when needed.
|
|
86681
86688
|
*/
|
|
86682
|
-
async getFormat(input, system) {
|
|
86683
|
-
|
|
86684
|
-
|
|
86685
|
-
|
|
86689
|
+
async getFormat(input, system, context) {
|
|
86690
|
+
const lookupContext = extendProviderContext(context, this);
|
|
86691
|
+
if (!lookupContext)
|
|
86692
|
+
return undefined;
|
|
86693
|
+
const name = normalizeFormatName(input);
|
|
86686
86694
|
const format = this._formatSet.formats[name];
|
|
86687
86695
|
if (format !== undefined) {
|
|
86688
|
-
|
|
86689
|
-
|
|
86690
|
-
return this.resolveReference(format, undefined, system);
|
|
86691
|
-
}
|
|
86696
|
+
if (typeof format === "string")
|
|
86697
|
+
return this.resolveReference(format, new Set(), system, lookupContext);
|
|
86692
86698
|
return format;
|
|
86693
86699
|
}
|
|
86694
|
-
|
|
86695
|
-
|
|
86696
|
-
|
|
86700
|
+
return this.getFormatFromFallback(name, system, lookupContext);
|
|
86701
|
+
}
|
|
86702
|
+
async getFormatFromFallback(name, system, context) {
|
|
86703
|
+
const fallbackProvider = this._fallbackProvider;
|
|
86704
|
+
if (!fallbackProvider)
|
|
86705
|
+
return undefined;
|
|
86706
|
+
return fallbackProvider.getFormat(name, system, context);
|
|
86707
|
+
}
|
|
86708
|
+
/**
|
|
86709
|
+
* Retrieves a format definition from the format set without awaiting a provider. String references are resolved
|
|
86710
|
+
* locally; a fallback is used only when it implements `SyncFormatsProvider`.
|
|
86711
|
+
*/
|
|
86712
|
+
getFormatSync(input, system, context) {
|
|
86713
|
+
const lookupContext = extendProviderContext(context, this);
|
|
86714
|
+
if (!lookupContext)
|
|
86715
|
+
return undefined;
|
|
86716
|
+
const name = normalizeFormatName(input);
|
|
86717
|
+
const format = this._formatSet.formats[name];
|
|
86718
|
+
if (format !== undefined) {
|
|
86719
|
+
if (typeof format === "string")
|
|
86720
|
+
return this.resolveReferenceSync(format, new Set(), system, lookupContext);
|
|
86721
|
+
return format;
|
|
86722
|
+
}
|
|
86723
|
+
return this.getFormatSyncFromFallback(name, system, lookupContext);
|
|
86724
|
+
}
|
|
86725
|
+
getFormatSyncFromFallback(name, system, context) {
|
|
86726
|
+
const fallbackProvider = this._fallbackProvider;
|
|
86727
|
+
return typeof fallbackProvider?.getFormatSync === "function" ? fallbackProvider.getFormatSync(name, system, context) : undefined;
|
|
86697
86728
|
}
|
|
86698
86729
|
/**
|
|
86699
86730
|
* Resolves a string reference to its FormatDefinition, following chains of references.
|
|
86700
86731
|
* @param reference The string reference to resolve
|
|
86701
86732
|
* @param visited Set of visited references to detect circular references
|
|
86702
86733
|
* @param system Optional unit system override
|
|
86734
|
+
* @param context Lookup context to forward to the fallback provider
|
|
86703
86735
|
*/
|
|
86704
|
-
async resolveReference(reference, visited
|
|
86736
|
+
async resolveReference(reference, visited, system, context) {
|
|
86705
86737
|
// Prevent infinite loops from circular references
|
|
86706
86738
|
if (visited.has(reference)) {
|
|
86707
86739
|
return undefined;
|
|
86708
86740
|
}
|
|
86709
86741
|
visited.add(reference);
|
|
86710
86742
|
const format = this._formatSet.formats[reference];
|
|
86711
|
-
if (format === undefined)
|
|
86712
|
-
|
|
86713
|
-
|
|
86714
|
-
|
|
86743
|
+
if (format === undefined)
|
|
86744
|
+
return this.getFormatFromFallback(reference, system, context);
|
|
86745
|
+
if (typeof format === "string")
|
|
86746
|
+
return this.resolveReference(format, visited, system, context);
|
|
86747
|
+
return format;
|
|
86748
|
+
}
|
|
86749
|
+
resolveReferenceSync(reference, visited, system, context) {
|
|
86750
|
+
// Prevent infinite loops from circular references
|
|
86751
|
+
if (visited.has(reference)) {
|
|
86715
86752
|
return undefined;
|
|
86716
86753
|
}
|
|
86717
|
-
|
|
86718
|
-
|
|
86719
|
-
|
|
86720
|
-
|
|
86754
|
+
visited.add(reference);
|
|
86755
|
+
const format = this._formatSet.formats[reference];
|
|
86756
|
+
if (format === undefined)
|
|
86757
|
+
return this.getFormatSyncFromFallback(reference, system, context);
|
|
86758
|
+
if (typeof format === "string")
|
|
86759
|
+
return this.resolveReferenceSync(format, visited, system, context);
|
|
86721
86760
|
return format;
|
|
86722
86761
|
}
|
|
86723
86762
|
/**
|
|
@@ -86753,6 +86792,18 @@ class FormatSetFormatsProvider {
|
|
|
86753
86792
|
return referencingFormats;
|
|
86754
86793
|
}
|
|
86755
86794
|
}
|
|
86795
|
+
function extendProviderContext(context, provider) {
|
|
86796
|
+
const providerChain = new Set(context?.providerChain);
|
|
86797
|
+
if (providerChain.has(provider))
|
|
86798
|
+
return undefined;
|
|
86799
|
+
providerChain.add(provider);
|
|
86800
|
+
return { providerChain };
|
|
86801
|
+
}
|
|
86802
|
+
function normalizeFormatName(input) {
|
|
86803
|
+
// Convert node-addon names from `schemaName:schemaItemName` to the dot-separated key used by FormatSet.
|
|
86804
|
+
const [schemaName, itemName] = _Metadata_SchemaItem__WEBPACK_IMPORTED_MODULE_1__.SchemaItem.parseFullName(input);
|
|
86805
|
+
return schemaName === "" ? itemName : `${schemaName}.${itemName}`;
|
|
86806
|
+
}
|
|
86756
86807
|
|
|
86757
86808
|
|
|
86758
86809
|
/***/ },
|
|
@@ -86770,11 +86821,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
86770
86821
|
/* harmony export */ });
|
|
86771
86822
|
/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Context */ "../../core/ecschema-metadata/lib/esm/Context.js");
|
|
86772
86823
|
/* harmony import */ var _SchemaKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SchemaKey */ "../../core/ecschema-metadata/lib/esm/SchemaKey.js");
|
|
86773
|
-
/* harmony import */ var
|
|
86774
|
-
/* harmony import */ var
|
|
86775
|
-
/* harmony import */ var
|
|
86776
|
-
/* harmony import */ var
|
|
86824
|
+
/* harmony import */ var _ECObjects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ECObjects */ "../../core/ecschema-metadata/lib/esm/ECObjects.js");
|
|
86825
|
+
/* harmony import */ var _Exception__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Exception */ "../../core/ecschema-metadata/lib/esm/Exception.js");
|
|
86826
|
+
/* harmony import */ var _Metadata_SchemaItem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Metadata/SchemaItem */ "../../core/ecschema-metadata/lib/esm/Metadata/SchemaItem.js");
|
|
86827
|
+
/* harmony import */ var _Metadata_Format__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Metadata/Format */ "../../core/ecschema-metadata/lib/esm/Metadata/Format.js");
|
|
86777
86828
|
/* harmony import */ var _Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Metadata/OverrideFormat */ "../../core/ecschema-metadata/lib/esm/Metadata/OverrideFormat.js");
|
|
86829
|
+
/* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
|
|
86830
|
+
/* harmony import */ var _Metadata_KindOfQuantity__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Metadata/KindOfQuantity */ "../../core/ecschema-metadata/lib/esm/Metadata/KindOfQuantity.js");
|
|
86831
|
+
/* harmony import */ var _Metadata_Unit__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Metadata/Unit */ "../../core/ecschema-metadata/lib/esm/Metadata/Unit.js");
|
|
86832
|
+
/* harmony import */ var _Metadata_InvertedUnit__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Metadata/InvertedUnit */ "../../core/ecschema-metadata/lib/esm/Metadata/InvertedUnit.js");
|
|
86833
|
+
/* harmony import */ var _Metadata_UnitSystem__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Metadata/UnitSystem */ "../../core/ecschema-metadata/lib/esm/Metadata/UnitSystem.js");
|
|
86778
86834
|
/*---------------------------------------------------------------------------------------------
|
|
86779
86835
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
86780
86836
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -86789,6 +86845,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
86789
86845
|
|
|
86790
86846
|
|
|
86791
86847
|
|
|
86848
|
+
|
|
86849
|
+
|
|
86850
|
+
|
|
86851
|
+
|
|
86852
|
+
|
|
86792
86853
|
const loggerCategory = "SchemaFormatsProvider";
|
|
86793
86854
|
/**
|
|
86794
86855
|
* Provides default formats and kind of quantities from a given SchemaContext or SchemaLocater.
|
|
@@ -86798,7 +86859,7 @@ class SchemaFormatsProvider {
|
|
|
86798
86859
|
_context;
|
|
86799
86860
|
_unitSystem;
|
|
86800
86861
|
_formatsRetrieved = new Set();
|
|
86801
|
-
onFormatsChanged = new
|
|
86862
|
+
onFormatsChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_7__.BeEvent();
|
|
86802
86863
|
/**
|
|
86803
86864
|
*
|
|
86804
86865
|
* @param contextOrLocater The SchemaContext or a different ISchemaLocater implementation used to retrieve the schema. The SchemaContext
|
|
@@ -86845,71 +86906,58 @@ class SchemaFormatsProvider {
|
|
|
86845
86906
|
async getKindOfQuantityFormatFromSchema(itemKey, systemOverride) {
|
|
86846
86907
|
let kindOfQuantity;
|
|
86847
86908
|
try {
|
|
86848
|
-
kindOfQuantity = await this._context.getSchemaItem(itemKey,
|
|
86909
|
+
kindOfQuantity = await this._context.getSchemaItem(itemKey, _Metadata_KindOfQuantity__WEBPACK_IMPORTED_MODULE_8__.KindOfQuantity);
|
|
86849
86910
|
}
|
|
86850
86911
|
catch {
|
|
86851
|
-
|
|
86912
|
+
_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_7__.Logger.logError(loggerCategory, `Failed to find KindOfQuantity ${itemKey.fullName}`);
|
|
86852
86913
|
return undefined;
|
|
86853
86914
|
}
|
|
86854
|
-
if (!kindOfQuantity)
|
|
86915
|
+
if (!kindOfQuantity)
|
|
86855
86916
|
return undefined;
|
|
86856
|
-
|
|
86857
|
-
|
|
86858
|
-
|
|
86859
|
-
|
|
86860
|
-
|
|
86861
|
-
|
|
86862
|
-
|
|
86863
|
-
|
|
86864
|
-
|
|
86865
|
-
|
|
86866
|
-
|
|
86867
|
-
|
|
86868
|
-
|
|
86869
|
-
|
|
86870
|
-
|
|
86871
|
-
|
|
86872
|
-
const props = (0,_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.getFormatProps)(format);
|
|
86873
|
-
return this.convertToFormatDefinition(props, kindOfQuantity);
|
|
86874
|
-
}
|
|
86875
|
-
}
|
|
86876
|
-
}
|
|
86877
|
-
// If no matching presentation format was found, fall back to persistence unit format
|
|
86878
|
-
// only if it matches the requested unit system.
|
|
86879
|
-
const persistenceUnit = await kindOfQuantity.persistenceUnit;
|
|
86880
|
-
const persistenceUnitSystem = await persistenceUnit?.unitSystem;
|
|
86881
|
-
if (persistenceUnit && persistenceUnitSystem && unitSystemMatchers.some((matcher) => matcher(persistenceUnitSystem))) {
|
|
86882
|
-
this._formatsRetrieved.add(itemKey.fullName);
|
|
86883
|
-
const props = getPersistenceUnitFormatProps(persistenceUnit);
|
|
86884
|
-
return this.convertToFormatDefinition(props, kindOfQuantity);
|
|
86917
|
+
const props = await this.getKindOfQuantityFormatProps(kindOfQuantity, systemOverride);
|
|
86918
|
+
if (!props)
|
|
86919
|
+
return undefined;
|
|
86920
|
+
this._formatsRetrieved.add(itemKey.fullName);
|
|
86921
|
+
return this.convertToFormatDefinition(props, kindOfQuantity);
|
|
86922
|
+
}
|
|
86923
|
+
async getKindOfQuantityFormatProps(kindOfQuantity, systemOverride) {
|
|
86924
|
+
// Cache each unit once per lookup because matchers may revisit it. Lazy formats already resolve only once.
|
|
86925
|
+
const unitCache = new Map();
|
|
86926
|
+
const getUnit = (unit) => {
|
|
86927
|
+
if (!unit)
|
|
86928
|
+
return undefined;
|
|
86929
|
+
let resolved = unitCache.get(unit);
|
|
86930
|
+
if (!resolved) {
|
|
86931
|
+
resolved = resolveUnitAsync(unit);
|
|
86932
|
+
unitCache.set(unit, resolved);
|
|
86885
86933
|
}
|
|
86886
|
-
|
|
86887
|
-
|
|
86888
|
-
|
|
86889
|
-
|
|
86890
|
-
|
|
86891
|
-
|
|
86892
|
-
|
|
86893
|
-
|
|
86934
|
+
return resolved;
|
|
86935
|
+
};
|
|
86936
|
+
for (const candidate of getFormatSelectionCandidates(kindOfQuantity, systemOverride ?? this._unitSystem)) {
|
|
86937
|
+
const format = candidate.type === "persistence" ? undefined : await candidate.format;
|
|
86938
|
+
const unit = candidate.type === "default" ? undefined : await getUnit(candidate.type === "persistence" ? candidate.unit : format?.units?.[0]?.[0]);
|
|
86939
|
+
const props = getFormatPropsForCandidate(candidate, format, unit);
|
|
86940
|
+
if (props)
|
|
86941
|
+
return props;
|
|
86894
86942
|
}
|
|
86895
86943
|
return undefined;
|
|
86896
86944
|
}
|
|
86897
86945
|
/**
|
|
86898
|
-
* Retrieves a
|
|
86899
|
-
*
|
|
86900
|
-
*
|
|
86946
|
+
* Retrieves a format definition from the schema context.
|
|
86947
|
+
*
|
|
86948
|
+
* For a KindOfQuantity with a unit system, matching presentation formats are checked first, followed by the persistence unit and then the default presentation format. Without a unit system, the default presentation format is used.
|
|
86901
86949
|
* @param name The full name of the Format or KindOfQuantity.
|
|
86902
|
-
* @
|
|
86950
|
+
* @param system Optional unit system used to select a KindOfQuantity format.
|
|
86903
86951
|
*/
|
|
86904
86952
|
async getFormat(name, system) {
|
|
86905
|
-
const [schemaName, schemaItemName] =
|
|
86953
|
+
const [schemaName, schemaItemName] = _Metadata_SchemaItem__WEBPACK_IMPORTED_MODULE_4__.SchemaItem.parseFullName(name);
|
|
86906
86954
|
const schemaKey = new _SchemaKey__WEBPACK_IMPORTED_MODULE_1__.SchemaKey(schemaName);
|
|
86907
86955
|
let schema;
|
|
86908
86956
|
try {
|
|
86909
86957
|
schema = await this._context.getSchema(schemaKey);
|
|
86910
86958
|
}
|
|
86911
86959
|
catch {
|
|
86912
|
-
|
|
86960
|
+
_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_7__.Logger.logError(loggerCategory, `Failed to find schema ${schemaName}`);
|
|
86913
86961
|
return undefined;
|
|
86914
86962
|
}
|
|
86915
86963
|
if (!schema) {
|
|
@@ -86919,10 +86967,10 @@ class SchemaFormatsProvider {
|
|
|
86919
86967
|
if (schema.name === "Formats") {
|
|
86920
86968
|
let format;
|
|
86921
86969
|
try {
|
|
86922
|
-
format = await this._context.getSchemaItem(itemKey,
|
|
86970
|
+
format = await this._context.getSchemaItem(itemKey, _Metadata_Format__WEBPACK_IMPORTED_MODULE_5__.Format);
|
|
86923
86971
|
}
|
|
86924
86972
|
catch {
|
|
86925
|
-
|
|
86973
|
+
_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_7__.Logger.logError(loggerCategory, `Failed to find Format ${itemKey.fullName}`);
|
|
86926
86974
|
return undefined;
|
|
86927
86975
|
}
|
|
86928
86976
|
if (!format) {
|
|
@@ -86932,11 +86980,138 @@ class SchemaFormatsProvider {
|
|
|
86932
86980
|
}
|
|
86933
86981
|
return this.getKindOfQuantityFormatFromSchema(itemKey, system);
|
|
86934
86982
|
}
|
|
86983
|
+
/**
|
|
86984
|
+
* Retrieves a format definition using only schema metadata already loaded in the context.
|
|
86985
|
+
* It follows the same selection order as `getFormat` but never asks a locater to load a schema. Returns `undefined` when required metadata is not cached.
|
|
86986
|
+
* Unlike `getFormat`, which logs lookup errors and returns `undefined`, this method treats only a schema that is still loading as a cache miss and rethrows other errors.
|
|
86987
|
+
*/
|
|
86988
|
+
getFormatSync(name, system) {
|
|
86989
|
+
const [schemaName, schemaItemName] = _Metadata_SchemaItem__WEBPACK_IMPORTED_MODULE_4__.SchemaItem.parseFullName(name);
|
|
86990
|
+
const schemaKey = new _SchemaKey__WEBPACK_IMPORTED_MODULE_1__.SchemaKey(schemaName);
|
|
86991
|
+
const schema = getCachedSchemaSync(this._context, schemaKey, _ECObjects__WEBPACK_IMPORTED_MODULE_2__.SchemaMatchType.Latest);
|
|
86992
|
+
if (!schema)
|
|
86993
|
+
return undefined;
|
|
86994
|
+
const itemKey = new _SchemaKey__WEBPACK_IMPORTED_MODULE_1__.SchemaItemKey(schemaItemName, schema.schemaKey);
|
|
86995
|
+
if (schema.name === "Formats") {
|
|
86996
|
+
const format = schema.getItemSync(itemKey.name, _Metadata_Format__WEBPACK_IMPORTED_MODULE_5__.Format);
|
|
86997
|
+
return format?.toJSON(true);
|
|
86998
|
+
}
|
|
86999
|
+
return this.getKindOfQuantityFormatFromSchemaSync(itemKey, system);
|
|
87000
|
+
}
|
|
87001
|
+
getKindOfQuantityFormatFromSchemaSync(itemKey, systemOverride) {
|
|
87002
|
+
const schema = getCachedSchemaSync(this._context, itemKey.schemaKey, _ECObjects__WEBPACK_IMPORTED_MODULE_2__.SchemaMatchType.Latest);
|
|
87003
|
+
const kindOfQuantity = schema?.getItemSync(itemKey.name, _Metadata_KindOfQuantity__WEBPACK_IMPORTED_MODULE_8__.KindOfQuantity);
|
|
87004
|
+
if (!kindOfQuantity)
|
|
87005
|
+
return undefined;
|
|
87006
|
+
const props = this.getKindOfQuantityFormatPropsSync(kindOfQuantity, systemOverride);
|
|
87007
|
+
if (!props)
|
|
87008
|
+
return undefined;
|
|
87009
|
+
this._formatsRetrieved.add(itemKey.fullName);
|
|
87010
|
+
return this.convertToFormatDefinition(props, kindOfQuantity);
|
|
87011
|
+
}
|
|
87012
|
+
getKindOfQuantityFormatPropsSync(kindOfQuantity, systemOverride) {
|
|
87013
|
+
const formatCache = new Map();
|
|
87014
|
+
const unitCache = new Map();
|
|
87015
|
+
const getFormat = (format) => {
|
|
87016
|
+
if (!formatCache.has(format))
|
|
87017
|
+
formatCache.set(format, resolveFormatSync(this._context, format));
|
|
87018
|
+
return formatCache.get(format);
|
|
87019
|
+
};
|
|
87020
|
+
const getUnit = (unit) => {
|
|
87021
|
+
if (!unit)
|
|
87022
|
+
return undefined;
|
|
87023
|
+
if (!unitCache.has(unit))
|
|
87024
|
+
unitCache.set(unit, resolveUnitSync(this._context, unit));
|
|
87025
|
+
return unitCache.get(unit);
|
|
87026
|
+
};
|
|
87027
|
+
// A reference that cannot be resolved means metadata is not cached. Stop there: async lookup would resolve it and never reach a later candidate.
|
|
87028
|
+
for (const candidate of getFormatSelectionCandidates(kindOfQuantity, systemOverride ?? this._unitSystem)) {
|
|
87029
|
+
const format = candidate.type === "persistence" ? undefined : getFormat(candidate.format);
|
|
87030
|
+
if (candidate.type !== "persistence" && !format)
|
|
87031
|
+
return undefined;
|
|
87032
|
+
const unitReference = candidate.type === "presentation" ? format?.units?.[0]?.[0] : candidate.type === "persistence" ? candidate.unit : undefined;
|
|
87033
|
+
const unit = getUnit(unitReference);
|
|
87034
|
+
if (unitReference && !unit)
|
|
87035
|
+
return undefined;
|
|
87036
|
+
const props = getFormatPropsForCandidate(candidate, format, unit);
|
|
87037
|
+
if (props)
|
|
87038
|
+
return props;
|
|
87039
|
+
}
|
|
87040
|
+
return undefined;
|
|
87041
|
+
}
|
|
87042
|
+
}
|
|
87043
|
+
/**
|
|
87044
|
+
* Produces candidates in lookup order: presentation formats by unit-system priority, then the persistence unit,
|
|
87045
|
+
* then the default presentation format. The generator defers each candidate until the lookup reaches it.
|
|
87046
|
+
*/
|
|
87047
|
+
function* getFormatSelectionCandidates(kindOfQuantity, effectiveSystem) {
|
|
87048
|
+
if (effectiveSystem) {
|
|
87049
|
+
const matchers = getUnitSystemGroupMatchers(effectiveSystem);
|
|
87050
|
+
for (const matcher of matchers) {
|
|
87051
|
+
for (const format of kindOfQuantity.presentationFormats)
|
|
87052
|
+
yield { type: "presentation", format, matcher };
|
|
87053
|
+
}
|
|
87054
|
+
yield { type: "persistence", unit: kindOfQuantity.persistenceUnit, matchers };
|
|
87055
|
+
}
|
|
87056
|
+
const defaultFormat = kindOfQuantity.defaultPresentationFormat;
|
|
87057
|
+
if (defaultFormat)
|
|
87058
|
+
yield { type: "default", format: defaultFormat };
|
|
87059
|
+
}
|
|
87060
|
+
function getFormatPropsForCandidate(candidate, format, unit) {
|
|
87061
|
+
const unitSystemName = unit?.unitSystemName;
|
|
87062
|
+
switch (candidate.type) {
|
|
87063
|
+
case "presentation":
|
|
87064
|
+
return format && unitSystemName && candidate.matcher(unitSystemName) ? (0,_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.getFormatProps)(format) : undefined;
|
|
87065
|
+
case "persistence":
|
|
87066
|
+
return unit && unitSystemName && candidate.matchers.some((matcher) => matcher(unitSystemName)) ? getPersistenceUnitFormatProps(unit.unit) : undefined;
|
|
87067
|
+
case "default":
|
|
87068
|
+
return format ? (0,_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.getFormatProps)(format) : undefined;
|
|
87069
|
+
}
|
|
87070
|
+
}
|
|
87071
|
+
function resolveFormatSync(context, format) {
|
|
87072
|
+
if (_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.OverrideFormat.isOverrideFormat(format))
|
|
87073
|
+
return format;
|
|
87074
|
+
const schema = getCachedSchemaSync(context, format.schemaKey, _ECObjects__WEBPACK_IMPORTED_MODULE_2__.SchemaMatchType.Exact);
|
|
87075
|
+
return schema?.getItemSync(format.name, _Metadata_Format__WEBPACK_IMPORTED_MODULE_5__.Format);
|
|
87076
|
+
}
|
|
87077
|
+
async function resolveUnitAsync(unit) {
|
|
87078
|
+
const resolvedUnit = await unit;
|
|
87079
|
+
const unitSystem = await resolvedUnit.unitSystem;
|
|
87080
|
+
return { unit: resolvedUnit, unitSystemName: unitSystem?.name };
|
|
87081
|
+
}
|
|
87082
|
+
function resolveUnitSync(context, unit) {
|
|
87083
|
+
const resolvedUnit = getLoadedUnitSync(context, unit);
|
|
87084
|
+
if (!resolvedUnit)
|
|
87085
|
+
return undefined;
|
|
87086
|
+
const unitSystem = resolvedUnit.unitSystem;
|
|
87087
|
+
if (!unitSystem)
|
|
87088
|
+
return { unit: resolvedUnit };
|
|
87089
|
+
const unitSystemName = getCachedSchemaSync(context, unitSystem.schemaKey, _ECObjects__WEBPACK_IMPORTED_MODULE_2__.SchemaMatchType.Exact)?.getItemSync(unitSystem.name, _Metadata_UnitSystem__WEBPACK_IMPORTED_MODULE_11__.UnitSystem)?.name;
|
|
87090
|
+
return unitSystemName ? { unit: resolvedUnit, unitSystemName } : undefined;
|
|
87091
|
+
}
|
|
87092
|
+
/**
|
|
87093
|
+
* Name-only lookups use `SchemaMatchType.Latest`. References use `SchemaMatchType.Exact` because they carry the version
|
|
87094
|
+
* the loaded item resolved; matching by name alone could return an item from a different cached version.
|
|
87095
|
+
*/
|
|
87096
|
+
function getCachedSchemaSync(context, schemaKey, matchType) {
|
|
87097
|
+
try {
|
|
87098
|
+
return context.getCachedSchemaSync(schemaKey, matchType);
|
|
87099
|
+
}
|
|
87100
|
+
catch (error) {
|
|
87101
|
+
if (error instanceof _Exception__WEBPACK_IMPORTED_MODULE_3__.ECSchemaError && error.errorNumber === _Exception__WEBPACK_IMPORTED_MODULE_3__.ECSchemaStatus.UnableToLoadSchema)
|
|
87102
|
+
return undefined;
|
|
87103
|
+
throw error;
|
|
87104
|
+
}
|
|
87105
|
+
}
|
|
87106
|
+
function getLoadedUnitSync(context, unit) {
|
|
87107
|
+
const schema = getCachedSchemaSync(context, unit.schemaKey, _ECObjects__WEBPACK_IMPORTED_MODULE_2__.SchemaMatchType.Exact);
|
|
87108
|
+
const item = schema?.getItemSync(unit.name);
|
|
87109
|
+
return _Metadata_Unit__WEBPACK_IMPORTED_MODULE_9__.Unit.isUnit(item) || _Metadata_InvertedUnit__WEBPACK_IMPORTED_MODULE_10__.InvertedUnit.isInvertedUnit(item) ? item : undefined;
|
|
86935
87110
|
}
|
|
86936
87111
|
function getUnitSystemGroupMatchers(groupKey) {
|
|
86937
87112
|
function createMatcher(name) {
|
|
86938
87113
|
const names = Array.isArray(name) ? name : [name];
|
|
86939
|
-
return (
|
|
87114
|
+
return (unitSystemName) => names.some((n) => n === unitSystemName.toUpperCase());
|
|
86940
87115
|
}
|
|
86941
87116
|
switch (groupKey) {
|
|
86942
87117
|
case "imperial":
|
|
@@ -95868,15 +96043,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
95868
96043
|
* @module Schema
|
|
95869
96044
|
*/
|
|
95870
96045
|
/** The reference graph of every schema in one iModel - names, versions and reference edges, without
|
|
95871
|
-
*
|
|
95872
|
-
*
|
|
96046
|
+
* schema items. A {@link SchemaViewDataProvider} builds it from ECDbMeta rows via
|
|
96047
|
+
* {@link SchemaManifest.fromRows}. It includes schemas excluded from SchemaView's binary data.
|
|
95873
96048
|
*
|
|
95874
|
-
*
|
|
95875
|
-
* The
|
|
95876
|
-
*
|
|
95877
|
-
* @
|
|
95878
|
-
* and filters the result of {@link SchemaManifest.getSchemaClosure} itself.
|
|
95879
|
-
* @internal
|
|
96049
|
+
* {@link SchemaViewManager} uses this graph to determine which schemas a filtered request needs.
|
|
96050
|
+
* The manifest does not track which schemas are already loaded; the manager filters the result of
|
|
96051
|
+
* {@link SchemaManifest.getSchemaClosure} itself.
|
|
96052
|
+
* @beta
|
|
95880
96053
|
*/
|
|
95881
96054
|
class SchemaManifest {
|
|
95882
96055
|
_entries;
|
|
@@ -95892,7 +96065,7 @@ class SchemaManifest {
|
|
|
95892
96065
|
/** Build a manifest from raw ECDbMeta query rows, so a `SchemaViewDataProvider` only has to run
|
|
95893
96066
|
* the two queries and hand the rows over. Reference rows whose endpoints are unknown or
|
|
95894
96067
|
* self-referential are skipped; that cannot happen for a well-formed iModel.
|
|
95895
|
-
* @
|
|
96068
|
+
* @beta
|
|
95896
96069
|
*/
|
|
95897
96070
|
static fromRows(schemaRows, referenceRows) {
|
|
95898
96071
|
const entries = [];
|
|
@@ -95931,8 +96104,7 @@ class SchemaManifest {
|
|
|
95931
96104
|
return this._byLowerName.get(name.toLowerCase());
|
|
95932
96105
|
}
|
|
95933
96106
|
/** The transitive reference closure of the requested schemas, as a flat, duplicate-free list of
|
|
95934
|
-
* names: the full set
|
|
95935
|
-
* {@link SchemaManifest.sortInDependencyOrder} on the result when a load order is needed.
|
|
96107
|
+
* names: the full set to request in a standalone fragment. The order is unspecified.
|
|
95936
96108
|
* @note Requested names the iModel does not contain are ignored; check
|
|
95937
96109
|
* {@link SchemaManifest.findByName} first to detect them.
|
|
95938
96110
|
*/
|
|
@@ -96003,6 +96175,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
96003
96175
|
/* harmony export */ });
|
|
96004
96176
|
/* harmony import */ var _SchemaViewInterfaces__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SchemaViewInterfaces */ "../../core/ecschema-metadata/lib/esm/SchemaView/SchemaViewInterfaces.js");
|
|
96005
96177
|
/* harmony import */ var _SchemaViewBinaryReader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SchemaViewBinaryReader */ "../../core/ecschema-metadata/lib/esm/SchemaView/SchemaViewBinaryReader.js");
|
|
96178
|
+
/* harmony import */ var _ECName__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ECName */ "../../core/ecschema-metadata/lib/esm/ECName.js");
|
|
96006
96179
|
/*---------------------------------------------------------------------------------------------
|
|
96007
96180
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
96008
96181
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -96012,6 +96185,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
96012
96185
|
*/
|
|
96013
96186
|
|
|
96014
96187
|
|
|
96188
|
+
|
|
96015
96189
|
// Module-local symbol used as the storage key on SchemaView instances. Mirrors the pattern in
|
|
96016
96190
|
// core-backend/src/internal/Symbols.ts (e.g. `_nativeDb` on IModelDb): the data is reachable
|
|
96017
96191
|
// only by code in this module, since the symbol is not exported and not registered globally.
|
|
@@ -96024,8 +96198,9 @@ const _storage = Symbol("SchemaView.storage");
|
|
|
96024
96198
|
* stateless wrappers that hold a reference to this view plus an index. They allocate nothing
|
|
96025
96199
|
* and cache nothing.
|
|
96026
96200
|
*
|
|
96027
|
-
*
|
|
96028
|
-
*
|
|
96201
|
+
* Use {@link SchemaViewManager} to load schemas incrementally into one view, or parse a standalone
|
|
96202
|
+
* binary blob via {@link (SchemaView:class).fromBinary}. Consumers cannot modify the metadata; a manager
|
|
96203
|
+
* can extend its view with additional schemas while previously obtained view objects remain valid.
|
|
96029
96204
|
* @beta
|
|
96030
96205
|
*/
|
|
96031
96206
|
class SchemaView {
|
|
@@ -96110,7 +96285,8 @@ class SchemaView {
|
|
|
96110
96285
|
return idx !== undefined ? new SchemaView.PropertyCategory(this, idx) : undefined;
|
|
96111
96286
|
}
|
|
96112
96287
|
/** Parse a binary blob into a SchemaView. Synchronous.
|
|
96113
|
-
* @param blob - The binary blob from `PRAGMA schema_view
|
|
96288
|
+
* @param blob - The binary blob from `PRAGMA schema_view`, or a standalone `PRAGMA schema_view_fragment`
|
|
96289
|
+
* containing the requested schemas and their references.
|
|
96114
96290
|
* @param schemaToken - Optional cache-invalidation token (schema name+version hash; see `PRAGMA checksum(schema_token)`).
|
|
96115
96291
|
* @beta
|
|
96116
96292
|
*/
|
|
@@ -96315,9 +96491,10 @@ class SchemaView {
|
|
|
96315
96491
|
get ecInstanceId() { return this._data.ecInstanceId; }
|
|
96316
96492
|
get name() { return this._ctx[_storage].strings[this._data.nameStringIdx]; }
|
|
96317
96493
|
get alias() { return this._ctx[_storage].strings[this._data.aliasStringIdx]; }
|
|
96494
|
+
/** Display label, or the decoded name when the label is absent or empty. */
|
|
96318
96495
|
get label() {
|
|
96319
96496
|
const sid = this._data.labelStringIdx;
|
|
96320
|
-
return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;
|
|
96497
|
+
return sid !== 0 ? this._ctx[_storage].strings[sid] : _ECName__WEBPACK_IMPORTED_MODULE_2__.ECName.decode(this.name);
|
|
96321
96498
|
}
|
|
96322
96499
|
get description() {
|
|
96323
96500
|
const sid = this._data.descriptionStringIdx;
|
|
@@ -96411,9 +96588,10 @@ class SchemaView {
|
|
|
96411
96588
|
*/
|
|
96412
96589
|
get ecInstanceId() { return this._data.ecInstanceId; }
|
|
96413
96590
|
get name() { return this._ctx[_storage].strings[this._data.nameStringIdx]; }
|
|
96591
|
+
/** Display label, or the decoded name when the label is absent or empty. */
|
|
96414
96592
|
get label() {
|
|
96415
96593
|
const sid = this._data.labelStringIdx;
|
|
96416
|
-
return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;
|
|
96594
|
+
return sid !== 0 ? this._ctx[_storage].strings[sid] : _ECName__WEBPACK_IMPORTED_MODULE_2__.ECName.decode(this.name);
|
|
96417
96595
|
}
|
|
96418
96596
|
get description() {
|
|
96419
96597
|
const sid = this._data.descriptionStringIdx;
|
|
@@ -96522,7 +96700,8 @@ class SchemaView {
|
|
|
96522
96700
|
return true;
|
|
96523
96701
|
return this._ctx.getTransitiveBases(this.idx).has(targetIdx);
|
|
96524
96702
|
}
|
|
96525
|
-
/** Direct derived classes
|
|
96703
|
+
/** Direct derived classes among the currently loaded schemas. A partial view may omit derived
|
|
96704
|
+
* classes from other schemas. Expensive on first call (builds reverse map across all loaded classes). */
|
|
96526
96705
|
get derivedClasses() {
|
|
96527
96706
|
const map = this._ctx.buildDerivedClassMap();
|
|
96528
96707
|
const indices = map.get(this.idx);
|
|
@@ -96617,11 +96796,11 @@ class SchemaView {
|
|
|
96617
96796
|
*/
|
|
96618
96797
|
get ecInstanceId() { return this._ref.ecInstanceId; }
|
|
96619
96798
|
get name() { return this._ctx[_storage].strings[this._def.nameStringIdx]; }
|
|
96620
|
-
/** Display label
|
|
96799
|
+
/** Display label, or the decoded property name when the label is absent or empty.
|
|
96621
96800
|
* Labels are stored per-reference (not per-definition) because EC allows class overrides. */
|
|
96622
96801
|
get label() {
|
|
96623
96802
|
const labelStringIdx = this._ref.labelStringIdx;
|
|
96624
|
-
return labelStringIdx !== 0 ? this._ctx[_storage].strings[labelStringIdx] : this.name;
|
|
96803
|
+
return labelStringIdx !== 0 ? this._ctx[_storage].strings[labelStringIdx] : _ECName__WEBPACK_IMPORTED_MODULE_2__.ECName.decode(this.name);
|
|
96625
96804
|
}
|
|
96626
96805
|
get description() {
|
|
96627
96806
|
const sid = this._def.descriptionStringIdx;
|
|
@@ -96800,9 +96979,10 @@ class SchemaView {
|
|
|
96800
96979
|
*/
|
|
96801
96980
|
get ecInstanceId() { return this._data.ecInstanceId; }
|
|
96802
96981
|
get name() { return this._ctx[_storage].strings[this._data.nameStringIdx]; }
|
|
96982
|
+
/** Display label, or the decoded name when the label is absent or empty. */
|
|
96803
96983
|
get label() {
|
|
96804
96984
|
const sid = this._data.labelStringIdx;
|
|
96805
|
-
return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;
|
|
96985
|
+
return sid !== 0 ? this._ctx[_storage].strings[sid] : _ECName__WEBPACK_IMPORTED_MODULE_2__.ECName.decode(this.name);
|
|
96806
96986
|
}
|
|
96807
96987
|
get description() {
|
|
96808
96988
|
const sid = this._data.descriptionStringIdx;
|
|
@@ -96857,9 +97037,10 @@ class SchemaView {
|
|
|
96857
97037
|
}
|
|
96858
97038
|
get _data() { return this._ctx[_storage].enumerators[this.idx]; }
|
|
96859
97039
|
get name() { return this._ctx[_storage].strings[this._data.nameStringIdx]; }
|
|
97040
|
+
/** Display label, or the decoded name when the label is absent or empty. */
|
|
96860
97041
|
get label() {
|
|
96861
97042
|
const sid = this._data.labelStringIdx;
|
|
96862
|
-
return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;
|
|
97043
|
+
return sid !== 0 ? this._ctx[_storage].strings[sid] : _ECName__WEBPACK_IMPORTED_MODULE_2__.ECName.decode(this.name);
|
|
96863
97044
|
}
|
|
96864
97045
|
get description() {
|
|
96865
97046
|
const sid = this._data.descriptionStringIdx;
|
|
@@ -96906,9 +97087,10 @@ class SchemaView {
|
|
|
96906
97087
|
*/
|
|
96907
97088
|
get ecInstanceId() { return this._data.ecInstanceId; }
|
|
96908
97089
|
get name() { return this._ctx[_storage].strings[this._data.nameStringIdx]; }
|
|
97090
|
+
/** Display label, or the decoded name when the label is absent or empty. */
|
|
96909
97091
|
get label() {
|
|
96910
97092
|
const sid = this._data.labelStringIdx;
|
|
96911
|
-
return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;
|
|
97093
|
+
return sid !== 0 ? this._ctx[_storage].strings[sid] : _ECName__WEBPACK_IMPORTED_MODULE_2__.ECName.decode(this.name);
|
|
96912
97094
|
}
|
|
96913
97095
|
get description() {
|
|
96914
97096
|
const sid = this._data.descriptionStringIdx;
|
|
@@ -96983,9 +97165,10 @@ class SchemaView {
|
|
|
96983
97165
|
*/
|
|
96984
97166
|
get ecInstanceId() { return this._data.ecInstanceId; }
|
|
96985
97167
|
get name() { return this._ctx[_storage].strings[this._data.nameStringIdx]; }
|
|
97168
|
+
/** Display label, or the decoded name when the label is absent or empty. */
|
|
96986
97169
|
get label() {
|
|
96987
97170
|
const sid = this._data.labelStringIdx;
|
|
96988
|
-
return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;
|
|
97171
|
+
return sid !== 0 ? this._ctx[_storage].strings[sid] : _ECName__WEBPACK_IMPORTED_MODULE_2__.ECName.decode(this.name);
|
|
96989
97172
|
}
|
|
96990
97173
|
get description() {
|
|
96991
97174
|
const sid = this._data.descriptionStringIdx;
|
|
@@ -98051,10 +98234,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
98051
98234
|
*/
|
|
98052
98235
|
|
|
98053
98236
|
/** Owns the lifetime of one iModel's {@link (SchemaView:class)}: lazy loading, incremental (filtered)
|
|
98054
|
-
*
|
|
98055
|
-
*
|
|
98056
|
-
*
|
|
98057
|
-
* @
|
|
98237
|
+
* loading, serialization of concurrent requests, and invalidation. All data access goes through the
|
|
98238
|
+
* supplied {@link SchemaViewDataProvider}.
|
|
98239
|
+
*
|
|
98240
|
+
* Keep one manager per iModel connection. Calls to {@link SchemaViewManager.getSchemaView} reuse
|
|
98241
|
+
* one accumulating view until it is invalidated. The manager does not monitor schema changes;
|
|
98242
|
+
* call {@link SchemaViewManager.reset} after a known change, or await
|
|
98243
|
+
* {@link SchemaViewManager.invalidateIfChanged} after an operation that may have changed schemas.
|
|
98244
|
+
* @beta
|
|
98058
98245
|
*/
|
|
98059
98246
|
class SchemaViewManager {
|
|
98060
98247
|
_dataProvider;
|
|
@@ -98070,9 +98257,9 @@ class SchemaViewManager {
|
|
|
98070
98257
|
constructor(dataProvider) {
|
|
98071
98258
|
this._dataProvider = dataProvider;
|
|
98072
98259
|
}
|
|
98073
|
-
/** Get the schema view, loading
|
|
98074
|
-
*
|
|
98075
|
-
*
|
|
98260
|
+
/** Get the schema view, loading the requested schemas and their references that are not present
|
|
98261
|
+
* yet. Omitting the schema filter loads every schema. Calls accumulate into the same view until
|
|
98262
|
+
* it is invalidated. See {@link GetSchemaViewArgs} for filtering semantics.
|
|
98076
98263
|
*/
|
|
98077
98264
|
async getSchemaView(args) {
|
|
98078
98265
|
const previous = this._viewPromise;
|
|
@@ -98120,10 +98307,6 @@ class SchemaViewManager {
|
|
|
98120
98307
|
}
|
|
98121
98308
|
if (existing === undefined)
|
|
98122
98309
|
return undefined;
|
|
98123
|
-
// A view without a token (e.g. built directly from a SchemaViewBuilder) cannot be verified by
|
|
98124
|
-
// token; views loaded through this manager always carry one.
|
|
98125
|
-
if (existing.schemaToken === "")
|
|
98126
|
-
return existing;
|
|
98127
98310
|
try {
|
|
98128
98311
|
if (await this._dataProvider.fetchSchemaToken() === existing.schemaToken)
|
|
98129
98312
|
return existing;
|
|
@@ -112265,6 +112448,7 @@ class IModelApp {
|
|
|
112265
112448
|
});
|
|
112266
112449
|
}
|
|
112267
112450
|
/** Format the tooltip strings returned by [[IModelConnection.getToolTipMessage]].
|
|
112451
|
+
* @note Each string is interpreted as HTML. Any untrusted content must be HTML-escaped or sanitized before calling this method.
|
|
112268
112452
|
* @alpha
|
|
112269
112453
|
*/
|
|
112270
112454
|
static formatElementToolTip(msg) {
|
|
@@ -112952,7 +113136,10 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
|
|
|
112952
113136
|
const result = await reader.next();
|
|
112953
113137
|
if (result.done)
|
|
112954
113138
|
throw new _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.IModelError(_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.IModelStatus.BadRequest, "PRAGMA checksum(schema_token) returned no rows");
|
|
112955
|
-
|
|
113139
|
+
const token = result.value.sha3_256;
|
|
113140
|
+
if (typeof token !== "string")
|
|
113141
|
+
throw new _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.IModelError(_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.IModelStatus.BadRequest, "PRAGMA checksum(schema_token) returned an invalid sha3_256 column");
|
|
113142
|
+
return token;
|
|
112956
113143
|
},
|
|
112957
113144
|
};
|
|
112958
113145
|
}
|
|
@@ -112971,7 +113158,9 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
|
|
|
112971
113158
|
const token = result.value.schemaToken;
|
|
112972
113159
|
if (data === undefined || data === null)
|
|
112973
113160
|
throw new _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.IModelError(_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.IModelStatus.BadRequest, `${pragma} returned null data column`);
|
|
112974
|
-
|
|
113161
|
+
if (typeof token !== "string")
|
|
113162
|
+
throw new _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.IModelError(_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.IModelStatus.BadRequest, `${pragma} returned an invalid schemaToken column`);
|
|
113163
|
+
return { data, schemaToken: token };
|
|
112975
113164
|
}
|
|
112976
113165
|
}
|
|
112977
113166
|
/** A connection that exists without an iModel. Useful for connecting to Reality Data services.
|
|
@@ -181257,8 +181446,13 @@ class FormatsProviderManager {
|
|
|
181257
181446
|
this.onFormatsChanged.raiseEvent(args);
|
|
181258
181447
|
});
|
|
181259
181448
|
}
|
|
181260
|
-
async getFormat(name, system) {
|
|
181261
|
-
return this._formatsProvider.getFormat(name, system);
|
|
181449
|
+
async getFormat(name, system, context) {
|
|
181450
|
+
return this._formatsProvider.getFormat(name, system, context);
|
|
181451
|
+
}
|
|
181452
|
+
/** Returns `undefined` when the current provider cannot look up formats synchronously. */
|
|
181453
|
+
getFormatSync(name, system, context) {
|
|
181454
|
+
const provider = this._formatsProvider;
|
|
181455
|
+
return typeof provider.getFormatSync === "function" ? provider.getFormatSync(name, system, context) : undefined;
|
|
181262
181456
|
}
|
|
181263
181457
|
get formatsProvider() { return this; }
|
|
181264
181458
|
set formatsProvider(formatsProvider) {
|
|
@@ -186404,7 +186598,7 @@ class GltfReader {
|
|
|
186404
186598
|
}
|
|
186405
186599
|
readMeshPrimitive(primitive, featureTable, pseudoRtcBias) {
|
|
186406
186600
|
const meshMode = _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.JsonUtils.asInt(primitive.mode, _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.Triangles);
|
|
186407
|
-
if (meshMode === _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.Points &&
|
|
186601
|
+
if (meshMode === _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.Points && primitive.indices === undefined) {
|
|
186408
186602
|
const pointCloud = this.readPointCloud2(primitive, undefined !== featureTable);
|
|
186409
186603
|
if (pointCloud)
|
|
186410
186604
|
return pointCloud;
|
|
@@ -186883,6 +187077,8 @@ class GltfReader {
|
|
|
186883
187077
|
vertexCount = bufferData.count ?? 0;
|
|
186884
187078
|
featureIdBuffers.set(featureIdDesc.attribute, { buffer, stride: bufferView.stride });
|
|
186885
187079
|
}
|
|
187080
|
+
if (featureIdBuffers.size === 0)
|
|
187081
|
+
return undefined;
|
|
186886
187082
|
const itwinFeatureIndices = [];
|
|
186887
187083
|
const vertexPropsMap = new Map();
|
|
186888
187084
|
for (let vertexId = 0; vertexId < vertexCount; vertexId++) {
|
|
@@ -333839,16 +334035,17 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
333839
334035
|
/* harmony import */ var _Unit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Unit */ "../../core/quantity/lib/esm/Unit.js");
|
|
333840
334036
|
/* harmony import */ var _internal_BasicUnitConversionData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/BasicUnitConversionData */ "../../core/quantity/lib/esm/internal/BasicUnitConversionData.js");
|
|
333841
334037
|
/* harmony import */ var _internal_BasicUnitsResolvedStateCache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/BasicUnitsResolvedStateCache */ "../../core/quantity/lib/esm/internal/BasicUnitsResolvedStateCache.js");
|
|
334038
|
+
/* harmony import */ var _assets_Units_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./assets/Units.json */ "../../core/quantity/lib/esm/assets/Units.json");
|
|
333842
334039
|
|
|
333843
334040
|
|
|
333844
334041
|
|
|
334042
|
+
|
|
334043
|
+
const bundledSchema = _assets_Units_json__WEBPACK_IMPORTED_MODULE_3__;
|
|
333845
334044
|
async function resolveState() {
|
|
333846
|
-
return (0,_internal_BasicUnitsResolvedStateCache__WEBPACK_IMPORTED_MODULE_2__.resolveBasicUnitsData)(async () =>
|
|
333847
|
-
|
|
333848
|
-
|
|
333849
|
-
|
|
333850
|
-
return schema;
|
|
333851
|
-
});
|
|
334045
|
+
return (0,_internal_BasicUnitsResolvedStateCache__WEBPACK_IMPORTED_MODULE_2__.resolveBasicUnitsData)(async () => bundledSchema);
|
|
334046
|
+
}
|
|
334047
|
+
function resolveStateSync() {
|
|
334048
|
+
return (0,_internal_BasicUnitsResolvedStateCache__WEBPACK_IMPORTED_MODULE_2__.resolveBasicUnitsDataSync)(bundledSchema);
|
|
333852
334049
|
}
|
|
333853
334050
|
/** @internal — test use only. Resets the shared module-level lazy cache. */
|
|
333854
334051
|
function _testResetUnitsCache() {
|
|
@@ -333857,12 +334054,11 @@ function _testResetUnitsCache() {
|
|
|
333857
334054
|
/**
|
|
333858
334055
|
* A `UnitsProvider` backed by the full BIS `Units.ecschema.json` bundled as a JSON asset.
|
|
333859
334056
|
*
|
|
333860
|
-
* The bundled
|
|
333861
|
-
*
|
|
333862
|
-
* share the same immutable lookup indexes.
|
|
334057
|
+
* The bundled data is available locally. The provider builds its immutable lookup indexes on the
|
|
334058
|
+
* first call and caches them at module scope, so multiple instances share the same indexes.
|
|
333863
334059
|
*
|
|
333864
|
-
* If
|
|
333865
|
-
*
|
|
334060
|
+
* If resolving the bundled data fails, the next provider call retries instead of retaining a failed
|
|
334061
|
+
* module-level state.
|
|
333866
334062
|
*
|
|
333867
334063
|
* This is the zero-dependency default for backends, tools, and any frontend that doesn't need
|
|
333868
334064
|
* iModel overrides. Equivalent to calling `createUnitsProvider()` with no arguments.
|
|
@@ -333871,6 +334067,16 @@ function _testResetUnitsCache() {
|
|
|
333871
334067
|
* @beta
|
|
333872
334068
|
*/
|
|
333873
334069
|
class BasicUnitsProvider {
|
|
334070
|
+
/** Find a built-in unit by fully qualified name using local data. */
|
|
334071
|
+
findUnitByNameSync(unitName) {
|
|
334072
|
+
const state = resolveStateSync();
|
|
334073
|
+
const entry = state.nameMap.get(unitName);
|
|
334074
|
+
return entry ? entry.props : new _Unit__WEBPACK_IMPORTED_MODULE_0__.BadUnit();
|
|
334075
|
+
}
|
|
334076
|
+
/** Compute a conversion between built-in units using the same bundled data as [[getConversion]]. */
|
|
334077
|
+
getConversionSync(fromUnit, toUnit) {
|
|
334078
|
+
return (0,_internal_BasicUnitConversionData__WEBPACK_IMPORTED_MODULE_1__.getBasicUnitConversion)(resolveStateSync(), fromUnit, toUnit);
|
|
334079
|
+
}
|
|
333874
334080
|
// ── UnitsProvider implementation ─────────────────────────────────────
|
|
333875
334081
|
/** Find a unit by its display label, optionally filtering by schema name, phenomenon, and unit system.
|
|
333876
334082
|
* @param unitLabel - The display label to search for (case-insensitive).
|
|
@@ -334642,6 +334848,12 @@ class Format extends BaseFormat {
|
|
|
334642
334848
|
await actualFormat.fromJSON(unitsProvider, formatProps);
|
|
334643
334849
|
return actualFormat;
|
|
334644
334850
|
}
|
|
334851
|
+
/** Create a `Format` from `FormatProps` using a synchronous unit provider. */
|
|
334852
|
+
static createFromJSONSync(name, unitsProvider, formatProps) {
|
|
334853
|
+
const actualFormat = new Format(name);
|
|
334854
|
+
actualFormat.fromFullyResolvedJSON(resolveFormatPropsSync(name, unitsProvider, formatProps));
|
|
334855
|
+
return actualFormat;
|
|
334856
|
+
}
|
|
334645
334857
|
static createFromFullyResolvedJSON(name, formatProps) {
|
|
334646
334858
|
const actualFormat = new Format(name);
|
|
334647
334859
|
actualFormat.fromFullyResolvedJSON(formatProps);
|
|
@@ -334708,52 +334920,50 @@ class Format extends BaseFormat {
|
|
|
334708
334920
|
return baseFormatProps;
|
|
334709
334921
|
}
|
|
334710
334922
|
}
|
|
334711
|
-
|
|
334923
|
+
function validateCompositeUnitInput(name, label) {
|
|
334712
334924
|
if (typeof name !== "string" || (undefined !== label && typeof label !== "string")) {
|
|
334713
334925
|
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.InvalidJson, `This Composite has a unit with an invalid 'name' or 'label' attribute.`);
|
|
334714
334926
|
}
|
|
334715
|
-
|
|
334927
|
+
}
|
|
334928
|
+
function validateResolvedUnit(unit, errorMessage) {
|
|
334716
334929
|
if (!unit || !unit.isValid) {
|
|
334717
|
-
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.InvalidJson,
|
|
334930
|
+
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.InvalidJson, errorMessage);
|
|
334718
334931
|
}
|
|
334719
334932
|
return unit;
|
|
334720
334933
|
}
|
|
334721
|
-
|
|
334934
|
+
function getAzimuthBearingUnitName(formatName, jsonObj, key) {
|
|
334722
334935
|
const unitName = jsonObj[key];
|
|
334723
|
-
if (undefined !== unitName) {
|
|
334724
|
-
|
|
334725
|
-
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.InvalidJson, `The Format ${formatName} has an invalid '${key}' attribute. It should be of type 'string'.`);
|
|
334726
|
-
}
|
|
334727
|
-
const unit = await provider.findUnitByName(unitName);
|
|
334728
|
-
if (!unit || !unit.isValid) {
|
|
334729
|
-
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.InvalidJson, `Invalid unit name '${unitName}' for ${key} in Format '${formatName}'.`);
|
|
334730
|
-
}
|
|
334731
|
-
return unit;
|
|
334936
|
+
if (undefined !== unitName && typeof unitName !== "string") {
|
|
334937
|
+
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.InvalidJson, `The Format ${formatName} has an invalid '${key}' attribute. It should be of type 'string'.`);
|
|
334732
334938
|
}
|
|
334733
|
-
return
|
|
334939
|
+
return unitName;
|
|
334734
334940
|
}
|
|
334735
|
-
async function
|
|
334736
|
-
|
|
334737
|
-
|
|
334738
|
-
|
|
334739
|
-
|
|
334740
|
-
|
|
334741
|
-
|
|
334742
|
-
|
|
334743
|
-
|
|
334744
|
-
|
|
334745
|
-
|
|
334746
|
-
|
|
334747
|
-
|
|
334748
|
-
|
|
334749
|
-
|
|
334941
|
+
async function resolveCompositeUnit(provider, name, label) {
|
|
334942
|
+
validateCompositeUnitInput(name, label);
|
|
334943
|
+
return validateResolvedUnit(await provider.findUnitByName(name), `Invalid unit name '${name}'.`);
|
|
334944
|
+
}
|
|
334945
|
+
function resolveCompositeUnitSync(provider, name, label) {
|
|
334946
|
+
validateCompositeUnitInput(name, label);
|
|
334947
|
+
return validateResolvedUnit(provider.findUnitByNameSync(name), `Invalid unit name '${name}'.`);
|
|
334948
|
+
}
|
|
334949
|
+
async function resolveAzimuthBearingUnit(formatName, jsonObj, key, provider) {
|
|
334950
|
+
const unitName = getAzimuthBearingUnitName(formatName, jsonObj, key);
|
|
334951
|
+
return undefined === unitName ? undefined : validateResolvedUnit(await provider.findUnitByName(unitName), `Invalid unit name '${unitName}' for ${key} in Format '${formatName}'.`);
|
|
334952
|
+
}
|
|
334953
|
+
function resolveAzimuthBearingUnitSync(formatName, jsonObj, key, provider) {
|
|
334954
|
+
const unitName = getAzimuthBearingUnitName(formatName, jsonObj, key);
|
|
334955
|
+
return undefined === unitName ? undefined : validateResolvedUnit(provider.findUnitByNameSync(unitName), `Invalid unit name '${unitName}' for ${key} in Format '${formatName}'.`);
|
|
334956
|
+
}
|
|
334957
|
+
function validateResolvedFormatProps(formatName, jsonObj, units, azimuthBaseUnit, revolutionUnit) {
|
|
334958
|
+
const formatType = (0,_FormatEnums__WEBPACK_IMPORTED_MODULE_2__.parseFormatType)(jsonObj.type, formatName);
|
|
334959
|
+
if (formatType === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Ratio && units?.length === 2) {
|
|
334960
|
+
const phenomenon1 = units[0].unit.phenomenon;
|
|
334961
|
+
const phenomenon2 = units[1].unit.phenomenon;
|
|
334962
|
+
if (phenomenon1 !== phenomenon2) {
|
|
334963
|
+
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.InvalidJson, `The Format ${formatName} has 2-unit composite with different phenomena. Both units must have the same phenomenon. Found '${phenomenon1}' and '${phenomenon2}'.`);
|
|
334750
334964
|
}
|
|
334751
334965
|
}
|
|
334752
|
-
|
|
334753
|
-
const type = (0,_FormatEnums__WEBPACK_IMPORTED_MODULE_2__.parseFormatType)(jsonObj.type, formatName);
|
|
334754
|
-
if (type === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Azimuth || type === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Bearing) {
|
|
334755
|
-
azimuthBaseUnit = await resolveAzimuthBearingUnit(formatName, jsonObj, "azimuthBaseUnit", unitsProvider);
|
|
334756
|
-
revolutionUnit = await resolveAzimuthBearingUnit(formatName, jsonObj, "revolutionUnit", unitsProvider);
|
|
334966
|
+
if (formatType === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Azimuth || formatType === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Bearing) {
|
|
334757
334967
|
if (!revolutionUnit) {
|
|
334758
334968
|
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.InvalidJson, `The Format ${formatName} is 'Azimuth' or 'Bearing' type therefore the attribute 'revolutionUnit' is required.`);
|
|
334759
334969
|
}
|
|
@@ -334761,6 +334971,8 @@ async function resolveFormatProps(formatName, unitsProvider, jsonObj) {
|
|
|
334761
334971
|
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.InvalidJson, `The Format ${formatName} has an 'azimuthBase' attribute therefore the attribute 'azimuthBaseUnit' is required.`);
|
|
334762
334972
|
}
|
|
334763
334973
|
}
|
|
334974
|
+
}
|
|
334975
|
+
function createResolvedFormatProps(jsonObj, units, azimuthBaseUnit, revolutionUnit) {
|
|
334764
334976
|
return {
|
|
334765
334977
|
...jsonObj,
|
|
334766
334978
|
azimuthBaseUnit,
|
|
@@ -334771,6 +334983,38 @@ async function resolveFormatProps(formatName, unitsProvider, jsonObj) {
|
|
|
334771
334983
|
} : undefined,
|
|
334772
334984
|
};
|
|
334773
334985
|
}
|
|
334986
|
+
async function resolveFormatProps(formatName, unitsProvider, jsonObj) {
|
|
334987
|
+
const units = undefined === jsonObj.composite?.units ? undefined : await Promise.all(jsonObj.composite.units.map(async (entry) => ({
|
|
334988
|
+
// Label is intentionally not validated, matching master: existing JSON may carry a non-string label (e.g. null).
|
|
334989
|
+
unit: await resolveCompositeUnit(unitsProvider, entry.name),
|
|
334990
|
+
label: entry.label,
|
|
334991
|
+
})));
|
|
334992
|
+
let azimuthBaseUnit;
|
|
334993
|
+
let revolutionUnit;
|
|
334994
|
+
const formatType = (0,_FormatEnums__WEBPACK_IMPORTED_MODULE_2__.parseFormatType)(jsonObj.type, formatName);
|
|
334995
|
+
if (formatType === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Azimuth || formatType === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Bearing) {
|
|
334996
|
+
azimuthBaseUnit = await resolveAzimuthBearingUnit(formatName, jsonObj, "azimuthBaseUnit", unitsProvider);
|
|
334997
|
+
revolutionUnit = await resolveAzimuthBearingUnit(formatName, jsonObj, "revolutionUnit", unitsProvider);
|
|
334998
|
+
}
|
|
334999
|
+
validateResolvedFormatProps(formatName, jsonObj, units, azimuthBaseUnit, revolutionUnit);
|
|
335000
|
+
return createResolvedFormatProps(jsonObj, units, azimuthBaseUnit, revolutionUnit);
|
|
335001
|
+
}
|
|
335002
|
+
function resolveFormatPropsSync(formatName, unitsProvider, jsonObj) {
|
|
335003
|
+
const units = undefined === jsonObj.composite?.units ? undefined : jsonObj.composite.units.map((entry) => ({
|
|
335004
|
+
// Keep in sync with resolveFormatProps: label is intentionally not validated.
|
|
335005
|
+
unit: resolveCompositeUnitSync(unitsProvider, entry.name),
|
|
335006
|
+
label: entry.label,
|
|
335007
|
+
}));
|
|
335008
|
+
let azimuthBaseUnit;
|
|
335009
|
+
let revolutionUnit;
|
|
335010
|
+
const formatType = (0,_FormatEnums__WEBPACK_IMPORTED_MODULE_2__.parseFormatType)(jsonObj.type, formatName);
|
|
335011
|
+
if (formatType === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Azimuth || formatType === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Bearing) {
|
|
335012
|
+
azimuthBaseUnit = resolveAzimuthBearingUnitSync(formatName, jsonObj, "azimuthBaseUnit", unitsProvider);
|
|
335013
|
+
revolutionUnit = resolveAzimuthBearingUnitSync(formatName, jsonObj, "revolutionUnit", unitsProvider);
|
|
335014
|
+
}
|
|
335015
|
+
validateResolvedFormatProps(formatName, jsonObj, units, azimuthBaseUnit, revolutionUnit);
|
|
335016
|
+
return createResolvedFormatProps(jsonObj, units, azimuthBaseUnit, revolutionUnit);
|
|
335017
|
+
}
|
|
334774
335018
|
|
|
334775
335019
|
|
|
334776
335020
|
/***/ },
|
|
@@ -335915,15 +336159,12 @@ class FormatterSpec {
|
|
|
335915
336159
|
get azimuthBaseConversion() { return this._azimuthBaseConversion; }
|
|
335916
336160
|
get revolutionConversion() { return this._revolutionConversion; }
|
|
335917
336161
|
/** Build conversion specs for ratio format with 2 composite units (numerator/denominator). */
|
|
335918
|
-
static
|
|
336162
|
+
static *buildRatioUnitConversions(units, persistenceUnit) {
|
|
335919
336163
|
const conversions = [];
|
|
335920
336164
|
const [numeratorUnit, numeratorLabel] = units[0];
|
|
335921
336165
|
const [denominatorUnit, denominatorLabel] = units[1];
|
|
335922
336166
|
// Compute ratio scale: how many numerator units per denominator unit (e.g., IN:FT = 12)
|
|
335923
|
-
const denominatorToNumerator =
|
|
335924
|
-
if (denominatorToNumerator.error) {
|
|
335925
|
-
_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning(_QuantityLoggerCategory__WEBPACK_IMPORTED_MODULE_1__.QuantityLoggerCategory.Formatting, `Unit conversion from "${denominatorUnit.name}" to "${numeratorUnit.name}" could not be resolved.`);
|
|
335926
|
-
}
|
|
336167
|
+
const denominatorToNumerator = yield* requestConversion(denominatorUnit, numeratorUnit);
|
|
335927
336168
|
const displayRatioScale = denominatorToNumerator.factor;
|
|
335928
336169
|
// Avoid double-scaling: if persistence unit already encodes the display ratio, use factor 1.
|
|
335929
336170
|
// Check by name heuristic (e.g., IN_PER_FT with ratioUnits [IN, FT] → no scaling needed)
|
|
@@ -335939,7 +336180,7 @@ class FormatterSpec {
|
|
|
335939
336180
|
name: `${numeratorUnit.name}_per_${denominatorUnit.name}`,
|
|
335940
336181
|
label: "",
|
|
335941
336182
|
system: numeratorUnit.system,
|
|
335942
|
-
conversion:
|
|
336183
|
+
conversion: createRatioConversionProps(ratioScaleFactor, denominatorToNumerator),
|
|
335943
336184
|
};
|
|
335944
336185
|
conversions.push(ratioConversionSpec);
|
|
335945
336186
|
// Numerator unit for label lookup
|
|
@@ -335962,6 +336203,9 @@ class FormatterSpec {
|
|
|
335962
336203
|
}
|
|
335963
336204
|
/** Get an array of UnitConversionSpecs, one for each unit that is to be shown in the formatted quantity string. */
|
|
335964
336205
|
static async getUnitConversions(format, unitsProvider, inputUnit) {
|
|
336206
|
+
return runAsync(FormatterSpec.buildUnitConversions(format, inputUnit), unitsProvider);
|
|
336207
|
+
}
|
|
336208
|
+
static *buildUnitConversions(format, inputUnit) {
|
|
335965
336209
|
const conversions = [];
|
|
335966
336210
|
let persistenceUnit = inputUnit;
|
|
335967
336211
|
if (!persistenceUnit) {
|
|
@@ -335975,17 +336219,14 @@ class FormatterSpec {
|
|
|
335975
336219
|
}
|
|
335976
336220
|
// Handle 2-unit composite for ratio formats (scale factors)
|
|
335977
336221
|
if (format.type === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Ratio && format.units && format.units.length === 2) {
|
|
335978
|
-
return FormatterSpec.
|
|
336222
|
+
return yield* FormatterSpec.buildRatioUnitConversions(format.units, persistenceUnit);
|
|
335979
336223
|
}
|
|
335980
336224
|
if (format.units) {
|
|
335981
336225
|
let convertFromUnit = inputUnit;
|
|
335982
336226
|
for (const unit of format.units) {
|
|
335983
336227
|
let unitConversion;
|
|
335984
336228
|
if (convertFromUnit) {
|
|
335985
|
-
unitConversion =
|
|
335986
|
-
if (unitConversion.error) {
|
|
335987
|
-
_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning(_QuantityLoggerCategory__WEBPACK_IMPORTED_MODULE_1__.QuantityLoggerCategory.Formatting, `Unit conversion from "${convertFromUnit.name}" to "${unit[0].name}" could not be resolved.`);
|
|
335988
|
-
}
|
|
336229
|
+
unitConversion = yield* requestConversion(convertFromUnit, unit[0]);
|
|
335989
336230
|
}
|
|
335990
336231
|
else {
|
|
335991
336232
|
unitConversion = { factor: 1.0, offset: 0.0 };
|
|
@@ -336016,14 +336257,18 @@ class FormatterSpec {
|
|
|
336016
336257
|
* @see BaseFormat.revolutionUnit
|
|
336017
336258
|
*/
|
|
336018
336259
|
static async create(name, format, unitsProvider, inputUnit) {
|
|
336019
|
-
|
|
336260
|
+
return runAsync(FormatterSpec.buildFormatterSpec(name, format, inputUnit), unitsProvider);
|
|
336261
|
+
}
|
|
336262
|
+
/** Create a `FormatterSpec` using a synchronous unit provider. */
|
|
336263
|
+
static createSync(name, format, unitsProvider, inputUnit) {
|
|
336264
|
+
return runSync(FormatterSpec.buildFormatterSpec(name, format, inputUnit), unitsProvider);
|
|
336265
|
+
}
|
|
336266
|
+
static *buildFormatterSpec(name, format, inputUnit) {
|
|
336267
|
+
const conversions = yield* FormatterSpec.buildUnitConversions(format, inputUnit);
|
|
336020
336268
|
let azimuthBaseConversion;
|
|
336021
336269
|
if (format.azimuthBaseUnit !== undefined) {
|
|
336022
336270
|
if (inputUnit !== undefined) {
|
|
336023
|
-
azimuthBaseConversion =
|
|
336024
|
-
if (azimuthBaseConversion.error) {
|
|
336025
|
-
_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning(_QuantityLoggerCategory__WEBPACK_IMPORTED_MODULE_1__.QuantityLoggerCategory.Formatting, `Unit conversion from "${format.azimuthBaseUnit.name}" to "${inputUnit.name}" could not be resolved.`);
|
|
336026
|
-
}
|
|
336271
|
+
azimuthBaseConversion = yield* requestConversion(format.azimuthBaseUnit, inputUnit);
|
|
336027
336272
|
}
|
|
336028
336273
|
else {
|
|
336029
336274
|
azimuthBaseConversion = { factor: 1.0, offset: 0.0 };
|
|
@@ -336032,10 +336277,7 @@ class FormatterSpec {
|
|
|
336032
336277
|
let revolutionConversion;
|
|
336033
336278
|
if (format.revolutionUnit !== undefined) {
|
|
336034
336279
|
if (inputUnit !== undefined) {
|
|
336035
|
-
revolutionConversion =
|
|
336036
|
-
if (revolutionConversion.error) {
|
|
336037
|
-
_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning(_QuantityLoggerCategory__WEBPACK_IMPORTED_MODULE_1__.QuantityLoggerCategory.Formatting, `Unit conversion from "${format.revolutionUnit.name}" to "${inputUnit.name}" could not be resolved.`);
|
|
336038
|
-
}
|
|
336280
|
+
revolutionConversion = yield* requestConversion(format.revolutionUnit, inputUnit);
|
|
336039
336281
|
}
|
|
336040
336282
|
else {
|
|
336041
336283
|
revolutionConversion = { factor: 1.0, offset: 0.0 };
|
|
@@ -336048,6 +336290,30 @@ class FormatterSpec {
|
|
|
336048
336290
|
return _Formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.formatQuantity(magnitude, this);
|
|
336049
336291
|
}
|
|
336050
336292
|
}
|
|
336293
|
+
function* requestConversion(fromUnit, toUnit) {
|
|
336294
|
+
const conversion = yield [fromUnit, toUnit];
|
|
336295
|
+
if (conversion.error) {
|
|
336296
|
+
_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning(_QuantityLoggerCategory__WEBPACK_IMPORTED_MODULE_1__.QuantityLoggerCategory.Formatting, `Unit conversion from "${fromUnit.name}" to "${toUnit.name}" could not be resolved.`);
|
|
336297
|
+
}
|
|
336298
|
+
return conversion;
|
|
336299
|
+
}
|
|
336300
|
+
async function runAsync(builder, unitsProvider) {
|
|
336301
|
+
let step = builder.next();
|
|
336302
|
+
while (!step.done)
|
|
336303
|
+
step = builder.next(await unitsProvider.getConversion(...step.value));
|
|
336304
|
+
return step.value;
|
|
336305
|
+
}
|
|
336306
|
+
function runSync(builder, unitsProvider) {
|
|
336307
|
+
let step = builder.next();
|
|
336308
|
+
while (!step.done)
|
|
336309
|
+
step = builder.next(unitsProvider.getConversionSync(...step.value));
|
|
336310
|
+
return step.value;
|
|
336311
|
+
}
|
|
336312
|
+
function createRatioConversionProps(ratioScaleFactor, sourceConversion) {
|
|
336313
|
+
return sourceConversion.error
|
|
336314
|
+
? { factor: ratioScaleFactor, offset: 0.0, error: true }
|
|
336315
|
+
: { factor: ratioScaleFactor, offset: 0.0 };
|
|
336316
|
+
}
|
|
336051
336317
|
|
|
336052
336318
|
|
|
336053
336319
|
/***/ },
|
|
@@ -339756,7 +340022,8 @@ const basicUnitConversionData = {
|
|
|
339756
340022
|
__webpack_require__.r(__webpack_exports__);
|
|
339757
340023
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
339758
340024
|
/* harmony export */ _testResetResolvedBasicUnitsDataCache: () => (/* binding */ _testResetResolvedBasicUnitsDataCache),
|
|
339759
|
-
/* harmony export */ resolveBasicUnitsData: () => (/* binding */ resolveBasicUnitsData)
|
|
340025
|
+
/* harmony export */ resolveBasicUnitsData: () => (/* binding */ resolveBasicUnitsData),
|
|
340026
|
+
/* harmony export */ resolveBasicUnitsDataSync: () => (/* binding */ resolveBasicUnitsDataSync)
|
|
339760
340027
|
/* harmony export */ });
|
|
339761
340028
|
/* harmony import */ var _BasicUnitConversionData__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BasicUnitConversionData */ "../../core/quantity/lib/esm/internal/BasicUnitConversionData.js");
|
|
339762
340029
|
|
|
@@ -339783,6 +340050,12 @@ async function resolveBasicUnitsData(loadSchema) {
|
|
|
339783
340050
|
}
|
|
339784
340051
|
return _resolvePromise;
|
|
339785
340052
|
}
|
|
340053
|
+
/** Return shared resolved data for built-in units, building it synchronously on first use.
|
|
340054
|
+
* @internal
|
|
340055
|
+
*/
|
|
340056
|
+
function resolveBasicUnitsDataSync(schema) {
|
|
340057
|
+
return _resolvedData ??= (0,_BasicUnitConversionData__WEBPACK_IMPORTED_MODULE_0__.buildResolvedBasicUnitsData)(schema);
|
|
340058
|
+
}
|
|
339786
340059
|
/** @internal — test use only. Resets the shared module-level lazy cache.
|
|
339787
340060
|
* This stays in source rather than under a test folder because the public test seam
|
|
339788
340061
|
* `BasicUnitsProvider._testResetUnitsCache()` lives in source and delegates here.
|
|
@@ -343441,7 +343714,7 @@ class TestContext {
|
|
|
343441
343714
|
this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
|
|
343442
343715
|
const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
|
|
343443
343716
|
await core_frontend_1.NoRenderApp.startup({
|
|
343444
|
-
applicationVersion: "5.14.0-dev.
|
|
343717
|
+
applicationVersion: "5.14.0-dev.22",
|
|
343445
343718
|
applicationId: this.settings.gprid,
|
|
343446
343719
|
authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.serviceAuthToken),
|
|
343447
343720
|
hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
|
|
@@ -370183,7 +370456,18 @@ class WMS {
|
|
|
370183
370456
|
(module) {
|
|
370184
370457
|
|
|
370185
370458
|
"use strict";
|
|
370186
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.14.0-dev.
|
|
370459
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.14.0-dev.22","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s build:workers && npm run -s copy:draco","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:draco":"cpx \\"./node_modules/@loaders.gl/draco/dist/libs/*\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts && npm run -s extract","extract":"betools extract --fileExt=ts --extractFrom=./src/test/example-code --recursive --out=../../generated-docs/extract","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run build:test-worker && vitest --run","cover":"npm run build:test-worker && vitest --run","build:test-worker":"vite build --config ./src/test/worker/vite.config.mts 1>&2","build:workers":"rimraf lib/workers/webpack && vite build --config ./src/workers/ImdlParser/vite.config.mts 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@bentley/aec-units-schema":"^1.0.3","@bentley/formats-schema":"^1.0.0","@bentley/units-schema":"^1.0.11","@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/object-storage-core":"^3.0.4","@itwin/eslint-plugin":"^6.0.0","@types/node":"~20.17.0","@types/sinon":"^17.0.2","@vitest/browser-playwright":"^4.1.10","@vitest/coverage-v8":"^4.1.10","cpx2":"^8.0.0","eslint":"^9.31.0","playwright":"~1.56.1","rimraf":"^6.0.1","sinon":"^17.0.2","typescript":"~5.6.2","vite":"^6.4.3","vitest":"^4.1.10","vite-plugin-static-copy":"2.2.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^4.4.5","@loaders.gl/draco":"^4.4.5","fuse.js":"^3.3.0","wms-capabilities":"0.6.0"}}');
|
|
370460
|
+
|
|
370461
|
+
/***/ },
|
|
370462
|
+
|
|
370463
|
+
/***/ "../../core/quantity/lib/esm/assets/Units.json"
|
|
370464
|
+
/*!*****************************************************!*\
|
|
370465
|
+
!*** ../../core/quantity/lib/esm/assets/Units.json ***!
|
|
370466
|
+
\*****************************************************/
|
|
370467
|
+
(module) {
|
|
370468
|
+
|
|
370469
|
+
"use strict";
|
|
370470
|
+
module.exports = /*#__PURE__*/JSON.parse('{"version":"01.00.00","sourceEcSchemaVersion":"01.00.11","name":"Units","alias":"u","label":"Units","description":"Standard Set of Unit definitions for the system","items":{"SI":{"schemaItemType":"UnitSystem"},"CGS":{"schemaItemType":"UnitSystem"},"METRIC":{"schemaItemType":"UnitSystem"},"IMPERIAL":{"schemaItemType":"UnitSystem"},"MARITIME":{"schemaItemType":"UnitSystem"},"USSURVEY":{"schemaItemType":"UnitSystem"},"INDUSTRIAL":{"schemaItemType":"UnitSystem"},"INTERNATIONAL":{"schemaItemType":"UnitSystem"},"USCUSTOM":{"schemaItemType":"UnitSystem"},"STATISTICS":{"schemaItemType":"UnitSystem"},"FINANCE":{"schemaItemType":"UnitSystem"},"CONSTANT":{"schemaItemType":"UnitSystem"},"APPARENT_POWER":{"schemaItemType":"Phenomenon","label":"Apparent Power","definition":"ELECTRIC_POTENTIAL*CURRENT"},"AREA":{"schemaItemType":"Phenomenon","label":"Area","definition":"LENGTH(2)"},"VOLUME":{"schemaItemType":"Phenomenon","label":"Volume","definition":"LENGTH(3)"},"VELOCITY":{"schemaItemType":"Phenomenon","label":"Velocity","definition":"LENGTH*TIME(-1)"},"ANGULAR_VELOCITY":{"schemaItemType":"Phenomenon","label":"Angular Velocity","definition":"ANGLE*TIME(-1)"},"ACCELERATION":{"schemaItemType":"Phenomenon","label":"Acceleration","definition":"LENGTH*TIME(-2)"},"FORCE":{"schemaItemType":"Phenomenon","label":"Force","definition":"MASS*ACCELERATION"},"PRESSURE":{"schemaItemType":"Phenomenon","label":"Pressure","definition":"FORCE*AREA(-1)"},"FORCE_DENSITY":{"schemaItemType":"Phenomenon","label":"Force Density","definition":"FORCE*VOLUME(-1)"},"PRESSURE_GRADIENT":{"schemaItemType":"Phenomenon","label":"Pressure Gradient","definition":"PRESSURE*LENGTH(-1)"},"TORQUE":{"schemaItemType":"Phenomenon","label":"Torque","definition":"FORCE*LENGTH*ANGLE(-1)"},"LINEAR_TORQUE":{"schemaItemType":"Phenomenon","label":"Linear Torque","definition":"TORQUE*LENGTH(-1)"},"AREA_TORQUE":{"schemaItemType":"Phenomenon","label":"Area Torque","definition":"TORQUE*AREA(-1)"},"AREA_MOMENT_INERTIA":{"schemaItemType":"Phenomenon","label":"Area Moment Inertia","definition":"LENGTH(4)"},"MASS_RATIO":{"schemaItemType":"Phenomenon","label":"Mass Ratio","definition":"MASS*MASS(-1)"},"DENSITY":{"schemaItemType":"Phenomenon","label":"Density","definition":"MASS*VOLUME(-1)"},"SPECIFIC_VOLUME":{"schemaItemType":"Phenomenon","label":"Specific Volume","definition":"VOLUME*MASS(-1)"},"LINEAR_DENSITY":{"schemaItemType":"Phenomenon","label":"Linear Density","definition":"MASS*LENGTH(-1)"},"SURFACE_DENSITY":{"schemaItemType":"Phenomenon","label":"Surface Density","definition":"MASS*AREA(-1)"},"WORK":{"schemaItemType":"Phenomenon","label":"Work","definition":"FORCE*LENGTH"},"POWER":{"schemaItemType":"Phenomenon","label":"Power","definition":"WORK*TIME(-1)"},"VOLUMETRIC_FLOW":{"schemaItemType":"Phenomenon","label":"Volumetric Flow","definition":"VOLUME*TIME(-1)"},"FLOW_DENSITY_PER_AREA":{"schemaItemType":"Phenomenon","label":"Flow Density per Area","description":"Flow demanded by or discharged to a Water/Sewer network per area.","definition":"VOLUMETRIC_FLOW*AREA(-1)"},"MASS_FLOW":{"schemaItemType":"Phenomenon","label":"Mass Flow","definition":"MASS*TIME(-1)"},"MOLAR_FLOW":{"schemaItemType":"Phenomenon","label":"Molar Flow","definition":"MOLE*TIME(-1)"},"DYNAMIC_VISCOSITY":{"schemaItemType":"Phenomenon","label":"Dynamic Viscosity","definition":"PRESSURE*TIME"},"KINEMATIC_VISCOSITY":{"schemaItemType":"Phenomenon","label":"Kinematic Viscosity","definition":"DYNAMIC_VISCOSITY*DENSITY(-1)"},"ELECTRIC_CHARGE":{"schemaItemType":"Phenomenon","label":"Electric Charge","definition":"CURRENT*TIME"},"ELECTRIC_POTENTIAL":{"schemaItemType":"Phenomenon","label":"Electric Potential","definition":"POWER*CURRENT(-1)"},"LUMINOUS_FLUX":{"schemaItemType":"Phenomenon","label":"Luminous Flux","definition":"LUMINOSITY*SOLIDANGLE"},"ILLUMINANCE":{"schemaItemType":"Phenomenon","label":"Illuminance","definition":"LUMINOUS_FLUX*LENGTH(-2)"},"ROTATIONAL_SPRING_CONSTANT":{"schemaItemType":"Phenomenon","label":"Rotational Spring Constant","definition":"TORQUE*ANGLE(-1)"},"LINEAR_ROTATIONAL_SPRING_CONSTANT":{"schemaItemType":"Phenomenon","label":"Linear Rotational Spring Constant","definition":"FORCE*ANGLE(-1)"},"SPRING_CONSTANT":{"schemaItemType":"Phenomenon","label":"Spring Constant","definition":"FORCE*LENGTH(-1)"},"LINEAR_SPRING_CONSTANT":{"schemaItemType":"Phenomenon","label":"Linear Spring Constant","definition":"SPRING_CONSTANT*LENGTH(-1)"},"AREA_SPRING_CONSTANT":{"schemaItemType":"Phenomenon","label":"Area Spring Constant","definition":"SPRING_CONSTANT*AREA(-1)"},"PIPE_DIAMETER_LENGTH":{"schemaItemType":"Phenomenon","label":"Pipe Diameter-Length","description":"The diameter of a pipe multiplied by its length, used as a coefficient for pipe-infiltration calculations.","definition":"LENGTH*LENGTH"},"THERMAL_CONDUCTIVITY":{"schemaItemType":"Phenomenon","label":"Thermal Conductivity","definition":"POWER*LENGTH(-1)*TEMPERATURE_CHANGE(-1)"},"THERMAL_INSULANCE":{"schemaItemType":"Phenomenon","label":"Thermal Resistance","definition":"AREA*TEMPERATURE_CHANGE*POWER(-1)"},"TEMPERATURE_GRADIENT":{"schemaItemType":"Phenomenon","label":"Temperature Gradient","definition":"TEMPERATURE_CHANGE*LENGTH(-1)"},"MOLAR_VOLUME":{"schemaItemType":"Phenomenon","label":"Molar Volume","definition":"VOLUME*MOLE(-1)"},"MOLAR_CONCENTRATION":{"schemaItemType":"Phenomenon","label":"Molar Concentration","definition":"MOLE*VOLUME(-1)"},"SLOPE":{"schemaItemType":"Phenomenon","label":"Slope","definition":"LENGTH*LENGTH(-1)"},"HEAT_TRANSFER":{"schemaItemType":"Phenomenon","label":"Heat Transfer","description":"https://en.wikipedia.org/wiki/Heat_transfer_coefficient","definition":"POWER*AREA(-1)*TEMPERATURE_CHANGE(-1)"},"HEAT_FLUX_DENSITY":{"schemaItemType":"Phenomenon","label":"Heat Flux Density","description":"https://en.wikipedia.org/wiki/Heat_flux see description of heat flux density","definition":"POWER*AREA(-1)"},"TORSIONAL_WARPING_CONSTANT":{"schemaItemType":"Phenomenon","label":"Torsional Warping Constant","definition":"LENGTH(6)"},"POPULATION_DENSITY":{"schemaItemType":"Phenomenon","label":"Population Density","definition":"CAPITA*AREA(-1)"},"FREQUENCY":{"schemaItemType":"Phenomenon","label":"Frequency","definition":"TIME(-1)"},"LINEAR_LOAD":{"schemaItemType":"Phenomenon","label":"Linear Load","definition":"FORCE*LENGTH(-1)"},"ENERGY_DENSITY":{"schemaItemType":"Phenomenon","label":"Energy Density","definition":"WORK*VOLUME(-1)"},"ELECTRICAL_RESISTANCE":{"schemaItemType":"Phenomenon","label":"Electrical Resistance","definition":"ELECTRIC_POTENTIAL*CURRENT(-1)"},"ELECTRICAL_RESISTIVITY":{"schemaItemType":"Phenomenon","label":"Electrical Resistivity","definition":"ELECTRICAL_RESISTANCE*LENGTH"},"SPECIFIC_ENERGY":{"schemaItemType":"Phenomenon","label":"Specific Energy","definition":"WORK*MASS(-1)"},"SPECIFIC_HEAT_CAPACITY":{"schemaItemType":"Phenomenon","label":"Specific_heat Capacity","definition":"WORK*MASS(-1)*TEMPERATURE_CHANGE(-1)"},"SPECIFIC_HEAT_CAPACITY_MOLAR":{"schemaItemType":"Phenomenon","label":"Specific_heat Capacity Molar","definition":"WORK*MOLE(-1)*TEMPERATURE_CHANGE(-1)"},"PERCENTAGE":{"schemaItemType":"Phenomenon","label":"Percentage","definition":"NUMBER"},"PROBABILITY":{"schemaItemType":"Phenomenon","label":"Probability","definition":"NUMBER"},"LINEAR_RATE":{"schemaItemType":"Phenomenon","label":"Linear Rate","definition":"NUMBER*LENGTH(-1)"},"LINEAR_COEFFICIENT_OF_THERMAL_EXPANSION":{"schemaItemType":"Phenomenon","label":"Linear Coefficient Of Thermal Expansion","definition":"LENGTH*LENGTH(-1)*TEMPERATURE_CHANGE(-1)"},"VOLUME_RATIO":{"schemaItemType":"Phenomenon","label":"Volume Ratio","definition":"VOLUME*VOLUME(-1)"},"LENGTH_RATIO":{"schemaItemType":"Phenomenon","definition":"LENGTH*LENGTH(-1)"},"VOLUME_PER_LENGTH":{"schemaItemType":"Phenomenon","label":"Volume per Unit Length","definition":"VOLUME*LENGTH(-1)"},"LENGTH":{"schemaItemType":"Phenomenon","label":"Length","definition":"LENGTH"},"MASS":{"schemaItemType":"Phenomenon","label":"Mass","definition":"MASS"},"TIME":{"schemaItemType":"Phenomenon","label":"Time","definition":"TIME"},"TEMPERATURE":{"schemaItemType":"Phenomenon","label":"Temperature","definition":"TEMPERATURE"},"TEMPERATURE_CHANGE":{"schemaItemType":"Phenomenon","label":"Temperature Change","definition":"TEMPERATURE_CHANGE"},"CURRENT":{"schemaItemType":"Phenomenon","label":"Current","definition":"CURRENT"},"MOLE":{"schemaItemType":"Phenomenon","label":"Mole","definition":"MOLE"},"LUMINOSITY":{"schemaItemType":"Phenomenon","label":"Luminosity","definition":"LUMINOSITY"},"ANGLE":{"schemaItemType":"Phenomenon","label":"Angle","definition":"ANGLE"},"HORIZONTAL_DIRECTION":{"schemaItemType":"Phenomenon","label":"Horizontal Direction","definition":"HORIZONTAL_DIRECTION"},"SOLIDANGLE":{"schemaItemType":"Phenomenon","label":"Solid Angle","definition":"SOLIDANGLE"},"CURRENCY":{"schemaItemType":"Phenomenon","definition":"CURRENCY"},"CAPITA":{"schemaItemType":"Phenomenon","label":"Capita","definition":"CAPITA"},"NUMBER":{"schemaItemType":"Phenomenon","label":"Number","definition":"NUMBER"},"THREAD_PITCH":{"schemaItemType":"Phenomenon","label":"Thread Pitch","definition":"LENGTH*ANGLE(-1)"},"ENTROPY":{"schemaItemType":"Phenomenon","label":"Entropy","definition":"WORK*TEMPERATURE_CHANGE(-1)"},"LUMINOUS_EFFICACY":{"schemaItemType":"Phenomenon","label":"Luminous Efficacy","definition":"LUMINOUS_FLUX*POWER(-1)"},"MOMENT_DISPLAY_SCALE":{"schemaItemType":"Phenomenon","label":"Moment Scale","description":"Display size of the linear moment","definition":"FORCE(-1)"},"FORCE_DISPLAY_SCALE":{"schemaItemType":"Phenomenon","label":"Force Scale","description":"Display size of the force","definition":"LINEAR_LOAD(-1)"},"PI":{"schemaItemType":"Constant","label":"Pi","phenomenon":"Units.LENGTH_RATIO","definition":"ONE","numerator":3.141592653589793},"QUARTER_PI":{"schemaItemType":"Constant","label":"Pi/4","phenomenon":"Units.LENGTH_RATIO","definition":"PI","numerator":1,"denominator":4},"HALF_PI":{"schemaItemType":"Constant","label":"Pi/2","phenomenon":"Units.LENGTH_RATIO","definition":"PI","numerator":1,"denominator":2},"TWO_PI":{"schemaItemType":"Constant","label":"2Pi","phenomenon":"Units.LENGTH_RATIO","definition":"PI","numerator":2},"DEG360":{"schemaItemType":"Constant","label":"360°","phenomenon":"Units.ANGLE","definition":"ARC_DEG","numerator":360},"STD_G":{"schemaItemType":"Constant","label":"ɡ0","phenomenon":"Units.ACCELERATION","definition":"M*S(-2)","numerator":9.80665},"DECI":{"schemaItemType":"Constant","label":"deci","phenomenon":"Units.NUMBER","definition":"ONE","numerator":0.1},"CENTI":{"schemaItemType":"Constant","label":"centi","phenomenon":"Units.NUMBER","definition":"ONE","numerator":0.01},"MILLI":{"schemaItemType":"Constant","label":"milli","phenomenon":"Units.NUMBER","definition":"ONE","numerator":0.001},"MICRO":{"schemaItemType":"Constant","label":"micro","phenomenon":"Units.NUMBER","definition":"ONE","numerator":0.000001},"NANO":{"schemaItemType":"Constant","label":"nano","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1e-9},"PICO":{"schemaItemType":"Constant","label":"pico","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1e-12},"FEMTO":{"schemaItemType":"Constant","label":"femto","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1e-15},"ATTO":{"schemaItemType":"Constant","label":"atto","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1e-18},"ZEPTO":{"schemaItemType":"Constant","label":"zepto","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1e-21},"YOCTO":{"schemaItemType":"Constant","label":"yocto","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1e-24},"DECA":{"schemaItemType":"Constant","phenomenon":"Units.NUMBER","definition":"ONE","numerator":10},"HECTO":{"schemaItemType":"Constant","label":"hecto","phenomenon":"Units.NUMBER","definition":"ONE","numerator":100},"KILO":{"schemaItemType":"Constant","label":"kilo","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1000},"MEGA":{"schemaItemType":"Constant","label":"mega","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1000000},"GIGA":{"schemaItemType":"Constant","label":"giga","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1000000000},"TERA":{"schemaItemType":"Constant","label":"tera","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1000000000000},"PETA":{"schemaItemType":"Constant","label":"peta","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1000000000000000},"EXA":{"schemaItemType":"Constant","label":"exa","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1000000000000000000},"ZETTA":{"schemaItemType":"Constant","label":"zetta","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1e+21},"YOTTA":{"schemaItemType":"Constant","label":"yotta","phenomenon":"Units.NUMBER","definition":"ONE","numerator":1e+24},"MM":{"schemaItemType":"Unit","label":"mm","phenomenon":"Units.LENGTH","unitSystem":"Units.METRIC","definition":"[MILLI]*M"},"CM":{"schemaItemType":"Unit","label":"cm","phenomenon":"Units.LENGTH","unitSystem":"Units.METRIC","definition":"[CENTI]*M"},"DM":{"schemaItemType":"Unit","label":"dm","phenomenon":"Units.LENGTH","unitSystem":"Units.METRIC","definition":"[DECI]*M"},"KM":{"schemaItemType":"Unit","label":"km","phenomenon":"Units.LENGTH","unitSystem":"Units.METRIC","definition":"[KILO]*M"},"UM":{"schemaItemType":"Unit","label":"µm","phenomenon":"Units.LENGTH","unitSystem":"Units.METRIC","definition":"[MICRO]*M"},"MILLIINCH":{"schemaItemType":"Unit","label":"mil","phenomenon":"Units.LENGTH","unitSystem":"Units.USCUSTOM","definition":"[MILLI]*IN"},"MICROINCH":{"schemaItemType":"Unit","label":"µin","phenomenon":"Units.LENGTH","unitSystem":"Units.USCUSTOM","definition":"[MICRO]*IN"},"MILLIFOOT":{"schemaItemType":"Unit","label":"mft","phenomenon":"Units.LENGTH","unitSystem":"Units.USCUSTOM","definition":"[MILLI]*FT"},"IN":{"schemaItemType":"Unit","label":"in","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix B. Section 3.1, Page B-10","phenomenon":"Units.LENGTH","unitSystem":"Units.USCUSTOM","definition":"MM","numerator":25.4},"FT":{"schemaItemType":"Unit","label":"ft","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 2, Page C-4","phenomenon":"Units.LENGTH","unitSystem":"Units.USCUSTOM","definition":"IN","numerator":12},"YRD":{"schemaItemType":"Unit","label":"yd","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 2, Page C-4","phenomenon":"Units.LENGTH","unitSystem":"Units.USCUSTOM","definition":"FT","numerator":3},"CHAIN":{"schemaItemType":"Unit","label":"chain","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 4, Page C-8","phenomenon":"Units.LENGTH","unitSystem":"Units.USCUSTOM","definition":"FT","numerator":66},"MILE":{"schemaItemType":"Unit","label":"mi","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 4, Page C-8","phenomenon":"Units.LENGTH","unitSystem":"Units.USCUSTOM","definition":"YRD","numerator":1760},"US_SURVEY_IN":{"schemaItemType":"Unit","label":"in (US Survey)","description":"100/3937 Derived from the definition of us survey foot in terms of meters. Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 4, Page C-9","phenomenon":"Units.LENGTH","unitSystem":"Units.USSURVEY","definition":"M","numerator":100,"denominator":3937},"US_SURVEY_FT":{"schemaItemType":"Unit","label":"ft (US Survey)","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 2, Page C-4","phenomenon":"Units.LENGTH","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_IN","numerator":12},"US_SURVEY_YRD":{"schemaItemType":"Unit","label":"yrd (US Survey)","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 2, Page C-4","phenomenon":"Units.LENGTH","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_FT","numerator":3},"US_SURVEY_CHAIN":{"schemaItemType":"Unit","label":"chain (US Survey)","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 4, Page C-8","phenomenon":"Units.LENGTH","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_FT","numerator":66},"US_SURVEY_MILE":{"schemaItemType":"Unit","label":"mi (US Survey)","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 4, Page C-8","phenomenon":"Units.LENGTH","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_YRD","numerator":1760},"NAUT_MILE":{"schemaItemType":"Unit","label":"nmi","description":"International Nautical Mile. Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 2, Page C-4","phenomenon":"Units.LENGTH","unitSystem":"Units.MARITIME","definition":"M","numerator":1852},"G":{"schemaItemType":"Unit","label":"g","phenomenon":"Units.MASS","unitSystem":"Units.METRIC","definition":"[MILLI]*KG"},"MG":{"schemaItemType":"Unit","label":"mg","phenomenon":"Units.MASS","unitSystem":"Units.METRIC","definition":"[MILLI]*G"},"MKG":{"schemaItemType":"Unit","label":"µg","phenomenon":"Units.MASS","unitSystem":"Units.METRIC","definition":"[MICRO]*G"},"NG":{"schemaItemType":"Unit","label":"ng","phenomenon":"Units.MASS","unitSystem":"Units.METRIC","definition":"[NANO]*G"},"MEGAGRAM":{"schemaItemType":"Unit","label":"Mg","phenomenon":"Units.MASS","unitSystem":"Units.METRIC","definition":"[MEGA]*G"},"TONNE":{"schemaItemType":"Unit","label":"tonne","description":"Also known as a metric ton http://phyMETRICcs.nist.gov/cuu/pdf/sp811.pdf, Appendix B.","phenomenon":"Units.MASS","unitSystem":"Units.METRIC","definition":"[KILO]*KG"},"LBM":{"schemaItemType":"Unit","label":"lb","description":"Is Avoirdupois Pound. Exact, http://physics.nist.gov/cuu/pdf/sp811.pdf, Appendix B. Footnote 22","phenomenon":"Units.MASS","unitSystem":"Units.USCUSTOM","definition":"KG","numerator":0.45359237},"SLUG":{"schemaItemType":"Unit","label":"slug","phenomenon":"Units.MASS","unitSystem":"Units.USCUSTOM","definition":"LBF*S(2)*FT(-1)"},"GRM":{"schemaItemType":"Unit","label":"gr","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix B. Section 3.2, Page B-10","phenomenon":"Units.MASS","unitSystem":"Units.USCUSTOM","definition":"LBM","denominator":7000},"SHORT_TON_MASS":{"schemaItemType":"Unit","label":"tn (short)","description":"Exact, http://physics.nist.gov/cuu/pdf/sp811.pdf, Appendix B.","phenomenon":"Units.MASS","unitSystem":"Units.USCUSTOM","definition":"LBM","numerator":2000},"LONG_TON_MASS":{"schemaItemType":"Unit","label":"tn (long)","description":"Exact, http://physics.nist.gov/cuu/pdf/sp811.pdf, Appendix B.","phenomenon":"Units.MASS","unitSystem":"Units.USCUSTOM","definition":"LBM","numerator":2240},"KIPM":{"schemaItemType":"Unit","label":"kipm","description":"Exact, http://physics.nist.gov/cuu/pdf/sp811.pdf, Appendix B.","phenomenon":"Units.MASS","unitSystem":"Units.USCUSTOM","definition":"[KILO]*LBM"},"OZM":{"schemaItemType":"Unit","label":"oz","description":"1/16 Exact, https://en.wikipedia.org/wiki/Ounce","phenomenon":"Units.MASS","unitSystem":"Units.USCUSTOM","definition":"LBM","denominator":16},"MIN":{"schemaItemType":"Unit","label":"min","phenomenon":"Units.TIME","unitSystem":"Units.INTERNATIONAL","definition":"S","numerator":60},"HR":{"schemaItemType":"Unit","label":"h","phenomenon":"Units.TIME","unitSystem":"Units.INTERNATIONAL","definition":"MIN","numerator":60},"DAY":{"schemaItemType":"Unit","label":"days","phenomenon":"Units.TIME","unitSystem":"Units.INTERNATIONAL","definition":"HR","numerator":24},"WEEK":{"schemaItemType":"Unit","label":"week","phenomenon":"Units.TIME","unitSystem":"Units.INTERNATIONAL","definition":"DAY","numerator":7},"YR":{"schemaItemType":"Unit","label":"years","description":"http://physics.nist.gov/cuu/pdf/sp811.pdf, Appendix B. Year is 3.1536 E+07 seconds which is equal to 365 * 24 * 60 * 60","phenomenon":"Units.TIME","unitSystem":"Units.INTERNATIONAL","definition":"DAY","numerator":365},"YEAR_SIDEREAL":{"schemaItemType":"Unit","label":"Year (Sidereal)","description":"http://physics.nist.gov/cuu/pdf/sp811.pdf, Appendix B.","phenomenon":"Units.TIME","unitSystem":"Units.INTERNATIONAL","definition":"S","numerator":31558150},"YEAR_TROPICAL":{"schemaItemType":"Unit","label":"Year (Tropical)","description":"http://physics.nist.gov/cuu/pdf/sp811.pdf, Appendix B.","phenomenon":"Units.TIME","unitSystem":"Units.INTERNATIONAL","definition":"S","numerator":31556930},"MS":{"schemaItemType":"Unit","label":"ms","phenomenon":"Units.TIME","unitSystem":"Units.INTERNATIONAL","definition":"[MILLI]*S"},"MKS":{"schemaItemType":"Unit","label":"µs","phenomenon":"Units.TIME","unitSystem":"Units.INTERNATIONAL","definition":"[MICRO]*S"},"CELSIUS":{"schemaItemType":"Unit","label":"°C","phenomenon":"Units.TEMPERATURE","unitSystem":"Units.METRIC","definition":"K","offset":273.15},"FAHRENHEIT":{"schemaItemType":"Unit","label":"°F","description":"Factor is 5/9","phenomenon":"Units.TEMPERATURE","unitSystem":"Units.USCUSTOM","definition":"CELSIUS","numerator":5,"denominator":9,"offset":-32},"RANKINE":{"schemaItemType":"Unit","label":"°R","description":"Factor is 5/9","phenomenon":"Units.TEMPERATURE","unitSystem":"Units.USCUSTOM","definition":"K","numerator":5,"denominator":9},"DELTA_CELSIUS":{"schemaItemType":"Unit","label":"Δ°C","phenomenon":"Units.TEMPERATURE_CHANGE","unitSystem":"Units.METRIC","definition":"DELTA_KELVIN"},"DELTA_FAHRENHEIT":{"schemaItemType":"Unit","label":"Δ°F","description":"Factor is 5/9","phenomenon":"Units.TEMPERATURE_CHANGE","unitSystem":"Units.USCUSTOM","definition":"DELTA_CELSIUS","numerator":5,"denominator":9},"DELTA_RANKINE":{"schemaItemType":"Unit","label":"Δ°R","description":"Factor is 5/9","phenomenon":"Units.TEMPERATURE_CHANGE","unitSystem":"Units.USCUSTOM","definition":"DELTA_KELVIN","numerator":5,"denominator":9},"KELVIN_PER_M":{"schemaItemType":"Unit","label":"ΔK/m","phenomenon":"Units.TEMPERATURE_GRADIENT","unitSystem":"Units.SI","definition":"DELTA_KELVIN*M(-1)"},"STRAIN_PER_KELVIN":{"schemaItemType":"Unit","label":"1/ΔK","phenomenon":"Units.LINEAR_COEFFICIENT_OF_THERMAL_EXPANSION","unitSystem":"Units.SI","definition":"DELTA_KELVIN(-1)"},"STRAIN_PER_CELSIUS":{"schemaItemType":"Unit","label":"1/Δ°C","phenomenon":"Units.LINEAR_COEFFICIENT_OF_THERMAL_EXPANSION","unitSystem":"Units.METRIC","definition":"DELTA_CELSIUS(-1)"},"STRAIN_PER_FAHRENHEIT":{"schemaItemType":"Unit","label":"1/Δ°F","phenomenon":"Units.LINEAR_COEFFICIENT_OF_THERMAL_EXPANSION","unitSystem":"Units.USCUSTOM","definition":"DELTA_FAHRENHEIT(-1)"},"STRAIN_PER_RANKINE":{"schemaItemType":"Unit","label":"1/Δ°R","phenomenon":"Units.LINEAR_COEFFICIENT_OF_THERMAL_EXPANSION","unitSystem":"Units.USCUSTOM","definition":"DELTA_RANKINE(-1)"},"LUMEN":{"schemaItemType":"Unit","label":"lm","phenomenon":"Units.LUMINOUS_FLUX","unitSystem":"Units.SI","definition":"CD*STERAD"},"LUX":{"schemaItemType":"Unit","label":"lx","phenomenon":"Units.ILLUMINANCE","unitSystem":"Units.SI","definition":"LUMEN*M(-2)"},"LUMEN_PER_SQ_FT":{"schemaItemType":"Unit","label":"lm/ft²","phenomenon":"Units.ILLUMINANCE","unitSystem":"Units.USCUSTOM","definition":"LUMEN*FT(-2)"},"KMOL":{"schemaItemType":"Unit","label":"kmol","phenomenon":"Units.MOLE","unitSystem":"Units.METRIC","definition":"[KILO]*MOL"},"LB_MOL":{"schemaItemType":"Unit","label":"lb-mol","description":"ASTM SI 10 standard SI1-.phhc8328.pdf page 29, 35 and http://en.wikipedia.org/wiki/Mole_%28unit%29","phenomenon":"Units.MOLE","unitSystem":"Units.USCUSTOM","definition":"MOL","numerator":453.59237},"HUNDRED_PERSON":{"schemaItemType":"Unit","phenomenon":"Units.CAPITA","unitSystem":"Units.STATISTICS","definition":"[HECTO]*PERSON"},"THOUSAND_PERSON":{"schemaItemType":"Unit","phenomenon":"Units.CAPITA","unitSystem":"Units.STATISTICS","definition":"[KILO]*PERSON"},"N_M_PER_RAD":{"schemaItemType":"Unit","label":"N·m/rad","phenomenon":"Units.ROTATIONAL_SPRING_CONSTANT","unitSystem":"Units.SI","definition":"N_M*RAD(-1)"},"KN_M_PER_RAD":{"schemaItemType":"Unit","label":"kN·m/rad","phenomenon":"Units.ROTATIONAL_SPRING_CONSTANT","unitSystem":"Units.METRIC","definition":"KN_M*RAD(-1)"},"N_M_PER_DEG":{"schemaItemType":"Unit","label":"N·m/deg","phenomenon":"Units.ROTATIONAL_SPRING_CONSTANT","unitSystem":"Units.METRIC","definition":"N_M*ARC_DEG(-1)"},"KN_M_PER_DEG":{"schemaItemType":"Unit","label":"kN·m/deg","phenomenon":"Units.ROTATIONAL_SPRING_CONSTANT","unitSystem":"Units.METRIC","definition":"KN_M*ARC_DEG(-1)"},"KPF_FT_PER_RAD":{"schemaItemType":"Unit","label":"kpf·ft/rad","phenomenon":"Units.ROTATIONAL_SPRING_CONSTANT","unitSystem":"Units.USCUSTOM","definition":"KPF_FT*RAD(-1)"},"KPF_FT_PER_DEG":{"schemaItemType":"Unit","label":"kpf·ft/deg","phenomenon":"Units.ROTATIONAL_SPRING_CONSTANT","unitSystem":"Units.USCUSTOM","definition":"KPF_FT*ARC_DEG(-1)"},"N_PER_RAD":{"schemaItemType":"Unit","label":"N/rad","phenomenon":"Units.LINEAR_ROTATIONAL_SPRING_CONSTANT","unitSystem":"Units.SI","definition":"N*RAD(-1)"},"KN_PER_RAD":{"schemaItemType":"Unit","label":"kN/rad","phenomenon":"Units.LINEAR_ROTATIONAL_SPRING_CONSTANT","unitSystem":"Units.METRIC","definition":"KN*RAD(-1)"},"KPF_PER_RAD":{"schemaItemType":"Unit","label":"kpf/rad","phenomenon":"Units.LINEAR_ROTATIONAL_SPRING_CONSTANT","unitSystem":"Units.USCUSTOM","definition":"KPF*RAD(-1)"},"SPRING_CONSTANT_N_PER_M":{"schemaItemType":"Unit","label":"N/m","phenomenon":"Units.SPRING_CONSTANT","unitSystem":"Units.SI","definition":"N*M(-1)"},"SPRING_CONSTANT_KN_PER_M":{"schemaItemType":"Unit","label":"kN/m","phenomenon":"Units.SPRING_CONSTANT","unitSystem":"Units.METRIC","definition":"KN*M(-1)"},"SPRING_CONSTANT_KPF_PER_FT":{"schemaItemType":"Unit","label":"kpf/ft","phenomenon":"Units.SPRING_CONSTANT","unitSystem":"Units.USCUSTOM","definition":"KPF*FT(-1)"},"LINEAR_SPRING_CONSTANT_N_PER_SQ_M":{"schemaItemType":"Unit","label":"N/m²","phenomenon":"Units.LINEAR_SPRING_CONSTANT","unitSystem":"Units.SI","definition":"SPRING_CONSTANT_N_PER_M*M(-1)"},"LINEAR_SPRING_CONSTANT_KN_PER_SQ_M":{"schemaItemType":"Unit","label":"kN/m²","phenomenon":"Units.LINEAR_SPRING_CONSTANT","unitSystem":"Units.METRIC","definition":"SPRING_CONSTANT_KN_PER_M*M(-1)"},"LINEAR_SPRING_CONSTANT_KPF_PER_SQ_FT":{"schemaItemType":"Unit","label":"kpf/ft²","phenomenon":"Units.LINEAR_SPRING_CONSTANT","unitSystem":"Units.USCUSTOM","definition":"SPRING_CONSTANT_KPF_PER_FT*FT(-1)"},"AREA_SPRING_CONSTANT_N_PER_CUB_M":{"schemaItemType":"Unit","label":"N/m³","phenomenon":"Units.AREA_SPRING_CONSTANT","unitSystem":"Units.SI","definition":"SPRING_CONSTANT_N_PER_M*SQ_M(-1)"},"AREA_SPRING_CONSTANT_KN_PER_CUB_M":{"schemaItemType":"Unit","label":"kN/m³","phenomenon":"Units.AREA_SPRING_CONSTANT","unitSystem":"Units.METRIC","definition":"SPRING_CONSTANT_KN_PER_M*SQ_M(-1)"},"AREA_SPRING_CONSTANT_KPF_PER_CUB_FT":{"schemaItemType":"Unit","label":"kpf/ft³","phenomenon":"Units.AREA_SPRING_CONSTANT","unitSystem":"Units.USCUSTOM","definition":"SPRING_CONSTANT_KPF_PER_FT*SQ_FT(-1)"},"M_PER_SEC_SQ":{"schemaItemType":"Unit","label":"m/sec²","phenomenon":"Units.ACCELERATION","unitSystem":"Units.SI","definition":"M*S(-2)"},"CM_PER_SEC_SQ":{"schemaItemType":"Unit","label":"cm/sec²","phenomenon":"Units.ACCELERATION","unitSystem":"Units.METRIC","definition":"CM*S(-2)"},"FT_PER_SEC_SQ":{"schemaItemType":"Unit","label":"ft/sec²","phenomenon":"Units.ACCELERATION","unitSystem":"Units.USCUSTOM","definition":"FT*S(-2)"},"ARC_DEG":{"schemaItemType":"Unit","label":"°","description":"1/180","phenomenon":"Units.ANGLE","unitSystem":"Units.METRIC","definition":"[PI]*RAD","denominator":180},"ARC_MINUTE":{"schemaItemType":"Unit","label":"\'","description":"1/60","phenomenon":"Units.ANGLE","unitSystem":"Units.METRIC","definition":"ARC_DEG","denominator":60},"ARC_SECOND":{"schemaItemType":"Unit","label":"\'\'","description":"1/3600","phenomenon":"Units.ANGLE","unitSystem":"Units.METRIC","definition":"ARC_DEG","denominator":3600},"ARC_QUADRANT":{"schemaItemType":"Unit","label":"quadrants","phenomenon":"Units.ANGLE","unitSystem":"Units.METRIC","definition":"[HALF_PI]*RAD"},"GRAD":{"schemaItemType":"Unit","label":"grad","description":"1/200","phenomenon":"Units.ANGLE","unitSystem":"Units.METRIC","definition":"[PI]*RAD","denominator":200},"REVOLUTION":{"schemaItemType":"Unit","label":"r","phenomenon":"Units.ANGLE","unitSystem":"Units.METRIC","definition":"[TWO_PI]*RAD"},"HORIZONTAL_DIR_ARC_DEG":{"schemaItemType":"Unit","label":"°","description":"1/180","phenomenon":"Units.HORIZONTAL_DIRECTION","unitSystem":"Units.METRIC","definition":"[PI]*HORIZONTAL_DIR_RAD","denominator":180},"HORIZONTAL_DIR_ARC_MINUTE":{"schemaItemType":"Unit","label":"\'","description":"1/60","phenomenon":"Units.HORIZONTAL_DIRECTION","unitSystem":"Units.METRIC","definition":"HORIZONTAL_DIR_ARC_DEG","denominator":60},"HORIZONTAL_DIR_ARC_SECOND":{"schemaItemType":"Unit","label":"\'\'","description":"1/3600","phenomenon":"Units.HORIZONTAL_DIRECTION","unitSystem":"Units.METRIC","definition":"HORIZONTAL_DIR_ARC_DEG","denominator":3600},"HORIZONTAL_DIR_GRAD":{"schemaItemType":"Unit","label":"grad","description":"1/200","phenomenon":"Units.HORIZONTAL_DIRECTION","unitSystem":"Units.METRIC","definition":"[PI]*HORIZONTAL_DIR_RAD","denominator":200},"HORIZONTAL_DIR_MILLIRAD":{"schemaItemType":"Unit","label":"mrad","description":"1/1000","phenomenon":"Units.HORIZONTAL_DIRECTION","unitSystem":"Units.METRIC","definition":"[PI]*HORIZONTAL_DIR_RAD","denominator":1000},"HORIZONTAL_DIR_REVOLUTION":{"schemaItemType":"Unit","label":"r","phenomenon":"Units.HORIZONTAL_DIRECTION","unitSystem":"Units.METRIC","definition":"[TWO_PI]*HORIZONTAL_DIR_RAD"},"SQ_M":{"schemaItemType":"Unit","label":"m²","phenomenon":"Units.AREA","unitSystem":"Units.SI","definition":"M(2)"},"SQ_UM":{"schemaItemType":"Unit","label":"um²","phenomenon":"Units.AREA","unitSystem":"Units.METRIC","definition":"UM(2)"},"SQ_MM":{"schemaItemType":"Unit","label":"mm²","phenomenon":"Units.AREA","unitSystem":"Units.METRIC","definition":"MM(2)"},"SQ_CM":{"schemaItemType":"Unit","label":"cm²","phenomenon":"Units.AREA","unitSystem":"Units.METRIC","definition":"CM(2)"},"SQ_DM":{"schemaItemType":"Unit","label":"dm²","phenomenon":"Units.AREA","unitSystem":"Units.METRIC","definition":"DM(2)"},"SQ_KM":{"schemaItemType":"Unit","label":"km²","phenomenon":"Units.AREA","unitSystem":"Units.METRIC","definition":"KM(2)"},"ARE":{"schemaItemType":"Unit","label":"are","phenomenon":"Units.AREA","unitSystem":"Units.METRIC","definition":"[HECTO]*M(2)"},"HECTARE":{"schemaItemType":"Unit","label":"ha","phenomenon":"Units.AREA","unitSystem":"Units.METRIC","definition":"[HECTO]*ARE"},"SQ_IN":{"schemaItemType":"Unit","label":"in²","phenomenon":"Units.AREA","unitSystem":"Units.USCUSTOM","definition":"IN(2)"},"SQ_FT":{"schemaItemType":"Unit","label":"ft²","phenomenon":"Units.AREA","unitSystem":"Units.USCUSTOM","definition":"FT(2)"},"THOUSAND_SQ_FT":{"schemaItemType":"Unit","label":"thousand ft²","phenomenon":"Units.AREA","unitSystem":"Units.USCUSTOM","definition":"[KILO]*FT(2)"},"SQ_YRD":{"schemaItemType":"Unit","label":"yd²","phenomenon":"Units.AREA","unitSystem":"Units.USCUSTOM","definition":"YRD(2)"},"SQ_MILE":{"schemaItemType":"Unit","label":"mi²","phenomenon":"Units.AREA","unitSystem":"Units.USCUSTOM","definition":"MILE(2)"},"SQ_CHAIN":{"schemaItemType":"Unit","label":"chain²","phenomenon":"Units.AREA","unitSystem":"Units.USCUSTOM","definition":"CHAIN(2)"},"ACRE":{"schemaItemType":"Unit","label":"acres","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 4, Page C-9","phenomenon":"Units.AREA","unitSystem":"Units.USCUSTOM","definition":"CHAIN(2)","numerator":10},"SQ_US_SURVEY_IN":{"schemaItemType":"Unit","label":"in² (US Survey)","phenomenon":"Units.AREA","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_IN(2)"},"SQ_US_SURVEY_FT":{"schemaItemType":"Unit","label":"ft² (US Survey)","phenomenon":"Units.AREA","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_FT(2)"},"SQ_US_SURVEY_YRD":{"schemaItemType":"Unit","label":"yrd² (US Survey)","phenomenon":"Units.AREA","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_YRD(2)"},"SQ_US_SURVEY_MILE":{"schemaItemType":"Unit","label":"mile² (US Survey)","phenomenon":"Units.AREA","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_MILE(2)"},"SQ_US_SURVEY_CHAIN":{"schemaItemType":"Unit","label":"chain² (US Survey)","phenomenon":"Units.AREA","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_CHAIN(2)"},"US_SURVEY_ACRE":{"schemaItemType":"Unit","label":"acre (US Survey)","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 4, Page C-9","phenomenon":"Units.AREA","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_CHAIN(2)","numerator":10},"IN_MILE":{"schemaItemType":"Unit","label":"in·mi","phenomenon":"Units.PIPE_DIAMETER_LENGTH","unitSystem":"Units.INDUSTRIAL","definition":"IN*MILE"},"FT_MILE":{"schemaItemType":"Unit","label":"ft·mi","phenomenon":"Units.PIPE_DIAMETER_LENGTH","unitSystem":"Units.INDUSTRIAL","definition":"FT*MILE"},"FT_FT":{"schemaItemType":"Unit","label":"ft·ft","phenomenon":"Units.PIPE_DIAMETER_LENGTH","unitSystem":"Units.INDUSTRIAL","definition":"FT*FT"},"IN_FT":{"schemaItemType":"Unit","label":"in·ft","phenomenon":"Units.PIPE_DIAMETER_LENGTH","unitSystem":"Units.INDUSTRIAL","definition":"IN*FT"},"IN_M":{"schemaItemType":"Unit","label":"in·m","phenomenon":"Units.PIPE_DIAMETER_LENGTH","unitSystem":"Units.INDUSTRIAL","definition":"IN*M"},"MM_KM":{"schemaItemType":"Unit","label":"mm·km","phenomenon":"Units.PIPE_DIAMETER_LENGTH","unitSystem":"Units.INDUSTRIAL","definition":"MM*KM"},"MM_M":{"schemaItemType":"Unit","label":"mm·m","phenomenon":"Units.PIPE_DIAMETER_LENGTH","unitSystem":"Units.INDUSTRIAL","definition":"MM*M"},"MM_MILE":{"schemaItemType":"Unit","label":"mm·mi","phenomenon":"Units.PIPE_DIAMETER_LENGTH","unitSystem":"Units.INDUSTRIAL","definition":"MM*MILE"},"M_KM":{"schemaItemType":"Unit","label":"m·km","phenomenon":"Units.PIPE_DIAMETER_LENGTH","unitSystem":"Units.INDUSTRIAL","definition":"M*KM"},"M_M":{"schemaItemType":"Unit","label":"m·m","phenomenon":"Units.PIPE_DIAMETER_LENGTH","unitSystem":"Units.SI","definition":"M*M"},"KG_PER_CUB_M":{"schemaItemType":"Unit","label":"kg/m³","phenomenon":"Units.DENSITY","unitSystem":"Units.SI","definition":"KG*M(-3)"},"KG_PER_CUB_CM":{"schemaItemType":"Unit","label":"kg/cm³","phenomenon":"Units.DENSITY","unitSystem":"Units.METRIC","definition":"KG*CM(-3)"},"KG_PER_LITRE":{"schemaItemType":"Unit","label":"kg/dm³","phenomenon":"Units.DENSITY","unitSystem":"Units.METRIC","definition":"KG*DM(-3)"},"G_PER_CUB_CM":{"schemaItemType":"Unit","label":"g/cm³","phenomenon":"Units.DENSITY","unitSystem":"Units.METRIC","definition":"G*CM(-3)"},"MKG_PER_LITRE":{"schemaItemType":"Unit","label":"µg/L","phenomenon":"Units.DENSITY","unitSystem":"Units.METRIC","definition":"MKG*DM(-3)"},"MG_PER_LITRE":{"schemaItemType":"Unit","label":"mg/L","phenomenon":"Units.DENSITY","unitSystem":"Units.METRIC","definition":"MG*DM(-3)"},"LBM_PER_CUB_FT":{"schemaItemType":"Unit","label":"lb/ft³","phenomenon":"Units.DENSITY","unitSystem":"Units.USCUSTOM","definition":"LBM*FT(-3)"},"LBM_PER_GALLON":{"schemaItemType":"Unit","label":"lb/gal","phenomenon":"Units.DENSITY","unitSystem":"Units.USCUSTOM","definition":"LBM*GALLON(-1)"},"LBM_PER_GALLON_IMPERIAL":{"schemaItemType":"Unit","label":"lb/gal (imp)","phenomenon":"Units.DENSITY","unitSystem":"Units.IMPERIAL","definition":"LBM*GALLON_IMPERIAL(-1)"},"LBM_PER_CUB_IN":{"schemaItemType":"Unit","label":"lb/in³","phenomenon":"Units.DENSITY","unitSystem":"Units.USCUSTOM","definition":"LBM*IN(-3)"},"LBM_PER_MILLION_GALLON":{"schemaItemType":"Unit","label":"lb/million gal","phenomenon":"Units.DENSITY","unitSystem":"Units.USCUSTOM","definition":"LBM*[MEGA](-1)*GALLON(-1)"},"SLUG_PER_CUB_FT":{"schemaItemType":"Unit","label":"slug/ft³","phenomenon":"Units.DENSITY","unitSystem":"Units.USCUSTOM","definition":"SLUG*FT(-3)"},"KIP_PER_CUB_FT":{"schemaItemType":"Unit","label":"kip/ft³","phenomenon":"Units.DENSITY","unitSystem":"Units.USCUSTOM","definition":"KIPM*FT(-3)"},"SHORT_TON_PER_CUB_FT":{"schemaItemType":"Unit","label":"tn (short)/ft³","phenomenon":"Units.DENSITY","unitSystem":"Units.USCUSTOM","definition":"SHORT_TON_MASS*FT(-3)"},"N_PER_CUB_M":{"schemaItemType":"Unit","label":"N/m³","phenomenon":"Units.FORCE_DENSITY","unitSystem":"Units.SI","definition":"N*M(-3)"},"KN_PER_CUB_M":{"schemaItemType":"Unit","label":"kN/m³","phenomenon":"Units.FORCE_DENSITY","unitSystem":"Units.METRIC","definition":"[KILO]*N*M(-3)"},"KPF_PER_CUB_FT":{"schemaItemType":"Unit","label":"kpf/ft³","phenomenon":"Units.FORCE_DENSITY","unitSystem":"Units.USCUSTOM","definition":"KPF*FT(-3)"},"N_PER_CUB_FT":{"schemaItemType":"Unit","label":"N/ft³","phenomenon":"Units.FORCE_DENSITY","unitSystem":"Units.USCUSTOM","definition":"N*FT(-3)"},"KN_PER_CUB_FT":{"schemaItemType":"Unit","label":"kN/ft³","phenomenon":"Units.FORCE_DENSITY","unitSystem":"Units.USCUSTOM","definition":"[KILO]*N*FT(-3)"},"PERSON_PER_SQ_M":{"schemaItemType":"Unit","label":"p/m²","phenomenon":"Units.POPULATION_DENSITY","unitSystem":"Units.SI","definition":"PERSON*M(-2)"},"PERSON_PER_HECTARE":{"schemaItemType":"Unit","label":"p/ha","phenomenon":"Units.POPULATION_DENSITY","unitSystem":"Units.METRIC","definition":"PERSON*HECTARE(-1)"},"PERSON_PER_SQ_KM":{"schemaItemType":"Unit","label":"p/km²","phenomenon":"Units.POPULATION_DENSITY","unitSystem":"Units.METRIC","definition":"PERSON*KM(-2)"},"PERSON_PER_ACRE":{"schemaItemType":"Unit","label":"p/acre","phenomenon":"Units.POPULATION_DENSITY","unitSystem":"Units.USCUSTOM","definition":"PERSON*ACRE(-1)"},"PERSON_PER_SQ_FT":{"schemaItemType":"Unit","label":"p/ft²","phenomenon":"Units.POPULATION_DENSITY","unitSystem":"Units.USCUSTOM","definition":"PERSON*FT(-2)"},"PERSON_PER_SQ_MILE":{"schemaItemType":"Unit","label":"p/mi²","phenomenon":"Units.POPULATION_DENSITY","unitSystem":"Units.USCUSTOM","definition":"PERSON*MILE(-2)"},"KILOAMPERE":{"schemaItemType":"Unit","label":"KA","phenomenon":"Units.CURRENT","unitSystem":"Units.METRIC","definition":"[KILO]*A"},"MILLIAMPERE":{"schemaItemType":"Unit","label":"mA","phenomenon":"Units.CURRENT","unitSystem":"Units.METRIC","definition":"[MILLI]*A"},"MICROAMPERE":{"schemaItemType":"Unit","label":"µA","phenomenon":"Units.CURRENT","unitSystem":"Units.METRIC","definition":"[MICRO]*A"},"COULOMB":{"schemaItemType":"Unit","label":"C","phenomenon":"Units.ELECTRIC_CHARGE","unitSystem":"Units.SI","definition":"A*S"},"VOLT":{"schemaItemType":"Unit","label":"V","phenomenon":"Units.ELECTRIC_POTENTIAL","unitSystem":"Units.SI","definition":"N*M*COULOMB(-1)"},"KILOVOLT":{"schemaItemType":"Unit","label":"KV","phenomenon":"Units.ELECTRIC_POTENTIAL","unitSystem":"Units.METRIC","definition":"[KILO]*VOLT"},"MEGAVOLT":{"schemaItemType":"Unit","label":"MV","phenomenon":"Units.ELECTRIC_POTENTIAL","unitSystem":"Units.METRIC","definition":"[MEGA]*VOLT"},"J":{"schemaItemType":"Unit","phenomenon":"Units.WORK","unitSystem":"Units.SI","definition":"N*M"},"KJ":{"schemaItemType":"Unit","label":"kJ","phenomenon":"Units.WORK","unitSystem":"Units.METRIC","definition":"[KILO]*J"},"MEGAJ":{"schemaItemType":"Unit","label":"MJ","phenomenon":"Units.WORK","unitSystem":"Units.METRIC","definition":"[MEGA]*J"},"GJ":{"schemaItemType":"Unit","phenomenon":"Units.WORK","unitSystem":"Units.METRIC","definition":"[GIGA]*J"},"FT_PDL":{"schemaItemType":"Unit","label":"ft*pdl","phenomenon":"Units.WORK","unitSystem":"Units.USCUSTOM","definition":"PDL*FT"},"BTU":{"schemaItemType":"Unit","label":"Btu","description":"Is IT BTU. http://physics.nist.gov/cuu/pdf/sp811.pdf, Appendix B. See foot note #9: ","phenomenon":"Units.WORK","unitSystem":"Units.INTERNATIONAL","definition":"J","numerator":1055.05585262},"KILOBTU":{"schemaItemType":"Unit","label":"kBtu","phenomenon":"Units.WORK","unitSystem":"Units.USCUSTOM","definition":"[KILO]*BTU"},"WATT_SECOND":{"schemaItemType":"Unit","label":"Ws","phenomenon":"Units.WORK","unitSystem":"Units.INTERNATIONAL","definition":"W*S"},"KWH":{"schemaItemType":"Unit","label":"kW·h","phenomenon":"Units.WORK","unitSystem":"Units.INTERNATIONAL","definition":"KW*HR"},"MEGAWH":{"schemaItemType":"Unit","label":"MWh","phenomenon":"Units.WORK","unitSystem":"Units.INTERNATIONAL","definition":"MEGAW*HR"},"GWH":{"schemaItemType":"Unit","label":"GWh","phenomenon":"Units.WORK","unitSystem":"Units.INTERNATIONAL","definition":"GW*HR"},"J_PER_CUB_M":{"schemaItemType":"Unit","label":"J/m³","phenomenon":"Units.ENERGY_DENSITY","unitSystem":"Units.SI","definition":"J*M(-3)"},"KJ_PER_CUB_M":{"schemaItemType":"Unit","label":"kJ/m³","phenomenon":"Units.ENERGY_DENSITY","unitSystem":"Units.METRIC","definition":"KJ*M(-3)"},"KWH_PER_CUB_M":{"schemaItemType":"Unit","label":"kW·h/m³","phenomenon":"Units.ENERGY_DENSITY","unitSystem":"Units.METRIC","definition":"KWH*M(-3)"},"KWH_PER_CUB_FT":{"schemaItemType":"Unit","label":"kWh/ft³","phenomenon":"Units.ENERGY_DENSITY","unitSystem":"Units.USCUSTOM","definition":"KWH*FT(-3)"},"KWH_PER_MILLION_GALLON":{"schemaItemType":"Unit","label":"kW·h/million gal","phenomenon":"Units.ENERGY_DENSITY","unitSystem":"Units.USCUSTOM","definition":"KWH*[MEGA](-1)*GALLON(-1)"},"J_PER_KG":{"schemaItemType":"Unit","label":"J/kg","phenomenon":"Units.SPECIFIC_ENERGY","unitSystem":"Units.SI","definition":"J*KG(-1)"},"KJ_PER_KG":{"schemaItemType":"Unit","label":"kJ/kg","phenomenon":"Units.SPECIFIC_ENERGY","unitSystem":"Units.METRIC","definition":"KJ*KG(-1)"},"MEGAJ_PER_KG":{"schemaItemType":"Unit","label":"MJ/kg","phenomenon":"Units.SPECIFIC_ENERGY","unitSystem":"Units.METRIC","definition":"MEGAJ*KG(-1)"},"BTU_PER_LBM":{"schemaItemType":"Unit","label":"Btu/lb","phenomenon":"Units.SPECIFIC_ENERGY","unitSystem":"Units.USCUSTOM","definition":"BTU*LBM(-1)"},"J_PER_KG_K":{"schemaItemType":"Unit","label":"J/(kg·ΔK)","phenomenon":"Units.SPECIFIC_HEAT_CAPACITY","unitSystem":"Units.SI","definition":"J*KG(-1)*DELTA_KELVIN(-1)"},"BTU_PER_LBM_RANKINE":{"schemaItemType":"Unit","label":"Btu/(lbm·Δ°R)","phenomenon":"Units.SPECIFIC_HEAT_CAPACITY","unitSystem":"Units.USCUSTOM","definition":"BTU*LBM(-1)*DELTA_RANKINE(-1)"},"J_PER_G_CELSIUS":{"schemaItemType":"Unit","label":"J/(g·Δ°C)","phenomenon":"Units.SPECIFIC_HEAT_CAPACITY","unitSystem":"Units.METRIC","definition":"J*G(-1)*DELTA_CELSIUS(-1)"},"J_PER_MOL_K":{"schemaItemType":"Unit","label":"J/(mol*K)","phenomenon":"Units.SPECIFIC_HEAT_CAPACITY_MOLAR","unitSystem":"Units.SI","definition":"J*MOL(-1)*DELTA_KELVIN(-1)"},"J_PER_KMOL_K":{"schemaItemType":"Unit","label":"J/(kmol·ΔK)","phenomenon":"Units.SPECIFIC_HEAT_CAPACITY_MOLAR","unitSystem":"Units.METRIC","definition":"J*KMOL(-1)*DELTA_KELVIN(-1)"},"KJ_PER_KMOL_K":{"schemaItemType":"Unit","label":"kJ/(kmol·ΔK)","phenomenon":"Units.SPECIFIC_HEAT_CAPACITY_MOLAR","unitSystem":"Units.METRIC","definition":"KJ*KMOL(-1)*DELTA_KELVIN(-1)"},"BTU_PER_LB_MOL_RANKINE":{"schemaItemType":"Unit","label":"Btu/(lb-mol·Δ°R)","phenomenon":"Units.SPECIFIC_HEAT_CAPACITY_MOLAR","unitSystem":"Units.USCUSTOM","definition":"BTU*LB_MOL(-1)*DELTA_RANKINE(-1)"},"CUB_M_PER_SEC":{"schemaItemType":"Unit","label":"m³/s","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.SI","definition":"M(3)*S(-1)"},"CUB_M_PER_MIN":{"schemaItemType":"Unit","label":"m³/min","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.METRIC","definition":"M(3)*MIN(-1)"},"CUB_M_PER_HR":{"schemaItemType":"Unit","label":"m³/h","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.METRIC","definition":"M(3)*HR(-1)"},"CUB_M_PER_DAY":{"schemaItemType":"Unit","label":"m³/day","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.METRIC","definition":"M(3)*DAY(-1)"},"LITRE_PER_SEC":{"schemaItemType":"Unit","label":"L/s","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.METRIC","definition":"LITRE*S(-1)"},"LITRE_PER_MIN":{"schemaItemType":"Unit","label":"L/min","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.METRIC","definition":"LITRE*MIN(-1)"},"LITRE_PER_HR":{"schemaItemType":"Unit","label":"L/h","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.METRIC","definition":"LITRE*HR(-1)"},"LITRE_PER_DAY":{"schemaItemType":"Unit","label":"L/day","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.METRIC","definition":"LITRE*DAY(-1)"},"CUB_IN_PER_SEC":{"schemaItemType":"Unit","label":"in³/sec","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"CUB_IN*S(-1)"},"CUB_IN_PER_MIN":{"schemaItemType":"Unit","label":"in³/min","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"CUB_IN*MIN(-1)"},"CUB_FT_PER_SEC":{"schemaItemType":"Unit","label":"ft³/s","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"CUB_FT*S(-1)"},"CUB_FT_PER_MIN":{"schemaItemType":"Unit","label":"ft³/min","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"CUB_FT*MIN(-1)"},"CUB_FT_PER_DAY":{"schemaItemType":"Unit","label":"ft³/day","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"CUB_FT*DAY(-1)"},"ACRE_FT_PER_DAY":{"schemaItemType":"Unit","label":"acre·ft/day","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"ACRE_FT*DAY(-1)"},"ACRE_FT_PER_HR":{"schemaItemType":"Unit","label":"acre·ft/h","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"ACRE_FT*HR(-1)"},"ACRE_FT_PER_MIN":{"schemaItemType":"Unit","label":"acre·ft/min","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"ACRE_FT*MIN(-1)"},"ACRE_IN_PER_DAY":{"schemaItemType":"Unit","label":"acre_in/day","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"ACRE_IN*DAY(-1)"},"ACRE_IN_PER_HR":{"schemaItemType":"Unit","label":"acre·in/h","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"ACRE_IN*HR(-1)"},"ACRE_IN_PER_MIN":{"schemaItemType":"Unit","label":"acre·in/min","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"ACRE_IN*MIN(-1)"},"GALLON_IMPERIAL_PER_SEC":{"schemaItemType":"Unit","label":"gal (imp)/s","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.IMPERIAL","definition":"GALLON_IMPERIAL*S(-1)"},"GALLON_IMPERIAL_PER_MIN":{"schemaItemType":"Unit","label":"gal (imp)/min","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.IMPERIAL","definition":"GALLON_IMPERIAL*MIN(-1)"},"GALLON_IMPERIAL_PER_HR":{"schemaItemType":"Unit","label":"gal (imp)/h","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.IMPERIAL","definition":"GALLON_IMPERIAL*HR(-1)"},"GALLON_IMPERIAL_PER_DAY":{"schemaItemType":"Unit","label":"gal (imp)/day","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.IMPERIAL","definition":"GALLON_IMPERIAL*DAY(-1)"},"GALLON_PER_SEC":{"schemaItemType":"Unit","label":"gal/s","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"GALLON*S(-1)"},"GALLON_PER_MIN":{"schemaItemType":"Unit","label":"gal/min","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"GALLON*MIN(-1)"},"GALLON_PER_HR":{"schemaItemType":"Unit","label":"gal/h","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"GALLON*HR(-1)"},"GALLON_PER_DAY":{"schemaItemType":"Unit","label":"gal/day","phenomenon":"Units.VOLUMETRIC_FLOW","unitSystem":"Units.USCUSTOM","definition":"GALLON*DAY(-1)"},"HZ":{"schemaItemType":"Unit","label":"Hz","phenomenon":"Units.FREQUENCY","unitSystem":"Units.SI","definition":"S(-1)"},"KHZ":{"schemaItemType":"Unit","label":"KHz","phenomenon":"Units.FREQUENCY","unitSystem":"Units.METRIC","definition":"[KILO]*S(-1)"},"MHZ":{"schemaItemType":"Unit","label":"MHz","phenomenon":"Units.FREQUENCY","unitSystem":"Units.METRIC","definition":"[MEGA]*S(-1)"},"CUB_M_PER_SQ_M_SEC":{"schemaItemType":"Unit","label":"m³/(m²*sec)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.SI","definition":"M*S(-1)"},"CUB_M_PER_SQ_M_DAY":{"schemaItemType":"Unit","label":"m³/(m²·day)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.METRIC","definition":"M*DAY(-1)"},"CUB_M_PER_HECTARE_DAY":{"schemaItemType":"Unit","label":"m³/(ha·day)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.METRIC","definition":"CUB_M*HECTARE(-1)*DAY(-1)"},"CUB_M_PER_SQ_KM_DAY":{"schemaItemType":"Unit","label":"m³/(km²·day)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.METRIC","definition":"CUB_M*KM(-2)*DAY(-1)"},"LITRE_PER_SQ_M_SEC":{"schemaItemType":"Unit","label":"L/(m²·s)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.METRIC","definition":"LITRE*M(-2)*S(-1)"},"CUB_FT_PER_SQ_FT_MIN":{"schemaItemType":"Unit","label":"ft³/(ft²·min)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.USCUSTOM","definition":"FT*MIN(-1)"},"CUB_FT_PER_SQ_FT_SEC":{"schemaItemType":"Unit","label":"ft³/(ft²·s)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.USCUSTOM","definition":"FT*S(-1)"},"CUB_FT_PER_SQ_MILE_SEC":{"schemaItemType":"Unit","label":"ft³/(mi²·s)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.USCUSTOM","definition":"FT(3)*MILE(-2)*S(-1)"},"CUB_FT_PER_ACRE_SEC":{"schemaItemType":"Unit","label":"ft³/(acres·s)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.USCUSTOM","definition":"FT(3)*ACRE(-1)*S(-1)"},"GALLON_PER_ACRE_DAY":{"schemaItemType":"Unit","label":"gal/(acre·day)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.USCUSTOM","definition":"GALLON*DAY(-1)*ACRE(-1)"},"GALLON_PER_ACRE_MIN":{"schemaItemType":"Unit","label":"gal/(acre·min)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.USCUSTOM","definition":"GALLON*MIN(-1)*ACRE(-1)"},"GALLON_PER_SQ_FT_MIN":{"schemaItemType":"Unit","label":"gal/(ft²·min)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.USCUSTOM","definition":"GALLON*MIN(-1)*FT(-2)"},"GALLON_PER_SQ_FT_DAY":{"schemaItemType":"Unit","label":"gal/(ft²·day)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.USCUSTOM","definition":"GALLON*DAY(-1)*FT(-2)"},"GALLON_PER_SQ_MILE_MIN":{"schemaItemType":"Unit","label":"gal/(mi²·min)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.USCUSTOM","definition":"GALLON*MIN(-1)*MILE(-2)"},"GALLON_PER_SQ_MILE_DAY":{"schemaItemType":"Unit","label":"gal/(mi²·day)","phenomenon":"Units.FLOW_DENSITY_PER_AREA","unitSystem":"Units.USCUSTOM","definition":"GALLON*DAY(-1)*MILE(-2)"},"KG_PER_KG":{"schemaItemType":"Unit","label":"kg/kg","phenomenon":"Units.MASS_RATIO","unitSystem":"Units.SI","definition":"KG*KG(-1)"},"GRM_PER_LBM":{"schemaItemType":"Unit","label":"gr/lb","phenomenon":"Units.MASS_RATIO","unitSystem":"Units.USCUSTOM","definition":"GRM*LBM(-1)"},"KG_PER_SEC":{"schemaItemType":"Unit","label":"kg/s","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.SI","definition":"KG*S(-1)"},"KG_PER_MIN":{"schemaItemType":"Unit","label":"kg/min","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"KG*MIN(-1)"},"KG_PER_HR":{"schemaItemType":"Unit","label":"kg/h","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"KG*HR(-1)"},"KG_PER_DAY":{"schemaItemType":"Unit","label":"kg/day","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"KG*DAY(-1)"},"G_PER_SEC":{"schemaItemType":"Unit","label":"g/s","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"G*S(-1)"},"G_PER_MIN":{"schemaItemType":"Unit","label":"g/min","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"G*MIN(-1)"},"G_PER_HR":{"schemaItemType":"Unit","label":"g/h","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"G*HR(-1)"},"MG_PER_SEC":{"schemaItemType":"Unit","label":"mg/s","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"MG*S(-1)"},"MG_PER_MIN":{"schemaItemType":"Unit","label":"mg/min","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"MG*MIN(-1)"},"MG_PER_HR":{"schemaItemType":"Unit","label":"mg/h","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"MG*HR(-1)"},"MG_PER_DAY":{"schemaItemType":"Unit","label":"mg/day","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"MG*DAY(-1)"},"MKG_PER_SEC":{"schemaItemType":"Unit","label":"µg/s","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"MKG*S(-1)"},"MKG_PER_MIN":{"schemaItemType":"Unit","label":"µg/min","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"MKG*MIN(-1)"},"MKG_PER_HR":{"schemaItemType":"Unit","label":"µg/h","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"MKG*HR(-1)"},"MKG_PER_DAY":{"schemaItemType":"Unit","label":"µg/day","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"MKG*DAY(-1)"},"TONNE_PER_HR":{"schemaItemType":"Unit","label":"tph","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.METRIC","definition":"TONNE*HR(-1)"},"LBM_PER_SEC":{"schemaItemType":"Unit","label":"lb/s","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.USCUSTOM","definition":"LBM*S(-1)"},"LBM_PER_MIN":{"schemaItemType":"Unit","label":"lb/min","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.USCUSTOM","definition":"LBM*MIN(-1)"},"LBM_PER_HR":{"schemaItemType":"Unit","label":"lb/h","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.USCUSTOM","definition":"LBM*HR(-1)"},"LBM_PER_DAY":{"schemaItemType":"Unit","label":"lb/day","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.USCUSTOM","definition":"LBM*DAY(-1)"},"SHORT_TON_PER_HR":{"schemaItemType":"Unit","label":"tph","phenomenon":"Units.MASS_FLOW","unitSystem":"Units.USCUSTOM","definition":"SHORT_TON_MASS*HR(-1)"},"MOL_PER_SEC":{"schemaItemType":"Unit","label":"mol/s","phenomenon":"Units.MOLAR_FLOW","unitSystem":"Units.SI","definition":"MOL*S(-1)"},"KMOL_PER_SEC":{"schemaItemType":"Unit","label":"kmol/s","phenomenon":"Units.MOLAR_FLOW","unitSystem":"Units.METRIC","definition":"[KILO]*MOL*S(-1)"},"N":{"schemaItemType":"Unit","phenomenon":"Units.FORCE","unitSystem":"Units.SI","definition":"KG*M*S(-2)"},"DECAN":{"schemaItemType":"Unit","label":"daN","phenomenon":"Units.FORCE","unitSystem":"Units.SI","definition":"[DECA]*N"},"KN":{"schemaItemType":"Unit","label":"kN","phenomenon":"Units.FORCE","unitSystem":"Units.METRIC","definition":"[KILO]*N"},"MN":{"schemaItemType":"Unit","label":"mN","phenomenon":"Units.FORCE","unitSystem":"Units.METRIC","definition":"[MILLI]*N"},"MEGAN":{"schemaItemType":"Unit","label":"MN","phenomenon":"Units.FORCE","unitSystem":"Units.METRIC","definition":"[MEGA]*N"},"KGF":{"schemaItemType":"Unit","label":"kgf","phenomenon":"Units.FORCE","unitSystem":"Units.METRIC","definition":"[STD_G]*KG"},"DYNE":{"schemaItemType":"Unit","label":"dyn","phenomenon":"Units.FORCE","unitSystem":"Units.METRIC","definition":"G*CM*S(-2)"},"PDL":{"schemaItemType":"Unit","label":"pdl","phenomenon":"Units.FORCE","unitSystem":"Units.USCUSTOM","definition":"LBM*FT*S(-2)"},"SHORT_TON_FORCE":{"schemaItemType":"Unit","label":"tnf (short)","phenomenon":"Units.FORCE","unitSystem":"Units.USCUSTOM","definition":"[STD_G]*SHORT_TON_MASS"},"LONG_TON_FORCE":{"schemaItemType":"Unit","label":"tnf (long)","phenomenon":"Units.FORCE","unitSystem":"Units.USCUSTOM","definition":"[STD_G]*LONG_TON_MASS"},"LBF":{"schemaItemType":"Unit","label":"lbf","phenomenon":"Units.FORCE","unitSystem":"Units.USCUSTOM","definition":"[STD_G]*LBM"},"OZF":{"schemaItemType":"Unit","label":"ozf","phenomenon":"Units.FORCE","unitSystem":"Units.USCUSTOM","definition":"[STD_G]*OZM"},"KPF":{"schemaItemType":"Unit","label":"kpf","phenomenon":"Units.FORCE","unitSystem":"Units.USCUSTOM","definition":"[KILO]*LBF"},"W_PER_SQ_M":{"schemaItemType":"Unit","label":"W/m²","phenomenon":"Units.HEAT_FLUX_DENSITY","unitSystem":"Units.SI","definition":"W*M(-2)"},"W_PER_SQ_M_K":{"schemaItemType":"Unit","label":"W/(m²·ΔK)","phenomenon":"Units.HEAT_TRANSFER","unitSystem":"Units.SI","definition":"W*M(-2)*DELTA_KELVIN(-1)"},"W_PER_SQ_M_CELSIUS":{"schemaItemType":"Unit","label":"W/(m²·Δ°C)","phenomenon":"Units.HEAT_TRANSFER","unitSystem":"Units.METRIC","definition":"W*M(-2)*DELTA_CELSIUS(-1)"},"BTU_PER_SQ_FT_HR_FAHRENHEIT":{"schemaItemType":"Unit","label":"Btu/(ft²·h·Δ°F)","phenomenon":"Units.HEAT_TRANSFER","unitSystem":"Units.USCUSTOM","definition":"BTU*FT(-2)*HR(-1)*DELTA_FAHRENHEIT(-1)"},"KG_PER_M":{"schemaItemType":"Unit","label":"kg/m","phenomenon":"Units.LINEAR_DENSITY","unitSystem":"Units.SI","definition":"KG*M(-1)"},"KG_PER_MM":{"schemaItemType":"Unit","label":"kg/mm","phenomenon":"Units.LINEAR_DENSITY","unitSystem":"Units.METRIC","definition":"KG*MM(-1)"},"LBM_PER_FT":{"schemaItemType":"Unit","label":"lb/ft","phenomenon":"Units.LINEAR_DENSITY","unitSystem":"Units.USCUSTOM","definition":"LBM*FT(-1)"},"N_PER_M":{"schemaItemType":"Unit","label":"N/m","phenomenon":"Units.LINEAR_LOAD","unitSystem":"Units.SI","definition":"N*M(-1)"},"KN_PER_M":{"schemaItemType":"Unit","label":"kN/m","phenomenon":"Units.LINEAR_LOAD","unitSystem":"Units.METRIC","definition":"KN*M(-1)"},"MEGAN_PER_M":{"schemaItemType":"Unit","label":"MN/m","phenomenon":"Units.LINEAR_LOAD","unitSystem":"Units.METRIC","definition":"MEGAN*M(-1)"},"N_PER_MM":{"schemaItemType":"Unit","label":"N/mm","phenomenon":"Units.LINEAR_LOAD","unitSystem":"Units.METRIC","definition":"N*MM(-1)"},"LBF_PER_IN":{"schemaItemType":"Unit","label":"lbf/in","phenomenon":"Units.LINEAR_LOAD","unitSystem":"Units.USCUSTOM","definition":"LBF*IN(-1)"},"LBF_PER_FT":{"schemaItemType":"Unit","label":"lbf/ft","phenomenon":"Units.LINEAR_LOAD","unitSystem":"Units.USCUSTOM","definition":"LBF*FT(-1)"},"KGF_PER_M":{"schemaItemType":"Unit","label":"kgf/m","phenomenon":"Units.LINEAR_LOAD","unitSystem":"Units.METRIC","definition":"KGF*M(-1)"},"KPF_PER_FT":{"schemaItemType":"Unit","label":"kpf/ft","phenomenon":"Units.LINEAR_LOAD","unitSystem":"Units.USCUSTOM","definition":"KPF*FT(-1)"},"PER_M":{"schemaItemType":"Unit","label":"1/m","phenomenon":"Units.LINEAR_RATE","unitSystem":"Units.SI","definition":"M(-1)"},"PER_MM":{"schemaItemType":"Unit","label":"1/mm","phenomenon":"Units.LINEAR_RATE","unitSystem":"Units.METRIC","definition":"MM(-1)"},"PER_KM":{"schemaItemType":"Unit","label":"1/km","phenomenon":"Units.LINEAR_RATE","unitSystem":"Units.METRIC","definition":"KM(-1)"},"PER_FT":{"schemaItemType":"Unit","label":"1/ft","phenomenon":"Units.LINEAR_RATE","unitSystem":"Units.USCUSTOM","definition":"FT(-1)"},"PER_MILE":{"schemaItemType":"Unit","label":"1/mile","phenomenon":"Units.LINEAR_RATE","unitSystem":"Units.USCUSTOM","definition":"MILE(-1)"},"PER_THOUSAND_FT":{"schemaItemType":"Unit","label":"1/1000 ft","phenomenon":"Units.LINEAR_RATE","unitSystem":"Units.USCUSTOM","definition":"FT(-1)","numerator":0.001},"N_M":{"schemaItemType":"Unit","label":"N·m","phenomenon":"Units.TORQUE","unitSystem":"Units.SI","definition":"N*M*RAD(-1)"},"KN_M":{"schemaItemType":"Unit","label":"kN·m","phenomenon":"Units.TORQUE","unitSystem":"Units.METRIC","definition":"KN*M*RAD(-1)"},"MEGAN_M":{"schemaItemType":"Unit","label":"MN·m","phenomenon":"Units.TORQUE","unitSystem":"Units.METRIC","definition":"MEGAN*M*RAD(-1)"},"N_CM":{"schemaItemType":"Unit","label":"N·cm","phenomenon":"Units.TORQUE","unitSystem":"Units.METRIC","definition":"N*CM*RAD(-1)"},"LBF_FT":{"schemaItemType":"Unit","label":"lbf·ft","phenomenon":"Units.TORQUE","unitSystem":"Units.USCUSTOM","definition":"LBF*FT*RAD(-1)"},"LBF_IN":{"schemaItemType":"Unit","label":"lbf·in","phenomenon":"Units.TORQUE","unitSystem":"Units.USCUSTOM","definition":"LBF*IN*RAD(-1)"},"KGF_M":{"schemaItemType":"Unit","label":"kgf·m","phenomenon":"Units.TORQUE","unitSystem":"Units.METRIC","definition":"KGF*M*RAD(-1)"},"KPF_FT":{"schemaItemType":"Unit","label":"kpf·ft","phenomenon":"Units.TORQUE","unitSystem":"Units.USCUSTOM","definition":"KPF*FT*RAD(-1)"},"N_M_PER_M":{"schemaItemType":"Unit","label":"N·m/m","phenomenon":"Units.LINEAR_TORQUE","unitSystem":"Units.SI","definition":"N_M*M(-1)"},"KN_M_PER_M":{"schemaItemType":"Unit","label":"kN·m/m","phenomenon":"Units.LINEAR_TORQUE","unitSystem":"Units.METRIC","definition":"KN_M*M(-1)"},"MEGAN_M_PER_M":{"schemaItemType":"Unit","label":"MN·m/m","phenomenon":"Units.LINEAR_TORQUE","unitSystem":"Units.METRIC","definition":"MEGAN_M*M(-1)"},"N_CM_PER_CM":{"schemaItemType":"Unit","label":"N·cm/cm","phenomenon":"Units.LINEAR_TORQUE","unitSystem":"Units.METRIC","definition":"N_CM*CM(-1)"},"LBF_IN_PER_IN":{"schemaItemType":"Unit","label":"lbf·in/in","phenomenon":"Units.LINEAR_TORQUE","unitSystem":"Units.USCUSTOM","definition":"LBF_IN*IN(-1)"},"LBF_FT_PER_FT":{"schemaItemType":"Unit","label":"lbf·ft/ft","phenomenon":"Units.LINEAR_TORQUE","unitSystem":"Units.USCUSTOM","definition":"LBF_FT*FT(-1)"},"KPF_FT_PER_FT":{"schemaItemType":"Unit","label":"kpf·ft/ft","phenomenon":"Units.LINEAR_TORQUE","unitSystem":"Units.USCUSTOM","definition":"KPF_FT*FT(-1)"},"N_M_PER_SQ_M":{"schemaItemType":"Unit","label":"N·m/m²","phenomenon":"Units.AREA_TORQUE","unitSystem":"Units.SI","definition":"N_M*M(-2)"},"KN_M_PER_SQ_M":{"schemaItemType":"Unit","label":"kN·m/m²","phenomenon":"Units.AREA_TORQUE","unitSystem":"Units.METRIC","definition":"KN_M*M(-2)"},"MEGAN_M_PER_SQ_M":{"schemaItemType":"Unit","label":"MN·m/m²","phenomenon":"Units.AREA_TORQUE","unitSystem":"Units.METRIC","definition":"MEGAN_M*M(-2)"},"N_CM_PER_SQ_CM":{"schemaItemType":"Unit","label":"N·cm/cm²","phenomenon":"Units.AREA_TORQUE","unitSystem":"Units.METRIC","definition":"N_CM*CM(-2)"},"LBF_IN_PER_SQ_IN":{"schemaItemType":"Unit","label":"lbf·in/in²","phenomenon":"Units.AREA_TORQUE","unitSystem":"Units.USCUSTOM","definition":"LBF_IN*IN(-2)"},"LBF_FT_PER_SQ_FT":{"schemaItemType":"Unit","label":"lbf·ft/ft²","phenomenon":"Units.AREA_TORQUE","unitSystem":"Units.USCUSTOM","definition":"LBF_FT*FT(-2)"},"KPF_FT_PER_SQ_FT":{"schemaItemType":"Unit","label":"kpf·ft/ft²","phenomenon":"Units.AREA_TORQUE","unitSystem":"Units.USCUSTOM","definition":"KPF_FT*FT(-2)"},"CUB_M_PER_MOL":{"schemaItemType":"Unit","label":"m³/mol","phenomenon":"Units.MOLAR_VOLUME","unitSystem":"Units.SI","definition":"CUB_M*MOL(-1)"},"CUB_M_PER_KMOL":{"schemaItemType":"Unit","label":"m³/kmol","phenomenon":"Units.MOLAR_VOLUME","unitSystem":"Units.METRIC","definition":"CUB_M*[KILO](-1)*MOL(-1)"},"CUB_FT_PER_LB_MOL":{"schemaItemType":"Unit","label":"ft³/lb-mol","phenomenon":"Units.MOLAR_VOLUME","unitSystem":"Units.USCUSTOM","definition":"CUB_FT*LB_MOL(-1)"},"MOL_PER_CUB_M":{"schemaItemType":"Unit","label":"mol/m³","phenomenon":"Units.MOLAR_CONCENTRATION","unitSystem":"Units.SI","definition":"MOL*CUB_M(-1)"},"KMOL_PER_CUB_M":{"schemaItemType":"Unit","label":"kmol/m³","phenomenon":"Units.MOLAR_CONCENTRATION","unitSystem":"Units.METRIC","definition":"[KILO]*MOL*CUB_M(-1)"},"MOL_PER_CUB_DM":{"schemaItemType":"Unit","label":"mol/dm³","phenomenon":"Units.MOLAR_CONCENTRATION","unitSystem":"Units.METRIC","definition":"MOL*CUB_DM(-1)"},"MICROMOL_PER_CUB_DM":{"schemaItemType":"Unit","label":"µmol/dm³","phenomenon":"Units.MOLAR_CONCENTRATION","unitSystem":"Units.METRIC","definition":"[MICRO]*MOL*CUB_DM(-1)"},"NMOL_PER_CUB_DM":{"schemaItemType":"Unit","label":"nmol/dm³","phenomenon":"Units.MOLAR_CONCENTRATION","unitSystem":"Units.METRIC","definition":"[NANO]*MOL*CUB_DM(-1)"},"PICOMOL_PER_CUB_DM":{"schemaItemType":"Unit","label":"picomol/dm³","phenomenon":"Units.MOLAR_CONCENTRATION","unitSystem":"Units.METRIC","definition":"[PICO]*MOL*CUB_DM(-1)"},"MOL_PER_CUB_FT":{"schemaItemType":"Unit","label":"mol/ft³","phenomenon":"Units.MOLAR_CONCENTRATION","unitSystem":"Units.USCUSTOM","definition":"MOL*CUB_FT(-1)"},"MM_TO_THE_FOURTH":{"schemaItemType":"Unit","label":"mm⁴","phenomenon":"Units.AREA_MOMENT_INERTIA","unitSystem":"Units.METRIC","definition":"MM(4)"},"M_TO_THE_FOURTH":{"schemaItemType":"Unit","label":"m⁴","phenomenon":"Units.AREA_MOMENT_INERTIA","unitSystem":"Units.SI","definition":"M(4)"},"CM_TO_THE_FOURTH":{"schemaItemType":"Unit","label":"cm⁴","phenomenon":"Units.AREA_MOMENT_INERTIA","unitSystem":"Units.METRIC","definition":"CM(4)"},"IN_TO_THE_FOURTH":{"schemaItemType":"Unit","label":"in⁴","phenomenon":"Units.AREA_MOMENT_INERTIA","unitSystem":"Units.USCUSTOM","definition":"IN(4)"},"FT_TO_THE_FOURTH":{"schemaItemType":"Unit","label":"ft⁴","phenomenon":"Units.AREA_MOMENT_INERTIA","unitSystem":"Units.USCUSTOM","definition":"FT(4)"},"W":{"schemaItemType":"Unit","phenomenon":"Units.POWER","unitSystem":"Units.SI","definition":"N*M*S(-1)"},"KW":{"schemaItemType":"Unit","label":"kW","phenomenon":"Units.POWER","unitSystem":"Units.METRIC","definition":"[KILO]*W"},"MEGAW":{"schemaItemType":"Unit","label":"MW","phenomenon":"Units.POWER","unitSystem":"Units.METRIC","definition":"[MEGA]*W"},"GW":{"schemaItemType":"Unit","phenomenon":"Units.POWER","unitSystem":"Units.METRIC","definition":"[GIGA]*W"},"BTU_PER_HR":{"schemaItemType":"Unit","label":"Btu/h","phenomenon":"Units.POWER","unitSystem":"Units.USCUSTOM","definition":"BTU*HR(-1)"},"KILOBTU_PER_HR":{"schemaItemType":"Unit","label":"kBtu/h","phenomenon":"Units.POWER","unitSystem":"Units.USCUSTOM","definition":"[KILO]*BTU*HR(-1)"},"HP":{"schemaItemType":"Unit","label":"hp","description":"Exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.","phenomenon":"Units.POWER","unitSystem":"Units.USCUSTOM","definition":"LBF*FT*S(-1)","numerator":550},"PA":{"schemaItemType":"Unit","label":"N/m²","phenomenon":"Units.PRESSURE","unitSystem":"Units.SI","definition":"N*M(-2)"},"PA_GAUGE":{"schemaItemType":"Unit","label":"Pa (gauge)","description":"Offset is one standard atmosphere in PA. Offset is exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B. ","phenomenon":"Units.PRESSURE","unitSystem":"Units.INDUSTRIAL","definition":"PA","numerator":1,"offset":101325},"HECTOPASCAL":{"schemaItemType":"Unit","label":"hPa","phenomenon":"Units.PRESSURE","unitSystem":"Units.METRIC","definition":"[HECTO]*PA"},"KILOPASCAL":{"schemaItemType":"Unit","label":"kPa","phenomenon":"Units.PRESSURE","unitSystem":"Units.METRIC","definition":"[KILO]*PA"},"MICROPASCAL":{"schemaItemType":"Unit","label":"µPa","phenomenon":"Units.PRESSURE","unitSystem":"Units.METRIC","definition":"[MICRO]*PA"},"KILOPASCAL_GAUGE":{"schemaItemType":"Unit","label":"kPa (Gauge)","description":"Offset is one standard atmosphere (101325 PA) converted to kilopascal. Offset is exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B. ","phenomenon":"Units.PRESSURE","unitSystem":"Units.INDUSTRIAL","definition":"[KILO]*PA","numerator":1,"offset":101.325},"MEGAPASCAL":{"schemaItemType":"Unit","label":"MPa","phenomenon":"Units.PRESSURE","unitSystem":"Units.METRIC","definition":"[MEGA]*PA"},"MEGAPASCAL_GAUGE":{"schemaItemType":"Unit","label":"MPa (Gauge)","description":"Offset is one standard atmosphere (101325 PA) converted to megapascal. Offset is exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B. ","phenomenon":"Units.PRESSURE","unitSystem":"Units.INDUSTRIAL","definition":"[MEGA]*PA","numerator":1,"offset":0.101325},"AT":{"schemaItemType":"Unit","label":"kgf/cm²","description":"Exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.","phenomenon":"Units.PRESSURE","unitSystem":"Units.INTERNATIONAL","definition":"KGF*CM(-2)"},"AT_GAUGE":{"schemaItemType":"Unit","label":"kgf/cm² (Gauge)","description":"Offset is one standard atmosphere (101325 PA) converted to atmosphere-technical (AT). Offset is exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B. ","phenomenon":"Units.PRESSURE","unitSystem":"Units.INDUSTRIAL","definition":"AT","offset":1.033227452799886},"KGF_PER_SQ_M":{"schemaItemType":"Unit","label":"kgf/m²","phenomenon":"Units.PRESSURE","unitSystem":"Units.INTERNATIONAL","definition":"KGF*M(-2)"},"ATM":{"schemaItemType":"Unit","label":"atm","description":"Standard atmosphere, see AT for atmosphere-technical. Exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B. ","phenomenon":"Units.PRESSURE","unitSystem":"Units.METRIC","definition":"PA","numerator":101325},"BAR":{"schemaItemType":"Unit","label":"bar","description":"Exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B. ","phenomenon":"Units.PRESSURE","unitSystem":"Units.METRIC","definition":"PA","numerator":100000},"BAR_GAUGE":{"schemaItemType":"Unit","label":"bar (Gauge)","description":"Offset is one standard atmosphere converted to BAR. Offset is exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B. ","phenomenon":"Units.PRESSURE","unitSystem":"Units.INDUSTRIAL","definition":"PA","numerator":100000,"offset":1.01325},"MBAR":{"schemaItemType":"Unit","label":"mBar","phenomenon":"Units.PRESSURE","unitSystem":"Units.METRIC","definition":"[MILLI]*BAR"},"BARYE":{"schemaItemType":"Unit","label":"ba","phenomenon":"Units.PRESSURE","unitSystem":"Units.METRIC","definition":"DYNE*CM(-2)"},"PSI":{"schemaItemType":"Unit","label":"lbf/in²","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"LBF*IN(-2)"},"PSF":{"schemaItemType":"Unit","label":"lbf/ft²","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"LBF*FT(-2)"},"PSIG":{"schemaItemType":"Unit","label":"lbf/in² (Gauge)","description":"Offset is one standard atmosphere (101325 PA) converted to PSI","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"LBF*IN(-2)","numerator":1,"offset":14.695948775513449},"KSI":{"schemaItemType":"Unit","label":"ksi","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"KPF*IN(-2)"},"KSF":{"schemaItemType":"Unit","label":"ksf","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"KPF*FT(-2)"},"LBF_PER_SQ_FT":{"schemaItemType":"Unit","label":"lbf/ft²","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"LBF*FT(-2)"},"TORR":{"schemaItemType":"Unit","label":"torr","description":"See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B. for approx conversion and Table 11 for a reference to the exact conversion","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"PA","numerator":101325,"denominator":760},"M_H2O":{"schemaItemType":"Unit","label":"mH2O (Conv)","description":"Meter of H2O Conventional","phenomenon":"Units.PRESSURE","unitSystem":"Units.METRIC","definition":"[KILO]*MM_H2O"},"MM_H2O":{"schemaItemType":"Unit","label":"mmH2O (Conv)","description":"Millimeter of H2O Conventional, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.","phenomenon":"Units.PRESSURE","unitSystem":"Units.METRIC","definition":"PA","numerator":9.80665},"MM_HG_AT_32F":{"schemaItemType":"Unit","label":"mmHg@32°F","description":"See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B. Used centimeter of mercury (0 C) to pascal","phenomenon":"Units.PRESSURE","unitSystem":"Units.METRIC","definition":"PA","numerator":133.322},"FT_H2O":{"schemaItemType":"Unit","label":"ft H2O (Conv)","description":"foot of H2O Conventional, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"PA","numerator":2989.067},"IN_H2O_AT_32F":{"schemaItemType":"Unit","label":"inH2O@32°F","description":"Inch of H2O at 32 Fahrenheit, Water is assumed to be in a liquid state. Equal to water at 0C. No verified source","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"PA","numerator":249.1083},"IN_H2O_AT_39_2F":{"schemaItemType":"Unit","label":"inH2O@39.2°F","description":"See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"PA","numerator":249.082},"IN_H2O_AT_60F":{"schemaItemType":"Unit","label":"inH2O@60°F","description":"See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"PA","numerator":248.84},"IN_HG":{"schemaItemType":"Unit","label":"inHg (Conv)","description":"Inch of HG conventional, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"PA","numerator":3386.389},"IN_HG_AT_32F":{"schemaItemType":"Unit","label":"inHg@32°F","description":"See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"PA","numerator":3386.38},"IN_HG_AT_60F":{"schemaItemType":"Unit","label":"inHg@60°F","description":"See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.","phenomenon":"Units.PRESSURE","unitSystem":"Units.USCUSTOM","definition":"PA","numerator":3376.85},"PA_PER_M":{"schemaItemType":"Unit","label":"Pa/m","phenomenon":"Units.PRESSURE_GRADIENT","unitSystem":"Units.SI","definition":"PA*M(-1)"},"BAR_PER_KM":{"schemaItemType":"Unit","label":"bar/km","phenomenon":"Units.PRESSURE_GRADIENT","unitSystem":"Units.METRIC","definition":"BAR*KM(-1)"},"PERCENT":{"schemaItemType":"Unit","label":"%","description":"Unit used to show a ratio as a percentage in the UI.","phenomenon":"Units.PERCENTAGE","unitSystem":"Units.INTERNATIONAL","definition":"ONE"},"DECIMAL_PERCENT":{"schemaItemType":"Unit","label":"decimal percent","description":"Unit suitable for storing a decimal number that represents an unspecified ratio.","phenomenon":"Units.PERCENTAGE","unitSystem":"Units.INTERNATIONAL","definition":"PERCENT","numerator":100},"PROBABILITY_FRACTION":{"schemaItemType":"Unit","label":"","phenomenon":"Units.PROBABILITY","unitSystem":"Units.SI","definition":"ONE"},"PROBABILITY_PERCENT":{"schemaItemType":"Unit","label":"%","phenomenon":"Units.PROBABILITY","unitSystem":"Units.INTERNATIONAL","definition":"PROBABILITY_FRACTION","denominator":100},"M_PER_M":{"schemaItemType":"Unit","label":"m/m","phenomenon":"Units.SLOPE","unitSystem":"Units.SI","definition":"M*M(-1)"},"CM_PER_M":{"schemaItemType":"Unit","label":"cm/m","phenomenon":"Units.SLOPE","unitSystem":"Units.METRIC","definition":"CM*M(-1)"},"MM_PER_M":{"schemaItemType":"Unit","label":"mm/m","phenomenon":"Units.SLOPE","unitSystem":"Units.METRIC","definition":"MM*M(-1)"},"M_PER_KM":{"schemaItemType":"Unit","label":"m/km","phenomenon":"Units.SLOPE","unitSystem":"Units.METRIC","definition":"M*KM(-1)"},"FT_PER_THOUSAND_FOOT":{"schemaItemType":"Unit","label":"ft/1000ft","phenomenon":"Units.SLOPE","unitSystem":"Units.USCUSTOM","definition":"FT*[KILO](-1)*FT(-1)"},"FT_PER_FT":{"schemaItemType":"Unit","label":"ft/ft","phenomenon":"Units.SLOPE","unitSystem":"Units.USCUSTOM","definition":"FT*FT(-1)"},"IN_PER_FT":{"schemaItemType":"Unit","label":"in/ft","phenomenon":"Units.SLOPE","unitSystem":"Units.USCUSTOM","definition":"IN*FT(-1)"},"FT_PER_IN":{"schemaItemType":"Unit","label":"ft/in","phenomenon":"Units.SLOPE","unitSystem":"Units.USCUSTOM","definition":"FT*IN(-1)"},"FT_PER_MILE":{"schemaItemType":"Unit","label":"ft/mi","phenomenon":"Units.SLOPE","unitSystem":"Units.USCUSTOM","definition":"FT*MILE(-1)"},"VERTICAL_PER_HORIZONTAL":{"schemaItemType":"Unit","label":"slope","phenomenon":"Units.SLOPE","unitSystem":"Units.INTERNATIONAL","definition":"M_PER_M"},"PERCENT_SLOPE":{"schemaItemType":"Unit","label":"%","phenomenon":"Units.SLOPE","unitSystem":"Units.INTERNATIONAL","definition":"DECIMAL_PERCENT(-1)*M_PER_M"},"HORIZONTAL_PER_VERTICAL":{"schemaItemType":"InvertedUnit","invertsUnit":"Units.VERTICAL_PER_HORIZONTAL","unitSystem":"Units.INTERNATIONAL"},"FT_HORIZONTAL_PER_FT_VERTICAL":{"schemaItemType":"InvertedUnit","invertsUnit":"Units.FT_PER_FT","unitSystem":"Units.USCUSTOM"},"M_HORIZONTAL_PER_M_VERTICAL":{"schemaItemType":"InvertedUnit","invertsUnit":"Units.M_PER_M","unitSystem":"Units.SI"},"KG_PER_SQ_M":{"schemaItemType":"Unit","label":"kg/m²","phenomenon":"Units.SURFACE_DENSITY","unitSystem":"Units.SI","definition":"KG*M(-2)"},"G_PER_SQ_M":{"schemaItemType":"Unit","label":"g/m²","phenomenon":"Units.SURFACE_DENSITY","unitSystem":"Units.METRIC","definition":"G*M(-2)"},"KG_PER_HECTARE":{"schemaItemType":"Unit","label":"kg/ha","phenomenon":"Units.SURFACE_DENSITY","unitSystem":"Units.METRIC","definition":"KG*HECTARE(-1)"},"LBM_PER_ACRE":{"schemaItemType":"Unit","label":"lb/acre","phenomenon":"Units.SURFACE_DENSITY","unitSystem":"Units.USCUSTOM","definition":"LBM*ACRE(-1)"},"W_PER_M_K":{"schemaItemType":"Unit","label":"W/(m·K)","phenomenon":"Units.THERMAL_CONDUCTIVITY","unitSystem":"Units.SI","definition":"W*M(-1)*DELTA_KELVIN(-1)"},"W_PER_M_C":{"schemaItemType":"Unit","label":"W/(m·Δ°C)","phenomenon":"Units.THERMAL_CONDUCTIVITY","unitSystem":"Units.METRIC","definition":"W*M(-1)*DELTA_CELSIUS(-1)"},"BTU_IN_PER_SQ_FT_HR_FAHRENHEIT":{"schemaItemType":"Unit","label":"Btu·in/(ft²·h·Δ°F)","phenomenon":"Units.THERMAL_CONDUCTIVITY","unitSystem":"Units.USCUSTOM","definition":"BTU*IN*FT(-2)*HR(-1)*DELTA_FAHRENHEIT(-1)"},"SQ_M_KELVIN_PER_WATT":{"schemaItemType":"Unit","label":"m²·ΔK/W","phenomenon":"Units.THERMAL_INSULANCE","unitSystem":"Units.SI","definition":"M(2)*DELTA_KELVIN*W(-1)"},"SQ_M_CELSIUS_PER_WATT":{"schemaItemType":"Unit","label":"m²·Δ°C/W","phenomenon":"Units.THERMAL_INSULANCE","unitSystem":"Units.METRIC","definition":"M(2)*DELTA_CELSIUS*W(-1)"},"SQ_FT_HR_FAHRENHEIT_PER_BTU":{"schemaItemType":"Unit","label":"ft²·h·Δ°F/Btu","phenomenon":"Units.THERMAL_INSULANCE","unitSystem":"Units.USCUSTOM","definition":"FT(2)*HR*DELTA_FAHRENHEIT*BTU(-1)"},"M_PER_SEC":{"schemaItemType":"Unit","label":"m/s","phenomenon":"Units.VELOCITY","unitSystem":"Units.SI","definition":"M*S(-1)"},"M_PER_MIN":{"schemaItemType":"Unit","label":"m/min","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"M*MIN(-1)"},"M_PER_HR":{"schemaItemType":"Unit","label":"m/h","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"M*HR(-1)"},"M_PER_DAy":{"schemaItemType":"Unit","label":"m/day","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"M*DAY(-1)"},"MM_PER_SEC":{"schemaItemType":"Unit","label":"mm/sec","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"MM*S(-1)"},"MM_PER_MIN":{"schemaItemType":"Unit","label":"mm/min","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"MM*MIN(-1)"},"MM_PER_HR":{"schemaItemType":"Unit","label":"mm/h","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"MM*HR(-1)"},"MM_PER_DAY":{"schemaItemType":"Unit","label":"mm/day","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"MM*DAY(-1)"},"CM_PER_SEC":{"schemaItemType":"Unit","label":"cm/s","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"CM*S(-1)"},"CM_PER_MIN":{"schemaItemType":"Unit","label":"cm/min","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"CM*MIN(-1)"},"CM_PER_HR":{"schemaItemType":"Unit","label":"cm/h","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"CM*HR(-1)"},"CM_PER_DAY":{"schemaItemType":"Unit","label":"cm/day","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"CM*DAY(-1)"},"KM_PER_SEC":{"schemaItemType":"Unit","label":"km/sec","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"KM*S(-1)"},"KM_PER_HR":{"schemaItemType":"Unit","label":"km/h","phenomenon":"Units.VELOCITY","unitSystem":"Units.METRIC","definition":"KM*HR(-1)"},"IN_PER_SEC":{"schemaItemType":"Unit","label":"in/s","phenomenon":"Units.VELOCITY","unitSystem":"Units.USCUSTOM","definition":"IN*S(-1)"},"IN_PER_MIN":{"schemaItemType":"Unit","label":"in/min","phenomenon":"Units.VELOCITY","unitSystem":"Units.USCUSTOM","definition":"IN*MIN(-1)"},"IN_PER_HR":{"schemaItemType":"Unit","label":"in/h","phenomenon":"Units.VELOCITY","unitSystem":"Units.USCUSTOM","definition":"IN*HR(-1)"},"IN_PER_DAY":{"schemaItemType":"Unit","label":"in/day","phenomenon":"Units.VELOCITY","unitSystem":"Units.USCUSTOM","definition":"IN*DAY(-1)"},"FT_PER_SEC":{"schemaItemType":"Unit","label":"ft/s","phenomenon":"Units.VELOCITY","unitSystem":"Units.USCUSTOM","definition":"FT*S(-1)"},"FT_PER_MIN":{"schemaItemType":"Unit","label":"ft/min","phenomenon":"Units.VELOCITY","unitSystem":"Units.USCUSTOM","definition":"FT*MIN(-1)"},"FT_PER_HR":{"schemaItemType":"Unit","label":"ft/h","phenomenon":"Units.VELOCITY","unitSystem":"Units.USCUSTOM","definition":"FT*HR(-1)"},"FT_PER_DAY":{"schemaItemType":"Unit","label":"ft/day","phenomenon":"Units.VELOCITY","unitSystem":"Units.USCUSTOM","definition":"FT*DAY(-1)"},"YRD_PER_SEC":{"schemaItemType":"Unit","label":"yrd/sec","phenomenon":"Units.VELOCITY","unitSystem":"Units.USCUSTOM","definition":"YRD*S(-1)"},"MPH":{"schemaItemType":"Unit","label":"mi/h","phenomenon":"Units.VELOCITY","unitSystem":"Units.USCUSTOM","definition":"MILE*HR(-1)"},"KNOT_INTERNATIONAL":{"schemaItemType":"Unit","label":"knot (Int.)","phenomenon":"Units.VELOCITY","unitSystem":"Units.MARITIME","definition":"NAUT_MILE*HR(-1)"},"RAD_PER_SEC":{"schemaItemType":"Unit","label":"rad/sec","phenomenon":"Units.ANGULAR_VELOCITY","unitSystem":"Units.SI","definition":"RAD*S(-1)"},"RAD_PER_MIN":{"schemaItemType":"Unit","label":"rad/min","phenomenon":"Units.ANGULAR_VELOCITY","unitSystem":"Units.METRIC","definition":"RAD*MIN(-1)"},"RAD_PER_HR":{"schemaItemType":"Unit","label":"rad/hr","phenomenon":"Units.ANGULAR_VELOCITY","unitSystem":"Units.METRIC","definition":"RAD*HR(-1)"},"RPS":{"schemaItemType":"Unit","label":"cycle/sec","phenomenon":"Units.ANGULAR_VELOCITY","unitSystem":"Units.METRIC","definition":"[TWO_PI]*RAD*S(-1)"},"RPM":{"schemaItemType":"Unit","label":"cycle/min","phenomenon":"Units.ANGULAR_VELOCITY","unitSystem":"Units.METRIC","definition":"[TWO_PI]*RAD*MIN(-1)"},"RPH":{"schemaItemType":"Unit","label":"cycle/hr","phenomenon":"Units.ANGULAR_VELOCITY","unitSystem":"Units.METRIC","definition":"[TWO_PI]*RAD*HR(-1)"},"DEG_PER_SEC":{"schemaItemType":"Unit","label":"deg/sec","phenomenon":"Units.ANGULAR_VELOCITY","unitSystem":"Units.METRIC","definition":"ARC_DEG*S(-1)"},"DEG_PER_MIN":{"schemaItemType":"Unit","label":"deg/min","phenomenon":"Units.ANGULAR_VELOCITY","unitSystem":"Units.METRIC","definition":"ARC_DEG*MIN(-1)"},"DEG_PER_HR":{"schemaItemType":"Unit","label":"deg/hr","phenomenon":"Units.ANGULAR_VELOCITY","unitSystem":"Units.METRIC","definition":"ARC_DEG*HR(-1)"},"PA_S":{"schemaItemType":"Unit","label":"Pa·s","phenomenon":"Units.DYNAMIC_VISCOSITY","unitSystem":"Units.SI","definition":"PA*S"},"POISE":{"schemaItemType":"Unit","label":"poise","description":"Exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.","phenomenon":"Units.DYNAMIC_VISCOSITY","unitSystem":"Units.METRIC","definition":"[DECI]*PA_S"},"CENTIPOISE":{"schemaItemType":"Unit","label":"cP","phenomenon":"Units.DYNAMIC_VISCOSITY","unitSystem":"Units.METRIC","definition":"[CENTI]*POISE"},"LBM_PER_FT_S":{"schemaItemType":"Unit","label":"lbm/(ft*s)","phenomenon":"Units.DYNAMIC_VISCOSITY","unitSystem":"Units.USCUSTOM","definition":"LBM*FT(-1)*S(-1)"},"SQ_M_PER_SEC":{"schemaItemType":"Unit","label":"m²/s","phenomenon":"Units.KINEMATIC_VISCOSITY","unitSystem":"Units.SI","definition":"M(2)*S(-1)"},"SQ_FT_PER_SEC":{"schemaItemType":"Unit","label":"ft²/s","phenomenon":"Units.KINEMATIC_VISCOSITY","unitSystem":"Units.USCUSTOM","definition":"FT(2)*S(-1)"},"STOKE":{"schemaItemType":"Unit","label":"St","phenomenon":"Units.KINEMATIC_VISCOSITY","unitSystem":"Units.METRIC","definition":"CM(2)*S(-1)"},"CENTISTOKE":{"schemaItemType":"Unit","label":"cSt","phenomenon":"Units.KINEMATIC_VISCOSITY","unitSystem":"Units.METRIC","definition":"MM(2)*S(-1)"},"CUB_M":{"schemaItemType":"Unit","label":"m³","phenomenon":"Units.VOLUME","unitSystem":"Units.SI","definition":"M(3)"},"CUB_UM":{"schemaItemType":"Unit","label":"um³","phenomenon":"Units.VOLUME","unitSystem":"Units.METRIC","definition":"UM(3)"},"CUB_MM":{"schemaItemType":"Unit","label":"mm³","phenomenon":"Units.VOLUME","unitSystem":"Units.METRIC","definition":"MM(3)"},"CUB_CM":{"schemaItemType":"Unit","label":"cm³","phenomenon":"Units.VOLUME","unitSystem":"Units.METRIC","definition":"CM(3)"},"CUB_DM":{"schemaItemType":"Unit","label":"dm³","phenomenon":"Units.VOLUME","unitSystem":"Units.METRIC","definition":"DM(3)"},"CUB_KM":{"schemaItemType":"Unit","label":"km³","phenomenon":"Units.VOLUME","unitSystem":"Units.METRIC","definition":"KM(3)"},"LITRE":{"schemaItemType":"Unit","label":"L","phenomenon":"Units.VOLUME","unitSystem":"Units.METRIC","definition":"CUB_DM"},"THOUSAND_LITRE":{"schemaItemType":"Unit","label":"thousand L","phenomenon":"Units.VOLUME","unitSystem":"Units.METRIC","definition":"[KILO]*LITRE"},"MILLION_LITRE":{"schemaItemType":"Unit","label":"million L","phenomenon":"Units.VOLUME","unitSystem":"Units.METRIC","definition":"[MEGA]*LITRE"},"MILLILITRE":{"schemaItemType":"Unit","label":"mL","phenomenon":"Units.VOLUME","unitSystem":"Units.METRIC","definition":"[MILLI]*LITRE"},"MICROLITRE":{"schemaItemType":"Unit","label":"µliter","phenomenon":"Units.VOLUME","unitSystem":"Units.METRIC","definition":"[MICRO]*LITRE"},"CUB_IN":{"schemaItemType":"Unit","label":"in³","phenomenon":"Units.VOLUME","unitSystem":"Units.USCUSTOM","definition":"IN(3)"},"CUB_FT":{"schemaItemType":"Unit","label":"ft³","phenomenon":"Units.VOLUME","unitSystem":"Units.USCUSTOM","definition":"FT(3)"},"CUB_YRD":{"schemaItemType":"Unit","label":"yd³","phenomenon":"Units.VOLUME","unitSystem":"Units.USCUSTOM","definition":"YRD(3)"},"CUB_MILE":{"schemaItemType":"Unit","label":"mile³","phenomenon":"Units.VOLUME","unitSystem":"Units.USCUSTOM","definition":"MILE(3)"},"ACRE_IN":{"schemaItemType":"Unit","label":"acre·in","phenomenon":"Units.VOLUME","unitSystem":"Units.USCUSTOM","definition":"ACRE*IN"},"ACRE_FT":{"schemaItemType":"Unit","label":"acre·ft","phenomenon":"Units.VOLUME","unitSystem":"Units.USCUSTOM","definition":"ACRE*FT"},"GALLON":{"schemaItemType":"Unit","label":"gal","description":"Exact, http://www.nist.gov/pml/wmd/pubs/upload/hb44-15-web-final.pdf, Appendix C. Section 4, Page C-11","phenomenon":"Units.VOLUME","unitSystem":"Units.USCUSTOM","definition":"IN(3)","numerator":231},"THOUSAND_GALLON":{"schemaItemType":"Unit","label":"thousand gal","phenomenon":"Units.VOLUME","unitSystem":"Units.USCUSTOM","definition":"[KILO]*GALLON"},"MILLION_GALLON":{"schemaItemType":"Unit","label":"million gal","phenomenon":"Units.VOLUME","unitSystem":"Units.USCUSTOM","definition":"[MEGA]*GALLON"},"CUB_US_SURVEY_IN":{"schemaItemType":"Unit","label":"in³ (US Survey)","phenomenon":"Units.VOLUME","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_IN(3)"},"CUB_US_SURVEY_FT":{"schemaItemType":"Unit","label":"ft³ (US Survey)","phenomenon":"Units.VOLUME","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_FT(3)"},"CUB_US_SURVEY_YRD":{"schemaItemType":"Unit","label":"yrd³ (US Survey)","phenomenon":"Units.VOLUME","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_YRD(3)"},"CUB_US_SURVEY_MILE":{"schemaItemType":"Unit","label":"mile³ (US Survey)","phenomenon":"Units.VOLUME","unitSystem":"Units.USSURVEY","definition":"US_SURVEY_MILE(3)"},"GALLON_IMPERIAL":{"schemaItemType":"Unit","label":"gal (imp)","description":"Exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.","phenomenon":"Units.VOLUME","unitSystem":"Units.IMPERIAL","definition":"LITRE","numerator":4.54609},"CUB_M_PER_CUB_M":{"schemaItemType":"Unit","label":"m³/m³","phenomenon":"Units.VOLUME_RATIO","unitSystem":"Units.SI","definition":"M(3)*M(-3)"},"LITRE_PER_LITRE":{"schemaItemType":"Unit","label":"liter/liter","phenomenon":"Units.VOLUME_RATIO","unitSystem":"Units.METRIC","definition":"LITRE*LITRE(-1)"},"CUB_M_PER_KG":{"schemaItemType":"Unit","label":"m³/kg","phenomenon":"Units.SPECIFIC_VOLUME","unitSystem":"Units.SI","definition":"M(3)*KG(-1)"},"CUB_FT_PER_LBM":{"schemaItemType":"Unit","label":"ft³/lm","phenomenon":"Units.SPECIFIC_VOLUME","unitSystem":"Units.USCUSTOM","definition":"FT(3)*LBM(-1)"},"CUB_M_PER_M":{"schemaItemType":"Unit","label":"m³/m","phenomenon":"Units.VOLUME_PER_LENGTH","unitSystem":"Units.SI","definition":"M(3)*M(-1)"},"CUB_FT_PER_FT":{"schemaItemType":"Unit","label":"ft³/ft","phenomenon":"Units.VOLUME_PER_LENGTH","unitSystem":"Units.USCUSTOM","definition":"FT(3)*FT(-1)"},"M_TO_THE_SIXTH":{"schemaItemType":"Unit","label":"m⁶","phenomenon":"Units.TORSIONAL_WARPING_CONSTANT","unitSystem":"Units.SI","definition":"M(6)"},"MM_TO_THE_SIXTH":{"schemaItemType":"Unit","label":"mm⁶","phenomenon":"Units.TORSIONAL_WARPING_CONSTANT","unitSystem":"Units.METRIC","definition":"MM(6)"},"CM_TO_THE_SIXTH":{"schemaItemType":"Unit","label":"cm⁶","phenomenon":"Units.TORSIONAL_WARPING_CONSTANT","unitSystem":"Units.METRIC","definition":"CM(6)"},"IN_TO_THE_SIXTH":{"schemaItemType":"Unit","label":"in⁶","phenomenon":"Units.TORSIONAL_WARPING_CONSTANT","unitSystem":"Units.USCUSTOM","definition":"IN(6)"},"FT_TO_THE_SIXTH":{"schemaItemType":"Unit","label":"ft⁶","phenomenon":"Units.TORSIONAL_WARPING_CONSTANT","unitSystem":"Units.USCUSTOM","definition":"FT(6)"},"VA":{"schemaItemType":"Unit","phenomenon":"Units.APPARENT_POWER","unitSystem":"Units.SI","definition":"VOLT*A"},"KVA":{"schemaItemType":"Unit","phenomenon":"Units.APPARENT_POWER","unitSystem":"Units.METRIC","definition":"[KILO]*VA"},"MVA":{"schemaItemType":"Unit","phenomenon":"Units.APPARENT_POWER","unitSystem":"Units.METRIC","definition":"[MEGA]*VA"},"M":{"schemaItemType":"Unit","label":"m","phenomenon":"Units.LENGTH","unitSystem":"Units.SI","definition":"M"},"KG":{"schemaItemType":"Unit","label":"kg","phenomenon":"Units.MASS","unitSystem":"Units.SI","definition":"KG"},"S":{"schemaItemType":"Unit","label":"s","phenomenon":"Units.TIME","unitSystem":"Units.SI","definition":"S"},"K":{"schemaItemType":"Unit","phenomenon":"Units.TEMPERATURE","unitSystem":"Units.SI","definition":"K"},"DELTA_KELVIN":{"schemaItemType":"Unit","label":"ΔK","phenomenon":"Units.TEMPERATURE_CHANGE","unitSystem":"Units.SI","definition":"DELTA_KELVIN"},"A":{"schemaItemType":"Unit","phenomenon":"Units.CURRENT","unitSystem":"Units.SI","definition":"A"},"MOL":{"schemaItemType":"Unit","label":"mol","description":"Where mol is the SI gram mol or gmol.","phenomenon":"Units.MOLE","unitSystem":"Units.SI","definition":"MOL"},"CD":{"schemaItemType":"Unit","label":"cd","phenomenon":"Units.LUMINOSITY","unitSystem":"Units.SI","definition":"CD"},"RAD":{"schemaItemType":"Unit","label":"rad","phenomenon":"Units.ANGLE","unitSystem":"Units.SI","definition":"RAD"},"HORIZONTAL_DIR_RAD":{"schemaItemType":"Unit","label":"rad","phenomenon":"Units.HORIZONTAL_DIRECTION","unitSystem":"Units.SI","definition":"HORIZONTAL_DIR_RAD"},"STERAD":{"schemaItemType":"Unit","label":"sterad","phenomenon":"Units.SOLIDANGLE","unitSystem":"Units.SI","definition":"STERAD"},"US_DOLLAR":{"schemaItemType":"Unit","label":"$","phenomenon":"Units.CURRENCY","unitSystem":"Units.FINANCE","definition":"US_DOLLAR"},"MONETARY_UNIT":{"schemaItemType":"Unit","label":"¤","description":"For money of an unspecified denomination","phenomenon":"Units.CURRENCY","unitSystem":"Units.FINANCE","definition":"MONETARY_UNIT"},"PERSON":{"schemaItemType":"Unit","label":"person","phenomenon":"Units.CAPITA","unitSystem":"Units.SI","definition":"PERSON"},"ONE":{"schemaItemType":"Unit","label":"one","phenomenon":"Units.NUMBER","unitSystem":"Units.INTERNATIONAL","definition":"ONE"},"COEFFICIENT":{"schemaItemType":"Unit","label":"coefficient","description":"For unitless coefficients","phenomenon":"Units.NUMBER","unitSystem":"Units.INTERNATIONAL","definition":"ONE"},"OHM":{"schemaItemType":"Unit","label":"Ω","phenomenon":"Units.ELECTRICAL_RESISTANCE","unitSystem":"Units.SI","definition":"VOLT*A(-1)"},"KOHM":{"schemaItemType":"Unit","label":"kΩ","phenomenon":"Units.ELECTRICAL_RESISTANCE","unitSystem":"Units.METRIC","definition":"[KILO]*OHM"},"OHM_M":{"schemaItemType":"Unit","label":"Ω·m","phenomenon":"Units.ELECTRICAL_RESISTIVITY","unitSystem":"Units.SI","definition":"OHM*M"},"M_PER_REVOLUTION":{"schemaItemType":"Unit","label":"m/r","phenomenon":"Units.THREAD_PITCH","unitSystem":"Units.INTERNATIONAL","definition":"M*REVOLUTION(-1)"},"M_PER_RAD":{"schemaItemType":"Unit","label":"m/rad","phenomenon":"Units.THREAD_PITCH","unitSystem":"Units.SI","definition":"M*RAD(-1)"},"IN_PER_DEGREE":{"schemaItemType":"Unit","label":"in/degree","phenomenon":"Units.THREAD_PITCH","unitSystem":"Units.USCUSTOM","definition":"IN*ARC_DEG(-1)"},"J_PER_K":{"schemaItemType":"Unit","label":"J/K","phenomenon":"Units.ENTROPY","unitSystem":"Units.SI","definition":"J*DELTA_KELVIN(-1)"},"KJ_PER_K":{"schemaItemType":"Unit","label":"KJ/K","phenomenon":"Units.ENTROPY","unitSystem":"Units.METRIC","definition":"[KILO]*J*DELTA_KELVIN(-1)"},"BTU_PER_FAHRENHEIT":{"schemaItemType":"Unit","label":"Btu/°F","description":"Exact, See http://physics.nist.gov/cuu/pdf/sp811.pdf Appendix B.8, page 46.","phenomenon":"Units.ENTROPY","unitSystem":"Units.USCUSTOM","definition":"BTU*DELTA_FAHRENHEIT(-1)"},"LUMEN_PER_W":{"schemaItemType":"Unit","label":"lm/W","phenomenon":"Units.LUMINOUS_EFFICACY","unitSystem":"Units.SI","definition":"LUMEN*W(-1)"},"INVERSE_N":{"schemaItemType":"Unit","label":"1/N","phenomenon":"Units.MOMENT_DISPLAY_SCALE","unitSystem":"Units.SI","definition":"N(-1)"},"INVERSE_KN":{"schemaItemType":"Unit","label":"1/kN","phenomenon":"Units.MOMENT_DISPLAY_SCALE","unitSystem":"Units.METRIC","definition":"KN(-1)"},"INVERSE_KPF":{"schemaItemType":"Unit","label":"1/kpf","phenomenon":"Units.MOMENT_DISPLAY_SCALE","unitSystem":"Units.USCUSTOM","definition":"KPF(-1)"},"M_PER_N":{"schemaItemType":"Unit","label":"m/N","phenomenon":"Units.FORCE_DISPLAY_SCALE","unitSystem":"Units.SI","definition":"N_PER_M(-1)"},"M_PER_KN":{"schemaItemType":"Unit","label":"m/kN","phenomenon":"Units.FORCE_DISPLAY_SCALE","unitSystem":"Units.METRIC","definition":"KN_PER_M(-1)"}}}');
|
|
370187
370471
|
|
|
370188
370472
|
/***/ },
|
|
370189
370473
|
|