diff --git a/AUTHORS.md b/AUTHORS.md index cdd655c3..02f5ccb3 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -10,5 +10,6 @@ The following people have contributed to this repository: * Andreas Schilling, andreas.schilling3@de.bosch.com * Georg Schmidt-Dumont, Robert Bosch GmbH, georg.schmidt-dumont@de.bosch.com * Andreas Textor, Andreas.Textor@de.bosch.com +* Dominic Schabel Please add yourself to this list, if you contribute to the content. \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 79a8617d..33e4ac66 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,8 +33,9 @@ name of branch | description ----| ---- `main` | Contains the latest state of the repository `v{version_number}-RC` | A state on which the working group agreed on as a release candidate but which is missing the approval by the OMP. -{version_number} | A release of the respective version which is approved by the working group and the OMP. +`v{version_number}` | A release of the respective version which is approved by the working group and the OMP. `feature/{feature-name}` | Contains the development on a specific feature and is intended to be merged back into the `main` branch as soon as possible. Note, that it is recommended for contributors to create and develop feature branches in a personal fork and not the upstream repository. +`bug/{bug-name}` | Contains the development of (usually smaller) changes in files of the repository that do not introduce new functionality but fix mistakes, errors or inconsistencies. These branches should be merged back into the `main`branch as soon as possible. ## Issues We use the `Issues` feature of GitHub for tracking all types of work in the repository. diff --git a/LICENSE.txt b/LICENSE.txt index fdd04d38..6f2b7404 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -226,13 +226,10 @@ distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. -Copyright (c) 2020 Robert Bosch GmbH +You may add additional accurate notices of copyright ownership. Exhibit B - “Incompatible With Secondary Licenses” Notice This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0. ----- Additional notices on copyright according to Exhibit A ---- - -Copyright (c) 2020 Robert Bosch Manufacturing Solutions GmbH, all rights reserved diff --git a/README.md b/README.md index 512228d7..fc414d9f 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ -# BAMM Aspect Meta Model +# BAMM Aspect Meta Model ![build](https://github.com/OpenManufacturingPlatform/sds-bamm-aspect-meta-model/actions/workflows/antora-build.yml/badge.svg) - [Introduction](#introduction) - [Example Usage](#example-usage) +- [Getting help](#getting-help) - [Build and contribute](#build-and-contribute) ## Introduction -The BAMM Aspect Meta Model (BAMM) allows the creation of models to describe the semantics of digital twins by defining their domain specific aspects. +The [BAMM Aspect Meta Model](https://openmanufacturingplatform.github.io/sds-bamm-aspect-meta-model/bamm-specification/snapshot/index.html) (BAMM) allows the creation of models to describe the semantics of digital twins by defining their domain specific aspects. In this context, digital twins are the digital representation of a physical or virtual object that bundles and combines several aspects. The BAMM Aspect *Meta* Model (BAMM) provides a set of predefined objects (as depicted below) that allow a domain expert to define aspect models and complement a digital twin with a semantic foundation. @@ -23,7 +24,15 @@ The AGV digital twin could encompass aspects, such as its movement position or b However, both aspects could also be part of other digital twins. This modularization and reusabaility simplifies the creation of highly complex use cases. +## Getting help +Are you having trouble with BAMM Aspect Meta Model? We want to help! + +* Check the reference [documentation](https://openmanufacturingplatform.github.io/sds-bamm-aspect-meta-model/bamm-specification/snapshot/index.html) +* Having issues with BAMM? Open a [GitHub issue]( https://github.com/OpenManufacturingPlatform/sds-bamm-aspect-meta-model/issues). + ## Build and contribute + +### Build the documentation To build the Antora documentation locally, clone the repository and run ```./gradlew antora``` @@ -33,5 +42,13 @@ inside the repository folder. Navigate to *build* > *site* and open the `index.html` page in your web browser to see the result. Repeat the steps everytime you make any changes in the documentation and want to inspect the final outcome. +### Build the BAMM artifact +To build the BAMM Aspect Meta Model, run + +```./gradlew build```. + +This will compile the code and run all tests. The resulting JAR file can be found under build > libs. +Please be aware, that you need JDK 11 to run build and tests. + Before making a contribution, please take a look at the [contribution guidelines](CONTRIBUTING.md). Please keep in mind to create an issue first before opening a pull request. \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 4657f073..57f5099b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,6 +4,62 @@ import com.moowork.gradle.node.task.NodeTask plugins { id("com.github.node-gradle.node") version "2.2.4" + id ("java-library") + id ("maven-publish") + id ("signing") +} + +group = "io.openmanufacturing" +version = "1.0.0" + +tasks.withType { + sourceCompatibility = "11" + targetCompatibility = "11" +} + +repositories { + mavenCentral() +} + +tasks.test { + useJUnitPlatform() +} + +dependencies { + testImplementation ("org.junit.jupiter:junit-jupiter:5.6.3") + testImplementation ("org.assertj:assertj-core:3.18.1") + testImplementation ("org.topbraid:shacl:1.3.1") + testImplementation ("io.vavr:vavr:0.10.3") +} + +publishing { + publications { + create("mavenRelease") { + groupId = "io.openmanufacturing" + artifactId = "sds-aspect-meta-model" + version = "1.0.0" + + from(components["java"]) + + pom { + name.set("BAMM Aspect Meta Model") + licenses { + license { + name.set("Mozilla Public License, Version 2.0") + url.set("https://www.mozilla.org/en-US/MPL/2.0/") + } + } + } + } + } +} + +signing { + var signingKey : String? = System.getenv("PGP_KEY") + var signingPassword : String? = System.getenv("PGP_KEY_PASSWORD") + useInMemoryPgpKeys(signingKey, signingPassword) + + sign(publishing.publications["mavenRelease"]) } configure { @@ -43,7 +99,3 @@ tasks.register("antoraLocal") { setArgs(listOf("--generator", "antora-site-generator-lunr", "site-local.yml", "--stacktrace")) setWorkingDir(project.projectDir) } - -tasks.register("clean") { - delete(project.buildDir) -} diff --git a/legal/LICENSE-OFL-1.1.txt b/legal/LICENSE-OFL-1.1.txt new file mode 100644 index 00000000..fd7ae5be --- /dev/null +++ b/legal/LICENSE-OFL-1.1.txt @@ -0,0 +1,86 @@ +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION AND CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/legal/NOTICE.md b/legal/NOTICE.md index 10df31fc..ff3412d2 100644 --- a/legal/NOTICE.md +++ b/legal/NOTICE.md @@ -12,4 +12,11 @@ This repository contains software developed by the [Antora Project](https://anto Your use of Antora is subject to the terms and conditions of the Mozilla Public License 2.0. A copy of the license is contained in the file [LICENSE.txt](/LICENSE.txt) and is also available at https://mozilla.org/MPL/2.0/. -The source code is available from [GitLab](https://gitlab.com/antora). \ No newline at end of file +The source code is available from [GitLab](https://gitlab.com/antora). + +## Cairo Font +This repository contains software developed by the [Cairo Project](https://github.com/Gue3bara/Cairo). + +Your use of Cairo is subject to the terms and conditions of the SIL Open Font License 1.1. A copy of the license is contained in the file [/legal/LICENSE-OFL-1.1.txt](/legal/LICENSE-OFL-1.1.txt) and is also available at https://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web. + +The source code is available from [GitHub](https://github.com/Gue3bara/Cairo). \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..fdbf3141 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'sds-aspect-meta-model' diff --git a/site.yml b/site.yml index 0929cecb..6008a377 100644 --- a/site.yml +++ b/site.yml @@ -33,9 +33,9 @@ asciidoc: meta-model-abbr: BAMM omp: Open Manufacturing Platform omp-abbr: OMP - bamm: urn:bamm:org.open-manufacturing.digitaltwin:meta-model:1.0.0#@ - bamm-c: urn:bamm:org.open-manufacturing.digitaltwin:characteristic:1.0.0#@ - bamm-e: urn:bamm:org.open-manufacturing.digitaltwin:entity:1.0.0#@ - unit: urn:bamm:org.open-manufacturing.digitaltwin:unit:1.0.0#@ + bamm: urn:bamm:io.openmanufacturing:meta-model:1.0.0#@ + bamm-c: urn:bamm:io.openmanufacturing:characteristic:1.0.0#@ + bamm-e: urn:bamm:io.openmanufacturing:entity:1.0.0#@ + unit: urn:bamm:io.openmanufacturing:unit:1.0.0#@ example-ns: com.mycompany@ diff --git a/src/docs/modules/ROOT/images/characteristics-decision-tree.svg b/src/docs/modules/ROOT/images/characteristics-decision-tree.svg deleted file mode 100644 index 7b7a0c45..00000000 --- a/src/docs/modules/ROOT/images/characteristics-decision-tree.svg +++ /dev/null @@ -1,199 +0,0 @@ - -CollectionsNominal scaled valuesInterval/Ratio scaled valuesAre duplicatesallowed?Are duplicatesallowed?ListAre the valuesrecorded witha timestamp?Time SeriesSorted SetCollectionSetBooleanAre the possiblevalues known?Is there adefault value?Is the valuea kind of codeor identifier?CodeDoes the valuerepresent apoint in time?TimestampDoes the valuerepresent alanguage?What does thevalue look like?Does the valuecontain aMIME Type?LanguageLocaleMIME TypeDoes the valuerefer to aresource?ResourcePathDoes the valuerefer to aunit?UnitReferenceIs the valuea text meantonly forhumans?Is the textinternationalized?Introduce acustom CharacteristicMulti Language TextTextStateEnumerationDurationIs it ameasured value?MeasurementQuantifiableShould the valueuse Constraints?TraitContinue to followdecision treefor Trait'sbaseCharacteristicIs the valuean Object?Single EntityIs the valuea compound valueof multiple parts?Structured ValueIs the valuea disjoint unionof two values?EitherIs the valuea collection?Are the valuesordered?Is the valuea number?Are the possiblevalues known?Is the value a boolean?Does it describea time duration?yesnoyesnoyesnoyesnoyesnoyesnoyesnoyesnoyesnoyesnoyesnoyesnoyesnoyesnoyesnoISO 639,e.g., 'en'BCP 47,e.g., 'en-US'yesnoyesnoyesnoyesnoyesnoyesnoyesnoyesnoyesno \ No newline at end of file diff --git a/src/docs/modules/ROOT/images/constraints-decision-tree.svg b/src/docs/modules/ROOT/images/constraints-decision-tree.svg deleted file mode 100644 index d93781d5..00000000 --- a/src/docs/modules/ROOT/images/constraints-decision-tree.svg +++ /dev/null @@ -1,106 +0,0 @@ - -Is the valuea collection?Is there a knownminimum and/ormaximum length?Is the valuea number?Length ConstraintNo ConstraintneededIs the value a fixed point number?Is there a knownminimum and/ormaximum length?Fixed Point ConstraintIs there a knownminimum and/ormaximum value?Range ConstraintLength ConstraintDoes the valueuse UTF-8 encoding?Encoding ConstraintIs the value a textin a specificlanguage?How is the languagespecified?Can the value beconstrained using aregular expression?Language ConstraintLocale ConstraintRegular Expression ConstraintNo more ConstraintsneededyesnoyesnoyesnoyesnoyesnoyesnonoyesyesnoISO 639,e.g. 'en'BCP 47,e.g. 'en-US'yesno \ No newline at end of file diff --git a/src/docs/modules/ROOT/nav.adoc b/src/docs/modules/ROOT/nav.adoc index d549298e..b1c7a0fd 100644 --- a/src/docs/modules/ROOT/nav.adoc +++ b/src/docs/modules/ROOT/nav.adoc @@ -17,3 +17,4 @@ SPDX-License-Identifier: MPL-2.0 * xref:entities.adoc[Entities] * xref:units.adoc[Units] * xref:modeling-guidelines.adoc[Aspects] +* xref:payloads.adoc[Payloads] \ No newline at end of file diff --git a/src/docs/modules/ROOT/pages/aspect-modeling-process.adoc b/src/docs/modules/ROOT/pages/aspect-modeling-process.adoc deleted file mode 100644 index 7fbe7aee..00000000 --- a/src/docs/modules/ROOT/pages/aspect-modeling-process.adoc +++ /dev/null @@ -1,87 +0,0 @@ -//// -Copyright (c) 2020 Robert Bosch Manufacturing Solutions GmbH - -See the AUTHORS file(s) distributed with this work for additional information regarding authorship. - -This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. -If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/ -SPDX-License-Identifier: MPL-2.0 -//// - -[[aspect-modeling-process]] -== Aspect Modeling Process - -[[top-down-modeling-process]] -=== Top-down Modeling Process - -In the top-down modeling process, you start with the idea for an Aspect model but have no prior data -model (e.g., JSON structure). - -NOTE: This type of process is recommended, because it usually yields cleanly structured models that -do not make concessions towards an already existing implementation. - -. Collect and understand the data that _needs_ to be contained in Aspects -.. Is it relevant? How is it going to be used? -+ -TIP: Avoid bloating models with Properties or other structure that "might be needed at some point". -Model evolution should be preferred over adding a lot of structure upfront. -+ -.. Consider creating a rough (informal) domain model draft or concept map to validate a shared -understanding with the expert(s) -. Separate data into Aspects to maximize -https://en.wikipedia.org/wiki/Cohesion_(computer_science)[cohesion] and reusability -+ -TIP: There is no single "correct" way to separate data into Aspects, but one rule of thumb is to put -those Properties together into one Aspect model that most likely are going to be queried together at -runtime. -+ -[[top-down-model-meta-data]] Decide on the meta data of the model -.. Pick a descriptive but concise model name -.. Pick a version for the model. If this is the first version, start with 1.0.0 -.. Pick a namespace for the model -. Analyze each designated Property in your model draft -.. Give the Property a speaking name. Consider <> and <> for naming elements. -.. Can a predefined xref:characteristics.adoc#characteristics-instances[Characteristic instance] be -used for the Property, or one of the predefined -xref:characteristics.adoc#characteristics-classes[Characteristics classes] be instantiated? Follow -the best practice for <> to find out which existing element might be -suitable. -+ -TIP: It is always preferable to use something that is already there. It makes the model easier to -understand and the resulting Aspect easier to use. For example, the SDK might already offer some -convenience for Characteristic instances in implementations and solutions. -+ -. Add xref:characteristics.adoc#constraint-characteristic[Constraints] to the Characteristic as -necessary. Follow the best practice for <>. -. Complete the model -.. Define example values where it makes sense -.. Add proper descriptions and preferred names, at least in English -.. Check names and descriptions for typos and grammar mistakes - -[[bottom-up-modeling-process]] -=== Bottom-up Modeling Process - -In the bottom-up modeling process, you start with an existing data model, i.e., you already have a -REST service and you want the payload structure that follows the Aspect model to match the existing -JSON structure. This might be necessary when you want to make the existing service a valid Aspect -but can not or want not change its data structure. - -The existing data structure replaces the model draft as compared to the top-down modeling process. - -. Enter <> from the top-down modeling process -. When defining a Property, you need to use the name of the existing corresponding key in the data structure -. Make sure that the result of mapping the Aspect model to its corresponding JSON payload as -described in section xref:payloads.adoc#mapping-to-json[Mapping to JSON] matches your input data -model - -CAUTION: When building an Aspect model to match an existing data structure, there may be mismatches -in the defined value spaces of the Characteristics used in the model and the runtime data provided -by the Aspect. For example, you might want to define a Property `timestamp` and use the existing -xref:characteristics.adoc#timestamp-characteristic[Timestamp] Characteristic, but the existing data -model expects numeric values (i.e., https://en.wikipedia.org/wiki/Unix_time[numbers of seconds]), -while the Timestamp Characteristic has a dataType of `xsd:dateTime` which in turn expects values -such as "2000-01-01T14:23:00". Mismatches like this can either be resolved in the model (i.e., do not -use the Timestamp Characteristic) or in the Aspect implementation (e.g., by on-the-fly conversion of -values). Either way, the provided runtime value _must_ match the Characteristic of the Property in -the model. diff --git a/src/docs/modules/ROOT/pages/model-evolution.adoc b/src/docs/modules/ROOT/pages/model-evolution.adoc deleted file mode 100644 index 9914aa25..00000000 --- a/src/docs/modules/ROOT/pages/model-evolution.adoc +++ /dev/null @@ -1,216 +0,0 @@ -//// -Copyright (c) 2020 Robert Bosch Manufacturing Solutions GmbH - -See the AUTHORS file(s) distributed with this work for additional information regarding authorship. - -This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. -If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/ -SPDX-License-Identifier: MPL-2.0 -//// - -:page-partial: - -[[model-evolution]] -= Model Evolution - -[[why-is-model-evolution-needed]] -== Why is Model Evolution needed? - -An Aspect model can seldomly be created completely in one step from ideation to conceptualization. -As described in the xref:modeling-guidelines.adoc#aspect-modeling-process[Aspect Modeling Process], -authoring an Aspect Model is comparable to the creation of a software artifact. At first, a domain -model draft or concept map is created to capture the understanding of the respective domain experts -(cf. domain-driven design), which is then formalized into an actual Aspect model. After multiple -iterations, each of which improves the modeled concepts and the overall quality of the model, a -first "complete" version is created. This first version might contain the minimal subset of relevant -Properties complete with correct Characteristics and proper descriptions. - -This "Version 1.0" of the model can then be used to implement the first version of the corresponding -Aspect. Imagine that the service is running and delivers data that corresponds to the "Version 1.0" -of the Aspect model. Clients are developed as well, possibly by different parties, and happily -consume the Aspect data. Now the following happens: The domain experts find out that the model is -indeed not correct, it could be missing relevant Properties, existing Properties could use wrong -Characteristics, descriptions or names, or are missing localizations. This can happen for many -reasons: - -. The modelled device or asset changes, -. Clients find that they need certain pieces of data that were originally deemed unimportant and -thus excluded from the Aspect model, or that should have a different structure, -. In the original model, something was modelled in the wrong way, -. As part of the natural evolution of the model when the initial minimal subset of Properties is -expanded to a comprehensive description of the domain, -. etc. - -It is to be expected that an Aspect model is continually improved upon (to a certain point, when it -is considered "finished"). The domain experts can always change the Aspect model as they see fit and -release a new version. But what happens with the running Aspects and clients? Do all of them have to -be changed immediately every time? - -[[decoupling-of-models-and-payload]] -== Decoupling of Models and Payload - -The first measure towards a graceful evolution of Aspect models in a living system (i.e., the models -don't live in a vacuum but are actually used by Aspects and Clients) is the decoupling of models and -payload. In the section that describes the xref:payloads#mapping-to-json[mapping of Aspect models to -corresponding JSON payloads], you can see that the JSON payloads have no indication of the Aspect -model that describes them. In particular, they do not contain a reference to the URN of the -corresponding Aspect model. This is similar to how the structure of a JSON document can be validated -against a JSON Schema.footnote:[However, a JSON Schema only describes a document's structure, not -its meaning or content.] - -Therefore there are changes that can be made in the Aspect model so that the structure of the -corresponding JSON payload does not change. We will call this type of changes _safe changes_. When a -new version of an Aspect model is released that contains only safe changes and a corresponding -Aspect delivers only data that is valid in regards to the new version of the Aspect model, it is -possible to update the entry of the Aspect in the Digital Twin Registry with the new model version -_without having to change the Aspect_. In fact, both the previous version of the Aspect model and -the updated version can and should both be registered _simultaneously_ with both pointing to the -same Aspect endpoint. This allows clients that only understand the previous version of the Aspect -model to still consume data from the Aspect (although they do not benefit from the updates -introduced in the new model version), while clients that are updated to use the new Aspect model can -benefit from the update. - -At some point, older versions of the model can be removed from the Aspect. However, the exact -conditions of when this can be done depend heavily on the concrete use case and are therefore out of -scope of this document. - -[[safe-changes]] -== Safe Changes for Graceful Model Evolution - -Every change to the Aspect model that does not change the JSON payload corresponding to the model is -a _safe change_. The following table gives an overview of the safe and unchanges that mainly concern -the structure of the data. - -[cols="a,a", options="header"] -|==== -| Safe Changes | Unsafe Changes -| -* Adding, removing or changing attributes that are never part of payloads, e.g. - `bamm:preferredName`, `bamm:description` and `bamm:see` -* Adding a new Property -* Making a mandatory Property optional -* Changing a data type _a_ to type _b_ when _a_ xref:datatypes.adoc#data-types[can be cast to] _b_ -* Removing values from an Enumeration -| -* Renaming an existing Property -* Making an optional Property mandatory -* Changing a data type _a_ to type _b_ when _a_ xref:datatypes.adoc#data-types[can not be cast to] _b_ -* Adding values to an Enumeration -* Changing values in an Enumeration -|==== - -Deciding whether a change to a Characteristic is safe depends on the change itself. Basically, a -change that adds restrictions on the value range is safe, while removing restrictions is unsafe, _if -and only if_ the effective value range was equivalent in the first place. For example, adding a -xref:characteristics.adoc#regular-expression-constraint[Regular Expression Constraint] that -restricts values on a xref:characteristics.adoc#text-characteristic[Text Characteristic] is safe, -because an Aspect that delivers data which is valid for both the previous version of the Aspect -model (without the Constraint) and for the new version (with the Constraint) will only ever deliver -data that clients using the previous version of the Aspect model can understand. Adding the -constraint in the model just makes the previous implicit assumption explicit and visible. If the -Constraint on the other hand signifies an actual change, i.e. values that were previously valid are -no longer valid in the new version, this is an unsafe change. - -If the value range is effectively the same and has the same meaning, for example by replacing a -Regular Expression Expression on a Text Characteristic with an Enumeration that has the same values -as those that would be parsed by the Regular Expression, or vice versa, this is a safe change as -well. Changes such as this can be made when an Aspect model is refactored to be better readable or -understandable. Another example is changing a Characteristic with a -xref:datatypes.adoc#data-types[string-like value space] into a -xref:characteristics.adoc#structured-value-characteristics[Structured Value]: The payload does not -change, but the meaning is specified in greater detail by describing all logical parts of the value. - -IMPORTANT: If the value range is effectively the same but the meaning is different, this is not -considered a safe change, because the domain semantics captured by the Aspect model are not the -same. For example, if the unit of a -xref:characteristics.adoc#measurement-characteristic[Measurement] Characteristic is changed from -`unit:metre` to `unit:inch` but both versions use `xsd:int` as a data type, values have obviously -different meanings. This means that a specific Aspect endpoint using this Aspect model must not be -registered with both versions of the Aspect model simultaneously. Of course, the Aspect can -implement both versions and make them available on different endpoints. - -TIP: When only safe changes are made to the Aspect model, the model author can choose between -increasing the MINOR part of the version (e.g. from 1.0.0 to 1.1.0) or the PATCH part of the version -(e.g. from 1.0.0 to 1.0.1). Otherwise, the model author can choose between increasing the MINOR part -or the MAJOR part of the version (e.g. from 1.0.0 to 2.0.0). The latter change should be used to -indicate structural and semantic incompatibility between versions. - -[[example]] -== Example: Evolution of an Aspect Model - -Let's consider a simple Aspect model `MachineOnlineStatus` that describes a Property `onlineStatus` -which represents the information about whether a machine is online, offline, starting up or -undefined (if the current status can not be retrieved). - -[cols="a,a"] -|==== -| -[source,turtle,subs="attributes+"] ----- -include::example$model-evolution.ttl[] ----- -| -{empty} + -In version 1.0.0 of the model, the modeler decides to first represent the Property -itself using an `OnlineStatus` Characteristic ①. They use the `string` datatype to be able to -represent the four valid states given in the target machine's data sheet. -| -[source,turtle,subs="attributes+"] ----- -include::example$model-evolution2.ttl[] ----- -| -{empty} + -The modeler decides to reify the possible status values by using an Enumeration as the -characteristic ②. Because the Property still has the `string` datatype, payloads for the previous -and the current model version do not differ. Taking into account that the description in the -previous model version states the valid values and they do not differ to the Enumeration's values, -this makes the change a safe change. Therefore, the Aspect model's version is increased to 1.0.1. -| -[source,turtle,subs="attributes+"] ----- -include::example$model-evolution3.ttl[] ----- -| -{empty} + -By carefully reading the machine's data sheet, the modeler determined that the UNKNOWN online status -can only ever occur before some machine-internal controller is initialized, which only occurs during -booting the device. Thus, they remove the UNKNOWN status from the enumeration ③, because BOOTING can -always be used in its place. This results in the following points: - -* The status that is confusing to users and downstream developers is removed. The model more clearly - states its purpose. -* By removing the machine-specific idiosyncrasy, the model is more generally applicable and can be - used with other devices as well. -* The implementation of the Aspect can no longer just pass-through the value read from the device - but has to clean up the value. In this case this is trivial, but in more complex scenarios this - might require according complex logic. However, it is always preferable to perform data clean up - in the Aspect and therefore present an interface via the Aspect model that is as "clean" as - possible. - -Removal of the UNKNOWN status is a safe change: Clients that can deal with the previous status set, -can also deal with the sub-set that does not include UNKNOWN. For this reason, the version is -increased to 1.0.2. -| -[source,turtle,subs="attributes+"] ----- -include::example$model-evolution4.ttl[] ----- -| -{empty} + -The modeler decides that the Property name `machineOnlineStatus` is too long and redundant and -renames it to `onlineStatus` ④. This is an unsafe change, because the JSON payload that corresponds -to the Aspect model is now changed structurally. The Aspect model version is increased to 1.1.0: The -Aspect model still represents the same data which means that an increase of the major version is not -warranted, but payloads are not any longer directly compatible, so the minor version is increased. -To indicate the relation between `machineOnlineStatus` in the previous model version and -`onlineStatus` in the current model version, an explicit link is added using `bamm:see` ⑤. This is -optional and purely informational and will show up in the Aspect model's generated documentation, -but it is not a piece of information that consumers of the Aspect model programmatically rely on. -|==== - -IMPORTANT: In the example scenario, when registering Aspect endpoints with a Digital Twin, three -Aspect entries for the `MachineOnlineStatus` Aspect could be registered on a Digital Twin (one for -each of the versions 1.0.0, 1.0.1 and 1.0.2) with the _same_ Aspect HTTP (or MQTT) endpoint that -only actually implements model version 1.0.2, because payloads are compatible. For model version -1.1.0, a separate endpoint needs to be provided by the Aspect implementation. diff --git a/src/docs/modules/ROOT/pages/modeling-guidelines-best-practices.adoc b/src/docs/modules/ROOT/pages/modeling-guidelines-best-practices.adoc deleted file mode 100644 index 52decbe0..00000000 --- a/src/docs/modules/ROOT/pages/modeling-guidelines-best-practices.adoc +++ /dev/null @@ -1,189 +0,0 @@ -//// -Copyright (c) 2020 Robert Bosch Manufacturing Solutions GmbH - -See the AUTHORS file(s) distributed with this work for additional information regarding authorship. - -This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. -If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/ -SPDX-License-Identifier: MPL-2.0 -//// - -[[best-practices]] -== Best Practices - -[[naming-elements]] -=== Naming Elements - -In addition to the <>, the following points should be considered when naming elements -such as Aspects, Properties or Entities: - -* Avoid abbreviations that are not sufficiently common. Seemingly obvious abbreviations can be - misunderstood in different contexts. For example, "temp" could mean "temperature" or "temporary". - On the other hand, abbreviating "minimum" and "maximum" with "min" and "max", respectively, is - fine. The Aspect model should be reasonably expressive. Do not add alleged premature optimizations - that belong in the Aspect implementation. - -* Do not use redundant naming parts. In particular, the name of an Aspect should not end with - "Aspect". - -* Do not use redundant prefixes, e.g. when authoring an Aspect model for the domain _Foo_, do not - name your Properties _fooCount_, _fooId_ etc. Remember that the full identifier of a Property is - the versioned namespace concatenated with the element name, e.g. - `urn:bamm:{example-ns}.myapplication:1.0.0#count`, so the context is already part of - `count`​'s identifier. - -* The attributes `preferredName` and `description` are meant to provide a human-readable and - description, respectively, for example for the generation of documentation from the Aspect model. - If you copy and paste the element's name to the `preferredName`, make sure to adjust it: -** Make the name upper case -** If the name consists of more than one word (i.e., camelCase), turn it into two words, e.g. the name - `machineTemperature` should become the preferredName `Machine Temperature`. - -* If there is exactly one Property in an Aspect that has a -xref:characteristics.adoc#collection-characteristic[Collection], -xref:characteristics.adoc#list-characteristic[List], -xref:characteristics.adoc#set-characteristic[Set], -xref:characteristics.adoc#sorted-set-characteristic[Sorted Set] or -xref:characteristics.adoc#time-series-characteristic[Time Series] Characteristic (and no other -Properties), the Property should be named `items`. - -* If there is exactly one Property in an Aspect that has a - xref:characteristics.adoc#collection-characteristic[Collection], - xref:characteristics.adoc#list-characteristic[List], - xref:characteristics.adoc#set-characteristic[Set] or - xref:characteristics.adoc#sorted-set-characteristic[Sorted Set] Characteristic (and no other - Properties), the Aspect's name should be in plural. Otherwise, if there is exactly one Property in - the Aspect that has a xref:characteristics.adoc#time-series-characteristic[Time Series] - Characteristic, the Aspect's name should end with "History". Otherwise, the Aspect's name should - be in singular. - -[[choosing-a-numeric-type]] -=== Choosing a Numeric Type - -While JSON only distinguishes between _number_ (floating point) and _integer_, the -xref:datatypes.adoc#data-types[type hierarchy] for Aspect models provides many more options. There -is a distinction between the numeric core types (`xsd:integer` and the fixed-point type -`xsd:decimal`) and the limited range numbers that correspond to the numeric types as defined in most -programming languages (`xsd:float` and `xsd:double` as well as the integer types `xsd:int`, -`xsd:short` etc.). - -IMPORTANT: As an Aspect model ideally captures as much of the domain semantics as possible, it -should not limit itself according to implementation-specific restrictions. In particular, limited -range numbers should only be used when the semantics of the numeric range are relevant beyond the -implementation of the Aspect. For example, a Property `temperature` of a sensor could use a limited -range type such as `xsd:int`, when the physical sensor can never provide a value outside of this -range, while a Property such as `numberOfProducedItems` is not logically limited, so it should use -`xsd:integer`. - -[[choosing-a-unit]] -=== Choosing a Unit - -When trying to refer to a physical unit, please see the -xref:appendix:appendix.adoc#unit-catalog[Unit Catalog]. When searching for the unit, remember that -the unit catalog uses British English. - -[[choosing-a-characteristic]] -=== Choosing a Characteristic - -The following decision tree helps finding the right Characteristic for a Property. - -IMPORTANT: A common error is using the `Text` Characteristic for anything resembling a string. -`Text` is intended for values that are meant _only_ for humans, for example a description of a -device that is entered by a user as free text. Values such as identifiers, hostnames, table names, -license plate numbers etc. should not use the `Text` Characteristic. - -If you create Characteristics that are not limited to your modeled domain but are generally useful, -please consider contributing them, so that they can be included in the {meta-model-full-name}'s -Characteristic catalog. - -image::characteristics-decision-tree.svg[width=100%] - -[[choosing-constraints]] -=== Choosing Constraints - -Constraints are used to precisely specify limiting conditions of Characteristics. It is recommended -to use Constraints thoroughly: - -. It makes the intent of the respective Property clear for humans reading the model or documentation -generated from the model -. It allows tooling to generate code for the Aspect that can take the Constraints into account. Validation code -corresponding to the Constraints can be directly inserted, thus reducing manual implementation effort. - -The following decision tree helps finding matching Constraints for a Characteristic. Note that -multiple Constraints can be combined. - -CAUTION: If and only if the value has a xref:datatypes.adoc#data-types[string-like value space] and -does _not_ use UTF-8 as an encoding, use an xref:characteristics.adoc#encoding-constraint[Encoding -Constraint] for the Property. This will ensure that consumers of the Aspect will not end up with -broken special characters. - -image::constraints-decision-tree.svg[width=100%] - -=== Historic Data Aspects - -When an Aspect describes historic data, i.e., not a single data set but data indexed by time stamps, -there are a number of <>to apply: - -* Append the suffix _History_ to the Aspect name -* The Aspect should have exactly one Property called `items` -* The `items` Property should have the xref:characteristics.adoc#time-series-characteristic[Time Series] Characteristic - -In the following example, we first consider a simple Aspect model that provides the current value -for a temperature sensor and that does not provide historic data. After that, we introduce a new -Aspect model that provides historic data for the temperature sensor. The example shows how the -historic data Aspect model is built and how it can reuse elements from the original model. - -[[original-aspect]] -==== Original Aspect -[source,turtle,subs="attributes+"] ----- -include::example$non-history-aspect.ttl[tags=prefixes] ----- -The Aspect's name is `Temperature`, which indicates that it represents a single measurement. -[source,turtle,subs="attributes+"] ----- -include::example$non-history-aspect.ttl[tags=aspect] ----- -The `value` Property describes the temperature measurement. -[source,turtle,subs="attributes+"] ----- -include::example$non-history-aspect.ttl[tags=property] ----- -The `TemperatureMeasurement` is the `value`​'s Characteristic. -[source,turtle,subs="attributes+"] ----- -include::example$non-history-aspect.ttl[tags=characteristic] ----- - -[[historic-data-aspect]] -==== Historic Data Aspect - -NOTE: The original Temperature Aspect is bound to the prefix `temperature` here in order to re-use -elements from the non-historic data aspect. - -[source,turtle,subs="attributes+"] ----- -include::example$history-aspect.ttl[tags=prefixes] -@prefix myapp: . ----- -The historic data Aspect's name is `TemperatureHistory` which indicates that it provides historic -data. - -[source,turtle,subs="attributes+"] ----- -include::example$history-aspect.ttl[tags=aspect] ----- -Define the `items` property and <>. -[source,turtle,subs="attributes+"] ----- -include::example$history-aspect.ttl[tags=items] ----- -The `temperatureValue` Property `refines` the xref:entities.adoc#time-series-entity[Time Series - `bamm-e:value`]. It reuses the `TemperatureMeasurement` Characteristic from the original - `Temperature` Aspect. This is of course no requirement, but when both Aspect models are evolved in - conjunction it can make sense to share elements. - -[source,turtle,subs="attributes+"] ----- -include::example$history-aspect.ttl[tags=property] ----- diff --git a/src/docs/modules/ROOT/pages/namespaces.adoc b/src/docs/modules/ROOT/pages/namespaces.adoc index 4349d0b0..c1b98d8a 100644 --- a/src/docs/modules/ROOT/pages/namespaces.adoc +++ b/src/docs/modules/ROOT/pages/namespaces.adoc @@ -20,7 +20,7 @@ Identifiers for elements of the meta model _must_ use the URN syntax xref:bamm-specification:appendix:appendix.adoc#rfc2141[[rfc2141\]] and the following schema: .... -urn:bamm:org.open-manufacturing.digitaltwin::# +urn:bamm:io.openmanufacturing::# .... where the variable parts are interpreted as follows: diff --git a/src/docs/modules/ROOT/pages/transports.adoc b/src/docs/modules/ROOT/pages/transports.adoc deleted file mode 100644 index 3d7ccf4e..00000000 --- a/src/docs/modules/ROOT/pages/transports.adoc +++ /dev/null @@ -1,135 +0,0 @@ -//// -Copyright (c) 2020 Robert Bosch Manufacturing Solutions GmbH - -See the AUTHORS file(s) distributed with this work for additional information regarding authorship. - -This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. -If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/ -SPDX-License-Identifier: MPL-2.0 -//// - -:page-partial: - -[[transports]] -= Transports - -Aspect implementations can be realized using different transport protocols. The remainder of this -section specifies mappings for different protocols. - -[[mqtt]] -== MQTT - -MQTT is a lightweight, publish-subscribe network protocol. Clients exchange messages via _topics_. A -topic can be understood as a named channel, or a thread in a discussion forum. The single elements -of an Aspect are mapped to topics as follows. - -[[topic-structure]] -=== Topic Structure - -When communicating via MQTT agents must follow the convention for topics: - - //// - -where - -* _namespace_ is identical to the _namespace_ part of the - xref:namespaces.adoc#aspect-model-element-identifiers-definition[Aspect Model URN] -* _agent_identifier_ is the (within the namespace) unique name or id of the -agent or asset that implements the Aspect -* _aspect_name_ is identical to the `element-name` part of the xref:namespaces.adoc#aspect-model-element-identifiers-definition[Aspect Model URN] -* _version_ is identical to the `version` part of the xref:namespaces.adoc#aspect-model-element-identifiers-definition[Aspect Model URN] -* _aspect_element_name_ is the simple name of respective Property, Operation, or Event, i.e., it is - identical to the `element-name` part of the respective element's - xref:namespaces.adoc#aspect-model-element-identifiers-definition[Aspect Model URN] - -If the Aspect element is an Operation, two more subtopics are introduced to allow for communication -in both directions: - - ...//REQ - ...//RESP - -Operation calls are then sent to the `REQ` topic and the agent replies via the `RESP` topic. - -=== MQTT-specific payload - -As detailed in section xref:payloads.adoc[Payloads] all payload must be JSON encoded. However, -depending on the kind of the Aspect element, additional information must be sent: - -* Property payload directly encodes the Property's value according to its specified datatype -* Events are always encoded as JSON object with the required fields `timestamp` and `parameters`. -* Operations must be able to link requests published to the `REQ`-topic to their response which is -published to `RESP`. For this, requests and responses are JSON objects that must contain the -mandatory field `requestId` with a unique string as value. The response for a given request must -then have the same value for `requestId`. The actual content of an Operation call is transmitted via -the optional field `parameters`, carrying the Operation parameters as object, for the request, and -the optional field `response`, containing the answer to the Operation call. - -See table xref:table_payload[JSON Schemata for Payloads] for details. - -[[table-payload]] -.JSON Schemata for Payloads -|=== -|Aspect element | JSON Schema | Example - -| Property | | 42 -| Event | { - "type": "object", - "properties": { - "timestamp": { - "type": "string", - "format": "date-time" - }, - "parameters": { - "type": "object" - } - }, - "required": [ - "timestamp" - ] -} | -{ - "timestamp": "2020-11-09T08:42:04.363188Z", - "parameters": { - "parameter_1": 42 - } -} -| Operation request | { - "type": "object", - "properties": { - "requestId": { - "type": "string" - }, - "parameters": { - "type": "object" - } - }, - "required": [ - "requestId" - ] -}| { - "requestId": "6b66328a-6ea2-4268-9d3c-4cf1e80355e3", - "params": { - "a": 1, - "b": 1 - } -} -| Operation response | { - "type": "object", - "properties": { - "requestId": { - "type": "string" - }, - "resp": {} - }, - "required": [ - "requestId" - ] -}| { - "requestId": "6b66328a-6ea2-4268-9d3c-4cf1e80355e3", - "resp": 2 -} -|=== - -TIP: To allow late joining participants to update to the current state quickly, it is recommended to -publish Properties as _retained messages_. The MQTT broker will then automatically resend the last -published message to the client. diff --git a/src/docs/modules/appendix/pages/why-not-x.adoc b/src/docs/modules/appendix/pages/why-not-x.adoc deleted file mode 100644 index ffe65610..00000000 --- a/src/docs/modules/appendix/pages/why-not-x.adoc +++ /dev/null @@ -1,149 +0,0 @@ -//// -Copyright (c) 2020 Robert Bosch Manufacturing Solutions GmbH - -See the AUTHORS file(s) distributed with this work for additional information regarding authorship. - -This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. -If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/ -SPDX-License-Identifier: MPL-2.0 -//// - -:page-partial: -:sectnums: - -[appendix] -[[why-not-x]] -== Why not X instead of {meta-model-full-name}? - - -=== Why not use X to specify Aspect Models? - -An extensive evaluation based on preliminary use cases was conducted to classify existing formats -and languages for the formulation of Aspect Models. This section summarizes the criteria and -candidates. - -==== General Assumptions - -Generally, the goal of Aspect Models is describing _information models_ (as opposed to _data -models_). This means that the Meta Model used to describe Aspect Models should allow the -specification of context beyond mere data. For example, a data model would specify for a -`temperature` property the data type `float`, while an information model would also specify -information about the fact that the value was measured from a sensor, that the value has a certain -range (that corresponds to the value range given in the data sheet of the respective sensor), that -the value is given in degrees Celsius and a human-readable documentation. - -Beyond this, the following use cases should specifically be supported: - -. Code generation for Aspect Implementations and Solution Client implementations. As multiple -programming languages and environments are going to be supported (e.g., Java, .NET Core, JavaScript), -the model format should be implementation language agnostic. - -. Validation of data. Constraints, such as which properties in which classes and which data ranges -on which properties need to be validated against data at runtime. The necessary validation code (or -comparable constructs) should be able to use the model or be directly generated from the model. - -. Enable interchange between different tooling for the description of domain-specific modeling -tools. The format needs to be flexible and generic enough to allow model mapping or model -transformation to other formalisms. Being based on an open standard or de-facto standard and -consequently being supported by existing/third-party tools is a plus. - -==== Why not JSON Schema or Entity-Relationship-Modeling? - -The goal of describing _information models_ rules out modeling approaches that are only applicable -to the data itself. Examples of such models are JSON Schema (and similar techniques such as XML -schema) and Entity-Relationship-Models. While existing tool support for data validation is good, the -thorough description of domain semantics is not the focus of such approaches and therefore ranges -between being inconvenient to outright impossible. - -==== Why not Eclipse Vorto's DSL? - -https://www.eclipse.org/vorto/[Eclipse Vorto] provides a DSL (Domain Specific Language) with a -custom syntax for the specification of device interfaces. The expressive power of the language is -intentionally limited to the domain concepts of IoT device interfaces. Vorto provides model -validation and code generators that take models as an input. However, there is a strong conceptual -mismatch between the intended use of Vorto's DSL and the goals of Aspect Models that can not easily -be dispelled due to intrinsic meta-model structure and semantics. For example, Vorto Models have no -concept comparable to Characteristics, don't allow the specification of Entity or Characteristics -instances and use a different terminology than Aspect Models with no option to change or customize. -Furthermore, due to the fact that the DSL is specific to Vorto, there are no other tools or -libraries that support working with the models. - -==== Why not OWL? - -The Web Ontology Language (OWL, <>) is the de-facto standard language for the description of -_https://en.wikipedia.org/wiki/Ontology%20(information_science)[Ontologies]_, i.e., the formal -description of things, sets of things and relations between things. "`OWL is a computational -logic-based language such that knowledge expressed in OWL can be reasoned with by computer programs -either to verify the consistency of that knowledge or to make implicit knowledge explicit.`" <> -When speaking of semantic modeling, OWL is often the first choice of modeling language. - -In OWL, both the verification of consistency and inference of knowledge are based on the -https://en.wikipedia.org/wiki/Open-world_assumption[open-world assumption], which means that what is -not known to be true or false is unknown. For example, having a class `Person` that requires a -property `name` and an instance of `Person` that has no `name` specified is no inconsistency -- it -just means that its `name` is currently unknown. This makes OWL well-suited to describe parts of a -domain that are later combined with other descriptions of parts of the same domain to end up with a -consistent and preferably complete overall description. Verification and inference are based on data -that is structured in a directed graph. - -However, the main features of OWL -- ascertaining consistency in a potentially incompletely modeled -world and the inference of knowledge -- are both not goals of Aspect Models. On the other hand, -while some of the (mainly structural) constraints of an Aspect Model could be represented in OWL, -other parts focused on the validation of runtime data can not be represented. For example, a fact -like "`there needs to be a certain tool in a certain machine`" could easily be modeled in OWL, while -facts like "`this Property describes an ordered set of data of a given structure`" are -disproportionately complex to model in comparison to what OWL provides that an Aspect Model can make -use of. Additionally, closed-world semantics (the opposite of the open-world assumption) are -required for Aspect Models, as they are used to model data where, for example, a missing mandatory -property should directly result in a validation error. - -Standard tools such as reasoners could therefore not be used unchanged to validate Aspect Models -described in OWL. Many conceptual constraints on what Aspect Models should be able to express are -based on the assumption that runtime data that corresponds to an Aspect is structured in a tree -(e.g., given in JSON). While possible to express in OWL, this would place the responsibility to get -this right on the model creator, who would need to be intimately familiar with the discipline of -Ontology Engineering, because standard OWL semantics allow more degrees of freedom. Figuratively -speaking, OWL is an all-terrain vehicle while we try to build a rail network. To a certain degree, -we want to exchange flexibility with ease of use in the target domain, increase modeling speed and -reduce the number of potential modeling errors by reducing the degrees of freedom. - -=== Why not use X to specify the Aspect Meta Model itself? - -After deciding that a custom meta model and a suitable way to specify it is required for the -description of Aspect Models, an evaluation of how to specify the meta model itself was conducted. -As Aspect Models are specified in RDF, a straightforward and extensible way based on open standards -was adopted for the implementation of the Aspect Meta Model. The Aspect Meta Model is defined as a -combination of RDF vocabularies and a number of "`shapes`" defined SHACL <>, a language for -validating RDF graphs against a set of conditions which in turn is based on SPARQL <>, the -RDF query language. This combination of technologies is a natural fit for the description of -{meta-model-full-name}'s closed world semantics. - -* OWL could not have been used for this for reasons similar to its unfitness for the description of - Aspect Models, i.e., in addition to OWL's intrinsic semantics, many validations would have to be - implemented manually in addition to standard reasoning, thus diminishing OWL's overall value. This - said, it would be possible to express parts of {meta-model-full-name}'s semantics in OWL if - necessary. - -* The Meta Model could have been implemented in a combination of - https://en.wikipedia.org/wiki/Unified_Modeling_Language[UML] and - https://en.wikipedia.org/wiki/Object_Constraint_Language[OCL]. However, on the one hand, this - approach would have required increased complexity due to the use of an UML-to-RDF-mapping and on - the other hand, there exists not as much documentation and tool support for the respective - technologies. - -=== Why not use well-known RDF vocabularies or namespaces? - -For model authors that have worked with RDF before, the use of the `bamm:` namespace as opposed to -using well-known vocabularies such as RDFS or -http://www.dublincore.org/specifications/dublin-core/dcmi-terms/[Dublin Core] is noticeable. With -the exception of the XSD namespace for datatypes, {meta-model-abbr} and Aspect Models define their -vocabulary in namespaces specific to {meta-model-abbr}. There are two reasons for this: - -* {meta-model-abbr} namespaces use URNs instead of URLs as element identifiers. This is to avoid - confusion about resolvability: Working with Aspect Models (e.g., validating them or generating code - from them) must work in a stand-alone (i.e., offline) fashion. Avoiding using URLs that are not - supposed to be resolved avoids confusion among developers. - -* {meta-model-abbr} namespaces are all versioned: Each version's semantics are self-contained. - Should semantics of one version change, elements of previous versions can still be processed as - before. This is not possible when relying on externally defined, non-versioned namespaces. diff --git a/src/docs/modules/legal/pages/site-notice.adoc b/src/docs/modules/legal/pages/site-notice.adoc index 46870e3a..6fd559c1 100644 --- a/src/docs/modules/legal/pages/site-notice.adoc +++ b/src/docs/modules/legal/pages/site-notice.adoc @@ -13,6 +13,11 @@ SPDX-License-Identifier: MPL-2.0 This is an approved deliverable by the https://open-manufacturing.org[Open Manufacturing Platform (OMP)]. +THESE MATERIALS ARE PROVIDED "AS IS." +The parties expressly disclaim any warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to the materials. +The entire risk as to implementing or otherwise using the materials is assumed by the implementer and user. +IN NO EVENT WILL THE PARTIES BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS DELIVERABLE OR ITS GOVERNING AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER MEMBER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + [[authors]] == Authors diff --git a/src/docs/ui-bundle.zip b/src/docs/ui-bundle.zip index da35a496..6bc2737f 100644 Binary files a/src/docs/ui-bundle.zip and b/src/docs/ui-bundle.zip differ diff --git a/src/main/java/io/openmanufacturing/sds/aspectmetamodel/KnownVersion.java b/src/main/java/io/openmanufacturing/sds/aspectmetamodel/KnownVersion.java new file mode 100644 index 00000000..7d5f1ea9 --- /dev/null +++ b/src/main/java/io/openmanufacturing/sds/aspectmetamodel/KnownVersion.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +/** + * The known versions of the Aspect Meta Model + */ +public enum KnownVersion { + BAMM_1_0_0; + + /** + * Returns this version as a standard version string, e.g. 1.2.3 + */ + public String toVersionString() { + return toString().replaceFirst( "BAMM_(\\d+)_(\\d+)_(\\d+)", "$1.$2.$3" ); + } + + public static Optional fromVersionString( final String version ) { + return Arrays.stream( KnownVersion.values() ) + .filter( value -> value.toVersionString().equals( version ) ) + .findAny(); + } + + public static KnownVersion getLatest() { + return Arrays.asList( KnownVersion.values() ).get( KnownVersion.values().length - 1 ); + } + + public static List getVersions() { + return Arrays.asList( values() ); + } + + public boolean isNewerThan( final KnownVersion otherVersion ) { + return toVersionString().compareTo( otherVersion.toVersionString() ) > 0; + } +} diff --git a/src/main/resources/bamm/characteristic/1.0.0/characteristic-definitions.ttl b/src/main/resources/bamm/characteristic/1.0.0/characteristic-definitions.ttl new file mode 100644 index 00000000..2894972e --- /dev/null +++ b/src/main/resources/bamm/characteristic/1.0.0/characteristic-definitions.ttl @@ -0,0 +1,231 @@ +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 + +@prefix mmm: . +@prefix bamm: . +@prefix bamm-c: . +@prefix bamm-e: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . + +# Meta meta model attributes +mmm:allowDuplicates a rdf:Property ; + rdfs:label "allowDuplicates" ; + rdfs:label "Allow Duplicates" ; + rdfs:comment "Indicates whether a Collection may contain duplicate values."@en . + +mmm:ordered a rdf:Property ; + rdfs:label "ordered" ; + rdfs:label "Ordered" ; + rdfs:comment "Indicates whether the values in a Collection are ordered."@en . + +# Meta model attributes +bamm-c:baseCharacteristic a mmm:Attribute ; + rdfs:label "baseCharacteristic" ; + rdfs:comment "Reference to the Characteristic on which a Constraint is being applied." ; + rdfs:range rdfs:Resource . + +bamm-c:constraint a mmm:Attribute ; + rdfs:label "constraint" ; + rdfs:comment "A constraint on a Characteristic" ; + rdfs:domain bamm-c:Trait ; + rdfs:range bamm:Constraint . + +bamm-c:languageCode a mmm:Attribute ; + rdfs:label "languageCode" ; + rdfs:comment """An ISO 639-1 language code for the language of the value of the constrained Property, e.g. "de".""" ; + rdfs:range xsd:string . + +bamm-c:localeCode a mmm:Attribute ; + rdfs:label "localeCode" ; + rdfs:comment """An IETF BCP 47 locale code for the language of the value of the constrained Property, e.g. "de-DE".""" ; + rdfs:range xsd:string . + +bamm-c:unit a mmm:Attribute ; + rdfs:label "unit" ; + rdfs:label "Unit" ; + rdfs:comment "Reference to a Unit as defined in the Unit catalog."@en . + +bamm-c:pieces a rdf:Property ; + rdfs:label "pieces" ; + rdfs:label "Pieces" . + +bamm-c:minValue a rdf:Property ; + rdfs:label "minValue" ; + rdfs:label "Minimum Value" ; + rdfs:comment "The lower bound of a range."@en . + +bamm-c:maxValue a rdf:Property ; + rdfs:label "maxValue" ; + rdfs:label "Maximum Value" ; + rdfs:comment "The upper bound of a range."@en . + +bamm-c:values a rdf:Property ; + rdfs:label "values" ; + rdfs:label "Values" ; + rdfs:comment """List of possible values of the same type, e.g. ( "up" "down" "degraded" )."""@en . + +bamm-c:defaultValue a rdf:Property ; + rdfs:label "defaultValue" ; + rdfs:label "Default Value" ; + rdfs:comment "The default value for the state."@en . + +bamm-c:left a rdf:Property ; + rdfs:label "left" ; + rdfs:label "Left" ; + rdfs:comment "The left side of the Either. The attribute references another Characteristic which describes the value."@en . + +bamm-c:right a rdf:Property ; + rdfs:label "right" ; + rdfs:label "Right" ; + rdfs:comment "The right side of the Either. The attribute references another Characteristic which describes the value."@en . + +bamm-c:lowerBoundDefinition a rdf:Property ; + rdfs:label "lowerBoundDefinition" ; + rdfs:label "Lower Bound Definition" ; + rdfs:comment """Defines how the "minValue" property of the Range Constraint is to be interpreted. Possible values are "AT_LEAST" and "GREATER_THAN". This is an optional property. By default the "minValue" is interpreted with "AT_LEAST" semantics."""@en . + +bamm-c:upperBoundDefinition a rdf:Property ; + rdfs:label "upperBoundDefinition" ; + rdfs:label "Upper Bound Definition" ; + rdfs:comment """Defines how the "maxValue" property of the Range Constraint is to be interpreted. Possible values are "LESS_THAN" and "AT_MOST". This is an optional property. By default the "maxValue" is interpreted with "AT_MOST" semantics"""@en . + +bamm-c:elements a rdf:Property ; + rdfs:label "elements" ; + rdfs:comment """List of elements of possibly different types, e.g. ( "literal value" :reference )"""@en . + +bamm-c:deconstructionRule a rdf:Property ; + rdfs:label "deconstructionRule" ; + rdfs:label "Deconstruction Rule" ; + rdfs:comment "A regular expression that defines the groups contained in a string."@en . + +bamm-c:scale a rdf:Property ; + rdfs:label "scale" ; + rdfs:label "Scale" ; + rdfs:comment "The scaling factor for a fixed point number."@en . + +bamm-c:integer a rdf:Property ; + rdfs:label "integer" ; + rdfs:label "Integer" ; + rdfs:comment "The number of integral digits for a fixed point number."@en . + +bamm-c:elementCharacteristic a rdf:Property ; + rdfs:label "elementCharacteristic" ; + rdfs:label "Element Characteristic" ; + rdfs:comment "The Characteristic which defines the elements in a Collection."@en . + +# Characteristics +bamm-c:Trait rdfs:subClassOf bamm:Characteristic ; + rdfs:label "Trait" ; + rdfs:comment "A trait wraps another characteristic and adds a number of additional Constraints."@en . + +bamm-c:Quantifiable rdfs:subClassOf bamm:Characteristic ; + rdfs:label "Quantifiable" ; + rdfs:comment "A value which can be quantified and may have a unit, e.g. the number of bolts required for a processing step or the expected torque with which these bolts should be tightened."@en . + +bamm-c:Measurement rdfs:subClassOf bamm-c:Quantifiable ; + rdfs:label "Measurement" ; + rdfs:comment "A measurement is a numeric value with an associated unit and quantity kind."@en . + +bamm-c:Duration rdfs:subClassOf bamm-c:Quantifiable ; + rdfs:label "Duration" ; + rdfs:comment "A time duration."@en . + +bamm-c:SingleEntity rdfs:subClassOf bamm:Characteristic ; + rdfs:label "SingleEntity" ; + rdfs:comment "Describes a Property whose data type is an Entity. The Entity used as data type may be defined in the same Aspect Model or the shared Entity namespace of the BAMM."@en . + +bamm-c:Collection rdfs:subClassOf bamm:Characteristic ; + rdfs:label "Collection" ; + rdfs:comment "A group of values which may be either of a simple or complex type. The values may be duplicated and are not ordered (i.e. bag semantics)."@en ; + mmm:allowDuplicates true ; + mmm:ordered false . + +bamm-c:Set rdfs:subClassOf bamm-c:Collection ; + rdfs:label "Set" ; + rdfs:comment "A subclass of Collection which may not contain duplicates and is unordered."@en ; + mmm:allowDuplicates false ; + mmm:ordered false . + +bamm-c:SortedSet rdfs:subClassOf bamm-c:Collection ; + rdfs:label "SortedSet" ; + rdfs:comment "A subclass of Collection which may not contain duplicates and is ordered."@en ; + mmm:allowDuplicates false ; + mmm:ordered true . + +bamm-c:List rdfs:subClassOf bamm-c:Collection ; + rdfs:label "List" ; + rdfs:comment "A subclass of Collection which may contain duplicates and is ordered."@en ; + mmm:allowDuplicates true ; + mmm:ordered true . + +bamm-c:TimeSeries rdfs:subClassOf bamm-c:SortedSet ; + rdfs:label "TimeSeries" ; + rdfs:comment "A subclass of Sorted Set containing values with the exact point in time when the values where recorded. The values for the allowDuplicates and ordered attributes are inherited from the Sorted Set."@en ; + bamm:dataType bamm-e:TimeSeriesEntity . + +bamm-c:Enumeration rdfs:subClassOf bamm:Characteristic ; + rdfs:label "Enumeration" ; + rdfs:comment "An enumeration represents a list of possible values."@en . + +bamm-c:State rdfs:subClassOf bamm-c:Enumeration ; + rdfs:label "State" ; + rdfs:comment "A state is subclass of Enumeration with a default value."@en . + +bamm-c:Code rdfs:subClassOf bamm:Characteristic ; + rdfs:label "Code" ; + rdfs:comment "Describes a Property which contains any kind of code. Note that this Characteristic does not define a bamm:dataType, this must therefore be done when instantiating the Characteristic."@en . + +bamm-c:Either rdfs:subClassOf bamm:Characteristic ; + rdfs:label "Either" ; + rdfs:comment "Describes a Property whose value can have one of two possible types (a disjoint union)."@en . + +bamm-c:StructuredValue rdfs:subClassOf bamm:Characteristic ; + rdfs:label "StructuredValue" ; + rdfs:comment "Describes how the value of a Property is structured from parts."@en . + +# Constraints +bamm-c:RangeConstraint rdfs:subClassOf bamm:Constraint ; + rdfs:label "RangeConstraint" ; + rdfs:comment "Restricts the value range of a Property. At least one of bamm-c:maxValue or bamm-c:minValue must be present in a Range Constraint. Both bamm-c:maxValue and bamm-c:minValue are inclusive."@en . + +bamm-c:LanguageConstraint rdfs:subClassOf bamm:Constraint ; + rdfs:label "LanguageConstraint" ; + rdfs:comment "Restricts a value to a specific language."@en . + +bamm-c:LocaleConstraint rdfs:subClassOf bamm:Constraint ; + rdfs:label "LocaleConstraint" ; + rdfs:comment "Restricts a value to a specific locale."@en . + +bamm-c:EncodingConstraint rdfs:subClassOf bamm:Constraint ; + rdfs:label "EncodingConstraint" ; + rdfs:comment "Restricts the encoding of a Property."@en . + +bamm-c:LengthConstraint rdfs:subClassOf bamm:Constraint ; + rdfs:label "LengthConstraint" ; + rdfs:comment """ + This Constraint can be used to restrict two types of Characteristics: + + - Characteristics that have a character value space, i.e. whose value are string-like. In this case the Constraint restricts the length of the (string-) value. The scalar data types that can be restricted are: xsd:string, xsd:date, xsd:time, xsd:dateTime, xsd:dateTimeStamp, xsd:gYear, xsd:gMonth, xsd:gMonthDay, xsd:duration, xsd:yearMonthDuration, xsd:dayTimeDuration, xsd:hexBinary, xsd:base64Binary, xsd:anyURI, bamm:curie and rdf:langString. + - Collection Characteristics (Collection, Set, Sorted Set, List). In this case the Constraint restricts the number of elements in the collection. + + At least one of bamm-c:maxValue or bamm-c:minValue must be present in a Length Constraint. + """@en . + +bamm-c:RegularExpressionConstraint rdfs:subClassOf bamm:Constraint ; + rdfs:label "RegularExpressionConstraint" ; + rdfs:comment "Restricts a string value to a regular expression as defined by XQuery 1.0 and XPath 2.0 Functions and Operators."@en ; + bamm:see . + +bamm-c:FixedPointConstraint rdfs:subClassOf bamm:Constraint ; + rdfs:label "FixedPoint" ; + rdfs:comment "Defines the scaling factor for a fixed point number."@en . diff --git a/src/main/resources/bamm/characteristic/1.0.0/characteristic-instances.ttl b/src/main/resources/bamm/characteristic/1.0.0/characteristic-instances.ttl new file mode 100644 index 00000000..7aa552f6 --- /dev/null +++ b/src/main/resources/bamm/characteristic/1.0.0/characteristic-instances.ttl @@ -0,0 +1,70 @@ +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 + +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix rdf: . + +bamm-c:Timestamp a bamm:Characteristic ; + bamm:name "Timestamp" ; + bamm:preferredName "Timestamp"@en ; + bamm:description "Describes a Property which contains the date and time with an optional timezone."@en ; + bamm:dataType xsd:dateTime . + +bamm-c:Text a bamm:Characteristic ; + bamm:name "Text" ; + bamm:preferredName "Text"@en ; + bamm:description "Describes a Property which contains plain text. This is intended exclusively for human readable strings, not for identifiers, measurement values, etc."@en ; + bamm:dataType xsd:string . + +bamm-c:MultiLanguageText a bamm:Characteristic ; + bamm:name "MultiLanguageText" ; + bamm:preferredName "Multi-Language Text"@en ; + bamm:description "Describes a Property which contains plain text in multiple languages. This is intended exclusively for human readable strings, not for identifiers, measurement values, etc."@en ; + bamm:dataType rdf:langString . + +bamm-c:Boolean a bamm:Characteristic ; + bamm:name "Boolean" ; + bamm:preferredName "Boolean"@en ; + bamm:description """Represents a boolean value (i.e. a "flag")."""@en ; + bamm:dataType xsd:boolean . + +bamm-c:Locale a bamm:Characteristic ; + bamm:name "Locale" ; + bamm:preferredName "Locale"@en ; + bamm:description """Describes a Property containing a locale according to IETF BCP 47, for example "de-DE"."""@en ; + bamm:dataType xsd:string . + +bamm-c:Language a bamm:Characteristic ; + bamm:name "Language" ; + bamm:preferredName "Language"@en ; + bamm:description """Describes a Property containing a language according to ISO 639-1, for example "de"."""@en ; + bamm:dataType xsd:string . + +bamm-c:UnitReference a bamm:Characteristic ; + bamm:name "UnitReference" ; + bamm:preferredName "Unit Reference"@en ; + bamm:description "Describes a Property containing a reference to one of the units in the Unit Catalog."@en ; + bamm:dataType bamm:curie . + +bamm-c:ResourcePath a bamm:Characteristic ; + bamm:name "ResourcePath" ; + bamm:preferredName "Resource Path"@en ; + bamm:description "The path of a resource."@en ; + bamm:dataType xsd:anyURI . + +bamm-c:MimeType a bamm:Characteristic ; + bamm:name "MimeType" ; + bamm:preferredName "MIME Type"@en ; + bamm:description """A MIME type as defined in RFC 2046, for example "application/pdf"."""@en ; + bamm:dataType xsd:string . + diff --git a/src/main/resources/bamm/characteristic/1.0.0/characteristic-shapes.ttl b/src/main/resources/bamm/characteristic/1.0.0/characteristic-shapes.ttl new file mode 100644 index 00000000..60fd275d --- /dev/null +++ b/src/main/resources/bamm/characteristic/1.0.0/characteristic-shapes.ttl @@ -0,0 +1,725 @@ +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 + +@prefix mmm: . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix sh: . +@prefix xsd: . +@prefix dash: . +@prefix rdfs: . +@prefix rdf: . + +bamm-c:TraitShape + a sh:NodeShape ; + sh:targetClass bamm-c:Trait ; + sh:property [ + sh:path bamm-c:baseCharacteristic ; + sh:class bamm:Characteristic ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "baseCharacteristic" ; + sh:description "The Characteristic which is wrapped by the Trait." ; + ] ; + sh:property [ + sh:path bamm-c:constraint ; + sh:class bamm:Constraint ; + sh:minCount 1 ; + sh:description "A constraint that is applied to the Characteristic." ; + ] . + +bamm-c:QuantifiableShape + a sh:NodeShape ; + sh:targetClass bamm-c:Quantifiable ; + sh:property [ + sh:path bamm-c:unit ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "Value is not an instance or subclass of unit:Unit" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this bamm-c:unit ?value . + filter( not exists { ?value rdf:type/rdfs:subClassOf* unit:Unit } ) . + } + """ + ] ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "unit" ; + sh:description "The Unit of the Quantifiable." ; + ] . + +bamm-c:MeasurementShape + a sh:NodeShape ; + sh:targetClass bamm-c:Measurement ; + sh:property [ + sh:path bamm-c:unit ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "unit" ; + sh:description "The Unit of the Measurement." ; + ] . + +bamm-c:CollectionShape + a sh:NodeShape ; + sh:target [ + a sh:SPARQLTarget ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdfs:subClassOf* bamm-c:Collection . + } + """ + ] ; + sh:property [ + sh:path mmm:allowDuplicates ; + sh:datatype xsd:boolean ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The property allowDuplicates must be set for Collections (see focusNode)." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdfs:subClassOf* bamm-c:Collection . + filter ( not exists { $this rdfs:subClassOf*/mmm:allowDuplicates [] } ) . + } + """ + ] ; + sh:maxCount 1 ; + sh:name "allowDuplicates" ; + sh:description "Ensures that the property allowDuplicates is set at least once for Collections." ; + ] ; + sh:property [ + sh:path mmm:ordered ; + sh:datatype xsd:boolean ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The property ordered must be set for Collections (see focusNode)." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdfs:subClassOf* bamm-c:Collection . + filter ( not exists { $this rdfs:subClassOf*/mmm:ordered [] } ) . + } + """ + ] ; + sh:maxCount 1 ; + sh:name "ordered" ; + sh:description "Ensures that the property ordered is set at least once for Collections." ; + ] . + +bamm-c:CollectionInstanceShape + a sh:NodeShape ; + sh:target [ + a sh:SPARQLTarget ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdf:type/rdfs:subClassOf* bamm-c:Collection . + } + """ + ] ; + sh:property [ + sh:path [ sh:alternativePath ( bamm:dataType bamm-c:elementCharacteristic ) ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "A Collection must be defined with either a bamm:dataType or a bamm-c:elementCharacteristic (see focusNode)." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdf:type/rdfs:subClassOf* bamm-c:Collection . + optional { $this bamm-c:elementCharacteristic ?elementCharacteristic . } + filter ( ( not exists { $this bamm:dataType [] } && not exists { $this bamm-c:elementCharacteristic [] } ) || + not exists { ?elementCharacteristic rdf:type/rdfs:subClassOf* bamm:Characteristic }) . + } + """ + ] ; + sh:maxCount 1 ; + ] . + +bamm-c:PreventRedefiningCollectionShape + a sh:NodeShape ; + sh:targetClass bamm-c:Collection ; + sh:property [ + sh:path mmm:allowDuplicates ; + sh:datatype xsd:boolean ; + sh:minCount 0 ; + sh:maxCount 0; + sh:message "Overriding allowDuplicates for Collections is not allowed." ; + sh:name "allowDuplicates" ; + sh:description "Prevents instances of Collection Characteristics to override the allow duplicates property and hence change the semantics of a Collection." ; + ] ; + sh:property [ + sh:path mmm:ordered ; + sh:datatype xsd:boolean ; + sh:minCount 0 ; + sh:maxCount 0; + sh:message "Overriding ordered for Collections is not allowed." ; + sh:name "ordered" ; + sh:description "Prevents instances of Collection Characteristics to override the ordered property and hence change the semantics of a Collection." ; + ] . + +bamm-c:LanguageConstraintShape + a sh:NodeShape ; + sh:targetClass bamm-c:LanguageConstraint ; + sh:property [ + sh:path bamm-c:languageCode ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "languageCode" ; + sh:description "An ISO 639-1 language code for the language of the value of the constrained Property" + ] . + +bamm-c:LocaleConstraintShape + a sh:NodeShape ; + sh:targetClass bamm-c:LocaleConstraint ; + sh:property [ + sh:path bamm-c:localeCode ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "localeCode" ; + sh:description "An IETF BCP 47 locale code for the language of the value of the constrained Property" + ] . + +bamm-c:EncodingConstraintShape + a sh:NodeShape ; + sh:targetClass bamm-c:EncodingConstraint ; + sh:property [ + sh:path bamm:value ; + sh:in ( bamm:US-ASCII bamm:ISO-8859-1 bamm:UTF-8 bamm:UTF-16 bamm:UTF-16BE bamm:UTF-16LE ); + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "value" ; + sh:description "Constrains the encoding (character set) of a property." ; + sh:message "Value must be one of [bamm:US-ASCII bamm:ISO-8859-1 bamm:UTF-8 bamm:UTF-16 bamm:UTF-16BE bamm:UTF-16LE]" ; + ] . + +bamm-c:LengthConstraintShape + a sh:NodeShape ; + sh:targetClass bamm-c:LengthConstraint ; + sh:property [ + sh:path bamm-c:minValue ; + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount 1 ; + sh:name "minValue" ; + sh:description "The lower bound of the length constraint." ; + ] ; + sh:property [ + sh:path bamm-c:maxValue ; + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount 1 ; + sh:name "maxValue" ; + sh:description "The upper bound of the length constraint." ; + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The LengthConstraint must have at least one minValue or maxValue." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdf:type bamm-c:LengthConstraint . + filter( not exists { $this bamm-c:maxValue [] } && not exists { $this bamm-c:minValue [] } ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The LengthConstraint is not applicable to the base Characteristic's data type." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this rdf:type bamm-c:LengthConstraint . + $this ^bamm-c:constraint/bamm-c:baseCharacteristic*/bamm:dataType ?value . + # Length constraints apply to string-alike dataTypes + filter( not exists { ?value bamm:hasCharacterValueSpace true } + # and collections + && not exists { $this ^bamm-c:constraint/bamm-c:baseCharacteristic*/rdf:type/rdfs:subClassOf* bamm-c:Collection } ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The maxValue must be greater or equal than the minValue." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this rdf:type bamm-c:LengthConstraint . + $this bamm-c:minValue ?minValue . + $this bamm-c:maxValue ?maxValue . + filter( ?minValue > ?maxValue ) + bind( concat( "minValue: ", str( ?minValue ), " maxValue: ", str( ?maxValue ) ) as ?value ) + } + """ + ] . + +bamm-c:RegularExpressionConstraintShape + a sh:NodeShape ; + sh:targetClass bamm-c:RegularExpressionConstraint ; + sh:property [ + sh:path bamm:value ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "value" ; + sh:description "Constrains the lexical value of a property." ; + sh:js [ + a sh:JSConstraint ; + sh:message "The RegularExpressionConstraint's value is no valid regular expression." ; + sh:jsLibrary bamm:jsValidations ; + sh:jsFunctionName "isValidRegularExpression" ; + ] ; + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The RegularExpressionConstraint is not applicable to the base Characteristic's data type." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this rdf:type bamm-c:RegularExpressionConstraint . + $this ^bamm-c:constraint/bamm-c:baseCharacteristic*/bamm:dataType ?value . + # Regular expression constraints apply to string-alike dataTypes + filter( not exists { ?value bamm:hasCharacterValueSpace true } ) + } + """ + ] . + +bamm-c:RangeShape + a sh:NodeShape ; + sh:targetClass bamm-c:RangeConstraint ; + sh:property [ + sh:path bamm-c:minValue ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The data type of the min value for the Range Constraint (see focus node) is not the data type defined in the base Characteristic." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?baseCharacteristic ?baseCharacteristicDataType + where { + $this rdf:type bamm-c:RangeConstraint . + $this ^bamm-c:constraint/bamm-c:baseCharacteristic*/bamm:dataType ?baseCharacteristicDataType . + $this bamm-c:minValue ?minValue . + bind( datatype( ?minValue ) as ?minValueDataType ) . + filter( ?minValueDataType != ?baseCharacteristicDataType ) . + } + """ + ] ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "minValue" ; + sh:description "The lower bound of a range." ; + ] ; + sh:property [ + sh:path bamm-c:maxValue ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The data type of the max value for the Range Constraint (see focus node) is not the data type defined in the base Characteristic." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?baseCharacteristic ?baseCharacteristicDataType + where { + $this rdf:type bamm-c:RangeConstraint . + $this ^bamm-c:constraint/bamm-c:baseCharacteristic*/bamm:dataType ?baseCharacteristicDataType . + $this bamm-c:maxValue ?maxValue . + bind( datatype( ?maxValue ) as ?maxValueDataType ) . + filter( ?maxValueDataType != ?baseCharacteristicDataType ) . + } + """ + ] ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "maxValue" ; + sh:description "The upper bound of a range." ; + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The RangeConstraint must have at least one minValue or maxValue." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdf:type bamm-c:RangeConstraint . + filter( not exists { $this bamm-c:maxValue [] } && not exists { $this bamm-c:minValue [] } ) + } + """ + ] ; + sh:property [ + sh:path bamm-c:lowerBoundDefinition ; + sh:in ( bamm-c:AT_LEAST bamm-c:GREATER_THAN ); + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "lowerBoundDefinition" ; + sh:description "The definition of how the lower bound of a range is to be interpreted." ; + sh:message "Value must be exactly one of [bamm-c:AT_LEAST, bamm-c:GREATER_THAN]" ; + ] ; + sh:property [ + sh:path bamm-c:upperBoundDefinition ; + sh:in ( bamm-c:LESS_THAN bamm-c:AT_MOST ); + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "upperBoundDefinition" ; + sh:description "The definition of how the upper bound of a range is to be interpreted." ; + sh:message "Value must be exactly one of [bamm-c:LESS_THAN, bamm-c:AT_MOST]" ; + ] . + +bamm-c:StateShape + a sh:NodeShape ; + sh:targetClass bamm-c:State ; + sh:property [ + sh:path bamm-c:defaultValue ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "defaultValue" ; + sh:description "The default value for this state" ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "Values does not contain the default value." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?defaultValue ?values + where { + $this bamm-c:values ?values . + $this bamm-c:defaultValue ?defaultValue . + filter ( not exists { + $this bamm-c:values/rdf:rest*/rdf:first ?defaultValue . + } ) + } + """ + ] ; + ] . + +bamm-c:DurationShape + a sh:NodeShape ; + sh:targetClass bamm-c:Duration ; + sh:property [ + sh:path bamm-c:unit ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "unit" ; + sh:description "The Unit in which the Duration is measured." ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "Unit of Duration must have quantity kind time" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?unit ?value + where { + $this rdf:type/rdfs:subClassOf* bamm-c:Duration . + $this bamm-c:unit ?unit . + filter( not exists { ?unit unit:referenceUnit?/unit:quantityKind unit:time } ) + bind( str( ?unit ) as ?value ) + } + """ + ] + ] . + +bamm-c:EnumerationShape + a sh:NodeShape ; + sh:targetClass bamm-c:Enumeration ; + sh:property [ + sh:path bamm-c:values ; + sh:node dash:ListShape ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "values" ; + sh:description "A list of valid states." ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "One of the values is not of the specified data type." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?values ?dataType ?item + where { + $this rdf:type/rdfs:subClassOf* bamm-c:Enumeration . + $this bamm-c:values ?values . + $this bamm:dataType ?definedDataType . + ?values rdf:rest*/rdf:first ?item . + bind( datatype( ?item ) as ?literalDataType ) . + bind( strlen( str( ?literalDataType ) ) as ?literalDataTypeLength ) . + filter( ( ?literalDataType != ?definedDataType ) && ( ?literalDataTypeLength > 0 ) ) . + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "DataType is a literal type but one of the values is defined as bamm:Property." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?values ?item + where { + $this rdf:type/rdfs:subClassOf* bamm-c:Enumeration . + filter ( not exists { $this bamm:dataType bamm:Property } ) . + $this bamm-c:values ?values . + ?values rdf:rest/rdf:first ?item . + filter ( exists { ?item rdf:type bamm:Property } ) + } + """ + ] ; + ] . + +bamm-c:SingleEntityShape + a sh:NodeShape ; + sh:targetClass bamm-c:SingleEntity ; + sh:property [ + sh:path bamm:dataType ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "dataType" ; + sh:description "Defines the data type of all Properties which use this Characteristic." ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The dataType (see value) that is used as dataType on the Characteristic (see focusNode) is not a bamm:Entity." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this $value + where { + $this bamm:dataType ?value . + filter( not exists { ?value bamm:refines?/rdf:type* bamm:Entity } ) + } + """ + ] ; + ] . + +bamm-c:EitherShape + a sh:NodeShape ; + sh:targetClass bamm-c:Either ; + sh:property [ + sh:path bamm-c:left ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "left" ; + sh:description "The Characteristic for the left side value of a disjoint union." ; + sh:class bamm:Characteristic ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The Characteristic referenced by the bamm-c:left and bamm-c:right attributes of the Either Characteristic (see focus node) may not be equivalent." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + # select all Either Characteristics + $this rdf:type/rdfs:subClassOf* bamm-c:Either . + $this bamm-c:left ?left . + $this bamm-c:right ?right . + filter ( ?left = ?right ) . + } + """ + ] ; + ] ; + sh:property [ + sh:path bamm-c:right ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "right" ; + sh:description "The Characteristic for the right side value of a disjoint union." ; + sh:class bamm:Characteristic ; + ] ; + sh:property [ + sh:path bamm:dataType; + sh:minCount 0 ; + sh:maxCount 0 ; + sh:name "dataType" ; + sh:description "An Either Characteristic may not define a data type. The data type is set by the Characteristics for the left and right side of the disjoint union." ; + ] . + +bamm-c:StructuredValueShape + a sh:NodeShape ; + sh:targetClass bamm-c:StructuredValue ; + sh:js [ + a sh:JSConstraint ; + sh:jsLibrary bamm:jsValidations ; + sh:jsFunctionName "testStructuredValueConstruction" ; + ] ; + sh:property [ + sh:path bamm-c:deconstructionRule ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "deconstructionRule" ; + sh:description "A regular expression that deconstructs a string into groups." ; + sh:js [ + a sh:JSConstraint ; + sh:message "The StructuredValue's deconstructionRule is no valid regular expression." ; + sh:jsLibrary bamm:jsValidations ; + sh:jsFunctionName "isValidRegularExpression" ; + ] ; + ] ; + sh:property [ + sh:path bamm-c:elements ; + sh:node dash:ListShape ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "elements" ; + sh:description """List of elements of possibly different types, e.g. ( "literal value" :reference )""" ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "StructuredValue's elements may only be Properties or string literals" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this rdf:type/rdfs:subClassOf* bamm-c:StructuredValue . + $this bamm-c:elements ?elements . + ?elements rdf:rest*/rdf:first ?element . + filter( ( isURI( ?element ) && not exists { ?element a bamm:Property } ) + || ( datatype( ?element ) != xsd:string ) ) + bind( str( ?element ) as ?value ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "StructuredValue's elements may not be empty" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this rdf:type/rdfs:subClassOf* bamm-c:StructuredValue . + $this bamm-c:elements ?elements . + filter( not exists { + ?elements rdf:rest*/rdf:first ?element . + filter( ?element != rdf:NIL ) + } ) + bind( str( $this ) as ?value ) + } + """ + ] ; + ] ; + sh:property [ + sh:path bamm-c:elements; + sh:name "elements" ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "StructuredValue's elements must contain at least one Property" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this rdf:type/rdfs:subClassOf* bamm-c:StructuredValue . + $this bamm-c:elements ?elements . + filter( not exists { + ?elements rdf:rest*/rdf:first ?element . + filter( exists { ?element a bamm:Property } ) + } ) + { + select $this ( group_concat( ?valuePart; separator=" " ) as ?value ) + where { + $this rdf:type/rdfs:subClassOf* bamm-c:StructuredValue . + $this bamm-c:elements/rdf:rest*/rdf:first ?element . + bind( str( ?element ) as ?valuePart ) + } + group by $this + } + } + """ + ] ; + ] ; + sh:property [ + sh:path bamm-c:elements; + sh:name "elements" ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "Properties referred to in StructuredValue's elements must have a Characteristic with a scalar dataType" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this rdf:type/rdfs:subClassOf* bamm-c:StructuredValue . + $this bamm-c:elements/rdf:rest*/rdf:first ?value . + ?value a bamm:Property . + ?value bamm:characteristic/bamm-c:baseCharacteristic*/bamm:dataType ?dataType . + filter( !strstarts( str( ?dataType ), str( xsd: ) ) + && !strstarts( str( ?dataType ), str( rdf: ) ) + && str( ?dataType) != str( bamm:curie ) ) + } + """ + ] ; + ] ; + sh:property [ + sh:path bamm-c:elements; + sh:name "elements" ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "This Characteristic may not be used with Properties that appear as elements in a StructuredValue" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select distinct $this ?value + where { + $this rdf:type/rdfs:subClassOf* bamm-c:StructuredValue . + $this bamm-c:elements/rdf:rest*/rdf:first ?property . + ?property a bamm:Property . + ?property bamm:characteristic/( bamm-c:baseCharacteristic* | rdfs:subClassOf* )/rdf:type ?value . + filter( ?value in( bamm-c:Collection, bamm-c:Set, bamm-c:SortedSet, bamm-c:List, bamm-c:TimeSeries, bamm-c:Either, bamm-c:StructuredValue ) ) + } + """ + ] ; + ] ; + sh:property [ + sh:path bamm:dataType; + sh:name "dataType" ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "StructuredValue's dataType must have a string-like value space" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this rdf:type/rdfs:subClassOf* bamm-c:StructuredValue . + $this bamm:dataType ?value . + filter( not exists { ?value bamm:hasCharacterValueSpace true } ) + } + """ + ] ; + ] . + +bamm-c:FixedPointConstraintShape + a sh:NodeShape ; + sh:targetClass bamm-c:FixedPointConstraint ; + sh:property [ + sh:path bamm-c:scale ; + sh:datatype xsd:positiveInteger ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "scale" ; + sh:description "The scaling factor for a fixed point number." ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The Fixed Point Constraint may only be used with Characteristics whose data type is xsd:decimal." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdf:type/rdfs:subClassOf* bamm-c:FixedPointConstraint . + $this ^bamm-c:constraint/bamm-c:baseCharacteristic*/bamm:dataType ?dataType . + filter( str( ?dataType ) != str( xsd:decimal ) ) + } + """ + ] ; + ] ; + sh:property [ + sh:path bamm-c:integer ; + sh:datatype xsd:positiveInteger ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:name "integer" ; + sh:description "The number of integral digits for a fixed point number." ; + ] . diff --git a/src/main/resources/bamm/characteristic/1.0.0/characteristic-validations.js b/src/main/resources/bamm/characteristic/1.0.0/characteristic-validations.js new file mode 100644 index 00000000..3f289983 --- /dev/null +++ b/src/main/resources/bamm/characteristic/1.0.0/characteristic-validations.js @@ -0,0 +1,117 @@ +/* + Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + + See the AUTHORS file(s) distributed with this work for additional + information regarding authorship. + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at https://mozilla.org/MPL/2.0/. + + SPDX-License-Identifier: MPL-2.0 +*/ + +/** + * Checks if a given value is a regular expression. + * + * @param $this The context of the Constraint, i.e. the focus node + * @param $value The value that can be reached from the focus node following the Shape's sh:path + */ +function isValidRegularExpression($this, $value) { + if (!$value.isLiteral()) { + return false; + } + + var isValid = true; + try { + new RegExp($value.lex); + } catch (e) { + isValid = false; + } + + return isValid; +} + +function testStructuredValueConstruction($this) { + var bamm = "urn:bamm:io.openmanufacturing:meta-model:1.0.0#"; + var bammc = "urn:bamm:io.openmanufacturing:characteristic:1.0.0#"; + var rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; + var exampleValueUrn = TermFactory.namedNode(bamm + "exampleValue"); + var deconstructionRuleUrn = TermFactory.namedNode(bammc + "deconstructionRule"); + var elementsUrn = TermFactory.namedNode(bammc + "elements"); + var rdfRest = TermFactory.namedNode(rdf + "rest"); + var rdfFirst = TermFactory.namedNode(rdf + "first"); + var rdfNil = TermFactory.namedNode(rdf + "nil"); + + var deconstructionRuleIterator = $data.find($this, deconstructionRuleUrn, null); + var deconstructionRule = null; + for (var it = deconstructionRuleIterator.next(); it; it = deconstructionRuleIterator.next()) { + deconstructionRule = it.object.lex; + } + deconstructionRuleIterator.close(); + + if (deconstructionRule == null) { + return null; + } + + var listNodeIterator = $data.find($this, elementsUrn, null); + var listNode = listNodeIterator.next().object; + var stringToMatch = ""; + var propertyValues = []; + while (listNode != null && !("" + listNode === "" + rdfNil)) { + var listElementIterator = $data.find(listNode, rdfFirst, null); + var listElement = listElementIterator.next().object; + if (!listElement.isURI() && !listElement.isLiteral()) { + listElementIterator.close(); + return true; + } + var targetLiteral; + if (listElement.isLiteral()) { + targetLiteral = listElement.lex; + } else { + var exampleValueIterator = $data.find(listElement, exampleValueUrn, null); + var exampleValue = exampleValueIterator.next(); + if (exampleValue == null) { + // If one of the exampleValues is missing, skip additional validation + exampleValueIterator.close(); + listElementIterator.close(); + return true; + } + targetLiteral = exampleValue.object.lex; + exampleValueIterator.close(); + propertyValues.push(targetLiteral); + } + listElementIterator.close(); + stringToMatch += targetLiteral; + listNodeIterator.close(); + listNodeIterator = $data.find(listNode, rdfRest, null); + listNode = listNodeIterator.next().object; + } + listNodeIterator.close(); + + var regex = new RegExp(deconstructionRule, 'g'); + var match = regex.exec(stringToMatch); + + if (match == null) { + return {message: "Deconstruction rule did not match Properties in elements", value: deconstructionRule}; + } + + if (match.length - 1 != propertyValues.length) { + return { + message: "Number of matching capture groups (" + (match.length - 1) + ") in deconstructionRule does not match number of Properties in elements (" + propertyValues.length + ")", + value: deconstructionRule + }; + } + + for (var group = 1; group <= propertyValues.length; group++) { + if (match[group] !== propertyValues[group - 1]) { + return { + message: "Given Property exampleValue (" + propertyValues[group - 1] + ") does not match group " + group + " from deconstructionRule (" + match[group] + ")", + value: deconstructionRule + }; + + } + } + + return true; +} diff --git a/src/main/resources/bamm/entity/1.0.0/FileResource.ttl b/src/main/resources/bamm/entity/1.0.0/FileResource.ttl new file mode 100644 index 00000000..7bc4ac1f --- /dev/null +++ b/src/main/resources/bamm/entity/1.0.0/FileResource.ttl @@ -0,0 +1,34 @@ +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 + +@prefix bamm: . +@prefix bamm-c: . +@prefix bamm-e: . + +bamm-e:FileResource a bamm:Entity ; + bamm:name "FileResource" ; + bamm:preferredName "File Resource" ; + bamm:description "A file in a specific format"@en ; + bamm:properties ( bamm-e:resource bamm-e:mimeType ) . + +bamm-e:resource a bamm:Property ; + bamm:name "resource" ; + bamm:preferredName "Resource"@en ; + bamm:description "Location of a resource"@en ; + bamm:characteristic bamm-c:ResourcePath . + +bamm-e:mimeType a bamm:Property ; + bamm:name "mimeType" ; + bamm:preferredName "MIME Type"@en ; + bamm:description "A MIME type as defined in RFC 2046."@en ; + bamm:exampleValue "application/json" ; + bamm:characteristic bamm-c:MimeType . + diff --git a/src/main/resources/bamm/entity/1.0.0/Point3d.ttl b/src/main/resources/bamm/entity/1.0.0/Point3d.ttl new file mode 100644 index 00000000..11027fb8 --- /dev/null +++ b/src/main/resources/bamm/entity/1.0.0/Point3d.ttl @@ -0,0 +1,35 @@ +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 + +@prefix bamm: . +@prefix bamm-c: . +@prefix bamm-e: . + +bamm-e:Point3d a bamm:Entity ; + bamm:name "Point3d" ; + bamm:preferredName "Point 3D"@en ; + bamm:description "Defines a position in a three dimensional space."@en ; + bamm:properties ( bamm-e:x bamm-e:y bamm-e:z ) . + +bamm-e:x a bamm:Property ; + bamm:name "x" ; + bamm:preferredName "X"@en ; + bamm:description "The position along the X axis."@en . + +bamm-e:y a bamm:Property ; + bamm:name "y" ; + bamm:preferredName "Y"@en ; + bamm:description "The position along the Y axis."@en . + +bamm-e:z a bamm:Property ; + bamm:name "z" ; + bamm:preferredName "Z"@en ; + bamm:description "The position along the Z axis."@en . diff --git a/src/main/resources/bamm/entity/1.0.0/TimeSeriesEntity.ttl b/src/main/resources/bamm/entity/1.0.0/TimeSeriesEntity.ttl new file mode 100644 index 00000000..5f223926 --- /dev/null +++ b/src/main/resources/bamm/entity/1.0.0/TimeSeriesEntity.ttl @@ -0,0 +1,31 @@ +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 + +@prefix bamm: . +@prefix bamm-c: . +@prefix bamm-e: . + +bamm-e:TimeSeriesEntity a bamm:Entity ; + bamm:name "TimeSeriesEntity" ; + bamm:preferredName "Time Series Entity"@en ; + bamm:description "An Entity which represents a key/value pair. The key is the timestamp when the value was recorded and the value is the value which was recorded."@en ; + bamm:properties ( bamm-e:timestamp bamm-e:value ). + +bamm-e:timestamp a bamm:Property ; + bamm:name "timestamp" ; + bamm:preferredName "Timestamp"@en ; + bamm:description "The specific point in time when the corresponding value was recorded."@en ; + bamm:characteristic bamm-c:Timestamp . + +bamm-e:value a bamm:Property ; + bamm:name "value" ; + bamm:preferredName "Value"@en ; + bamm:description "Any value."@en . diff --git a/src/main/resources/bamm/meta-model/1.0.0/aspect-meta-model-definitions.ttl b/src/main/resources/bamm/meta-model/1.0.0/aspect-meta-model-definitions.ttl new file mode 100644 index 00000000..897c754e --- /dev/null +++ b/src/main/resources/bamm/meta-model/1.0.0/aspect-meta-model-definitions.ttl @@ -0,0 +1,197 @@ +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 + +@prefix mmm: . +@prefix bamm: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . + +# Meta meta model concepts +mmm:Concept rdfs:subClassOf rdfs:Class . + +mmm:NamedConcept rdfs:subClassOf mmm:Concept . + +mmm:ConceptWithProperties rdfs:subClassOf mmm:Concept . + +mmm:Attribute rdfs:subClassOf rdf:Property . + +mmm:Constant rdfs:subClassOf rdfs:Resource . + +mmm:PropertyUsage rdfs:subClassOf rdfs:Class . + +# Meta model concepts +bamm:Aspect rdfs:subClassOf mmm:NamedConcept, mmm:ConceptWithProperties ; + rdfs:label "Aspect" ; + rdfs:comment "An Aspect is the root element of each Aspect Model and has a number of Properties and Operations." . + +bamm:Entity rdfs:subClassOf mmm:NamedConcept, mmm:ConceptWithProperties ; + rdfs:label "Entity" ; + rdfs:comment "An Entity is a logical encapsulation of multiple values. It has a number of Properties." . + +bamm:Property rdfs:subClassOf mmm:NamedConcept ; + rdfs:label "Property" ; + rdfs:comment "A Property represents a named value." . + +bamm:Characteristic rdfs:subClassOf mmm:Concept ; + rdfs:label "Characteristic" ; + rdfs:comment "A Characteristic describes a Property's meaning in the context of the Aspect." . + +bamm:Constraint rdfs:subClassOf mmm:Concept ; + rdfs:label "Constraint" ; + rdfs:comment "A Constraint can be used to further specify a Characteristic, for example on the value range." . + +bamm:Operation rdfs:subClassOf mmm:NamedConcept ; + rdfs:label "Operation" ; + rdfs:comment "An Operation represents an action that can be triggered on the device that is represented by the Digital Twin, for example switching a part of a machine on or off." . + +bamm:Event rdfs:subClassOf mmm:NamedConcept ; + rdfs:label "Event" ; + rdfs:comment "An Event is a model element that represents a single occurence where the timing is important. Assets can for instance emit events to notify other assets in case of special occurences." . + +# Meta meta model attributes used in Shapes +mmm:listType a rdf:Property ; + rdfs:label "listType" ; + rdfs:comment "Used to define the type for a list Property." ; + rdfs:range rdfs:Resource . + +# Meta model attributes +bamm:name a mmm:Attribute ; + rdfs:label "name" ; + rdfs:comment "The local name of a model element. This must be identical to the local part of its URI." ; + rdfs:domain mmm:NamedConcept ; + rdfs:range xsd:string . + +bamm:preferredName a mmm:Attribute ; + rdfs:label "preferredName" ; + rdfs:comment "Human readable name in a specific language." ; + rdfs:domain mmm:Concept ; + rdfs:range rdf:langString . + +bamm:description a mmm:Attribute ; + rdfs:label "description" ; + rdfs:comment "Human readable description in a specific language" ; + rdfs:domain mmm:Concept ; + rdfs:range rdf:langString . + +bamm:dataType a mmm:Attribute ; + rdfs:label "dataType" ; + rdfs:comment "Reference to a scalar or complex (Entity) data type." ; + rdfs:domain bamm:Characteristic ; + rdfs:range rdfs:Resource . + +bamm:value a mmm:Attribute ; + rdfs:label "value" ; + rdfs:comment "A single constant value or link to another resource." ; + rdfs:domain mmm:Concept ; + rdfs:range rdfs:Resource . + +bamm:properties a mmm:Attribute ; + rdfs:label "properties" ; + rdfs:comment "The list of Properties of an Aspect or Entity" ; + rdfs:domain mmm:ConceptWithProperties ; + rdfs:range rdfs:Resource . + +bamm:characteristic a mmm:Attribute ; + rdfs:label "characteristic" ; + rdfs:comment "The Characteristic describing a Property." ; + rdfs:domain bamm:Property ; + rdfs:range rdfs:Resource . + +bamm:operations a mmm:Attribute ; + rdfs:label "operations" ; + rdfs:comment "The list of Operations of an Aspect." ; + rdfs:domain bamm:Aspect ; + rdfs:range rdfs:Resource . + +bamm:input a mmm:Attribute ; + rdfs:label "input" ; + rdfs:comment "A list of references to Properties that describe the input to an operation." ; + rdfs:domain bamm:Operation ; + rdfs:range rdfs:Resource . + +bamm:output a mmm:Attribute ; + rdfs:label "output" ; + rdfs:comment "A single reference to a Property that describes the output of an operation." ; + rdfs:domain bamm:Operation ; + rdfs:range rdfs:Resource . + +bamm:events a mmm:Attribute ; + rdfs:label "events" ; + rdfs:comment "The list of Events of an Aspect." ; + rdfs:domain bamm:Aspect ; + rdfs:range rdfs:Resource . + +bamm:parameters a mmm:Attribute ; + rdfs:label "parameters" ; + rdfs:comment "The parameters defined by an Event." ; + rdfs:domain bamm:Event ; + rdfs:range rdfs:Resource . + +bamm:exampleValue a mmm:Attribute ; + rdfs:label "exampleValue" ; + rdfs:comment "An exemplary value the Property can take on that helps to understand the intended meaning of the property better. This can only be set for Properties with scalar data types (e.g. xsd:string or xsd:float, but not Entities). The data type of the bamm:exampleValue must be convertable to the effective data type of the Property’s Characteristic." ; + rdfs:domain bamm:Property ; + rdfs:range rdfs:Resource . + +bamm:refines a mmm:Attribute ; + rdfs:label "refines" ; + rdfs:comment "Defines that the target refines the source" ; + rdfs:domain mmm:Concept ; + rdfs:range rdfs:Resource . + +bamm:optional a mmm:Attribute ; + rdfs:label "optional" ; + rdfs:comment "Defines whether a Property is optional or not in the context where the Property is being used. The default is false." ; + rdfs:domain mmm:PropertyUsage ; + rdfs:range xsd:boolean . + +bamm:property a mmm:Attribute ; + rdfs:label "property" ; + rdfs:comment "Links a Property Usage to an actual Property" ; + rdfs:domain mmm:PropertyUsage ; + rdfs:range bamm:Property . + +bamm:notInPayload a mmm:Attribute ; + rdfs:label "notInPayload" ; + rdfs:comment "Defines whether a Property is included in the payload of an Aspect. The default is false." ; + rdfs:domain mmm:PropertyUsage ; + rdfs:range xsd:boolean . + +bamm:payloadName a mmm:Attribute ; + rdfs:label "payloadName" ; + rdfs:comment "Provides the name of the Property as it will appear in the runtime payload." ; + rdfs:domain mmm:PropertyUsage ; + rdfs:range xsd:string . + +bamm:see a mmm:Attribute ; + rdfs:label "see" ; + rdfs:comment "Contains a link to an external taxonomy/ontology." ; + rdfs:domain mmm:Concept ; + rdfs:range rdfs:Resource . + +# Constants +bamm:US-ASCII a mmm:Constant . + +bamm:ISO-8859-1 a mmm:Constant . + +bamm:UTF-8 a mmm:Constant . + +bamm:UTF-16 a mmm:Constant . + +bamm:UTF-16BE a mmm:Constant . + +bamm:UTF-16LE a mmm:Constant . + +# Datatypes +bamm:curie a rdfs:Datatype ; + rdfs:comment "The ·lexical space· of curie is finite-length character sequences which represent a valid curie as defined here https://www.w3.org/TR/2010/NOTE-curie-20101216/#s_schema."; + rdfs:label "curie" . diff --git a/src/main/resources/bamm/meta-model/1.0.0/aspect-meta-model-shapes.ttl b/src/main/resources/bamm/meta-model/1.0.0/aspect-meta-model-shapes.ttl new file mode 100644 index 00000000..e7316648 --- /dev/null +++ b/src/main/resources/bamm/meta-model/1.0.0/aspect-meta-model-shapes.ttl @@ -0,0 +1,732 @@ +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 + +@prefix mmm: . +@prefix bamm: . +@prefix bamm-c: . +@prefix bamm-e: . +@prefix rdf: . +@prefix sh: . +@prefix xsd: . +@prefix dash: . + +bamm:ConceptShape + a sh:NodeShape ; + sh:targetClass mmm:Concept ; + sh:property [ + sh:order 1 ; + sh:path bamm:preferredName ; + sh:datatype rdf:langString ; + sh:uniqueLang true ; + sh:minLength 1 ; + sh:name "preferredName" ; + sh:description "A language specific name for the model element. There may be multiple preferred names." ; + ] ; + sh:property [ + sh:order 2 ; + sh:path bamm:description ; + sh:datatype rdf:langString ; + sh:uniqueLang true ; + sh:minLength 1 ; + sh:name "description" ; + sh:description "A language specific description of the model element. There may be multiple descriptions." ; + ] ; + sh:property [ + sh:path bamm:see ; + sh:nodeKind sh:IRI ; + sh:name "see" ; + sh:description "Contains a link to an external taxonomy/ontology." ; + ] . + +bamm:NamedConceptShape + a sh:NodeShape ; + sh:targetClass mmm:NamedConcept ; + sh:property [ + sh:path bamm:name ; + sh:datatype xsd:string ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:minLength 1 ; + sh:name "name" ; + sh:description "The name of the model element." ; + ] . + +bamm:AspectShape + a sh:NodeShape ; + sh:targetClass bamm:Aspect ; + sh:property [ + sh:order 3 ; + sh:path bamm:properties ; + sh:node dash:ListShape ; + mmm:listType bamm:Property ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "properties" ; + sh:description "A list of Properties exposed by the Aspect." ; + sh:property [ + sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ; + sh:nodeKind sh:BlankNodeOrIRI ; + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "Each element in the Aspect's properties list must be either a Property or a blank node referring to a Property and defining bamm:optional \"true\"^^xsd:boolean and/or bamm:payloadName." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?properties ?value + where { + $this bamm:properties ?properties . + ?properties rdf:rest*/rdf:first ?value . + filter ( not exists { ?value bamm:property?/bamm:refines?/rdf:type/rdfs:subClassOf* bamm:Property } + || ( isBlank( ?value ) && not exists { ?value bamm:optional true } ) ) + filter (not exists { ?value bamm:property?/bamm:refines?/rdf:type/rdfs:subClassOf* bamm:Property } + || ( isBlank( ?value ) && not exists { ?value bamm:payloadName ?any } )) + } + """ + ] ; + ] ; + sh:property [ + sh:order 4 ; + sh:path bamm:operations ; + sh:node dash:ListShape ; + mmm:listType bamm:Operation ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "operations" ; + sh:description "A list of Operations exposed by the Aspect." ; + sh:property [ + sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ; + sh:class bamm:Operation + ] + ] ; + sh:property [ + sh:order 5 ; + sh:path bamm:events ; + sh:node dash:ListShape ; + mmm:listType bamm:Event ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "events" ; + sh:description "A list of Events exposed by the Aspect." ; + sh:property [ + sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ; + sh:class bamm:Event + ] + ] . + +bamm:EntityShape + a sh:NodeShape ; + sh:target [ + a sh:SPARQLTarget ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this bamm:refines?/rdf:type/rdfs:subClassOf* bamm:Entity . + } + """ + ] ; + sh:property [ + sh:order 3 ; + sh:path bamm:properties ; + sh:node dash:ListShape ; + mmm:listType bamm:Property ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "properties" ; + sh:description "A list of properties defined in the scope of the Entity." ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "Each element in the Entity's properties list must be either a Property or a blank node referring to a Property and defining either bamm:optional \"true\"^^xsd:boolean and/or bamm:payloadName or bamm:notInPayload \"true\"^^xsd:boolean." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?properties ?value + where { + $this bamm:properties ?properties . + ?properties rdf:rest*/rdf:first ?value . + filter ( not exists { ?value bamm:property?/bamm:refines?/rdf:type/rdfs:subClassOf* bamm:Property } + || ( isBlank( ?value ) && not exists { ?value bamm:optional true } ) ) + filter ( not exists { ?value bamm:property?/bamm:refines?/rdf:type/rdfs:subClassOf* bamm:Property } + || ( isBlank( ?value ) && not exists { ?value bamm:notInPayload true } ) ) + filter ( not exists { ?value bamm:property?/bamm:refines?/rdf:type/rdfs:subClassOf* bamm:Property } + || ( isBlank( ?value ) && not exists { ?value bamm:payloadName ?any } ) ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "A Property of an Entity may only be defined with bamm:notInPayload \"true\"^^xsd:boolean when the Entity, or one of its parent Entities, is used as the data type of an Enumeration." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?properties ?value + where { + $this bamm:properties ?properties . + ?properties rdf:rest*/rdf:first ?value . + filter ( isBlank( ?value ) && exists { ?value bamm:notInPayload true } ) . + filter ( not exists { + ?enumeration rdf:type/rdfs:subClassOf* bamm-c:Enumeration . + ?enumeration (<>|!<>)* $this + } ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "An Entity defining a Property with bamm:notInPayload \"true\"^^xsd:boolean must define at least one more Property." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?properties + where { + $this bamm:properties ?properties . + ?properties rdf:rest*/rdf:first ?value . + filter ( isBlank( ?value ) && exists { ?value bamm:notInPayload true } ) + filter ( exists { + ?enumeration rdf:type/rdfs:subClassOf* bamm-c:Enumeration . + ?enumeration bamm:dataType $this + } ) + optional { + select $this ( count( ?property ) as ?propertyCount ) + where { + $this bamm:properties ?properties . + ?properties rdf:rest*/rdf:first ?property . + filter ( not exists { ?property bamm:notInPayload true } ) + } + group by $this + } + filter ( !bound( ?propertyCount ) || ( ?propertyCount = 0 ) ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "A Property of an Entity may not be defined with both bamm:optional \"true\"^^xsd:boolean and bamm:notInPayload \"true\"^^xsd:boolean." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?properties + where { + $this bamm:properties ?properties . + ?properties rdf:rest*/rdf:first ?value . + filter ( isBlank( ?value ) && exists { ?value bamm:notInPayload true } && exists { ?value bamm:optional true } ) . + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "A Property of an Entity may not be defined with both bamm:payloadName and bamm:notInPayload \"true\"^^xsd:boolean." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?properties + where { + $this bamm:properties ?properties . + ?properties rdf:rest*/rdf:first ?value . + filter ( isBlank( ?value ) && exists { ?value bamm:notInPayload true } && exists { ?value bamm:payloadName ?any } ) . + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "Entity refining another Entity may not declare additional Properties." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?properties + where { + $this bamm:refines ?elementBeingRefined . + filter ( exists { ?elementBeingRefined rdf:type/rdfs:subClassOf* bamm:Entity } ) . + $this bamm:properties ?properties . + ?properties rdf:rest*/rdf:first ?item . + filter ( not exists { ?item bamm:refines [] } ) + } + """ + ] ; + ] . + +bamm:PropertyShape + a sh:NodeShape ; + sh:targetClass bamm:Property ; + sh:property [ + sh:order 3 ; + sh:path bamm:characteristic ; + sh:class bamm:Characteristic ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "A Property without a Characteristic has not been refined." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?anything + where { + $this rdf:type bamm:Property . + filter ( not exists { $this bamm:characteristic [] } ) + filter ( not exists { ?anything bamm:refines $this } ) + filter( !strstarts( str( $this ), str( bamm-e: ) ) ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "A Property with a Characteristic may not be refined." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?anything + where { + $this rdf:type bamm:Property . + filter ( exists { $this bamm:characteristic [] } ) . + filter ( exists { ?anything bamm:refines $this } ) . + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "A cycle in the Aspect Model was detected" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this bamm:characteristic ?characteristic + filter( exists { + $this bamm:characteristic/bamm-c:baseCharacteristic*/bamm-c:left*/bamm-c:right*/bamm:dataType/bamm:refines*/bamm:properties/rdf:rest*/rdf:first $this . + } && not exists { ?characteristic rdf:type/rdfs:subClassOf* bamm-c:Collection } ) + } + """ + ] ; + sh:maxCount 1 ; + sh:name "characteristic" ; + sh:description "The Characteristic describing the semantics of the Property." ; + ] ; + sh:property [ + sh:order 4 ; + sh:path bamm:exampleValue ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The provided exampleValue is no literal on the Property given in the focusNode." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this bamm:exampleValue ?value . + filter( !isLiteral( ?value ) ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The datatype (see value) of the exampleValue neither matches nor can be cast to the Property's (see focusNode) Characteristic's dataType." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this bamm:exampleValue ?exampleValue . + bind( str( datatype( ?exampleValue ) ) as ?value ) + $this bamm:characteristic/bamm-c:baseCharacteristic*/bamm:dataType ?characteristicDataType . + bind( datatype( ?exampleValue ) as ?providedType ) + filter( + ( ?providedType != ?characteristicDataType ) && + not exists { ?providedType bamm:canBeCastTo* ?characteristicDataType } + ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "An example value may not be set on a Property which does not have a Characteristic" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this bamm:exampleValue [] . + filter ( not exists { $this bamm:characteristic [] } ) + } + """ + ] ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "exampleValue" ; + sh:description "A real world example value." ; + ] . + +bamm:CharacteristicShape + a sh:NodeShape ; + sh:target [ + a sh:SPARQLTarget ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdf:type?/rdfs:subClassOf+|rdf:type|rdfs:subClassOf+ bamm:Characteristic . + } + """ + ] ; + sh:property [ + sh:order 3 ; + sh:path bamm:dataType ; + sh:nodeKind sh:IRI ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The dataType (see value) that is used as dataType on the Characteristic (see focusNode) is neither an allowed xsd or rdf type, nor a type that is defined as rdfs:Class." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select distinct $this $value + where { + $this (bamm-c:left*|bamm-c:right*|bamm-c:baseCharacteristic*)/bamm:dataType ?value . + filter( not exists { ?value bamm:refines?/rdf:type*/rdfs:subClassOf* mmm:Concept } + && ?value not in ( + xsd:string, + xsd:boolean, + xsd:decimal, + xsd:integer, + xsd:double, + xsd:float, + xsd:date, + xsd:time, + xsd:dateTime, + xsd:dateTimeStamp, + xsd:gYear, + xsd:gMonth, + xsd:gDay, + xsd:gYearMonth, + xsd:gMonthDay, + xsd:duration, + xsd:yearMonthDuration, + xsd:dayTimeDuration, + xsd:byte, + xsd:short, + xsd:int, + xsd:long, + xsd:unsignedByte, + xsd:unsignedShort, + xsd:unsignedInt, + xsd:unsignedLong, + xsd:positiveInteger, + xsd:negativeInteger, + xsd:nonPositiveInteger, + xsd:nonNegativeInteger, + xsd:hexBinary, + xsd:base64Binary, + xsd:anyURI, + rdf:langString, + bamm:curie + ) + ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The datatype is not defined on the Characteristic instance (see focusNode)." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + # select all characteristic instances + $this rdf:type/rdfs:subClassOf* bamm:Characteristic . + # exclude 'Either' Characteristic since it does not define the data type directly + filter ( not exists { $this rdf:type/rdfs:subClassOf* bamm-c:Either } ) + # exclude 'Collection' Characteristic since it may define the data type in different ways + filter ( not exists { $this rdf:type/rdfs:subClassOf* bamm-c:Collection } ) + # exclude 'Trait' Characteristic since it refers to the datatype via its baseCharacteristic + filter ( not exists { $this rdf:type/rdfs:subClassOf* bamm-c:Trait } ) + # find all characteristic instances which do not define a data type + filter ( not exists { $this bamm:dataType [] } ) . + filter ( not exists { $this rdf:type/rdfs:subClassOf*/bamm:dataType [] } ) + } + """ + ]; + sh:maxCount 1 ; + sh:name "dataType" ; + sh:description "Defines the data type of all Properties which use this Characteristic." ; + ] . + +bamm:ConstraintShape + a sh:NodeShape ; + sh:targetClass bamm:Constraint ; + sh:property [ + sh:order 0 ; + sh:path bamm-c:baseCharacteristic ; + sh:class bamm:Characteristic ; + sh:minCount 0 ; + sh:maxCount 0 ; + sh:name "baseCharacteristic" ; + sh:description "The baseCharacteristic must not be set on the Constraint, but the Trait" ; + ] ; + sh:property [ + sh:order 1 ; + sh:path bamm:dataType; + sh:minCount 0 ; + sh:maxCount 0 ; + sh:name "dataType" ; + sh:description "A Constraint may not change the data type of the Characteristic being constrained." ; + ] . + +bamm:OperationShape + a sh:NodeShape ; + sh:targetClass bamm:Operation ; + sh:property [ + sh:order 3 ; + sh:path bamm:input ; + sh:node dash:ListShape ; + mmm:listType bamm:Property ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "input" ; + sh:description "A list of input parameters for the Operation. If the operation does not take any input parameters, the input may be omitted." ; + sh:property [ + sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ; + sh:class bamm:Property + ] + ] ; + sh:property [ + sh:order 4 ; + sh:path bamm:output ; + sh:class bamm:Property ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "output" ; + sh:description "The return value of the Operation. If the Operation does not return anything, the output may be omitted." ; + ] . + +bamm:EventShape + a sh:NodeShape ; + sh:targetClass bamm:Event ; + sh:property [ + sh:order 3 ; + sh:path bamm:parameters ; + sh:node dash:ListShape ; + mmm:listType bamm:Property ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "parameters" ; + sh:description "The parameters defined by an Event." ; + sh:property [ + sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ; + sh:class bamm:Property + ] + ] . + +bamm:PayloadNameShape + a sh:NodeShape ; + sh:targetSubjectsOf bamm:payloadName ; + sh:property [ + sh:order 0 ; + sh:path bamm:payloadName ; + sh:datatype xsd:string ; + ] . + +bamm:ValidEntityInstances + a sh:NodeShape ; + sh:target [ + a sh:SPARQLTarget ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdf:type/rdf:type bamm:Entity . + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The Entity instance is missing a required Property." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this a ?entityType . + ?entityType bamm:properties/rdf:rest*/rdf:first ?property . + + # Select only the non-optional Properties + filter( exists { ?property a bamm:Property } || ( isBlank( ?property ) && exists { ?property bamm:notInPayload true } ) ) . + + # Check that the instance uses the Property + filter( ( !isBlank( ?property ) && not exists { $this ?property [] } ) || ( isBlank( ?property ) && not exists { + ?property bamm:property ?actualProperty . + $this ?actualProperty [] . + } ) ) + bind( ?property as ?value ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The type of the value of the Property of the Entity instance does not match the Property definition." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value ?path + where { + $this a ?entityType . + ?entityType bamm:properties/rdf:rest*/rdf:first ?property . + ?property bamm:characteristic/bamm-c:baseCharacteristic*/bamm:dataType ?characteristicDataType . + $this ?property ?instanceValue . + bind( datatype( ?instanceValue ) as ?providedType ) + filter( ( ?providedType != ?characteristicDataType ) && + not exists { ?providedType bamm:canBeCastTo* ?characteristicDataType } ) + bind( ?property as ?path ) + bind( str( ?instanceValue ) as ?value ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The value for a list Property of the Entity instance is not defined as a list." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?path + where { + $this a ?entityType . + ?entityType bamm:properties/rdf:rest*/rdf:first ?property . + ?property bamm:characteristic/bamm-c:baseCharacteristic* ?characteristic . + filter ( exists { ?characteristic rdf:type/rdfs:subClassOf* bamm-c:Collection } ) + ?characteristic bamm:dataType ?characteristicDataType . + $this ?property ?listInstance . + filter ( not exists { ?listInstance rdf:rest*/rdf:first ?instanceValue } ) . + bind( ?property as ?path ) + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The value for a list Property of the Entity instance contains an entry with an invalid data type." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value ?path + where { + $this a ?entityType . + ?entityType bamm:properties/rdf:rest*/rdf:first ?property . + ?property bamm:characteristic/bamm-c:baseCharacteristic* ?characteristic . + filter ( exists { ?characteristic rdf:type/rdfs:subClassOf* bamm-c:Collection } ) + ?property bamm:characteristic/bamm-c:baseCharacteristic*/bamm:dataType ?characteristicDataType . + $this ?property ?listInstance . + ?listInstance rdf:rest*/rdf:first ?instanceValue + optional { ?instanceValue rdf:type ?entityListType } + bind( coalesce( ?entityListType, dataType( ?instanceValue ) ) as ?providedType ) + filter( ( ?providedType != ?characteristicDataType ) && + not exists { ?providedType bamm:canBeCastTo* ?characteristicDataType } ) + bind( ?property as ?path ) + bind( str( ?instanceValue ) as ?value ) + } + """ + ] . + +bamm:UniqueEntityInstances + a sh:NodeShape ; + sh:severity sh:Warning ; + sh:target [ + a sh:SPARQLTarget ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdf:type/rdf:type bamm:Entity . + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "Values for Properties of Entity instances should be unique." ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select distinct $this ?value + where { + ?entityType rdf:type bamm:Entity . + $this a ?entityType . + ?anotherInstance a ?entityType . + filter( str( $this ) < str( ?anotherInstance ) ) + filter( $this != ?anotherInstance ) + + { + select $this ?instance1 ( group_concat( ?part; separator=" " ) as ?serialized1 ) + where { + ?instance1 rdf:type/rdf:type bamm:Entity . + { + select $this ?instance1 ?property + where { + ?instance1 ?property [] . + filter( ?property != rdf:type ) + } + } + ?instance1 ?property ?val . + bind( concat( str( ?property ), ":", str( ?val ) ) as ?part ) + } + group by ?instance1 $this + } + + { + select $this ?instance2 ( group_concat( ?part; separator=" " ) as ?serialized2 ) + where { + ?instance2 rdf:type/rdf:type bamm:Entity . + { + select $this ?instance2 ?property + where { + ?instance2 ?property [] . + filter( ?property != rdf:type ) + } + } + ?instance2 ?property ?val . + bind( concat( str( ?property ), ":", str( ?val ) ) as ?part ) + } + group by ?instance2 $this + } + + filter( ( ?instance1 != ?instance2 ) && ( ?serialized1 = ?serialized2 ) ) + bind( str( ?anotherInstance ) as ?value ) + } + """ + ] . + +bamm:EntityInstancesHaveOnlyKnownProperties + a sh:NodeShape ; + sh:severity sh:Warning ; + sh:target [ + a sh:SPARQLTarget ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this rdf:type/rdf:type bamm:Entity . + } + """ + ] ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "The Entity instance has an attribute that is not a Property defined in the Entity" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this ?value + where { + $this a ?entityType . + $this ?property [] . + filter( ?property != rdf:type ) + filter ( not exists { ?entityType bamm:properties/rdf:rest*/rdf:first ?property } ) + filter ( not exists { + ?entityType bamm:properties/rdf:rest*/rdf:first ?blankProperty . + ?blankProperty bamm:property ?property . + } ) + bind( ?property as ?value ) + } + """ + ] . + +bamm:ConstrainListTypeUsageShape + a sh:NodeShape ; + sh:targetSubjectsOf mmm:listType ; + sh:property [ + sh:order 0 ; + sh:path mmm:listType ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "mmm:listType may only be used for List Shapes" ; + sh:prefixes bamm:prefixDeclarations ; + sh:select """ + select $this + where { + $this mmm:listType [] + filter ( not exists { $this sh:node dash:ListShape } ) + } + """ + ] + ] . diff --git a/src/main/resources/bamm/meta-model/1.0.0/prefix-declarations.ttl b/src/main/resources/bamm/meta-model/1.0.0/prefix-declarations.ttl new file mode 100644 index 00000000..21b357fc --- /dev/null +++ b/src/main/resources/bamm/meta-model/1.0.0/prefix-declarations.ttl @@ -0,0 +1,62 @@ +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 + +@prefix bamm: . +@prefix sh: . +@prefix xsd: . + +# Central definition of namespaces used in SPARQL queries in shapes +bamm:prefixDeclarations + sh:declare [ + sh:prefix "mmm" ; + sh:namespace "urn:bamm:io.openmanufacturing:meta-meta-model:1.0.0#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "bamm" ; + sh:namespace "urn:bamm:io.openmanufacturing:meta-model:1.0.0#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "bamm-c" ; + sh:namespace "urn:bamm:io.openmanufacturing:characteristic:1.0.0#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "bamm-e" ; + sh:namespace "urn:bamm:io.openmanufacturing:entity:1.0.0#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "unit" ; + sh:namespace "urn:bamm:io.openmanufacturing:unit:1.0.0#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "rdfs" ; + sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "sh" ; + sh:namespace "http://www.w3.org/ns/shacl#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "dash" ; + sh:namespace "http://datashapes.org/dash#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "xsd" ; + sh:namespace "http://www.w3.org/2001/XMLSchema#"^^xsd:anyURI ; + ] ; +. + +bamm:jsValidations + a sh:JSLibrary ; + sh:jsLibraryURL "bamm://characteristic/1.0.0/characteristic-validations.js"^^xsd:anyURI . diff --git a/src/main/resources/bamm/meta-model/1.0.0/type-conversions.ttl b/src/main/resources/bamm/meta-model/1.0.0/type-conversions.ttl new file mode 100644 index 00000000..5090b9c6 --- /dev/null +++ b/src/main/resources/bamm/meta-model/1.0.0/type-conversions.ttl @@ -0,0 +1,59 @@ +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 + +@prefix bamm: . +@prefix rdf: . +@prefix xsd: . + +# Describes valid implicit type conversions (casts) and meta-information about types. + +# canBeCastTo should be evaluated as a reflexive, transitive, asymmetric property. +# This represents valid conversions that correspond to XSD's type hierarchy. +bamm:canBeCastTo a rdf:Property . + +xsd:byte bamm:canBeCastTo xsd:short . +xsd:short bamm:canBeCastTo xsd:int . +xsd:int bamm:canBeCastTo xsd:long . +xsd:long bamm:canBeCastTo xsd:integer . +xsd:integer bamm:canBeCastTo xsd:decimal . +xsd:unsignedByte bamm:canBeCastTo xsd:unsignedShort . +xsd:unsignedShort bamm:canBeCastTo xsd:unsignedInt . +xsd:unsignedInt bamm:canBeCastTo xsd:unsignedLong . +xsd:unsignedLong bamm:canBeCastTo xsd:nonNegativeInteger . +xsd:positiveInteger bamm:canBeCastTo xsd:nonNegativeInteger . +xsd:nonNegativeInteger bamm:canBeCastTo xsd:integer . +xsd:negativeInger bamm:canBeCastTo xsd:nonPositiveInteger . +xsd:nonPositiveInteger bamm:canBeCastTo xsd:integer . +xsd:dateTimeStamp bamm:canBeCastTo xsd:dateTime . +xsd:yearMonthDuration bamm:canBeCastTo xsd:duration . +xsd:dayTimeDuration bamm:canBeCastTo xsd:duration . + +# Signifies data types that have an inherently character-based value space. +bamm:hasCharacterValueSpace a rdf:Property . + +xsd:string bamm:hasCharacterValueSpace true . +xsd:date bamm:hasCharacterValueSpace true . +xsd:time bamm:hasCharacterValueSpace true . +xsd:dateTime bamm:hasCharacterValueSpace true . +xsd:dateTimeStamp bamm:hasCharacterValueSpace true . +xsd:gYear bamm:hasCharacterValueSpace true . +xsd:gMonth bamm:hasCharacterValueSpace true . +xsd:gDay bamm:hasCharacterValueSpace true . +xsd:gYearMonth bamm:hasCharacterValueSpace true . +xsd:gMonthDay bamm:hasCharacterValueSpace true . +xsd:duration bamm:hasCharacterValueSpace true . +xsd:yearMonthDuration bamm:hasCharacterValueSpace true . +xsd:dayTimeDuration bamm:hasCharacterValueSpace true . +xsd:hexBinary bamm:hasCharacterValueSpace true . +xsd:base64Binary bamm:hasCharacterValueSpace true . +xsd:anyURI bamm:hasCharacterValueSpace true . +bamm:curie bamm:hasCharacterValueSpace true . +rdf:langString bamm:hasCharacterValueSpace true . diff --git a/src/main/resources/bamm/unit/1.0.0/units.ttl b/src/main/resources/bamm/unit/1.0.0/units.ttl new file mode 100644 index 00000000..6f215e73 --- /dev/null +++ b/src/main/resources/bamm/unit/1.0.0/units.ttl @@ -0,0 +1,19551 @@ +# This file was automatically generated, do not modify. + +@prefix : . +@prefix xsd: . +@prefix bamm: . +@prefix rdfs: . +@prefix rdf: . + +# Classes + +:QuantityKind + a rdfs:Class ; + bamm:name "QuantityKind" . + +:Unit + a rdfs:Class ; + bamm:name "Unit" . + +# Properties + +:commonCode + a rdf:Property ; + bamm:name "commonCode" ; + rdfs:domain :Unit ; + rdfs:range xsd:string . + +:conversionFactor + a rdf:Property ; + bamm:name "conversionFactor" ; + rdfs:domain :Unit ; + rdfs:range xsd:string . + +:numericConversionFactor + a rdf:Property ; + bamm:name "numericConversionFactor" ; + rdfs:domain :Unit ; + rdfs:range xsd:double . + +:quantityKind + a rdf:Property ; + bamm:name "quantityKind" ; + rdfs:domain :Unit ; + rdfs:range :quantityKind . + +:referenceUnit + a rdf:Property ; + bamm:name "referenceUnit" ; + rdfs:domain :Unit ; + rdfs:range :Unit . + +:symbol + a rdf:Property ; + bamm:name "symbol" ; + rdfs:domain :Unit ; + rdfs:range xsd:string . + + +# Quantity Kinds + +:absoluteActivity + a :QuantityKind ; + bamm:name "absoluteActivity" ; + bamm:preferredName "absolute activity"@en . + +:absorbance + a :QuantityKind ; + bamm:name "absorbance" ; + bamm:preferredName "absorbance"@en . + +:absorbedDose + a :QuantityKind ; + bamm:name "absorbedDose" ; + bamm:preferredName "absorbed dose"@en . + +:absorbedDoseRate + a :QuantityKind ; + bamm:name "absorbedDoseRate" ; + bamm:preferredName "absorbed dose rate"@en . + +:absorptionFactor + a :QuantityKind ; + bamm:name "absorptionFactor" ; + bamm:preferredName "absorption factor"@en . + +:acceleration + a :QuantityKind ; + bamm:name "acceleration" ; + bamm:preferredName "acceleration"@en . + +:accelerationDueToGravity + a :QuantityKind ; + bamm:name "accelerationDueToGravity" ; + bamm:preferredName "acceleration due to gravity"@en . + +:accelerationOfFreeFall + a :QuantityKind ; + bamm:name "accelerationOfFreeFall" ; + bamm:preferredName "acceleration of free fall"@en . + +:acceptorIonizationEnergy + a :QuantityKind ; + bamm:name "acceptorIonizationEnergy" ; + bamm:preferredName "acceptor ionization energy"@en . + +:acceptorNumberDensity + a :QuantityKind ; + bamm:name "acceptorNumberDensity" ; + bamm:preferredName "acceptor number density"@en . + +:acousticImpedance + a :QuantityKind ; + bamm:name "acousticImpedance" ; + bamm:preferredName "acoustic impedance"@en . + +:activeEnergy + a :QuantityKind ; + bamm:name "activeEnergy" ; + bamm:preferredName "active energy"@en . + +:activePower + a :QuantityKind ; + bamm:name "activePower" ; + bamm:preferredName "active power"@en . + +:activity + a :QuantityKind ; + bamm:name "activity" ; + bamm:preferredName "activity"@en ; + :commonCode "ACT" . + +:activityCoefficientOfBInALiquidAsASolidMixture + a :QuantityKind ; + bamm:name "activityCoefficientOfBInALiquidAsASolidMixture" ; + bamm:preferredName "activity coefficient of B (in a liquid as a solid mixture)"@en . + +:activityCoefficientOfSoluteBEspeciallyInADiluteSolution + a :QuantityKind ; + bamm:name "activityCoefficientOfSoluteBEspeciallyInADiluteSolution" ; + bamm:preferredName "activity coefficient of solute B (especially in a dilute solution)"@en . + +:activityConcentration + a :QuantityKind ; + bamm:name "activityConcentration" ; + bamm:preferredName "activity concentration"@en . + +:activityOfSolventA + a :QuantityKind ; + bamm:name "activityOfSolventA" ; + bamm:preferredName "activity of solvent A"@en . + +:admittance + a :QuantityKind ; + bamm:name "admittance" ; + bamm:preferredName "admittance"@en . + +:affinityOfAChemicalReaction + a :QuantityKind ; + bamm:name "affinityOfAChemicalReaction" ; + bamm:preferredName "affinity (of a chemical reaction)"@en . + +:alfvenNumber + a :QuantityKind ; + bamm:name "alfvenNumber" ; + bamm:preferredName "Alfven number"@en . + +:alphaDisintegrationEnergy + a :QuantityKind ; + bamm:name "alphaDisintegrationEnergy" ; + bamm:preferredName "alpha disintegration energy"@en . + +:amountOfSubstance + a :QuantityKind ; + bamm:name "amountOfSubstance" ; + bamm:preferredName "amount of substance"@en . + +:angleOfOpticalRotation + a :QuantityKind ; + bamm:name "angleOfOpticalRotation" ; + bamm:preferredName "angle of optical rotation"@en . + +:anglePlane + a :QuantityKind ; + bamm:name "anglePlane" ; + bamm:preferredName "angle (plane)"@en . + +:angularAcceleration + a :QuantityKind ; + bamm:name "angularAcceleration" ; + bamm:preferredName "angular acceleration"@en . + +:angularCrossSection + a :QuantityKind ; + bamm:name "angularCrossSection" ; + bamm:preferredName "angular cross-section"@en . + +:angularFrequency + a :QuantityKind ; + bamm:name "angularFrequency" ; + bamm:preferredName "angular frequency"@en . + +:angularImpulse + a :QuantityKind ; + bamm:name "angularImpulse" ; + bamm:preferredName "angular impulse"@en . + +:angularMomentum + a :QuantityKind ; + bamm:name "angularMomentum" ; + bamm:preferredName "angular momentum"@en . + +:angularReciprocalLatticeVector + a :QuantityKind ; + bamm:name "angularReciprocalLatticeVector" ; + bamm:preferredName "angular reciprocal lattice vector"@en . + +:angularRepetency + a :QuantityKind ; + bamm:name "angularRepetency" ; + bamm:preferredName "angular repetency"@en . + +:angularVelocity + a :QuantityKind ; + bamm:name "angularVelocity" ; + bamm:preferredName "angular velocity"@en . + +:angularWaveNumber + a :QuantityKind ; + bamm:name "angularWaveNumber" ; + bamm:preferredName "angular wave number"@en . + +:angularWavenumber + a :QuantityKind ; + bamm:name "angularWavenumber" ; + bamm:preferredName "angular wavenumber"@en . + +:apparentPower + a :QuantityKind ; + bamm:name "apparentPower" ; + bamm:preferredName "apparent power"@en . + +:area + a :QuantityKind ; + bamm:name "area" ; + bamm:preferredName "area"@en . + +:areaRelatedTorsionalMoment + a :QuantityKind ; + bamm:name "areaRelatedTorsionalMoment" ; + bamm:preferredName "area-related torsional moment"@en . + +:areicMass + a :QuantityKind ; + bamm:name "areicMass" ; + bamm:preferredName "areic mass"@en . + +:atomicAttenuationCoefficient + a :QuantityKind ; + bamm:name "atomicAttenuationCoefficient" ; + bamm:preferredName "atomic attenuation coefficient"@en . + +:atomicNumber + a :QuantityKind ; + bamm:name "atomicNumber" ; + bamm:preferredName "atomic number"@en . + +:attenuationCoefficient + a :QuantityKind ; + bamm:name "attenuationCoefficient" ; + bamm:preferredName "attenuation coefficient"@en . + +:averageLogarithmicEnergyDecrement + a :QuantityKind ; + bamm:name "averageLogarithmicEnergyDecrement" ; + bamm:preferredName "average logarithmic energy decrement"@en . + +:avogadroConstant + a :QuantityKind ; + bamm:name "avogadroConstant" ; + bamm:preferredName "Avogadro constant"@en . + +:betaDisintegrationEnergy + a :QuantityKind ; + bamm:name "betaDisintegrationEnergy" ; + bamm:preferredName "beta disintegration energy"@en . + +:bindingFraction + a :QuantityKind ; + bamm:name "bindingFraction" ; + bamm:preferredName "binding fraction"@en . + +:bohrMagneton + a :QuantityKind ; + bamm:name "bohrMagneton" ; + bamm:preferredName "Bohr magneton"@en . + +:bohrRadius + a :QuantityKind ; + bamm:name "bohrRadius" ; + bamm:preferredName "Bohr radius"@en . + +:boltzmannConstant + a :QuantityKind ; + bamm:name "boltzmannConstant" ; + bamm:preferredName "Boltzmann constant"@en . + +:braggAngle + a :QuantityKind ; + bamm:name "braggAngle" ; + bamm:preferredName "Bragg angle"@en . + +:breadth + a :QuantityKind ; + bamm:name "breadth" ; + bamm:preferredName "breadth"@en . + +:bulkCompressibility + a :QuantityKind ; + bamm:name "bulkCompressibility" ; + bamm:preferredName "bulk compressibility"@en . + +:bulkModulus + a :QuantityKind ; + bamm:name "bulkModulus" ; + bamm:preferredName "bulk modulus"@en . + +:burgersVector + a :QuantityKind ; + bamm:name "burgersVector" ; + bamm:preferredName "Burgers vector"@en . + +:burstIndex + a :QuantityKind ; + bamm:name "burstIndex" ; + bamm:preferredName "burst index"@en . + +:canonicalPartitionFunction + a :QuantityKind ; + bamm:name "canonicalPartitionFunction" ; + bamm:preferredName "canonical partition function"@en . + +:capacitance + a :QuantityKind ; + bamm:name "capacitance" ; + bamm:preferredName "capacitance"@en . + +:carrierLifeTime + a :QuantityKind ; + bamm:name "carrierLifeTime" ; + bamm:preferredName "carrier life time"@en . + +:cartesianCoordinates + a :QuantityKind ; + bamm:name "cartesianCoordinates" ; + bamm:preferredName "cartesian coordinates"@en . + +:catalyticActivity + a :QuantityKind ; + bamm:name "catalyticActivity" ; + bamm:preferredName "catalytic activity"@en . + +:characteristicImpedanceOfAMedium + a :QuantityKind ; + bamm:name "characteristicImpedanceOfAMedium" ; + bamm:preferredName "characteristic impedance of a medium"@en . + +:chargeDensity + a :QuantityKind ; + bamm:name "chargeDensity" ; + bamm:preferredName "charge density"@en . + +:chargeNumberOfIon + a :QuantityKind ; + bamm:name "chargeNumberOfIon" ; + bamm:preferredName "charge number of ion"@en . + +:chemicalPotential + a :QuantityKind ; + bamm:name "chemicalPotential" ; + bamm:preferredName "chemical potential"@en . + +:cieColorimetricFunctions + a :QuantityKind ; + bamm:name "cieColorimetricFunctions" ; + bamm:preferredName "CIE colorimetric functions"@en . + +:circularFrequency + a :QuantityKind ; + bamm:name "circularFrequency" ; + bamm:preferredName "circular frequency"@en . + +:coefficient + a :QuantityKind ; + bamm:name "coefficient" ; + bamm:preferredName "coefficient"@en . + +:coefficientOfFriction + a :QuantityKind ; + bamm:name "coefficientOfFriction" ; + bamm:preferredName "coefficient of friction"@en . + +:coefficientOfHeatTransfer + a :QuantityKind ; + bamm:name "coefficientOfHeatTransfer" ; + bamm:preferredName "coefficient of heat transfer"@en . + +:coefficientOfThermalInsulation + a :QuantityKind ; + bamm:name "coefficientOfThermalInsulation" ; + bamm:preferredName "coefficient of thermal insulation"@en . + +:coherenceLength + a :QuantityKind ; + bamm:name "coherenceLength" ; + bamm:preferredName "coherence length"@en . + +:complexAdmittance + a :QuantityKind ; + bamm:name "complexAdmittance" ; + bamm:preferredName "complex admittance"@en . + +:complexImpedances + a :QuantityKind ; + bamm:name "complexImpedances" ; + bamm:preferredName "complex impedances"@en . + +:compressibility + a :QuantityKind ; + bamm:name "compressibility" ; + bamm:preferredName "compressibility"@en . + +:comptonWavelength + a :QuantityKind ; + bamm:name "comptonWavelength" ; + bamm:preferredName "Compton wavelength"@en . + +:concentrationOfB + a :QuantityKind ; + bamm:name "concentrationOfB" ; + bamm:preferredName "concentration of B"@en . + +:conductanceForAlternatingCurrent + a :QuantityKind ; + bamm:name "conductanceForAlternatingCurrent" ; + bamm:preferredName "conductance (for alternating current)"@en . + +:conductanceForDirectCurrent + a :QuantityKind ; + bamm:name "conductanceForDirectCurrent" ; + bamm:preferredName "conductance (for direct current)"@en . + +:conductivity + a :QuantityKind ; + bamm:name "conductivity" ; + bamm:preferredName "conductivity"@en . + +:coordinatesTrichromatic + a :QuantityKind ; + bamm:name "coordinatesTrichromatic" ; + bamm:preferredName "coordinates trichromatic"@en . + +:couplingCoefficient + a :QuantityKind ; + bamm:name "couplingCoefficient" ; + bamm:preferredName "coupling coefficient"@en . + +:cowlingNumber + a :QuantityKind ; + bamm:name "cowlingNumber" ; + bamm:preferredName "Cowling number"@en . + +:crossSection + a :QuantityKind ; + bamm:name "crossSection" ; + bamm:preferredName "cross-section"@en . + +:cubicExpansionCoefficient + a :QuantityKind ; + bamm:name "cubicExpansionCoefficient" ; + bamm:preferredName "cubic expansion coefficient"@en . + +:curieTemperature + a :QuantityKind ; + bamm:name "curieTemperature" ; + bamm:preferredName "Curie temperature"@en . + +:currentDensity + a :QuantityKind ; + bamm:name "currentDensity" ; + bamm:preferredName "current density"@en . + +:currentDensityOfParticles + a :QuantityKind ; + bamm:name "currentDensityOfParticles" ; + bamm:preferredName "current density of particles"@en . + +:currentFractionOfIonB + a :QuantityKind ; + bamm:name "currentFractionOfIonB" ; + bamm:preferredName "current fraction of ion B"@en . + +:currentLinkage + a :QuantityKind ; + bamm:name "currentLinkage" ; + bamm:preferredName "current linkage"@en . + +:curvature + a :QuantityKind ; + bamm:name "curvature" ; + bamm:preferredName "curvature"@en . + +:cyclotronAngularFrequency + a :QuantityKind ; + bamm:name "cyclotronAngularFrequency" ; + bamm:preferredName "cyclotron angular frequency"@en . + +:dampingCoefficient + a :QuantityKind ; + bamm:name "dampingCoefficient" ; + bamm:preferredName "damping coefficient"@en . + +:dataRate + a :QuantityKind ; + bamm:name "dataRate" ; + bamm:preferredName "Data rate"@en . + +:debyeAngularFrequency + a :QuantityKind ; + bamm:name "debyeAngularFrequency" ; + bamm:preferredName "Debye angular frequency"@en . + +:debyeAngularRepetency + a :QuantityKind ; + bamm:name "debyeAngularRepetency" ; + bamm:preferredName "Debye angular repetency"@en . + +:debyeAngularWaveNumber + a :QuantityKind ; + bamm:name "debyeAngularWaveNumber" ; + bamm:preferredName "Debye angular wave number"@en . + +:debyeTemperature + a :QuantityKind ; + bamm:name "debyeTemperature" ; + bamm:preferredName "Debye temperature"@en . + +:debyeWalleFactor + a :QuantityKind ; + bamm:name "debyeWalleFactor" ; + bamm:preferredName "Debye-Walle factor"@en . + +:decayConstant + a :QuantityKind ; + bamm:name "decayConstant" ; + bamm:preferredName "decay constant"@en . + +:degreeOfDissociation + a :QuantityKind ; + bamm:name "degreeOfDissociation" ; + bamm:preferredName "degree of dissociation"@en . + +:density + a :QuantityKind ; + bamm:name "density" ; + bamm:preferredName "density"@en . + +:densityOfHeatFlowRate + a :QuantityKind ; + bamm:name "densityOfHeatFlowRate" ; + bamm:preferredName "density of heat flow rate"@en . + +:densityOfStates + a :QuantityKind ; + bamm:name "densityOfStates" ; + bamm:preferredName "density of states"@en . + +:diameter + a :QuantityKind ; + bamm:name "diameter" ; + bamm:preferredName "diameter"@en . + +:diffusionArea + a :QuantityKind ; + bamm:name "diffusionArea" ; + bamm:preferredName "diffusion area"@en . + +:diffusionCoefficient + a :QuantityKind ; + bamm:name "diffusionCoefficient" ; + bamm:preferredName "diffusion coefficient"@en . + +:diffusionCoefficientForNeutronFluenceRate + a :QuantityKind ; + bamm:name "diffusionCoefficientForNeutronFluenceRate" ; + bamm:preferredName "diffusion coefficient for neutron fluence rate"@en . + +:diffusionCoefficientForNeutronFluxDensity + a :QuantityKind ; + bamm:name "diffusionCoefficientForNeutronFluxDensity" ; + bamm:preferredName "diffusion coefficient for neutron flux density"@en . + +:diffusionCoefficientForNeutronNumberDensity + a :QuantityKind ; + bamm:name "diffusionCoefficientForNeutronNumberDensity" ; + bamm:preferredName "diffusion coefficient for neutron number density"@en . + +:diffusionLength + a :QuantityKind ; + bamm:name "diffusionLength" ; + bamm:preferredName "diffusion length"@en . + +:dimensionless + a :QuantityKind ; + bamm:name "dimensionless" ; + bamm:preferredName "dimensionless"@en . + +:directionalSpectralEmissivity + a :QuantityKind ; + bamm:name "directionalSpectralEmissivity" ; + bamm:preferredName "directional spectral emissivity"@en . + +:disintegrationConstant + a :QuantityKind ; + bamm:name "disintegrationConstant" ; + bamm:preferredName "disintegration constant"@en . + +:displacementElectricPolarization + a :QuantityKind ; + bamm:name "displacementElectricPolarization" ; + bamm:preferredName "displacement electric polarization"@en . + +:displacementVectorOfIonOrAtom + a :QuantityKind ; + bamm:name "displacementVectorOfIonOrAtom" ; + bamm:preferredName "displacement vector of ion or atom"@en . + +:dissipance + a :QuantityKind ; + bamm:name "dissipance" ; + bamm:preferredName "dissipance"@en . + +:dissipationFactor + a :QuantityKind ; + bamm:name "dissipationFactor" ; + bamm:preferredName "dissipation factor"@en . + +:distance + a :QuantityKind ; + bamm:name "distance" ; + bamm:preferredName "distance"@en . + +:donorIonizationEnergy + a :QuantityKind ; + bamm:name "donorIonizationEnergy" ; + bamm:preferredName "donor ionization energy"@en . + +:donorNumberDensity + a :QuantityKind ; + bamm:name "donorNumberDensity" ; + bamm:preferredName "donor number density"@en . + +:doseEquivalent + a :QuantityKind ; + bamm:name "doseEquivalent" ; + bamm:preferredName "dose equivalent"@en . + +:effectiveMass + a :QuantityKind ; + bamm:name "effectiveMass" ; + bamm:preferredName "effective mass"@en . + +:effectiveMultiplicationFactor + a :QuantityKind ; + bamm:name "effectiveMultiplicationFactor" ; + bamm:preferredName "effective multiplication factor"@en . + +:electricCharge + a :QuantityKind ; + bamm:name "electricCharge" ; + bamm:preferredName "electric charge"@en . + +:electricConstant + a :QuantityKind ; + bamm:name "electricConstant" ; + bamm:preferredName "electric constant"@en . + +:electricCurrent + a :QuantityKind ; + bamm:name "electricCurrent" ; + bamm:preferredName "electric current"@en . + +:electricDipoleMoment + a :QuantityKind ; + bamm:name "electricDipoleMoment" ; + bamm:preferredName "electric dipole moment"@en . + +:electricDipoleMomentOfMolecule + a :QuantityKind ; + bamm:name "electricDipoleMomentOfMolecule" ; + bamm:preferredName "electric dipole moment of molecule"@en . + +:electricFieldStrength + a :QuantityKind ; + bamm:name "electricFieldStrength" ; + bamm:preferredName "electric field strength"@en . + +:electricFluxDensity + a :QuantityKind ; + bamm:name "electricFluxDensity" ; + bamm:preferredName "electric flux density"@en . + +:electricFluxFluxOfDisplacement + a :QuantityKind ; + bamm:name "electricFluxFluxOfDisplacement" ; + bamm:preferredName "electric flux (flux of displacement)"@en . + +:electricPolarizabilityOfAMolecule + a :QuantityKind ; + bamm:name "electricPolarizabilityOfAMolecule" ; + bamm:preferredName "electric polarizability of a molecule"@en . + +:electricPotential + a :QuantityKind ; + bamm:name "electricPotential" ; + bamm:preferredName "electric potential"@en . + +:electricSusceptibility + a :QuantityKind ; + bamm:name "electricSusceptibility" ; + bamm:preferredName "electric susceptibility"@en . + +:electrolyticConductivity + a :QuantityKind ; + bamm:name "electrolyticConductivity" ; + bamm:preferredName "electrolytic conductivity"@en . + +:electromagneticEnergyDensity + a :QuantityKind ; + bamm:name "electromagneticEnergyDensity" ; + bamm:preferredName "electromagnetic energy density"@en . + +:electromagneticMoment + a :QuantityKind ; + bamm:name "electromagneticMoment" ; + bamm:preferredName "electromagnetic moment"@en . + +:electromotiveForce + a :QuantityKind ; + bamm:name "electromotiveForce" ; + bamm:preferredName "electromotive force"@en . + +:electronAffinity + a :QuantityKind ; + bamm:name "electronAffinity" ; + bamm:preferredName "electron affinity"@en . + +:electronNumberDensity + a :QuantityKind ; + bamm:name "electronNumberDensity" ; + bamm:preferredName "electron number density"@en . + +:electronRadius + a :QuantityKind ; + bamm:name "electronRadius" ; + bamm:preferredName "electron radius"@en . + +:elementaryCharge + a :QuantityKind ; + bamm:name "elementaryCharge" ; + bamm:preferredName "elementary charge"@en . + +:emissivity + a :QuantityKind ; + bamm:name "emissivity" ; + bamm:preferredName "emissivity"@en . + +:emissivityAtASpecifiedWavelength + a :QuantityKind ; + bamm:name "emissivityAtASpecifiedWavelength" ; + bamm:preferredName "emissivity at a specified wavelength"@en . + +:energy + a :QuantityKind ; + bamm:name "energy" ; + bamm:preferredName "energy"@en . + +:energyDensity + a :QuantityKind ; + bamm:name "energyDensity" ; + bamm:preferredName "energy density"@en . + +:energyFluence + a :QuantityKind ; + bamm:name "energyFluence" ; + bamm:preferredName "energy fluence"@en . + +:energyFluenceRate + a :QuantityKind ; + bamm:name "energyFluenceRate" ; + bamm:preferredName "energy fluence rate"@en . + +:energyFluxDensity + a :QuantityKind ; + bamm:name "energyFluxDensity" ; + bamm:preferredName "energy flux density"@en . + +:energyImparted + a :QuantityKind ; + bamm:name "energyImparted" ; + bamm:preferredName "energy imparted"@en . + +:enthalpy + a :QuantityKind ; + bamm:name "enthalpy" ; + bamm:preferredName "enthalpy"@en . + +:entropy + a :QuantityKind ; + bamm:name "entropy" ; + bamm:preferredName "entropy"@en . + +:equilibriumPositionVectorOfIonOrAtom + a :QuantityKind ; + bamm:name "equilibriumPositionVectorOfIonOrAtom" ; + bamm:preferredName "equilibrium position vector of ion or atom"@en . + +:equivalenceDoseOutput + a :QuantityKind ; + bamm:name "equivalenceDoseOutput" ; + bamm:preferredName "equivalence dose output"@en . + +:equivalentAbsorptionAreaOfASurfaceOrObject + a :QuantityKind ; + bamm:name "equivalentAbsorptionAreaOfASurfaceOrObject" ; + bamm:preferredName "equivalent absorption area of a surface or object"@en . + +:eulerNumber + a :QuantityKind ; + bamm:name "eulerNumber" ; + bamm:preferredName "Euler number"@en . + +:exchangeIntergral + a :QuantityKind ; + bamm:name "exchangeIntergral" ; + bamm:preferredName "exchange intergral"@en . + +:exposure + a :QuantityKind ; + bamm:name "exposure" ; + bamm:preferredName "exposure"@en . + +:exposureRate + a :QuantityKind ; + bamm:name "exposureRate" ; + bamm:preferredName "exposure rate"@en . + +:fahrenheitTemperature + a :QuantityKind ; + bamm:name "fahrenheitTemperature" ; + bamm:preferredName "fahrenheit temperature"@en . + +:faradayConstant + a :QuantityKind ; + bamm:name "faradayConstant" ; + bamm:preferredName "Faraday constant"@en . + +:fastFissionFactor + a :QuantityKind ; + bamm:name "fastFissionFactor" ; + bamm:preferredName "fast fission factor"@en . + +:fermiAngularRepetency + a :QuantityKind ; + bamm:name "fermiAngularRepetency" ; + bamm:preferredName "Fermi angular repetency"@en . + +:fermiAngularWaveNumber + a :QuantityKind ; + bamm:name "fermiAngularWaveNumber" ; + bamm:preferredName "Fermi angular wave number"@en . + +:fermiEnergy + a :QuantityKind ; + bamm:name "fermiEnergy" ; + bamm:preferredName "Fermi energy"@en . + +:fermiTemperature + a :QuantityKind ; + bamm:name "fermiTemperature" ; + bamm:preferredName "Fermi temperature"@en . + +:fineStructureConstant + a :QuantityKind ; + bamm:name "fineStructureConstant" ; + bamm:preferredName "fine structure constant"@en . + +:firstRadiationConstant + a :QuantityKind ; + bamm:name "firstRadiationConstant" ; + bamm:preferredName "first radiation constant"@en . + +:fluenceRate + a :QuantityKind ; + bamm:name "fluenceRate" ; + bamm:preferredName "fluence rate"@en . + +:focalDistance + a :QuantityKind ; + bamm:name "focalDistance" ; + bamm:preferredName "focal distance"@en . + +:force + a :QuantityKind ; + bamm:name "force" ; + bamm:preferredName "force"@en . + +:forceDividedByLength + a :QuantityKind ; + bamm:name "forceDividedByLength" ; + bamm:preferredName "force divided by length"@en . + +:fourierNumber + a :QuantityKind ; + bamm:name "fourierNumber" ; + bamm:preferredName "Fourier number"@en . + +:fourierNumberForMassTransfer + a :QuantityKind ; + bamm:name "fourierNumberForMassTransfer" ; + bamm:preferredName "Fourier number for mass transfer"@en . + +:frequency + a :QuantityKind ; + bamm:name "frequency" ; + bamm:preferredName "frequency"@en . + +:frequencyInterval + a :QuantityKind ; + bamm:name "frequencyInterval" ; + bamm:preferredName "frequency interval"@en . + +:frictionFactor + a :QuantityKind ; + bamm:name "frictionFactor" ; + bamm:preferredName "friction factor"@en . + +:froudeNumber + a :QuantityKind ; + bamm:name "froudeNumber" ; + bamm:preferredName "Froude number"@en . + +:fugacityOfBInAGaseousMixture + a :QuantityKind ; + bamm:name "fugacityOfBInAGaseousMixture" ; + bamm:preferredName "fugacity of B (in a gaseous mixture)"@en . + +:fundamentalLatticeVector + a :QuantityKind ; + bamm:name "fundamentalLatticeVector" ; + bamm:preferredName "fundamental lattice vector"@en . + +:fundamentalReciprocalLatticeVector + a :QuantityKind ; + bamm:name "fundamentalReciprocalLatticeVector" ; + bamm:preferredName "fundamental reciprocal lattice vector"@en . + +:gFactorOfAtomOrElectron + a :QuantityKind ; + bamm:name "gFactorOfAtomOrElectron" ; + bamm:preferredName "g-factor of atom or electron"@en . + +:gFactorOfNucleus + a :QuantityKind ; + bamm:name "gFactorOfNucleus" ; + bamm:preferredName "g-factor of nucleus"@en . + +:gapEnergy + a :QuantityKind ; + bamm:name "gapEnergy" ; + bamm:preferredName "gap energy"@en . + +:grandCanonicalPartitionFunction + a :QuantityKind ; + bamm:name "grandCanonicalPartitionFunction" ; + bamm:preferredName "grand-canonical partition function"@en . + +:grandPartitionFunction + a :QuantityKind ; + bamm:name "grandPartitionFunction" ; + bamm:preferredName "grand partition function"@en . + +:grashofNumber + a :QuantityKind ; + bamm:name "grashofNumber" ; + bamm:preferredName "Grashof number"@en . + +:grashofNumberForMassTransfer + a :QuantityKind ; + bamm:name "grashofNumberForMassTransfer" ; + bamm:preferredName "Grashof number for mass transfer"@en . + +:gravitationalConstant + a :QuantityKind ; + bamm:name "gravitationalConstant" ; + bamm:preferredName "gravitational constant"@en . + +:groupVelocity + a :QuantityKind ; + bamm:name "groupVelocity" ; + bamm:preferredName "group velocity"@en . + +:grueneisenParameter + a :QuantityKind ; + bamm:name "grueneisenParameter" ; + bamm:preferredName "Grüneisen parameter"@en . + +:gyromagneticCoefficient + a :QuantityKind ; + bamm:name "gyromagneticCoefficient" ; + bamm:preferredName "gyromagnetic coefficient"@en . + +:gyromagneticRatio + a :QuantityKind ; + bamm:name "gyromagneticRatio" ; + bamm:preferredName "gyromagnetic ratio"@en . + +:halfLife + a :QuantityKind ; + bamm:name "halfLife" ; + bamm:preferredName "half life"@en . + +:halfThickness + a :QuantityKind ; + bamm:name "halfThickness" ; + bamm:preferredName "half-thickness"@en . + +:halfValueThickness + a :QuantityKind ; + bamm:name "halfValueThickness" ; + bamm:preferredName "half-value thickness"@en . + +:hallCoefficient + a :QuantityKind ; + bamm:name "hallCoefficient" ; + bamm:preferredName "Hall coefficient"@en . + +:hardnessIndex + a :QuantityKind ; + bamm:name "hardnessIndex" ; + bamm:preferredName "hardness index"@en . + +:hartmannNumber + a :QuantityKind ; + bamm:name "hartmannNumber" ; + bamm:preferredName "Hartmann number"@en . + +:hartreeEnergy + a :QuantityKind ; + bamm:name "hartreeEnergy" ; + bamm:preferredName "Hartree energy"@en . + +:heat + a :QuantityKind ; + bamm:name "heat" ; + bamm:preferredName "heat"@en . + +:heatCapacity + a :QuantityKind ; + bamm:name "heatCapacity" ; + bamm:preferredName "heat capacity"@en . + +:heatFlowRate + a :QuantityKind ; + bamm:name "heatFlowRate" ; + bamm:preferredName "heat flow rate"@en . + +:height + a :QuantityKind ; + bamm:name "height" ; + bamm:preferredName "height"@en . + +:helmholtzFreeEnergy + a :QuantityKind ; + bamm:name "helmholtzFreeEnergy" ; + bamm:preferredName "Helmholtz free energy"@en . + +:helmholtzFunction + a :QuantityKind ; + bamm:name "helmholtzFunction" ; + bamm:preferredName "Helmholtz function"@en . + +:holeNumberDensity + a :QuantityKind ; + bamm:name "holeNumberDensity" ; + bamm:preferredName "hole number density"@en . + +:hyperfineStructureQuantumNumber + a :QuantityKind ; + bamm:name "hyperfineStructureQuantumNumber" ; + bamm:preferredName "hyperfine structure quantum number"@en . + +:illuminance + a :QuantityKind ; + bamm:name "illuminance" ; + bamm:preferredName "illuminance"@en . + +:imageDistance + a :QuantityKind ; + bamm:name "imageDistance" ; + bamm:preferredName "image distance"@en . + +:impedance + a :QuantityKind ; + bamm:name "impedance" ; + bamm:preferredName "impedance"@en . + +:impulse + a :QuantityKind ; + bamm:name "impulse" ; + bamm:preferredName "impulse"@en . + +:infiniteMediumMultiplicationFactor + a :QuantityKind ; + bamm:name "infiniteMediumMultiplicationFactor" ; + bamm:preferredName "infinite medium multiplication factor"@en . + +:informationEntropy + a :QuantityKind ; + bamm:name "informationEntropy" ; + bamm:preferredName "Information entropy"@en . + +:instantaneousSoundParticleAcceleration + a :QuantityKind ; + bamm:name "instantaneousSoundParticleAcceleration" ; + bamm:preferredName "(instantaneous) sound particle acceleration"@en . + +:instantaneousSoundParticleDisplacement + a :QuantityKind ; + bamm:name "instantaneousSoundParticleDisplacement" ; + bamm:preferredName "(instantaneous) sound particle displacement"@en . + +:instantaneousSoundParticleVelocity + a :QuantityKind ; + bamm:name "instantaneousSoundParticleVelocity" ; + bamm:preferredName "(instantaneous) sound particle velocity"@en . + +:instantaneousSoundPressure + a :QuantityKind ; + bamm:name "instantaneousSoundPressure" ; + bamm:preferredName "(instantaneous) sound pressure"@en . + +:instantaneousVolumeFlowRate + a :QuantityKind ; + bamm:name "instantaneousVolumeFlowRate" ; + bamm:preferredName "(instantaneous) volume flow rate"@en . + +:internalConversionFactor + a :QuantityKind ; + bamm:name "internalConversionFactor" ; + bamm:preferredName "internal conversion factor"@en . + +:intrinsicNumberDensity + a :QuantityKind ; + bamm:name "intrinsicNumberDensity" ; + bamm:preferredName "intrinsic number density"@en . + +:ionDensity + a :QuantityKind ; + bamm:name "ionDensity" ; + bamm:preferredName "ion density"@en . + +:ionNumberDensity + a :QuantityKind ; + bamm:name "ionNumberDensity" ; + bamm:preferredName "ion number density"@en . + +:ionicStrength + a :QuantityKind ; + bamm:name "ionicStrength" ; + bamm:preferredName "ionic strength"@en . + +:irradiance + a :QuantityKind ; + bamm:name "irradiance" ; + bamm:preferredName "irradiance"@en . + +:isentropicCompressibility + a :QuantityKind ; + bamm:name "isentropicCompressibility" ; + bamm:preferredName "isentropic compressibility"@en . + +:isentropicExponent + a :QuantityKind ; + bamm:name "isentropicExponent" ; + bamm:preferredName "isentropic exponent"@en . + +:isothermalCompressibility + a :QuantityKind ; + bamm:name "isothermalCompressibility" ; + bamm:preferredName "isothermal compressibility"@en . + +:kinematicViscosity + a :QuantityKind ; + bamm:name "kinematicViscosity" ; + bamm:preferredName "kinematic viscosity"@en . + +:kineticEnergy + a :QuantityKind ; + bamm:name "kineticEnergy" ; + bamm:preferredName "kinetic energy"@en . + +:knudsenNumber + a :QuantityKind ; + bamm:name "knudsenNumber" ; + bamm:preferredName "Knudsen number"@en . + +:landauGinzburgNumber + a :QuantityKind ; + bamm:name "landauGinzburgNumber" ; + bamm:preferredName "Landau-Ginzburg number"@en . + +:larmorAngularFrequency + a :QuantityKind ; + bamm:name "larmorAngularFrequency" ; + bamm:preferredName "Larmor angular frequency"@en . + +:latticePlaneSpacing + a :QuantityKind ; + bamm:name "latticePlaneSpacing" ; + bamm:preferredName "lattice plane spacing"@en . + +:latticeVector + a :QuantityKind ; + bamm:name "latticeVector" ; + bamm:preferredName "lattice vector"@en . + +:leakageCoefficient + a :QuantityKind ; + bamm:name "leakageCoefficient" ; + bamm:preferredName "leakage coefficient"@en . + +:leakageRateOfGas + a :QuantityKind ; + bamm:name "leakageRateOfGas" ; + bamm:preferredName "leakage rate of gas"@en . + +:length + a :QuantityKind ; + bamm:name "length" ; + bamm:preferredName "length"@en . + +:lengthOfPath + a :QuantityKind ; + bamm:name "lengthOfPath" ; + bamm:preferredName "length of path"@en . + +:lensPower + a :QuantityKind ; + bamm:name "lensPower" ; + bamm:preferredName "lens power"@en . + +:lethargy + a :QuantityKind ; + bamm:name "lethargy" ; + bamm:preferredName "lethargy"@en . + +:levelOfAFieldQuantity + a :QuantityKind ; + bamm:name "levelOfAFieldQuantity" ; + bamm:preferredName "level of a field quantity"@en . + +:levelOfAPowerQuantity + a :QuantityKind ; + bamm:name "levelOfAPowerQuantity" ; + bamm:preferredName "level of a power quantity"@en . + +:levelWidth + a :QuantityKind ; + bamm:name "levelWidth" ; + bamm:preferredName "level width"@en . + +:lewisNumber + a :QuantityKind ; + bamm:name "lewisNumber" ; + bamm:preferredName "Lewis number"@en . + +:lightExposure + a :QuantityKind ; + bamm:name "lightExposure" ; + bamm:preferredName "light exposure"@en . + +:linearAbsorptionCoefficient + a :QuantityKind ; + bamm:name "linearAbsorptionCoefficient" ; + bamm:preferredName "linear absorption coefficient"@en . + +:linearAttenuationCoefficient + a :QuantityKind ; + bamm:name "linearAttenuationCoefficient" ; + bamm:preferredName "linear attenuation coefficient"@en . + +:linearDensity + a :QuantityKind ; + bamm:name "linearDensity" ; + bamm:preferredName "linear density"@en . + +:linearElectricCurrentDensity + a :QuantityKind ; + bamm:name "linearElectricCurrentDensity" ; + bamm:preferredName "linear electric current density"@en . + +:linearEnergyTransfer + a :QuantityKind ; + bamm:name "linearEnergyTransfer" ; + bamm:preferredName "linear energy transfer"@en . + +:linearExpansionCoefficient + a :QuantityKind ; + bamm:name "linearExpansionCoefficient" ; + bamm:preferredName "linear expansion coefficient"@en . + +:linearExtinctionCoefficient + a :QuantityKind ; + bamm:name "linearExtinctionCoefficient" ; + bamm:preferredName "linear extinction coefficient"@en . + +:linearIonizationByAParticle + a :QuantityKind ; + bamm:name "linearIonizationByAParticle" ; + bamm:preferredName "linear ionization by a particle"@en . + +:linearMass + a :QuantityKind ; + bamm:name "linearMass" ; + bamm:preferredName "linear mass"@en . + +:linearStrain + a :QuantityKind ; + bamm:name "linearStrain" ; + bamm:preferredName "linear strain"@en . + +:lineicCharge + a :QuantityKind ; + bamm:name "lineicCharge" ; + bamm:preferredName "lineic charge"@en . + +:lineicElectricCurrent + a :QuantityKind ; + bamm:name "lineicElectricCurrent" ; + bamm:preferredName "lineic electric current"@en . + +:lineicResistance + a :QuantityKind ; + bamm:name "lineicResistance" ; + bamm:preferredName "lineic resistance"@en . + +:logarithmicDecrement + a :QuantityKind ; + bamm:name "logarithmicDecrement" ; + bamm:preferredName "logarithmic decrement"@en . + +:londonPenetrationDepth + a :QuantityKind ; + bamm:name "londonPenetrationDepth" ; + bamm:preferredName "London penetration depth"@en . + +:longRangeOrderParameter + a :QuantityKind ; + bamm:name "longRangeOrderParameter" ; + bamm:preferredName "long-range order parameter"@en . + +:lossAngle + a :QuantityKind ; + bamm:name "lossAngle" ; + bamm:preferredName "loss angle"@en . + +:loudness + a :QuantityKind ; + bamm:name "loudness" ; + bamm:preferredName "loudness"@en . + +:loudnessLevel + a :QuantityKind ; + bamm:name "loudnessLevel" ; + bamm:preferredName "loudness level"@en . + +:lowerCriticalMagneticFluxDensity + a :QuantityKind ; + bamm:name "lowerCriticalMagneticFluxDensity" ; + bamm:preferredName "lower critical magnetic flux density"@en . + +:luminance + a :QuantityKind ; + bamm:name "luminance" ; + bamm:preferredName "luminance"@en . + +:luminiousEfficacy + a :QuantityKind ; + bamm:name "luminiousEfficacy" ; + bamm:preferredName "luminious efficacy"@en . + +:luminousEfficacyAtASpecifiedWavelength + a :QuantityKind ; + bamm:name "luminousEfficacyAtASpecifiedWavelength" ; + bamm:preferredName "luminous efficacy at a specified wavelength"@en . + +:luminousEfficiency + a :QuantityKind ; + bamm:name "luminousEfficiency" ; + bamm:preferredName "luminous efficiency"@en . + +:luminousEfficiencyAtASpecifiedWavelength + a :QuantityKind ; + bamm:name "luminousEfficiencyAtASpecifiedWavelength" ; + bamm:preferredName "luminous efficiency at a specified wavelength"@en . + +:luminousExitance + a :QuantityKind ; + bamm:name "luminousExitance" ; + bamm:preferredName "luminous exitance"@en . + +:luminousFlux + a :QuantityKind ; + bamm:name "luminousFlux" ; + bamm:preferredName "luminous flux"@en . + +:luminousIntensity + a :QuantityKind ; + bamm:name "luminousIntensity" ; + bamm:preferredName "luminous intensity"@en . + +:machNumber + a :QuantityKind ; + bamm:name "machNumber" ; + bamm:preferredName "Mach number"@en . + +:macroscopicCrossSection + a :QuantityKind ; + bamm:name "macroscopicCrossSection" ; + bamm:preferredName "macroscopic cross-section"@en . + +:macroscopicTotalCrossSection + a :QuantityKind ; + bamm:name "macroscopicTotalCrossSection" ; + bamm:preferredName "macroscopic total cross-section"@en . + +:madelungConstant + a :QuantityKind ; + bamm:name "madelungConstant" ; + bamm:preferredName "Madelung constant"@en . + +:magneticAreaMoment + a :QuantityKind ; + bamm:name "magneticAreaMoment" ; + bamm:preferredName "magnetic area moment"@en . + +:magneticConstant + a :QuantityKind ; + bamm:name "magneticConstant" ; + bamm:preferredName "magnetic constant"@en . + +:magneticDipoleMoment + a :QuantityKind ; + bamm:name "magneticDipoleMoment" ; + bamm:preferredName "magnetic dipole moment"@en . + +:magneticFieldStrength + a :QuantityKind ; + bamm:name "magneticFieldStrength" ; + bamm:preferredName "magnetic field strength"@en . + +:magneticFlux + a :QuantityKind ; + bamm:name "magneticFlux" ; + bamm:preferredName "magnetic flux"@en . + +:magneticFluxDensity + a :QuantityKind ; + bamm:name "magneticFluxDensity" ; + bamm:preferredName "magnetic flux density"@en . + +:magneticFluxQuantum + a :QuantityKind ; + bamm:name "magneticFluxQuantum" ; + bamm:preferredName "magnetic flux quantum"@en . + +:magneticInduction + a :QuantityKind ; + bamm:name "magneticInduction" ; + bamm:preferredName "magnetic induction"@en . + +:magneticMoment + a :QuantityKind ; + bamm:name "magneticMoment" ; + bamm:preferredName "magnetic moment"@en . + +:magneticMomentOfParticle + a :QuantityKind ; + bamm:name "magneticMomentOfParticle" ; + bamm:preferredName "magnetic moment of particle"@en . + +:magneticPolarization + a :QuantityKind ; + bamm:name "magneticPolarization" ; + bamm:preferredName "magnetic polarization"@en . + +:magneticPotentialDifference + a :QuantityKind ; + bamm:name "magneticPotentialDifference" ; + bamm:preferredName "magnetic potential difference"@en . + +:magneticQuantumNumber + a :QuantityKind ; + bamm:name "magneticQuantumNumber" ; + bamm:preferredName "magnetic quantum number"@en . + +:magneticReynoldsNumber + a :QuantityKind ; + bamm:name "magneticReynoldsNumber" ; + bamm:preferredName "magnetic Reynolds number"@en . + +:magneticSusceptibility + a :QuantityKind ; + bamm:name "magneticSusceptibility" ; + bamm:preferredName "magnetic susceptibility"@en . + +:magneticVectorPotential + a :QuantityKind ; + bamm:name "magneticVectorPotential" ; + bamm:preferredName "magnetic vector potential"@en . + +:magnetization + a :QuantityKind ; + bamm:name "magnetization" ; + bamm:preferredName "magnetization"@en . + +:magnetomotiveForce + a :QuantityKind ; + bamm:name "magnetomotiveForce" ; + bamm:preferredName "magnetomotive force"@en . + +:mass + a :QuantityKind ; + bamm:name "mass" ; + bamm:preferredName "mass"@en . + +:massAttenuationCoefficient + a :QuantityKind ; + bamm:name "massAttenuationCoefficient" ; + bamm:preferredName "mass attenuation coefficient"@en . + +:massConcentrationOfB + a :QuantityKind ; + bamm:name "massConcentrationOfB" ; + bamm:preferredName "mass concentration of B"@en . + +:massDefect + a :QuantityKind ; + bamm:name "massDefect" ; + bamm:preferredName "mass defect"@en . + +:massDensity + a :QuantityKind ; + bamm:name "massDensity" ; + bamm:preferredName "mass density"@en . + +:massEnergyTransferCoefficient + a :QuantityKind ; + bamm:name "massEnergyTransferCoefficient" ; + bamm:preferredName "mass energy transfer coefficient"@en . + +:massExcess + a :QuantityKind ; + bamm:name "massExcess" ; + bamm:preferredName "mass excess"@en . + +:massFlowRate + a :QuantityKind ; + bamm:name "massFlowRate" ; + bamm:preferredName "mass flow rate"@en . + +:massNumber + a :QuantityKind ; + bamm:name "massNumber" ; + bamm:preferredName "mass number"@en . + +:massOfAtomOfANuclideX + a :QuantityKind ; + bamm:name "massOfAtomOfANuclideX" ; + bamm:preferredName "mass of atom (of a nuclide x)"@en . + +:massOfMolecule + a :QuantityKind ; + bamm:name "massOfMolecule" ; + bamm:preferredName "mass of molecule"@en . + +:massRatio + a :QuantityKind ; + bamm:name "massRatio" ; + bamm:preferredName "mass ratio"@en . + +:massicEnergy + a :QuantityKind ; + bamm:name "massicEnergy" ; + bamm:preferredName "massic energy"@en . + +:massicEnergyImparted + a :QuantityKind ; + bamm:name "massicEnergyImparted" ; + bamm:preferredName "massic energy imparted"@en . + +:massicEnthalpy + a :QuantityKind ; + bamm:name "massicEnthalpy" ; + bamm:preferredName "massic enthalpy"@en . + +:massicHelmholtzFreeEnergy + a :QuantityKind ; + bamm:name "massicHelmholtzFreeEnergy" ; + bamm:preferredName "massic Helmholtz free energy"@en . + +:massicOptical + a :QuantityKind ; + bamm:name "massicOptical" ; + bamm:preferredName "massic optical"@en . + +:massicThermodynamicEnergy + a :QuantityKind ; + bamm:name "massicThermodynamicEnergy" ; + bamm:preferredName "massic thermodynamic energy"@en . + +:massicVolume + a :QuantityKind ; + bamm:name "massicVolume" ; + bamm:preferredName "massic volume"@en . + +:massieuFunction + a :QuantityKind ; + bamm:name "massieuFunction" ; + bamm:preferredName "massieu function"@en . + +:maximumBetaParticleEnergy + a :QuantityKind ; + bamm:name "maximumBetaParticleEnergy" ; + bamm:preferredName "maximum beta particle energy"@en . + +:maximumSpectralLuminousEfficacy + a :QuantityKind ; + bamm:name "maximumSpectralLuminousEfficacy" ; + bamm:preferredName "maximum spectral luminous efficacy"@en . + +:meanEnergyImparted + a :QuantityKind ; + bamm:name "meanEnergyImparted" ; + bamm:preferredName "mean energy imparted"@en . + +:meanFreePath + a :QuantityKind ; + bamm:name "meanFreePath" ; + bamm:preferredName "mean free path"@en . + +:meanFreePathOfPhononsOrElectrons + a :QuantityKind ; + bamm:name "meanFreePathOfPhononsOrElectrons" ; + bamm:preferredName "mean free path of phonons or electrons"@en . + +:meanLife + a :QuantityKind ; + bamm:name "meanLife" ; + bamm:preferredName "mean life"@en . + +:meanLinearRange + a :QuantityKind ; + bamm:name "meanLinearRange" ; + bamm:preferredName "mean linear range"@en . + +:meanMassRange + a :QuantityKind ; + bamm:name "meanMassRange" ; + bamm:preferredName "mean mass range"@en . + +:mechanicalImpedance + a :QuantityKind ; + bamm:name "mechanicalImpedance" ; + bamm:preferredName "mechanical impedance"@en . + +:microcanonicalPartitionFunction + a :QuantityKind ; + bamm:name "microcanonicalPartitionFunction" ; + bamm:preferredName "microcanonical partition function"@en . + +:migrationArea + a :QuantityKind ; + bamm:name "migrationArea" ; + bamm:preferredName "migration area"@en . + +:migrationLength + a :QuantityKind ; + bamm:name "migrationLength" ; + bamm:preferredName "migration length"@en . + +:mobility + a :QuantityKind ; + bamm:name "mobility" ; + bamm:preferredName "mobility"@en . + +:mobilityRatio + a :QuantityKind ; + bamm:name "mobilityRatio" ; + bamm:preferredName "mobility ratio"@en . + +:modulusOfAdmittance + a :QuantityKind ; + bamm:name "modulusOfAdmittance" ; + bamm:preferredName "modulus of admittance"@en . + +:modulusOfCompression + a :QuantityKind ; + bamm:name "modulusOfCompression" ; + bamm:preferredName "modulus of compression"@en . + +:modulusOfElasticity + a :QuantityKind ; + bamm:name "modulusOfElasticity" ; + bamm:preferredName "modulus of elasticity"@en . + +:modulusOfImpedance + a :QuantityKind ; + bamm:name "modulusOfImpedance" ; + bamm:preferredName "modulus of impedance"@en . + +:modulusOfRigidity + a :QuantityKind ; + bamm:name "modulusOfRigidity" ; + bamm:preferredName "modulus of rigidity"@en . + +:molalityOfSoluteB + a :QuantityKind ; + bamm:name "molalityOfSoluteB" ; + bamm:preferredName "molality of solute B"@en . + +:molarAbsorptionCoefficient + a :QuantityKind ; + bamm:name "molarAbsorptionCoefficient" ; + bamm:preferredName "molar absorption coefficient"@en . + +:molarAttenuationCoefficient + a :QuantityKind ; + bamm:name "molarAttenuationCoefficient" ; + bamm:preferredName "molar attenuation coefficient"@en . + +:molarConductivity + a :QuantityKind ; + bamm:name "molarConductivity" ; + bamm:preferredName "molar conductivity"@en . + +:molarEntropy + a :QuantityKind ; + bamm:name "molarEntropy" ; + bamm:preferredName "molar entropy"@en . + +:molarFlux + a :QuantityKind ; + bamm:name "molarFlux" ; + bamm:preferredName "molar flux"@en . + +:molarGasConstant + a :QuantityKind ; + bamm:name "molarGasConstant" ; + bamm:preferredName "molar gas constant"@en . + +:molarHeatCapacity + a :QuantityKind ; + bamm:name "molarHeatCapacity" ; + bamm:preferredName "molar heat capacity"@en . + +:molarMass + a :QuantityKind ; + bamm:name "molarMass" ; + bamm:preferredName "molar mass"@en . + +:molarOpticalRotatoryPower + a :QuantityKind ; + bamm:name "molarOpticalRotatoryPower" ; + bamm:preferredName "molar optical rotatory power"@en . + +:molarThermodynamicEnergy + a :QuantityKind ; + bamm:name "molarThermodynamicEnergy" ; + bamm:preferredName "molar thermodynamic energy"@en . + +:molarVolume + a :QuantityKind ; + bamm:name "molarVolume" ; + bamm:preferredName "molar volume"@en . + +:moleFractionOfB + a :QuantityKind ; + bamm:name "moleFractionOfB" ; + bamm:preferredName "mole fraction of B"@en . + +:moleRatioOfSoluteB + a :QuantityKind ; + bamm:name "moleRatioOfSoluteB" ; + bamm:preferredName "mole ratio of solute B"@en . + +:molecularConcentrationOfB + a :QuantityKind ; + bamm:name "molecularConcentrationOfB" ; + bamm:preferredName "molecular concentration of B"@en . + +:molecularPartitionFunction + a :QuantityKind ; + bamm:name "molecularPartitionFunction" ; + bamm:preferredName "molecular partition function"@en . + +:momentOfACouple + a :QuantityKind ; + bamm:name "momentOfACouple" ; + bamm:preferredName "moment of a couple"@en . + +:momentOfForce + a :QuantityKind ; + bamm:name "momentOfForce" ; + bamm:preferredName "moment of force"@en . + +:momentOfInertiaDynamicMomentOfInertia + a :QuantityKind ; + bamm:name "momentOfInertiaDynamicMomentOfInertia" ; + bamm:preferredName "moment of inertia (dynamic moment of inertia)"@en . + +:momentOfMomentum + a :QuantityKind ; + bamm:name "momentOfMomentum" ; + bamm:preferredName "moment of momentum"@en . + +:momentum + a :QuantityKind ; + bamm:name "momentum" ; + bamm:preferredName "momentum"@en . + +:multiplicationFactor + a :QuantityKind ; + bamm:name "multiplicationFactor" ; + bamm:preferredName "multiplication factor"@en . + +:mutualInductance + a :QuantityKind ; + bamm:name "mutualInductance" ; + bamm:preferredName "mutual inductance"@en . + +:neelTemperature + a :QuantityKind ; + bamm:name "neelTemperature" ; + bamm:preferredName "Néel temperature"@en . + +:neutronFluenceRate + a :QuantityKind ; + bamm:name "neutronFluenceRate" ; + bamm:preferredName "neutron fluence rate"@en . + +:neutronNumber + a :QuantityKind ; + bamm:name "neutronNumber" ; + bamm:preferredName "neutron number"@en . + +:neutronNumberDensity + a :QuantityKind ; + bamm:name "neutronNumberDensity" ; + bamm:preferredName "neutron number density"@en . + +:neutronSpeed + a :QuantityKind ; + bamm:name "neutronSpeed" ; + bamm:preferredName "neutron speed"@en . + +:neutronYieldPerAbsorption + a :QuantityKind ; + bamm:name "neutronYieldPerAbsorption" ; + bamm:preferredName "neutron yield per absorption"@en . + +:neutronYieldPerFission + a :QuantityKind ; + bamm:name "neutronYieldPerFission" ; + bamm:preferredName "neutron yield per fission"@en . + +:neutronfluxDensity + a :QuantityKind ; + bamm:name "neutronfluxDensity" ; + bamm:preferredName "neutronflux density"@en . + +:nonLeakageProbability + a :QuantityKind ; + bamm:name "nonLeakageProbability" ; + bamm:preferredName "non leakage probability"@en . + +:normalStress + a :QuantityKind ; + bamm:name "normalStress" ; + bamm:preferredName "normal stress"@en . + +:nuclearMagnetonOrnucleus + a :QuantityKind ; + bamm:name "nuclearMagnetonOrnucleus" ; + bamm:preferredName "nuclear magneton ornucleus"@en . + +:nuclearPrecession + a :QuantityKind ; + bamm:name "nuclearPrecession" ; + bamm:preferredName "nuclear precession"@en . + +:nuclearQuadrupoleMoment + a :QuantityKind ; + bamm:name "nuclearQuadrupoleMoment" ; + bamm:preferredName "nuclear quadrupole moment"@en . + +:nuclearRadius + a :QuantityKind ; + bamm:name "nuclearRadius" ; + bamm:preferredName "nuclear radius"@en . + +:nuclearSpinQuantumNumber + a :QuantityKind ; + bamm:name "nuclearSpinQuantumNumber" ; + bamm:preferredName "nuclear spin quantum number"@en . + +:nucleonNumber + a :QuantityKind ; + bamm:name "nucleonNumber" ; + bamm:preferredName "nucleon number"@en . + +:nuclidicMass + a :QuantityKind ; + bamm:name "nuclidicMass" ; + bamm:preferredName "nuclidic mass"@en . + +:numberDensityOfMoleculesOrParticles + a :QuantityKind ; + bamm:name "numberDensityOfMoleculesOrParticles" ; + bamm:preferredName "number density of molecules (or particles)"@en . + +:numberOfMoleculesOrOtherElementaryEntities + a :QuantityKind ; + bamm:name "numberOfMoleculesOrOtherElementaryEntities" ; + bamm:preferredName "number of molecules or other elementary entities"@en . + +:numberOfPairsOfPoles + a :QuantityKind ; + bamm:name "numberOfPairsOfPoles" ; + bamm:preferredName "number of pairs of poles"@en . + +:numberOfPhases + a :QuantityKind ; + bamm:name "numberOfPhases" ; + bamm:preferredName "number of phases"@en . + +:numberOfTurnsInAWinding + a :QuantityKind ; + bamm:name "numberOfTurnsInAWinding" ; + bamm:preferredName "number of turns in a winding"@en . + +:nusseltNumber + a :QuantityKind ; + bamm:name "nusseltNumber" ; + bamm:preferredName "Nusselt number"@en . + +:nusseltNumberForMassTransfer + a :QuantityKind ; + bamm:name "nusseltNumberForMassTransfer" ; + bamm:preferredName "Nusselt number for mass transfer"@en . + +:objectDistance + a :QuantityKind ; + bamm:name "objectDistance" ; + bamm:preferredName "object distance"@en . + +:opticalDensity + a :QuantityKind ; + bamm:name "opticalDensity" ; + bamm:preferredName "optical density"@en . + +:orbitalAngularMomentumQuantumNumber + a :QuantityKind ; + bamm:name "orbitalAngularMomentumQuantumNumber" ; + bamm:preferredName "orbital angular momentum quantum number"@en . + +:orderOfReflexion + a :QuantityKind ; + bamm:name "orderOfReflexion" ; + bamm:preferredName "order of reflexion"@en . + +:osmoticCoefficientOfTheSolventAEspeciallyInADiluteSolution + a :QuantityKind ; + bamm:name "osmoticCoefficientOfTheSolventAEspeciallyInADiluteSolution" ; + bamm:preferredName "osmotic coefficient of the solvent A (especially in a dilute solution)"@en . + +:osmoticPressure + a :QuantityKind ; + bamm:name "osmoticPressure" ; + bamm:preferredName "osmotic pressure"@en . + +:packingFraction + a :QuantityKind ; + bamm:name "packingFraction" ; + bamm:preferredName "packing fraction"@en . + +:partialPressureOfBInAGaseousMixture + a :QuantityKind ; + bamm:name "partialPressureOfBInAGaseousMixture" ; + bamm:preferredName "partial pressure of B (in a gaseous mixture)"@en . + +:particalFluxDensity + a :QuantityKind ; + bamm:name "particalFluxDensity" ; + bamm:preferredName "partical flux density"@en . + +:particleFluence + a :QuantityKind ; + bamm:name "particleFluence" ; + bamm:preferredName "particle fluence"@en . + +:particleFluenceRate + a :QuantityKind ; + bamm:name "particleFluenceRate" ; + bamm:preferredName "particle fluence rate"@en . + +:particlePositionVector + a :QuantityKind ; + bamm:name "particlePositionVector" ; + bamm:preferredName "particle position vector"@en . + +:partitionFunctionOfAMolecule + a :QuantityKind ; + bamm:name "partitionFunctionOfAMolecule" ; + bamm:preferredName "partition function of a molecule"@en . + +:pecletNumber + a :QuantityKind ; + bamm:name "pecletNumber" ; + bamm:preferredName "Peclet number"@en . + +:pecletNumberForMassTransfer + a :QuantityKind ; + bamm:name "pecletNumberForMassTransfer" ; + bamm:preferredName "Peclet number for mass transfer"@en . + +:peltierCoefficientForSubstancesAAndB + a :QuantityKind ; + bamm:name "peltierCoefficientForSubstancesAAndB" ; + bamm:preferredName "Peltier coefficient for substances a and b"@en . + +:performanceCharacteristic + a :QuantityKind ; + bamm:name "performanceCharacteristic" ; + bamm:preferredName "performance characteristic"@en . + +:period + a :QuantityKind ; + bamm:name "period" ; + bamm:preferredName "period"@en . + +:periodicTime + a :QuantityKind ; + bamm:name "periodicTime" ; + bamm:preferredName "periodic time"@en . + +:permeability + a :QuantityKind ; + bamm:name "permeability" ; + bamm:preferredName "permeability"@en . + +:permeabilityOfVacuum + a :QuantityKind ; + bamm:name "permeabilityOfVacuum" ; + bamm:preferredName "permeability of vacuum"@en . + +:permeance + a :QuantityKind ; + bamm:name "permeance" ; + bamm:preferredName "permeance"@en . + +:permittivity + a :QuantityKind ; + bamm:name "permittivity" ; + bamm:preferredName "permittivity"@en . + +:permittivityOfVacuum + a :QuantityKind ; + bamm:name "permittivityOfVacuum" ; + bamm:preferredName "permittivity of vacuum"@en . + +:phaseCoefficient + a :QuantityKind ; + bamm:name "phaseCoefficient" ; + bamm:preferredName "phase coefficient"@en . + +:phaseDifference + a :QuantityKind ; + bamm:name "phaseDifference" ; + bamm:preferredName "phase difference"@en . + +:phaseDisplacement + a :QuantityKind ; + bamm:name "phaseDisplacement" ; + bamm:preferredName "phase displacement"@en . + +:phaseSpeedOfElectromagneticWaves + a :QuantityKind ; + bamm:name "phaseSpeedOfElectromagneticWaves" ; + bamm:preferredName "phase speed of electromagnetic waves"@en . + +:phaseVelocity + a :QuantityKind ; + bamm:name "phaseVelocity" ; + bamm:preferredName "phase velocity"@en . + +:phaseVelocityOfElectromagneticWaves + a :QuantityKind ; + bamm:name "phaseVelocityOfElectromagneticWaves" ; + bamm:preferredName "phase velocity of electromagnetic waves"@en . + +:photonExitance + a :QuantityKind ; + bamm:name "photonExitance" ; + bamm:preferredName "photon exitance"@en . + +:photonExposure + a :QuantityKind ; + bamm:name "photonExposure" ; + bamm:preferredName "photon exposure"@en . + +:photonFlux + a :QuantityKind ; + bamm:name "photonFlux" ; + bamm:preferredName "photon flux"@en . + +:photonIntensity + a :QuantityKind ; + bamm:name "photonIntensity" ; + bamm:preferredName "photon intensity"@en . + +:photonLuminance + a :QuantityKind ; + bamm:name "photonLuminance" ; + bamm:preferredName "photon luminance"@en . + +:photonRadiance + a :QuantityKind ; + bamm:name "photonRadiance" ; + bamm:preferredName "photon radiance"@en . + +:planckConstant + a :QuantityKind ; + bamm:name "planckConstant" ; + bamm:preferredName "Planck constant"@en . + +:planckFunction + a :QuantityKind ; + bamm:name "planckFunction" ; + bamm:preferredName "planck function"@en . + +:poissonNumber + a :QuantityKind ; + bamm:name "poissonNumber" ; + bamm:preferredName "poisson number"@en . + +:poissonRatio + a :QuantityKind ; + bamm:name "poissonRatio" ; + bamm:preferredName "poisson ratio"@en . + +:porosity + a :QuantityKind ; + bamm:name "porosity" ; + bamm:preferredName "porosity"@en . + +:potentialDifference + a :QuantityKind ; + bamm:name "potentialDifference" ; + bamm:preferredName "potential difference"@en . + +:potentialEnergy + a :QuantityKind ; + bamm:name "potentialEnergy" ; + bamm:preferredName "potential energy"@en . + +:power + a :QuantityKind ; + bamm:name "power" ; + bamm:preferredName "power"@en . + +:powerForDirectCurrent + a :QuantityKind ; + bamm:name "powerForDirectCurrent" ; + bamm:preferredName "power (for direct current)"@en . + +:poyntingVector + a :QuantityKind ; + bamm:name "poyntingVector" ; + bamm:preferredName "Poynting vector"@en . + +:prandtlNumber + a :QuantityKind ; + bamm:name "prandtlNumber" ; + bamm:preferredName "Prandtl number"@en . + +:pressure + a :QuantityKind ; + bamm:name "pressure" ; + bamm:preferredName "pressure"@en . + +:pressureCoefficient + a :QuantityKind ; + bamm:name "pressureCoefficient" ; + bamm:preferredName "pressure coefficient"@en . + +:pressureRatio + a :QuantityKind ; + bamm:name "pressureRatio" ; + bamm:preferredName "pressure ratio"@en . + +:principleQuantumNumber + a :QuantityKind ; + bamm:name "principleQuantumNumber" ; + bamm:preferredName "principle quantum number"@en . + +:propagationCoefficient + a :QuantityKind ; + bamm:name "propagationCoefficient" ; + bamm:preferredName "propagation coefficient"@en . + +:protonNumber + a :QuantityKind ; + bamm:name "protonNumber" ; + bamm:preferredName "proton number"@en . + +:pulsatance + a :QuantityKind ; + bamm:name "pulsatance" ; + bamm:preferredName "pulsatance"@en . + +:quantityOfElectricity + a :QuantityKind ; + bamm:name "quantityOfElectricity" ; + bamm:preferredName "quantity of electricity"@en . + +:quantityOfHeat + a :QuantityKind ; + bamm:name "quantityOfHeat" ; + bamm:preferredName "quantity of heat"@en . + +:quantityOfLight + a :QuantityKind ; + bamm:name "quantityOfLight" ; + bamm:preferredName "quantity of light"@en . + +:radiance + a :QuantityKind ; + bamm:name "radiance" ; + bamm:preferredName "radiance"@en . + +:radianceExposure + a :QuantityKind ; + bamm:name "radianceExposure" ; + bamm:preferredName "radiance exposure"@en . + +:radiantEnergy + a :QuantityKind ; + bamm:name "radiantEnergy" ; + bamm:preferredName "radiant energy"@en . + +:radiantEnergyDensity + a :QuantityKind ; + bamm:name "radiantEnergyDensity" ; + bamm:preferredName "radiant energy density"@en . + +:radiantEnergyFluence + a :QuantityKind ; + bamm:name "radiantEnergyFluence" ; + bamm:preferredName "radiant energy fluence"@en . + +:radiantEnergyflux + a :QuantityKind ; + bamm:name "radiantEnergyflux" ; + bamm:preferredName "radiant energyflux"@en . + +:radiantExitance + a :QuantityKind ; + bamm:name "radiantExitance" ; + bamm:preferredName "radiant exitance"@en . + +:radiantIntensity + a :QuantityKind ; + bamm:name "radiantIntensity" ; + bamm:preferredName "radiant intensity"@en . + +:radiantPower + a :QuantityKind ; + bamm:name "radiantPower" ; + bamm:preferredName "radiant power"@en . + +:radius + a :QuantityKind ; + bamm:name "radius" ; + bamm:preferredName "radius"@en . + +:radiusOfCurvature + a :QuantityKind ; + bamm:name "radiusOfCurvature" ; + bamm:preferredName "radius of curvature"@en . + +:ratioOfTheMassicHeatCapacity + a :QuantityKind ; + bamm:name "ratioOfTheMassicHeatCapacity" ; + bamm:preferredName "ratio of the massic heat capacity"@en . + +:ratioOfTheSpecificHeatCapacities + a :QuantityKind ; + bamm:name "ratioOfTheSpecificHeatCapacities" ; + bamm:preferredName "ratio of the specific heat capacities"@en . + +:rayleighNumber + a :QuantityKind ; + bamm:name "rayleighNumber" ; + bamm:preferredName "Rayleigh number"@en . + +:reactance + a :QuantityKind ; + bamm:name "reactance" ; + bamm:preferredName "reactance"@en . + +:reactionEnergy + a :QuantityKind ; + bamm:name "reactionEnergy" ; + bamm:preferredName "reaction energy"@en . + +:reactivePower + a :QuantityKind ; + bamm:name "reactivePower" ; + bamm:preferredName "reactive power"@en . + +:reactivity + a :QuantityKind ; + bamm:name "reactivity" ; + bamm:preferredName "reactivity"@en . + +:reactorTimeConstant + a :QuantityKind ; + bamm:name "reactorTimeConstant" ; + bamm:preferredName "reactor time constant"@en . + +:recombinationCoefficient + a :QuantityKind ; + bamm:name "recombinationCoefficient" ; + bamm:preferredName "recombination coefficient"@en . + +:reflectance + a :QuantityKind ; + bamm:name "reflectance" ; + bamm:preferredName "reflectance"@en . + +:reflectionFactor + a :QuantityKind ; + bamm:name "reflectionFactor" ; + bamm:preferredName "reflection factor"@en . + +:refractiveIndex + a :QuantityKind ; + bamm:name "refractiveIndex" ; + bamm:preferredName "refractive index"@en . + +:relativeActivityOfSolventAEspeciallyInADiluteSolution + a :QuantityKind ; + bamm:name "relativeActivityOfSolventAEspeciallyInADiluteSolution" ; + bamm:preferredName "relative activity of solvent A (especially in a dilute solution)"@en . + +:relativeAtomicMass + a :QuantityKind ; + bamm:name "relativeAtomicMass" ; + bamm:preferredName "relative atomic mass"@en . + +:relativeDensity + a :QuantityKind ; + bamm:name "relativeDensity" ; + bamm:preferredName "relative density"@en . + +:relativeElongation + a :QuantityKind ; + bamm:name "relativeElongation" ; + bamm:preferredName "relative elongation"@en . + +:relativeMassDefect + a :QuantityKind ; + bamm:name "relativeMassDefect" ; + bamm:preferredName "relative mass defect"@en . + +:relativeMassDensity + a :QuantityKind ; + bamm:name "relativeMassDensity" ; + bamm:preferredName "relative mass density"@en . + +:relativeMassExcess + a :QuantityKind ; + bamm:name "relativeMassExcess" ; + bamm:preferredName "relative mass excess"@en . + +:relativeMolecularMass + a :QuantityKind ; + bamm:name "relativeMolecularMass" ; + bamm:preferredName "relative molecular mass"@en . + +:relativePermeability + a :QuantityKind ; + bamm:name "relativePermeability" ; + bamm:preferredName "relative permeability"@en . + +:relativePermittivity + a :QuantityKind ; + bamm:name "relativePermittivity" ; + bamm:preferredName "relative permittivity"@en . + +:relativePressureCoefficient + a :QuantityKind ; + bamm:name "relativePressureCoefficient" ; + bamm:preferredName "relative pressure coefficient"@en . + +:relaxationTime + a :QuantityKind ; + bamm:name "relaxationTime" ; + bamm:preferredName "relaxation time"@en . + +:reluctance + a :QuantityKind ; + bamm:name "reluctance" ; + bamm:preferredName "reluctance"@en . + +:repetency + a :QuantityKind ; + bamm:name "repetency" ; + bamm:preferredName "repetency"@en . + +:residualResistivity + a :QuantityKind ; + bamm:name "residualResistivity" ; + bamm:preferredName "residual resistivity"@en . + +:resistanceLoadPerUnitLength + a :QuantityKind ; + bamm:name "resistanceLoadPerUnitLength" ; + bamm:preferredName "resistance load per unit length"@en . + +:resistanceToAlternatingCurrent + a :QuantityKind ; + bamm:name "resistanceToAlternatingCurrent" ; + bamm:preferredName "resistance (to alternating current)"@en . + +:resistanceToDirectCurrent + a :QuantityKind ; + bamm:name "resistanceToDirectCurrent" ; + bamm:preferredName "resistance (to direct current)"@en . + +:resistivity + a :QuantityKind ; + bamm:name "resistivity" ; + bamm:preferredName "resistivity"@en . + +:resonanceEnergy + a :QuantityKind ; + bamm:name "resonanceEnergy" ; + bamm:preferredName "resonance energy"@en . + +:resonanceEscapeProbability + a :QuantityKind ; + bamm:name "resonanceEscapeProbability" ; + bamm:preferredName "resonance escape probability"@en . + +:restMassOfElectron + a :QuantityKind ; + bamm:name "restMassOfElectron" ; + bamm:preferredName "(rest) mass of electron"@en . + +:restMassOfNeutron + a :QuantityKind ; + bamm:name "restMassOfNeutron" ; + bamm:preferredName "(rest) mass of neutron"@en . + +:restMassOfProton + a :QuantityKind ; + bamm:name "restMassOfProton" ; + bamm:preferredName "(rest) mass of proton"@en . + +:reverberationTime + a :QuantityKind ; + bamm:name "reverberationTime" ; + bamm:preferredName "reverberation time"@en . + +:reynoldsNumber + a :QuantityKind ; + bamm:name "reynoldsNumber" ; + bamm:preferredName "Reynolds number"@en . + +:richardsonConstant + a :QuantityKind ; + bamm:name "richardsonConstant" ; + bamm:preferredName "Richardson constant"@en . + +:rotationalFrequency + a :QuantityKind ; + bamm:name "rotationalFrequency" ; + bamm:preferredName "rotational frequency"@en . + +:rotatoryPower + a :QuantityKind ; + bamm:name "rotatoryPower" ; + bamm:preferredName "rotatory power"@en . + +:rydbergConstant + a :QuantityKind ; + bamm:name "rydbergConstant" ; + bamm:preferredName "Rydberg constant"@en . + +:schmidtNumber + a :QuantityKind ; + bamm:name "schmidtNumber" ; + bamm:preferredName "Schmidt number"@en . + +:secondAxialMomentOfArea + a :QuantityKind ; + bamm:name "secondAxialMomentOfArea" ; + bamm:preferredName "second axial moment of area"@en . + +:secondMomentOfArea + a :QuantityKind ; + bamm:name "secondMomentOfArea" ; + bamm:preferredName "second moment of area"@en . + +:secondPolarMomentOfArea + a :QuantityKind ; + bamm:name "secondPolarMomentOfArea" ; + bamm:preferredName "second polar moment of area"@en . + +:secondRadiationConstant + a :QuantityKind ; + bamm:name "secondRadiationConstant" ; + bamm:preferredName "second radiation constant"@en . + +:sectionModulus + a :QuantityKind ; + bamm:name "sectionModulus" ; + bamm:preferredName "section modulus"@en . + +:seebeckCoefficientForSubstancesAAndB + a :QuantityKind ; + bamm:name "seebeckCoefficientForSubstancesAAndB" ; + bamm:preferredName "Seebeck coefficient for substances a and b"@en . + +:selfInductance + a :QuantityKind ; + bamm:name "selfInductance" ; + bamm:preferredName "self inductance"@en . + +:shearModulus + a :QuantityKind ; + bamm:name "shearModulus" ; + bamm:preferredName "shear modulus"@en . + +:shearStrain + a :QuantityKind ; + bamm:name "shearStrain" ; + bamm:preferredName "shear strain"@en . + +:shearStress + a :QuantityKind ; + bamm:name "shearStress" ; + bamm:preferredName "shear stress"@en . + +:shortRangeOrderParameter + a :QuantityKind ; + bamm:name "shortRangeOrderParameter" ; + bamm:preferredName "short-range order parameter"@en . + +:slowingDownArea + a :QuantityKind ; + bamm:name "slowingDownArea" ; + bamm:preferredName "slowing down area"@en . + +:slowingDownDensity + a :QuantityKind ; + bamm:name "slowingDownDensity" ; + bamm:preferredName "slowing down density"@en . + +:slowingDownLength + a :QuantityKind ; + bamm:name "slowingDownLength" ; + bamm:preferredName "slowing-down length"@en . + +:solidAngle + a :QuantityKind ; + bamm:name "solidAngle" ; + bamm:preferredName "solid angle"@en . + +:soundEnergy + a :QuantityKind ; + bamm:name "soundEnergy" ; + bamm:preferredName "sound energy"@en . + +:soundEnergyDensity + a :QuantityKind ; + bamm:name "soundEnergyDensity" ; + bamm:preferredName "sound energy density"@en . + +:soundExposure + a :QuantityKind ; + bamm:name "soundExposure" ; + bamm:preferredName "sound exposure"@en . + +:soundIntensity + a :QuantityKind ; + bamm:name "soundIntensity" ; + bamm:preferredName "sound intensity"@en . + +:soundPower + a :QuantityKind ; + bamm:name "soundPower" ; + bamm:preferredName "sound power"@en . + +:soundPowerLevel + a :QuantityKind ; + bamm:name "soundPowerLevel" ; + bamm:preferredName "sound power level"@en . + +:soundPressureLevel + a :QuantityKind ; + bamm:name "soundPressureLevel" ; + bamm:preferredName "sound pressure level"@en . + +:soundReductionIndex + a :QuantityKind ; + bamm:name "soundReductionIndex" ; + bamm:preferredName "sound reduction index"@en . + +:specificActivityInASample + a :QuantityKind ; + bamm:name "specificActivityInASample" ; + bamm:preferredName "specific activity in a sample"@en . + +:specificEnergy + a :QuantityKind ; + bamm:name "specificEnergy" ; + bamm:preferredName "specific energy"@en . + +:specificEnergyImparted + a :QuantityKind ; + bamm:name "specificEnergyImparted" ; + bamm:preferredName "specific energy imparted"@en . + +:specificEnthalpy + a :QuantityKind ; + bamm:name "specificEnthalpy" ; + bamm:preferredName "specific enthalpy"@en . + +:specificHeatCapacityAtConstantPressure + a :QuantityKind ; + bamm:name "specificHeatCapacityAtConstantPressure" ; + bamm:preferredName "specific heat capacity at constant pressure"@en . + +:specificHeatCapacityAtConstantVolume + a :QuantityKind ; + bamm:name "specificHeatCapacityAtConstantVolume" ; + bamm:preferredName "specific heat capacity at constant volume"@en . + +:specificHeatCapacityAtSaturation + a :QuantityKind ; + bamm:name "specificHeatCapacityAtSaturation" ; + bamm:preferredName "specific heat capacity at saturation"@en . + +:specificOpticalRotatoryPower + a :QuantityKind ; + bamm:name "specificOpticalRotatoryPower" ; + bamm:preferredName "specific optical rotatory power"@en . + +:specificThermodynamicEnergy + a :QuantityKind ; + bamm:name "specificThermodynamicEnergy" ; + bamm:preferredName "specific thermodynamic energy"@en . + +:specificVolume + a :QuantityKind ; + bamm:name "specificVolume" ; + bamm:preferredName "specific volume"@en . + +:spectralAbsorptance + a :QuantityKind ; + bamm:name "spectralAbsorptance" ; + bamm:preferredName "spectral absorptance"@en . + +:spectralAbsorptionFactor + a :QuantityKind ; + bamm:name "spectralAbsorptionFactor" ; + bamm:preferredName "spectral absorption factor"@en . + +:spectralAngularCrossSection + a :QuantityKind ; + bamm:name "spectralAngularCrossSection" ; + bamm:preferredName "spectral angular cross-section"@en . + +:spectralConcentrationOfRadiantEnergyDensityInTermsOfWavelength + a :QuantityKind ; + bamm:name "spectralConcentrationOfRadiantEnergyDensityInTermsOfWavelength" ; + bamm:preferredName "spectral concentration of radiant energy density (in terms of wavelength)"@en . + +:spectralConcentrationOfVibrationalModesInTermsOfAngularFrequency + a :QuantityKind ; + bamm:name "spectralConcentrationOfVibrationalModesInTermsOfAngularFrequency" ; + bamm:preferredName "spectral concentration of vibrational modes (in terms of angular frequency)"@en . + +:spectralCrossSection + a :QuantityKind ; + bamm:name "spectralCrossSection" ; + bamm:preferredName "spectral cross-section"@en . + +:spectralEmissivity + a :QuantityKind ; + bamm:name "spectralEmissivity" ; + bamm:preferredName "spectral emissivity"@en . + +:spectralLuminousEfficacy + a :QuantityKind ; + bamm:name "spectralLuminousEfficacy" ; + bamm:preferredName "spectral luminous efficacy"@en . + +:spectralLuminousEfficiency + a :QuantityKind ; + bamm:name "spectralLuminousEfficiency" ; + bamm:preferredName "spectral luminous efficiency"@en . + +:spectralRadianceFactor + a :QuantityKind ; + bamm:name "spectralRadianceFactor" ; + bamm:preferredName "spectral radiance factor"@en . + +:spectralRadiantEnergyDensityInTermsOfWaveLength + a :QuantityKind ; + bamm:name "spectralRadiantEnergyDensityInTermsOfWaveLength" ; + bamm:preferredName "spectral radiant energy density (in terms of wave length)"@en . + +:spectralReflectance + a :QuantityKind ; + bamm:name "spectralReflectance" ; + bamm:preferredName "spectral reflectance"@en . + +:spectralReflectionfactor + a :QuantityKind ; + bamm:name "spectralReflectionfactor" ; + bamm:preferredName "spectral reflectionfactor"@en . + +:spectralTransmissionFactor + a :QuantityKind ; + bamm:name "spectralTransmissionFactor" ; + bamm:preferredName "spectral transmission factor"@en . + +:spectralTransmittance + a :QuantityKind ; + bamm:name "spectralTransmittance" ; + bamm:preferredName "spectral transmittance"@en . + +:spinAngularMomentumQuantumNumber + a :QuantityKind ; + bamm:name "spinAngularMomentumQuantumNumber" ; + bamm:preferredName "spin angular momentum quantum number"@en . + +:standardAbsoluteActivityOfBInAGaseousMixture + a :QuantityKind ; + bamm:name "standardAbsoluteActivityOfBInAGaseousMixture" ; + bamm:preferredName "standard absolute activity of B (in a gaseous mixture)"@en . + +:standardAbsoluteActivityOfBInALiquidOrASolidMixture + a :QuantityKind ; + bamm:name "standardAbsoluteActivityOfBInALiquidOrASolidMixture" ; + bamm:preferredName "standard absolute activity of B (in a liquid or a solid mixture)"@en . + +:standardAbsoluteActivityOfSoluteBEspeciallyInADiluteSolution + a :QuantityKind ; + bamm:name "standardAbsoluteActivityOfSoluteBEspeciallyInADiluteSolution" ; + bamm:preferredName "standard absolute activity of solute B (especially in a dilute solution)"@en . + +:standardAbsoluteActivityOfSolventAEspeciallyInADiluteSolution + a :QuantityKind ; + bamm:name "standardAbsoluteActivityOfSolventAEspeciallyInADiluteSolution" ; + bamm:preferredName "standard absolute activity of solvent A (especially in a dilute solution)"@en . + +:standardEquilibriumConstant + a :QuantityKind ; + bamm:name "standardEquilibriumConstant" ; + bamm:preferredName "standard equilibrium constant"@en . + +:stantonNumber + a :QuantityKind ; + bamm:name "stantonNumber" ; + bamm:preferredName "Stanton number"@en . + +:stantonNumberForMassTransfer + a :QuantityKind ; + bamm:name "stantonNumberForMassTransfer" ; + bamm:preferredName "Stanton number for mass transfer"@en . + +:staticPressure + a :QuantityKind ; + bamm:name "staticPressure" ; + bamm:preferredName "static pressure"@en . + +:statisticalWeight + a :QuantityKind ; + bamm:name "statisticalWeight" ; + bamm:preferredName "statistical weight"@en . + +:stefanBoltzmannConstant + a :QuantityKind ; + bamm:name "stefanBoltzmannConstant" ; + bamm:preferredName "Stefan-Boltzmann constant"@en . + +:stoichiometricNumberOfB + a :QuantityKind ; + bamm:name "stoichiometricNumberOfB" ; + bamm:preferredName "stoichiometric number of B"@en . + +:strouhalNumber + a :QuantityKind ; + bamm:name "strouhalNumber" ; + bamm:preferredName "Strouhal number"@en . + +:superConductorTransitionTemperature + a :QuantityKind ; + bamm:name "superConductorTransitionTemperature" ; + bamm:preferredName "Super conductor transition temperature"@en . + +:superconductorEnergyGap + a :QuantityKind ; + bamm:name "superconductorEnergyGap" ; + bamm:preferredName "superconductor energy gap"@en . + +:surfaceCoefficientOfHeatTransfer + a :QuantityKind ; + bamm:name "surfaceCoefficientOfHeatTransfer" ; + bamm:preferredName "surface coefficient of heat transfer"@en . + +:surfaceDensity + a :QuantityKind ; + bamm:name "surfaceDensity" ; + bamm:preferredName "surface density"@en . + +:surfaceDensityOfCharge + a :QuantityKind ; + bamm:name "surfaceDensityOfCharge" ; + bamm:preferredName "surface density of charge"@en . + +:surfaceTension + a :QuantityKind ; + bamm:name "surfaceTension" ; + bamm:preferredName "surface tension"@en . + +:temperature + a :QuantityKind ; + bamm:name "temperature" ; + bamm:preferredName "temperature"@en . + +:temperatureVariationOverTime + a :QuantityKind ; + bamm:name "temperatureVariationOverTime" ; + bamm:preferredName "temperature variation over time"@en . + +:tension + a :QuantityKind ; + bamm:name "tension" ; + bamm:preferredName "tension"@en . + +:thermalConductance + a :QuantityKind ; + bamm:name "thermalConductance" ; + bamm:preferredName "thermal conductance"@en . + +:thermalConductivity + a :QuantityKind ; + bamm:name "thermalConductivity" ; + bamm:preferredName "thermal conductivity"@en . + +:thermalDiffusionCoefficient + a :QuantityKind ; + bamm:name "thermalDiffusionCoefficient" ; + bamm:preferredName "thermal diffusion coefficient"@en . + +:thermalDiffusionFactor + a :QuantityKind ; + bamm:name "thermalDiffusionFactor" ; + bamm:preferredName "thermal diffusion factor"@en . + +:thermalDiffusionRatio + a :QuantityKind ; + bamm:name "thermalDiffusionRatio" ; + bamm:preferredName "thermal diffusion ratio"@en . + +:thermalDiffusivity + a :QuantityKind ; + bamm:name "thermalDiffusivity" ; + bamm:preferredName "thermal diffusivity"@en . + +:thermalInsulance + a :QuantityKind ; + bamm:name "thermalInsulance" ; + bamm:preferredName "thermal insulance"@en . + +:thermalResistance + a :QuantityKind ; + bamm:name "thermalResistance" ; + bamm:preferredName "thermal resistance"@en . + +:thermalUtilizationFactor + a :QuantityKind ; + bamm:name "thermalUtilizationFactor" ; + bamm:preferredName "thermal utilization factor"@en . + +:thermodynamic + a :QuantityKind ; + bamm:name "thermodynamic" ; + bamm:preferredName "thermodynamic"@en . + +:thermodynamicCriticalMagneticFluxDensity + a :QuantityKind ; + bamm:name "thermodynamicCriticalMagneticFluxDensity" ; + bamm:preferredName "thermodynamic critical magnetic flux density"@en . + +:thermodynamicEnergy + a :QuantityKind ; + bamm:name "thermodynamicEnergy" ; + bamm:preferredName "thermodynamic energy"@en . + +:thermoelectromotiveForceBetweenSubstancesAAndB + a :QuantityKind ; + bamm:name "thermoelectromotiveForceBetweenSubstancesAAndB" ; + bamm:preferredName "thermoelectromotive force between substances a and b"@en . + +:thickness + a :QuantityKind ; + bamm:name "thickness" ; + bamm:preferredName "thickness"@en . + +:thompsonCoefficient + a :QuantityKind ; + bamm:name "thompsonCoefficient" ; + bamm:preferredName "Thompson coefficient"@en . + +:time + a :QuantityKind ; + bamm:name "time" ; + bamm:preferredName "time"@en . + +:timeConstant + a :QuantityKind ; + bamm:name "timeConstant" ; + bamm:preferredName "time constant"@en . + +:torque + a :QuantityKind ; + bamm:name "torque" ; + bamm:preferredName "torque"@en . + +:torsionalStiffness + a :QuantityKind ; + bamm:name "torsionalStiffness" ; + bamm:preferredName "torsional stiffness"@en . + +:totalAngularMomentumQuantumNumber + a :QuantityKind ; + bamm:name "totalAngularMomentumQuantumNumber" ; + bamm:preferredName "total angular momentum quantum number"@en . + +:totalAtomicStoppingPower + a :QuantityKind ; + bamm:name "totalAtomicStoppingPower" ; + bamm:preferredName "total atomic stopping power"@en . + +:totalCrossSection + a :QuantityKind ; + bamm:name "totalCrossSection" ; + bamm:preferredName "total cross-section"@en . + +:totalIonizationByAParticle + a :QuantityKind ; + bamm:name "totalIonizationByAParticle" ; + bamm:preferredName "total ionization by a particle"@en . + +:totalLinearStoppingPower + a :QuantityKind ; + bamm:name "totalLinearStoppingPower" ; + bamm:preferredName "total linear stopping power"@en . + +:totalMassStoppingPower + a :QuantityKind ; + bamm:name "totalMassStoppingPower" ; + bamm:preferredName "total mass stopping power"@en . + +:transmissionFactor + a :QuantityKind ; + bamm:name "transmissionFactor" ; + bamm:preferredName "transmission factor"@en . + +:transmittance + a :QuantityKind ; + bamm:name "transmittance" ; + bamm:preferredName "transmittance"@en . + +:transportNumberOfIonB + a :QuantityKind ; + bamm:name "transportNumberOfIonB" ; + bamm:preferredName "transport number of ion B"@en . + +:unifiedAtomicMassConstant + a :QuantityKind ; + bamm:name "unifiedAtomicMassConstant" ; + bamm:preferredName "unified atomic mass constant"@en . + +:upperCriticalMagneticFluxDensity + a :QuantityKind ; + bamm:name "upperCriticalMagneticFluxDensity" ; + bamm:preferredName "upper critical magnetic flux density"@en . + +:velocity + a :QuantityKind ; + bamm:name "velocity" ; + bamm:preferredName "velocity"@en . + +:velocityOfSoundPhaseVelocity + a :QuantityKind ; + bamm:name "velocityOfSoundPhaseVelocity" ; + bamm:preferredName "velocity of sound (phase velocity)"@en . + +:velocitySpeedOnPropagationOfElectromagneticWavesInVacuo + a :QuantityKind ; + bamm:name "velocitySpeedOnPropagationOfElectromagneticWavesInVacuo" ; + bamm:preferredName "velocity (speed) on propagation of electromagnetic waves in vacuo"@en . + +:vergence + a :QuantityKind ; + bamm:name "vergence" ; + bamm:preferredName "vergence"@en . + +:viscosityDynamicViscosity + a :QuantityKind ; + bamm:name "viscosityDynamicViscosity" ; + bamm:preferredName "viscosity (dynamic viscosity)"@en . + +:voltage + a :QuantityKind ; + bamm:name "voltage" ; + bamm:preferredName "voltage"@en . + +:volume + a :QuantityKind ; + bamm:name "volume" ; + bamm:preferredName "volume"@en . + +:volumeDensityOfCharge + a :QuantityKind ; + bamm:name "volumeDensityOfCharge" ; + bamm:preferredName "volume density of charge"@en . + +:volumeFlowRate + a :QuantityKind ; + bamm:name "volumeFlowRate" ; + bamm:preferredName "volume flow rate"@en . + +:volumeOrBulkStrain + a :QuantityKind ; + bamm:name "volumeOrBulkStrain" ; + bamm:preferredName "volume or bulk strain"@en . + +:volumePerTemperature + a :QuantityKind ; + bamm:name "volumePerTemperature" ; + bamm:preferredName "volume per temperature"@en . + +:volumeRatio + a :QuantityKind ; + bamm:name "volumeRatio" ; + bamm:preferredName "volume ratio"@en . + +:volumic + a :QuantityKind ; + bamm:name "volumic" ; + bamm:preferredName "volumic"@en . + +:volumicAcceptorNumber + a :QuantityKind ; + bamm:name "volumicAcceptorNumber" ; + bamm:preferredName "volumic acceptor number"@en . + +:volumicActivity + a :QuantityKind ; + bamm:name "volumicActivity" ; + bamm:preferredName "volumic activity"@en . + +:volumicCharge + a :QuantityKind ; + bamm:name "volumicCharge" ; + bamm:preferredName "volumic charge"@en . + +:volumicCrossSection + a :QuantityKind ; + bamm:name "volumicCrossSection" ; + bamm:preferredName "volumic cross-section"@en . + +:volumicDonorNumber + a :QuantityKind ; + bamm:name "volumicDonorNumber" ; + bamm:preferredName "volumic donor number"@en . + +:volumicDose + a :QuantityKind ; + bamm:name "volumicDose" ; + bamm:preferredName "volumic dose"@en . + +:volumicElectromagneticEnergy + a :QuantityKind ; + bamm:name "volumicElectromagneticEnergy" ; + bamm:preferredName "volumic electromagnetic energy"@en . + +:volumicElectronNumber + a :QuantityKind ; + bamm:name "volumicElectronNumber" ; + bamm:preferredName "volumic electron number"@en . + +:volumicHoleNumber + a :QuantityKind ; + bamm:name "volumicHoleNumber" ; + bamm:preferredName "volumic hole number"@en . + +:volumicIntrinsisNumber + a :QuantityKind ; + bamm:name "volumicIntrinsisNumber" ; + bamm:preferredName "volumic intrinsis number"@en . + +:volumicMass + a :QuantityKind ; + bamm:name "volumicMass" ; + bamm:preferredName "volumic mass"@en . + +:volumicNumberOfMoleculesOrParticles + a :QuantityKind ; + bamm:name "volumicNumberOfMoleculesOrParticles" ; + bamm:preferredName "volumic number of molecules (or particles)"@en . + +:volumicTotalCrossSection + a :QuantityKind ; + bamm:name "volumicTotalCrossSection" ; + bamm:preferredName "volumic total cross-section"@en . + +:waveNumber + a :QuantityKind ; + bamm:name "waveNumber" ; + bamm:preferredName "wave number"@en . + +:wavelength + a :QuantityKind ; + bamm:name "wavelength" ; + bamm:preferredName "wavelength"@en . + +:wavenumber + a :QuantityKind ; + bamm:name "wavenumber" ; + bamm:preferredName "wavenumber"@en . + +:weberNumber + a :QuantityKind ; + bamm:name "weberNumber" ; + bamm:preferredName "Weber number"@en . + +:weight + a :QuantityKind ; + bamm:name "weight" ; + bamm:preferredName "weight"@en . + +:work + a :QuantityKind ; + bamm:name "work" ; + bamm:preferredName "work"@en . + +:workFunction + a :QuantityKind ; + bamm:name "workFunction" ; + bamm:preferredName "work function"@en . + +:workPerUnitWeight + a :QuantityKind ; + bamm:name "workPerUnitWeight" ; + bamm:preferredName "work per unit weight"@en . + + +# Units + +:accessLine + a :Unit ; + bamm:name "accessLine" ; + bamm:preferredName "access line"@en ; + :commonCode "AL" . + +:accountingUnit + a :Unit ; + bamm:name "accountingUnit" ; + bamm:preferredName "accounting unit"@en ; + :commonCode "E50" . + +:acre + a :Unit ; + bamm:name "acre" ; + bamm:preferredName "acre"@en ; + :commonCode "ACR" ; + :conversionFactor "4046.873 m²" ; + :numericConversionFactor "4046.873"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "acre" . + +:acreFootBasedOnUsSurveyFoot + a :Unit ; + bamm:name "acreFootBasedOnUsSurveyFoot" ; + bamm:preferredName "acre-foot (based on U.S. survey foot)"@en ; + :commonCode "M67" ; + :conversionFactor "1.233489 × 10³ m³" ; + :numericConversionFactor "1233.489"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "acre-ft (US survey)" . + +:activeUnit + a :Unit ; + bamm:name "activeUnit" ; + bamm:preferredName "active unit"@en ; + :commonCode "E25" . + +:activity + a :QuantityKind ; + bamm:name "activity" ; + bamm:preferredName "activity"@en ; + :commonCode "ACT" . + +:actualPer360 + a :Unit ; + bamm:name "actualPer360" ; + bamm:preferredName "actual/360"@en ; + :commonCode "M37" ; + :conversionFactor "3.1104000 × 10⁷ s" ; + :numericConversionFactor "3.1104E7"^^xsd:double ; + :referenceUnit :secondUnitOfTime ; + :symbol "y (360 days)" . + +:additionalMinute + a :Unit ; + bamm:name "additionalMinute" ; + bamm:preferredName "additional minute"@en ; + :commonCode "AH" . + +:airDryMetricTon + a :Unit ; + bamm:name "airDryMetricTon" ; + bamm:preferredName "air dry metric ton"@en ; + :commonCode "MD" . + +:airDryTon + a :Unit ; + bamm:name "airDryTon" ; + bamm:preferredName "air dry ton"@en ; + :commonCode "E28" . + +:alcoholicStrengthByMass + a :Unit ; + bamm:name "alcoholicStrengthByMass" ; + bamm:preferredName "alcoholic strength by mass"@en ; + :commonCode "ASM" . + +:alcoholicStrengthByVolume + a :Unit ; + bamm:name "alcoholicStrengthByVolume" ; + bamm:preferredName "alcoholic strength by volume"@en ; + :commonCode "ASU" . + +:ampere + a :Unit ; + bamm:name "ampere" ; + bamm:preferredName "ampere"@en ; + :commonCode "AMP" ; + :conversionFactor "A" ; + :quantityKind :currentLinkage, :electricCurrent, :magneticPotentialDifference, :magnetomotiveForce ; + :symbol "A" . + +:ampereHour + a :Unit ; + bamm:name "ampereHour" ; + bamm:preferredName "ampere hour"@en ; + :commonCode "AMH" ; + :conversionFactor "3.6 × 10³ C" ; + :numericConversionFactor "3600.0"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "A·h" . + +:ampereMinute + a :Unit ; + bamm:name "ampereMinute" ; + bamm:preferredName "ampere minute"@en ; + :commonCode "N95" ; + :conversionFactor "60 C" ; + :numericConversionFactor "60.0"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "A·min" . + +:amperePerCentimetre + a :Unit ; + bamm:name "amperePerCentimetre" ; + bamm:preferredName "ampere per centimetre"@en ; + :commonCode "A2" ; + :conversionFactor "10² A/m" ; + :numericConversionFactor "100.0"^^xsd:double ; + :quantityKind :linearElectricCurrentDensity, :lineicElectricCurrent, :magneticFieldStrength ; + :referenceUnit :amperePerMetre ; + :symbol "A/cm" . + +:amperePerKilogram + a :Unit ; + bamm:name "amperePerKilogram" ; + bamm:preferredName "ampere per kilogram"@en ; + :commonCode "H31" ; + :conversionFactor "A × kg⁻¹" ; + :quantityKind :currentDensity ; + :symbol "A/kg" . + +:amperePerMetre + a :Unit ; + bamm:name "amperePerMetre" ; + bamm:preferredName "ampere per metre"@en ; + :commonCode "AE" ; + :conversionFactor "A/m" ; + :quantityKind :linearElectricCurrentDensity, :lineicElectricCurrent, :magneticFieldStrength, :magnetization ; + :symbol "A/m" . + +:amperePerMillimetre + a :Unit ; + bamm:name "amperePerMillimetre" ; + bamm:preferredName "ampere per millimetre"@en ; + :commonCode "A3" ; + :conversionFactor "10³ A/m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :linearElectricCurrentDensity, :lineicElectricCurrent, :magneticFieldStrength ; + :referenceUnit :amperePerMetre ; + :symbol "A/mm" . + +:amperePerPascal + a :Unit ; + bamm:name "amperePerPascal" ; + bamm:preferredName "ampere per pascal"@en ; + :commonCode "N93" ; + :conversionFactor "kg⁻¹ × m × s² × A" ; + :quantityKind :currentDensity ; + :symbol "A/Pa" . + +:amperePerSquareCentimetre + a :Unit ; + bamm:name "amperePerSquareCentimetre" ; + bamm:preferredName "ampere per square centimetre"@en ; + :commonCode "A4" ; + :conversionFactor "10⁴ A/m²" ; + :numericConversionFactor "10000.0"^^xsd:double ; + :quantityKind :currentDensity ; + :referenceUnit :amperePerSquareMetre ; + :symbol "A/cm²" . + +:amperePerSquareMetre + a :Unit ; + bamm:name "amperePerSquareMetre" ; + bamm:preferredName "ampere per square metre"@en ; + :commonCode "A41" ; + :conversionFactor "A/m²" ; + :quantityKind :currentDensity ; + :symbol "A/m²" . + +:amperePerSquareMetreKelvinSquared + a :Unit ; + bamm:name "amperePerSquareMetreKelvinSquared" ; + bamm:preferredName "ampere per square metre kelvin squared"@en ; + :commonCode "A6" ; + :conversionFactor "A/(m² × K²)" ; + :quantityKind :richardsonConstant ; + :symbol "A/(m²·K²)" . + +:amperePerSquareMillimetre + a :Unit ; + bamm:name "amperePerSquareMillimetre" ; + bamm:preferredName "ampere per square millimetre"@en ; + :commonCode "A7" ; + :conversionFactor "10⁶ A/m²" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :currentDensity ; + :referenceUnit :amperePerSquareMetre ; + :symbol "A/mm²" . + +:ampereSecond + a :Unit ; + bamm:name "ampereSecond" ; + bamm:preferredName "ampere second"@en ; + :commonCode "A8" ; + :conversionFactor "C" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "A·s" . + +:ampereSquareMetre + a :Unit ; + bamm:name "ampereSquareMetre" ; + bamm:preferredName "ampere square metre"@en ; + :commonCode "A5" ; + :conversionFactor "A × m²" ; + :quantityKind :bohrMagneton, :electromagneticMoment, :magneticAreaMoment, :magneticMoment, :magneticMomentOfParticle, :nuclearMagnetonOrnucleus ; + :symbol "A·m²" . + +:ampereSquareMetrePerJouleSecond + a :Unit ; + bamm:name "ampereSquareMetrePerJouleSecond" ; + bamm:preferredName "ampere square metre per joule second"@en ; + :commonCode "A10" ; + :conversionFactor "(A × s)/kg" ; + :quantityKind :gyromagneticCoefficient, :gyromagneticRatio ; + :symbol "A·m²/(J·s)" . + +:ampereSquaredSecond + a :Unit ; + bamm:name "ampereSquaredSecond" ; + bamm:preferredName "ampere squared second"@en ; + :commonCode "H32" ; + :conversionFactor "A² × s" ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :symbol "A²·s" . + +:angstrom + a :Unit ; + bamm:name "angstrom" ; + bamm:preferredName "angstrom"@en ; + :commonCode "A11" ; + :conversionFactor "10⁻¹⁰ m" ; + :numericConversionFactor "1.0E-10"^^xsd:double ; + :quantityKind :bohrRadius, :breadth, :burgersVector, :cartesianCoordinates, :diameter, :distance, :height, :latticePlaneSpacing, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness, :wavelength ; + :referenceUnit :metre ; + :symbol "Å" . + +:antiHemophilicFactorAhfUnit + a :Unit ; + bamm:name "antiHemophilicFactorAhfUnit" ; + bamm:preferredName "anti-hemophilic factor (AHF) unit"@en ; + :commonCode "AQ" . + +:assembly + a :Unit ; + bamm:name "assembly" ; + bamm:preferredName "assembly"@en ; + :commonCode "AY" . + +:assortment + a :Unit ; + bamm:name "assortment" ; + bamm:preferredName "assortment"@en ; + :commonCode "AS" . + +:astronomicalUnit + a :Unit ; + bamm:name "astronomicalUnit" ; + bamm:preferredName "astronomical unit"@en ; + :commonCode "A12" ; + :conversionFactor "1.49597870 × 10¹¹ m" ; + :numericConversionFactor "1.4959787E11"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "ua" . + +:attofarad + a :Unit ; + bamm:name "attofarad" ; + bamm:preferredName "attofarad"@en ; + :commonCode "H48" ; + :conversionFactor "10⁻¹⁸ m⁻² × kg⁻¹ × s⁴ × A²" ; + :quantityKind :capacitance ; + :symbol "aF" . + +:attojoule + a :Unit ; + bamm:name "attojoule" ; + bamm:preferredName "attojoule"@en ; + :commonCode "A13" ; + :conversionFactor "10⁻¹⁸ J" ; + :numericConversionFactor "1.0E-18"^^xsd:double ; + :quantityKind :acceptorIonizationEnergy, :donorIonizationEnergy, :electronAffinity, :energy, :exchangeIntergral, :kineticEnergy, :potentialEnergy, :superconductorEnergyGap, :work ; + :referenceUnit :joule ; + :symbol "aJ" . + +:averageMinutePerCall + a :Unit ; + bamm:name "averageMinutePerCall" ; + bamm:preferredName "average minute per call"@en ; + :commonCode "AI" . + +:ball + a :Unit ; + bamm:name "ball" ; + bamm:preferredName "ball"@en ; + :commonCode "AA" . + +:barCubicMetrePerSecond + a :Unit ; + bamm:name "barCubicMetrePerSecond" ; + bamm:preferredName "bar cubic metre per second"@en ; + :commonCode "F92" ; + :conversionFactor "10⁵ kg × m² × s⁻³" ; + :quantityKind :leakageRateOfGas ; + :symbol "bar·m³/s" . + +:barLitrePerSecond + a :Unit ; + bamm:name "barLitrePerSecond" ; + bamm:preferredName "bar litre per second"@en ; + :commonCode "F91" ; + :conversionFactor "10² kg × m² × s⁻³" ; + :quantityKind :leakageRateOfGas ; + :symbol "bar·l/s" . + +:barPerBar + a :Unit ; + bamm:name "barPerBar" ; + bamm:preferredName "bar per bar"@en ; + :commonCode "J56" ; + :conversionFactor "1" ; + :quantityKind :pressureRatio ; + :symbol "bar/bar" . + +:barPerKelvin + a :Unit ; + bamm:name "barPerKelvin" ; + bamm:preferredName "bar per kelvin"@en ; + :commonCode "F81" ; + :conversionFactor "10⁵ kg × m⁻¹ × s⁻² × K⁻¹" ; + :quantityKind :pressureCoefficient ; + :symbol "bar/K" . + +:barUnitOfPressure + a :Unit ; + bamm:name "barUnitOfPressure" ; + bamm:preferredName "bar [unit of pressure]"@en ; + :commonCode "BAR" ; + :conversionFactor "10⁵ Pa" ; + :numericConversionFactor "100000.0"^^xsd:double ; + :quantityKind :bulkModulus, :instantaneousSoundPressure, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress, :staticPressure ; + :referenceUnit :pascal ; + :symbol "bar" . + +:barn + a :Unit ; + bamm:name "barn" ; + bamm:preferredName "barn"@en ; + :commonCode "A14" ; + :conversionFactor "10⁻²⁸ m²" ; + :numericConversionFactor "1.0E-28"^^xsd:double ; + :quantityKind :totalCrossSection ; + :referenceUnit :squareMetre ; + :symbol "b" . + +:barnPerElectronvolt + a :Unit ; + bamm:name "barnPerElectronvolt" ; + bamm:preferredName "barn per electronvolt"@en ; + :commonCode "A15" ; + :conversionFactor "6.241 51 × 10⁻¹⁰ m²/J" ; + :numericConversionFactor "6.24151E-10"^^xsd:double ; + :quantityKind :spectralCrossSection ; + :referenceUnit :squareMetrePerJoule ; + :symbol "b/eV" . + +:barnPerSteradian + a :Unit ; + bamm:name "barnPerSteradian" ; + bamm:preferredName "barn per steradian"@en ; + :commonCode "A17" ; + :conversionFactor "1 × 10⁻²⁸ m²/sr" ; + :numericConversionFactor "1.0E-28"^^xsd:double ; + :quantityKind :angularCrossSection ; + :referenceUnit :squareMetrePerSteradian ; + :symbol "b/sr" . + +:barnPerSteradianElectronvolt + a :Unit ; + bamm:name "barnPerSteradianElectronvolt" ; + bamm:preferredName "barn per steradian electronvolt"@en ; + :commonCode "A16" ; + :conversionFactor "6.241 51 × 10⁻¹⁰ m²/(sr ×J)" ; + :quantityKind :spectralAngularCrossSection ; + :symbol "b/(sr·eV)" . + +:barrelImperial + a :Unit ; + bamm:name "barrelImperial" ; + bamm:preferredName "barrel, imperial"@en ; + :commonCode "B4" . + +:barrelUkPetroleum + a :Unit ; + bamm:name "barrelUkPetroleum" ; + bamm:preferredName "barrel (UK petroleum)"@en ; + :commonCode "J57" ; + :conversionFactor "0.15911315 m³" ; + :numericConversionFactor "0.15911315"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "bbl (UK liq.)" . + +:barrelUkPetroleumPerDay + a :Unit ; + bamm:name "barrelUkPetroleumPerDay" ; + bamm:preferredName "barrel (UK petroleum) per day"@en ; + :commonCode "J59" ; + :conversionFactor "1.8415874 × 10⁻⁶ m³/s" ; + :numericConversionFactor "1.8415874E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bbl (UK liq.)/d" . + +:barrelUkPetroleumPerHour + a :Unit ; + bamm:name "barrelUkPetroleumPerHour" ; + bamm:preferredName "barrel (UK petroleum) per hour"@en ; + :commonCode "J60" ; + :conversionFactor "4.419810 × 10⁻⁵ m³/s" ; + :numericConversionFactor "4.41981E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bbl (UK liq.)/h" . + +:barrelUkPetroleumPerMinute + a :Unit ; + bamm:name "barrelUkPetroleumPerMinute" ; + bamm:preferredName "barrel (UK petroleum) per minute"@en ; + :commonCode "J58" ; + :conversionFactor "2.651886 m³/s" ; + :numericConversionFactor "2.651886"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bbl (UK liq.)/min" . + +:barrelUkPetroleumPerSecond + a :Unit ; + bamm:name "barrelUkPetroleumPerSecond" ; + bamm:preferredName "barrel (UK petroleum) per second"@en ; + :commonCode "J61" ; + :conversionFactor "0.15911315 m³/s" ; + :numericConversionFactor "0.15911315"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bbl (UK liq.)/s" . + +:barrelUs + a :Unit ; + bamm:name "barrelUs" ; + bamm:preferredName "barrel (US)"@en ; + :commonCode "BLL" ; + :conversionFactor "158.9873 × 10⁻³ m³" ; + :numericConversionFactor "0.1589873"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "barrel (US)" . + +:barrelUsPerDay + a :Unit ; + bamm:name "barrelUsPerDay" ; + bamm:preferredName "barrel (US) per day"@en ; + :commonCode "B1" ; + :conversionFactor "1.84013 × 10⁻⁶ m³/s" ; + :numericConversionFactor "1.84013E-6"^^xsd:double ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "barrel (US)/d" . + +:barrelUsPerMinute + a :Unit ; + bamm:name "barrelUsPerMinute" ; + bamm:preferredName "barrel (US) per minute"@en ; + :commonCode "5A" ; + :conversionFactor "2.64979 × 10⁻³ m³/s" ; + :numericConversionFactor "0.00264979"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "barrel (US)/min" . + +:barrelUsPetroleumPerHour + a :Unit ; + bamm:name "barrelUsPetroleumPerHour" ; + bamm:preferredName "barrel (US petroleum) per hour"@en ; + :commonCode "J62" ; + :conversionFactor "4.416314 × 10⁻⁵ m³/s" ; + :numericConversionFactor "4.416314E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bbl (US)/h" . + +:barrelUsPetroleumPerSecond + a :Unit ; + bamm:name "barrelUsPetroleumPerSecond" ; + bamm:preferredName "barrel (US petroleum) per second"@en ; + :commonCode "J63" ; + :conversionFactor "0.1589873 m³/s" ; + :numericConversionFactor "0.1589873"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bbl (US)/s" . + +:baseBox + a :Unit ; + bamm:name "baseBox" ; + bamm:preferredName "base box"@en ; + :commonCode "BB" . + +:batch + a :Unit ; + bamm:name "batch" ; + bamm:preferredName "batch"@en ; + :commonCode "5B" . + +:battingPound + a :Unit ; + bamm:name "battingPound" ; + bamm:preferredName "batting pound"@en ; + :commonCode "B3" . + +:baud + a :Unit ; + bamm:name "baud" ; + bamm:preferredName "baud"@en ; + :commonCode "J38" ; + :symbol "Bd" . + +:beaufort + a :Unit ; + bamm:name "beaufort" ; + bamm:preferredName "Beaufort"@en ; + :commonCode "M19" ; + :symbol "Bft" . + +:becquerel + a :Unit ; + bamm:name "becquerel" ; + bamm:preferredName "becquerel"@en ; + :commonCode "BQL" ; + :conversionFactor "27.027 × 10⁻¹² Ci" ; + :numericConversionFactor "2.7027E-11"^^xsd:double ; + :quantityKind :activity ; + :referenceUnit :curie ; + :symbol "Bq" . + +:becquerelPerCubicMetre + a :Unit ; + bamm:name "becquerelPerCubicMetre" ; + bamm:preferredName "becquerel per cubic metre"@en ; + :commonCode "A19" ; + :conversionFactor "Bq/m³" ; + :quantityKind :activityConcentration, :volumicActivity ; + :symbol "Bq/m³" . + +:becquerelPerKilogram + a :Unit ; + bamm:name "becquerelPerKilogram" ; + bamm:preferredName "becquerel per kilogram"@en ; + :commonCode "A18" ; + :conversionFactor "27.027 × 10⁻¹² Ci/kg" ; + :numericConversionFactor "2.7027E-11"^^xsd:double ; + :quantityKind :specificActivityInASample ; + :referenceUnit :curiePerKilogram ; + :symbol "Bq/kg" . + +:bel + a :Unit ; + bamm:name "bel" ; + bamm:preferredName "bel"@en ; + :commonCode "M72" ; + :conversionFactor "B" ; + :quantityKind :levelOfAFieldQuantity, :levelOfAPowerQuantity ; + :symbol "B" . + +:belPerMetre + a :Unit ; + bamm:name "belPerMetre" ; + bamm:preferredName "bel per metre"@en ; + :commonCode "P43" ; + :conversionFactor "B/m" ; + :quantityKind :soundPowerLevel, :soundPressureLevel ; + :symbol "B/m" . + +:bigPoint + a :Unit ; + bamm:name "bigPoint" ; + bamm:preferredName "big point"@en ; + :commonCode "H82" ; + :conversionFactor "0.3527778 × 10⁻³ m" ; + :numericConversionFactor "3.527778E-4"^^xsd:double ; + :referenceUnit :metre ; + :symbol "bp" . + +:billionEur + a :Unit ; + bamm:name "billionEur" ; + bamm:preferredName "billion (EUR)"@en ; + :commonCode "BIL" ; + :conversionFactor "10¹²" . + +:biot + a :Unit ; + bamm:name "biot" ; + bamm:preferredName "biot"@en ; + :commonCode "N96" ; + :conversionFactor "10¹ A" ; + :numericConversionFactor "10.0"^^xsd:double ; + :quantityKind :currentLinkage, :electricCurrent, :magneticPotentialDifference, :magnetomotiveForce ; + :referenceUnit :ampere ; + :symbol "Bi" . + +:bit + a :Unit ; + bamm:name "bit" ; + bamm:preferredName "bit"@en ; + :commonCode "A99" ; + :quantityKind :informationEntropy ; + :symbol "b" . + +:bitPerCubicMetre + a :Unit ; + bamm:name "bitPerCubicMetre" ; + bamm:preferredName "bit per cubic metre"@en ; + :commonCode "F01" ; + :symbol "bit/m³" . + +:bitPerMetre + a :Unit ; + bamm:name "bitPerMetre" ; + bamm:preferredName "bit per metre"@en ; + :commonCode "E88" ; + :symbol "bit/m" . + +:bitPerSecond + a :Unit ; + bamm:name "bitPerSecond" ; + bamm:preferredName "bit per second"@en ; + :commonCode "B10" ; + :symbol "bit/s" . + +:bitPerSquareMetre + a :Unit ; + bamm:name "bitPerSquareMetre" ; + bamm:preferredName "bit per square metre"@en ; + :commonCode "E89" ; + :symbol "bit/m²" . + +:blank + a :Unit ; + bamm:name "blank" ; + bamm:preferredName "blank"@en ; + :commonCode "H21" . + +:boardFoot + a :Unit ; + bamm:name "boardFoot" ; + bamm:preferredName "board foot"@en ; + :commonCode "BFT" ; + :symbol "fbm" . + +:book + a :Unit ; + bamm:name "book" ; + bamm:preferredName "book"@en ; + :commonCode "D63" . + +:brakeHorsePower + a :Unit ; + bamm:name "brakeHorsePower" ; + bamm:preferredName "brake horse power"@en ; + :commonCode "BHP" ; + :conversionFactor "7.457 × 10² W" ; + :numericConversionFactor "745.7"^^xsd:double ; + :quantityKind :power ; + :referenceUnit :watt ; + :symbol "BHP" . + +:britishThermalUnit39Degreesf + a :Unit ; + bamm:name "britishThermalUnit39Degreesf" ; + bamm:preferredName "British thermal unit (39 °F)"@en ; + :commonCode "N66" ; + :conversionFactor "1.05967 × 10³ J" ; + :numericConversionFactor "1059.67"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "Btu (39 °F)" . + +:britishThermalUnit59Degreesf + a :Unit ; + bamm:name "britishThermalUnit59Degreesf" ; + bamm:preferredName "British thermal unit (59 °F)"@en ; + :commonCode "N67" ; + :conversionFactor "1.05480 × 10³ J" ; + :numericConversionFactor "1054.8"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "Btu (59 °F)" . + +:britishThermalUnit60Degreesf + a :Unit ; + bamm:name "britishThermalUnit60Degreesf" ; + bamm:preferredName "British thermal unit (60 °F)"@en ; + :commonCode "N68" ; + :conversionFactor "1.05468 × 10³ J" ; + :numericConversionFactor "1054.68"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "Btu (60 °F)" . + +:britishThermalUnitInternationalTable + a :Unit ; + bamm:name "britishThermalUnitInternationalTable" ; + bamm:preferredName "British thermal unit (international table)"@en ; + :commonCode "BTU" ; + :conversionFactor "1.055056 × 10³ J" ; + :numericConversionFactor "1055.056"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "BtuIT" . + +:britishThermalUnitInternationalTableFootPerHourSquareFootDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitInternationalTableFootPerHourSquareFootDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (international table) foot per hour square foot degree Fahrenheit"@en ; + :commonCode "J40" ; + :conversionFactor "1.730735 W/(m × K)" ; + :numericConversionFactor "1.730735"^^xsd:double ; + :quantityKind :thermalConductivity ; + :referenceUnit :wattPerMetreKelvin ; + :symbol "BtuIT·ft/(h·ft²·°F)" . + +:britishThermalUnitInternationalTableInchPerHourSquareFootDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitInternationalTableInchPerHourSquareFootDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (international table) inch per hour square foot degree Fahrenheit"@en ; + :commonCode "J41" ; + :conversionFactor "0.1442279 W/(m × K)" ; + :numericConversionFactor "0.1442279"^^xsd:double ; + :quantityKind :thermalConductivity ; + :referenceUnit :wattPerMetreKelvin ; + :symbol "BtuIT·in/(h·ft²·°F)" . + +:britishThermalUnitInternationalTableInchPerSecondSquareFootDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitInternationalTableInchPerSecondSquareFootDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (international table) inch per second square foot degree Fahrenheit"@en ; + :commonCode "J42" ; + :conversionFactor "5.192204 × 10² W/(m × K)" ; + :numericConversionFactor "519.2204"^^xsd:double ; + :quantityKind :thermalConductivity ; + :referenceUnit :wattPerMetreKelvin ; + :symbol "BtuIT·in/(s·ft²·°F)" . + +:britishThermalUnitInternationalTablePerCubicFoot + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerCubicFoot" ; + bamm:preferredName "British thermal unit (international table) per cubic foot"@en ; + :commonCode "N58" ; + :conversionFactor "3.725895 ×10⁴ J/m³" ; + :numericConversionFactor "37258.95"^^xsd:double ; + :quantityKind :energyDensity ; + :referenceUnit :joulePerCubicMetre ; + :symbol "BtuIT/ft³" . + +:britishThermalUnitInternationalTablePerDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (international table) per degree Fahrenheit"@en ; + :commonCode "N60" ; + :conversionFactor "1.899101 × 10³ J/K" ; + :numericConversionFactor "1899.101"^^xsd:double ; + :quantityKind :entropy, :heatCapacity ; + :referenceUnit :joulePerKelvin ; + :symbol "BtuIT/°F" . + +:britishThermalUnitInternationalTablePerDegreeRankine + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerDegreeRankine" ; + bamm:preferredName "British thermal unit (international table) per degree Rankine"@en ; + :commonCode "N62" ; + :conversionFactor "1.899101 × 10³ J/K" ; + :numericConversionFactor "1899.101"^^xsd:double ; + :quantityKind :entropy, :heatCapacity ; + :referenceUnit :joulePerKelvin ; + :symbol "BtuIT/°R" . + +:britishThermalUnitInternationalTablePerHour + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerHour" ; + bamm:preferredName "British thermal unit (international table) per hour"@en ; + :commonCode "2I" ; + :conversionFactor "2.930711× 10⁻¹ W" ; + :numericConversionFactor "0.2930711"^^xsd:double ; + :quantityKind :heatFlowRate ; + :referenceUnit :watt ; + :symbol "BtuIT/h" . + +:britishThermalUnitInternationalTablePerHourSquareFootDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerHourSquareFootDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (international table) per hour square foot degree Fahrenheit"@en ; + :commonCode "N74" ; + :conversionFactor "5.678263 W/(m² × K)" ; + :numericConversionFactor "5.678263"^^xsd:double ; + :quantityKind :surfaceCoefficientOfHeatTransfer ; + :referenceUnit :wattPerSquareMetreKelvin ; + :symbol "BtuIT/(h·ft²·°F)" . + +:britishThermalUnitInternationalTablePerHourSquareFootDegreeRankine + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerHourSquareFootDegreeRankine" ; + bamm:preferredName "British thermal unit (international table) per hour square foot degree Rankine"@en ; + :commonCode "A23" ; + :conversionFactor "5.67826 W/ (m² × K)" ; + :quantityKind :surfaceCoefficientOfHeatTransfer ; + :symbol "BtuIT/(h·ft²·°R)" . + +:britishThermalUnitInternationalTablePerMinute + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerMinute" ; + bamm:preferredName "British thermal unit (international table) per minute"@en ; + :commonCode "J44" ; + :conversionFactor "17.584266 W" ; + :numericConversionFactor "17.584266"^^xsd:double ; + :quantityKind :heatFlowRate ; + :referenceUnit :watt ; + :symbol "BtuIT/min" . + +:britishThermalUnitInternationalTablePerPound + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerPound" ; + bamm:preferredName "British thermal unit (international table) per pound"@en ; + :commonCode "AZ" ; + :conversionFactor "2326 J/kg" ; + :numericConversionFactor "2326.0"^^xsd:double ; + :quantityKind :massicHelmholtzFreeEnergy ; + :referenceUnit :joulePerKilogram ; + :symbol "BtuIT/lb" . + +:britishThermalUnitInternationalTablePerPoundDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerPoundDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (international table) per pound degree Fahrenheit"@en ; + :commonCode "J43" ; + :conversionFactor "4.1868 × 10³ J/(kg × K)" ; + :numericConversionFactor "4186.8"^^xsd:double ; + :quantityKind :entropy, :heatCapacity ; + :referenceUnit :joulePerKilogramKelvin ; + :symbol "BtuIT/(lb·°F)" . + +:britishThermalUnitInternationalTablePerPoundDegreeRankine + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerPoundDegreeRankine" ; + bamm:preferredName "British thermal unit (international table) per pound degree Rankine"@en ; + :commonCode "A21" ; + :conversionFactor "4186.8 J/(kg × K)" ; + :numericConversionFactor "4186.8"^^xsd:double ; + :quantityKind :specificHeatCapacityAtConstantPressure, :specificHeatCapacityAtConstantVolume, :specificHeatCapacityAtSaturation ; + :referenceUnit :joulePerKilogramKelvin ; + :symbol "BtuIT/(lb·°R)" . + +:britishThermalUnitInternationalTablePerSecond + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerSecond" ; + bamm:preferredName "British thermal unit (international table) per second"@en ; + :commonCode "J45" ; + :conversionFactor "1.055056 × 10³ W" ; + :numericConversionFactor "1055.056"^^xsd:double ; + :quantityKind :heatFlowRate ; + :referenceUnit :watt ; + :symbol "BtuIT/s" . + +:britishThermalUnitInternationalTablePerSecondFootDegreeRankine + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerSecondFootDegreeRankine" ; + bamm:preferredName "British thermal unit (international table) per second foot degree Rankine"@en ; + :commonCode "A22" ; + :conversionFactor "6230.64 W/(m × K)" ; + :numericConversionFactor "6230.64"^^xsd:double ; + :quantityKind :thermalConductivity ; + :referenceUnit :wattPerMetreKelvin ; + :symbol "BtuIT/(s·ft·°R)" . + +:britishThermalUnitInternationalTablePerSecondSquareFootDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerSecondSquareFootDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (international table) per second square foot degree Fahrenheit"@en ; + :commonCode "N76" ; + :conversionFactor "2.044175 × 10⁴ W/(m² × K)" ; + :numericConversionFactor "20441.75"^^xsd:double ; + :quantityKind :surfaceCoefficientOfHeatTransfer ; + :referenceUnit :wattPerSquareMetreKelvin ; + :symbol "BtuIT/(s·ft²·°F)" . + +:britishThermalUnitInternationalTablePerSecondSquareFootDegreeRankine + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerSecondSquareFootDegreeRankine" ; + bamm:preferredName "British thermal unit (international table) per second square foot degree Rankine"@en ; + :commonCode "A20" ; + :conversionFactor "20441.7 W/(m² × K)" ; + :numericConversionFactor "20441.7"^^xsd:double ; + :quantityKind :surfaceCoefficientOfHeatTransfer ; + :referenceUnit :wattPerSquareMetreKelvin ; + :symbol "BtuIT/(s·ft²·°R)" . + +:britishThermalUnitInternationalTablePerSquareFoot + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerSquareFoot" ; + bamm:preferredName "British thermal unit (international table) per square foot"@en ; + :commonCode "P37" ; + :conversionFactor "1.135653 × 10⁴ J/m²" ; + :numericConversionFactor "11356.53"^^xsd:double ; + :quantityKind :radianceExposure, :radiantEnergyFluence ; + :referenceUnit :joulePerSquareMetre ; + :symbol "BtuIT/ft²" . + +:britishThermalUnitInternationalTablePerSquareFootHour + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerSquareFootHour" ; + bamm:preferredName "British thermal unit (international table) per square foot hour"@en ; + :commonCode "N50" ; + :conversionFactor "3.154591 W/m²" ; + :numericConversionFactor "3.154591"^^xsd:double ; + :quantityKind :densityOfHeatFlowRate ; + :referenceUnit :wattPerSquareMetre ; + :symbol "BtuIT/(ft²·h)" . + +:britishThermalUnitInternationalTablePerSquareFootSecond + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerSquareFootSecond" ; + bamm:preferredName "British thermal unit (international table) per square foot second"@en ; + :commonCode "N53" ; + :conversionFactor "1.135653 × 10⁴ W/m²" ; + :numericConversionFactor "11356.53"^^xsd:double ; + :quantityKind :densityOfHeatFlowRate ; + :referenceUnit :wattPerSquareMetre ; + :symbol "BtuIT/(ft²·s)" . + +:britishThermalUnitInternationalTablePerSquareInchSecond + a :Unit ; + bamm:name "britishThermalUnitInternationalTablePerSquareInchSecond" ; + bamm:preferredName "British thermal unit (international table) per square inch second"@en ; + :commonCode "N55" ; + :conversionFactor "1.634246 × 10⁶ W/m²" ; + :numericConversionFactor "1634246.0"^^xsd:double ; + :quantityKind :densityOfHeatFlowRate ; + :referenceUnit :wattPerSquareMetre ; + :symbol "BtuIT/(in²·s)" . + +:britishThermalUnitMean + a :Unit ; + bamm:name "britishThermalUnitMean" ; + bamm:preferredName "British thermal unit (mean)"@en ; + :commonCode "J39" ; + :conversionFactor "1.05587 × 10³ J" ; + :numericConversionFactor "1055.87"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "Btu" . + +:britishThermalUnitThermochemicalFootPerHourSquareFootDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitThermochemicalFootPerHourSquareFootDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (thermochemical) foot per hour square foot degree Fahrenheit"@en ; + :commonCode "J46" ; + :conversionFactor "1.729577 W/(m × K)" ; + :numericConversionFactor "1.729577"^^xsd:double ; + :quantityKind :thermalConductivity ; + :referenceUnit :wattPerMetreKelvin ; + :symbol "Btuth·ft/(h·ft²·°F)" . + +:britishThermalUnitThermochemicalInchPerHourSquareFootDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitThermochemicalInchPerHourSquareFootDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (thermochemical) inch per hour square foot degree Fahrenheit"@en ; + :commonCode "J48" ; + :conversionFactor "0.1441314 W/(m × K)" ; + :numericConversionFactor "0.1441314"^^xsd:double ; + :quantityKind :thermalConductivity ; + :referenceUnit :wattPerMetreKelvin ; + :symbol "Btuth·in/(h·ft²·°F)" . + +:britishThermalUnitThermochemicalInchPerSecondSquareFootDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitThermochemicalInchPerSecondSquareFootDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (thermochemical) inch per second square foot degree Fahrenheit"@en ; + :commonCode "J49" ; + :conversionFactor "5.188732 × 10² W/(m × K)" ; + :numericConversionFactor "518.8732"^^xsd:double ; + :quantityKind :thermalConductivity ; + :referenceUnit :wattPerMetreKelvin ; + :symbol "Btuth·in/(s·ft²·°F)" . + +:britishThermalUnitThermochemicalPerCubicFoot + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerCubicFoot" ; + bamm:preferredName "British thermal unit (thermochemical) per cubic foot"@en ; + :commonCode "N59" ; + :conversionFactor "3.723403 ×10⁴ J/m³" ; + :numericConversionFactor "37234.03"^^xsd:double ; + :quantityKind :energyDensity ; + :referenceUnit :joulePerCubicMetre ; + :symbol "Btuth/ft³" . + +:britishThermalUnitThermochemicalPerDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (thermochemical) per degree Fahrenheit"@en ; + :commonCode "N61" ; + :conversionFactor "1.897830 × 10³ J/K" ; + :numericConversionFactor "1897.83"^^xsd:double ; + :quantityKind :entropy, :heatCapacity ; + :referenceUnit :joulePerKelvin ; + :symbol "Btuth/°F" . + +:britishThermalUnitThermochemicalPerDegreeRankine + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerDegreeRankine" ; + bamm:preferredName "British thermal unit (thermochemical) per degree Rankine"@en ; + :commonCode "N63" ; + :conversionFactor "1.897830 × 10³ J/K" ; + :numericConversionFactor "1897.83"^^xsd:double ; + :quantityKind :entropy, :heatCapacity ; + :referenceUnit :joulePerKelvin ; + :symbol "Btuth/°R" . + +:britishThermalUnitThermochemicalPerHour + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerHour" ; + bamm:preferredName "British thermal unit (thermochemical) per hour"@en ; + :commonCode "J47" ; + :conversionFactor "0.2928751 W" ; + :numericConversionFactor "0.2928751"^^xsd:double ; + :quantityKind :heatFlowRate ; + :referenceUnit :watt ; + :symbol "Btuth/h" . + +:britishThermalUnitThermochemicalPerHourSquareFootDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerHourSquareFootDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (thermochemical) per hour square foot degree Fahrenheit"@en ; + :commonCode "N75" ; + :conversionFactor "5.674466 W/(m² × K)" ; + :numericConversionFactor "5.674466"^^xsd:double ; + :quantityKind :surfaceCoefficientOfHeatTransfer ; + :referenceUnit :wattPerSquareMetreKelvin ; + :symbol "Btuth/(h·ft²·°F)" . + +:britishThermalUnitThermochemicalPerMinute + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerMinute" ; + bamm:preferredName "British thermal unit (thermochemical) per minute"@en ; + :commonCode "J51" ; + :conversionFactor "17.57250 W" ; + :numericConversionFactor "17.5725"^^xsd:double ; + :quantityKind :heatFlowRate ; + :referenceUnit :watt ; + :symbol "Btuth/min" . + +:britishThermalUnitThermochemicalPerPound + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerPound" ; + bamm:preferredName "British thermal unit (thermochemical) per pound"@en ; + :commonCode "N73" ; + :conversionFactor "2.324444 × 10³ J/kg" ; + :numericConversionFactor "2324.444"^^xsd:double ; + :quantityKind :massicHelmholtzFreeEnergy ; + :referenceUnit :joulePerKilogram ; + :symbol "Btuth/lb" . + +:britishThermalUnitThermochemicalPerPoundDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerPoundDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (thermochemical) per pound degree Fahrenheit"@en ; + :commonCode "J50" ; + :conversionFactor "4.184 × 10³ J/(kg × K)" ; + :numericConversionFactor "4184.0"^^xsd:double ; + :quantityKind :entropy, :heatCapacity ; + :referenceUnit :joulePerKilogramKelvin ; + :symbol "Btuth/(lb·°F)" . + +:britishThermalUnitThermochemicalPerPoundDegreeRankine + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerPoundDegreeRankine" ; + bamm:preferredName "British thermal unit (thermochemical) per pound degree Rankine"@en ; + :commonCode "N64" ; + :conversionFactor "4.184 × 10³ J/(kg × K)" ; + :numericConversionFactor "4184.0"^^xsd:double ; + :quantityKind :entropy, :heatCapacity ; + :referenceUnit :joulePerKilogramKelvin ; + :symbol "(Btuth/°R)/lb" . + +:britishThermalUnitThermochemicalPerSecond + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerSecond" ; + bamm:preferredName "British thermal unit (thermochemical) per second"@en ; + :commonCode "J52" ; + :conversionFactor "1.054350 × 10³ W" ; + :numericConversionFactor "1054.35"^^xsd:double ; + :quantityKind :heatFlowRate ; + :referenceUnit :watt ; + :symbol "Btuth/s" . + +:britishThermalUnitThermochemicalPerSecondSquareFootDegreeFahrenheit + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerSecondSquareFootDegreeFahrenheit" ; + bamm:preferredName "British thermal unit (thermochemical) per second square foot degree Fahrenheit"@en ; + :commonCode "N77" ; + :conversionFactor "2.042808 × 10⁴ W/(m² × K)" ; + :numericConversionFactor "20428.08"^^xsd:double ; + :quantityKind :surfaceCoefficientOfHeatTransfer ; + :referenceUnit :wattPerSquareMetreKelvin ; + :symbol "Btuth/(s·ft²·°F)" . + +:britishThermalUnitThermochemicalPerSquareFoot + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerSquareFoot" ; + bamm:preferredName "British thermal unit (thermochemical) per square foot"@en ; + :commonCode "P38" ; + :conversionFactor "1.134893 × 10⁴ J/m²" ; + :numericConversionFactor "11348.93"^^xsd:double ; + :quantityKind :radianceExposure, :radiantEnergyFluence ; + :referenceUnit :joulePerSquareMetre ; + :symbol "Btuth/ft²" . + +:britishThermalUnitThermochemicalPerSquareFootHour + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerSquareFootHour" ; + bamm:preferredName "British thermal unit (thermochemical) per square foot hour"@en ; + :commonCode "N51" ; + :conversionFactor "3.152481 W/m²" ; + :numericConversionFactor "3.152481"^^xsd:double ; + :quantityKind :densityOfHeatFlowRate ; + :referenceUnit :wattPerSquareMetre ; + :symbol "Btuth/(ft²·h)" . + +:britishThermalUnitThermochemicalPerSquareFootMinute + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerSquareFootMinute" ; + bamm:preferredName "British thermal unit (thermochemical) per square foot minute"@en ; + :commonCode "N52" ; + :conversionFactor "1.891489 × 10² W/m²" ; + :numericConversionFactor "189.1489"^^xsd:double ; + :quantityKind :densityOfHeatFlowRate ; + :referenceUnit :wattPerSquareMetre ; + :symbol "Btuth/(ft²·min)" . + +:britishThermalUnitThermochemicalPerSquareFootSecond + a :Unit ; + bamm:name "britishThermalUnitThermochemicalPerSquareFootSecond" ; + bamm:preferredName "British thermal unit (thermochemical) per square foot second"@en ; + :commonCode "N54" ; + :conversionFactor "1.134893 × 10⁴ W/m²" ; + :numericConversionFactor "11348.93"^^xsd:double ; + :quantityKind :densityOfHeatFlowRate ; + :referenceUnit :wattPerSquareMetre ; + :symbol "Btuth/(ft²·s)" . + +:bulkPack + a :Unit ; + bamm:name "bulkPack" ; + bamm:preferredName "bulk pack"@en ; + :commonCode "AB" ; + :symbol "pk" . + +:bushelUk + a :Unit ; + bamm:name "bushelUk" ; + bamm:preferredName "bushel (UK)"@en ; + :commonCode "BUI" ; + :conversionFactor "3.636872 × 10⁻² m³" ; + :numericConversionFactor "0.03636872"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "bushel (UK)" . + +:bushelUkPerDay + a :Unit ; + bamm:name "bushelUkPerDay" ; + bamm:preferredName "bushel (UK) per day"@en ; + :commonCode "J64" ; + :conversionFactor "4.209343 × 10⁻⁷ m³/s" ; + :numericConversionFactor "4.209343E-7"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bu (UK)/d" . + +:bushelUkPerHour + a :Unit ; + bamm:name "bushelUkPerHour" ; + bamm:preferredName "bushel (UK) per hour"@en ; + :commonCode "J65" ; + :conversionFactor "1.010242 × 10⁻⁵ m³/s" ; + :numericConversionFactor "1.010242E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bu (UK)/h" . + +:bushelUkPerMinute + a :Unit ; + bamm:name "bushelUkPerMinute" ; + bamm:preferredName "bushel (UK) per minute"@en ; + :commonCode "J66" ; + :conversionFactor "6.061453 × 10⁻⁴ m³/s" ; + :numericConversionFactor "6.061453E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bu (UK)/min" . + +:bushelUkPerSecond + a :Unit ; + bamm:name "bushelUkPerSecond" ; + bamm:preferredName "bushel (UK) per second"@en ; + :commonCode "J67" ; + :conversionFactor "3.636872 × 10⁻² m³/s" ; + :numericConversionFactor "0.03636872"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bu (UK)/s" . + +:bushelUs + a :Unit ; + bamm:name "bushelUs" ; + bamm:preferredName "bushel (US)"@en ; + :commonCode "BUA" ; + :conversionFactor "3.523907 × 10⁻² m³" ; + :numericConversionFactor "0.03523907"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "bu (US)" . + +:bushelUsDryPerDay + a :Unit ; + bamm:name "bushelUsDryPerDay" ; + bamm:preferredName "bushel (US dry) per day"@en ; + :commonCode "J68" ; + :conversionFactor "4.078596 × 10⁻⁷ m³/s" ; + :numericConversionFactor "4.078596E-7"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bu (US dry)/d" . + +:bushelUsDryPerHour + a :Unit ; + bamm:name "bushelUsDryPerHour" ; + bamm:preferredName "bushel (US dry) per hour"@en ; + :commonCode "J69" ; + :conversionFactor "9.788631 × 10⁻⁶ m³/s" ; + :numericConversionFactor "9.788631E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bu (US dry)/h" . + +:bushelUsDryPerMinute + a :Unit ; + bamm:name "bushelUsDryPerMinute" ; + bamm:preferredName "bushel (US dry) per minute"@en ; + :commonCode "J70" ; + :conversionFactor "5.873178 × 10⁻⁴ m³/s" ; + :numericConversionFactor "5.873178E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bu (US dry)/min" . + +:bushelUsDryPerSecond + a :Unit ; + bamm:name "bushelUsDryPerSecond" ; + bamm:preferredName "bushel (US dry) per second"@en ; + :commonCode "J71" ; + :conversionFactor "3.523907 × 10⁻² m³/s" ; + :numericConversionFactor "0.03523907"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "bu (US dry)/s" . + +:byte + a :Unit ; + bamm:name "byte" ; + bamm:preferredName "byte"@en ; + :commonCode "AD" ; + :quantityKind :informationEntropy ; + :symbol "B" . + +:bytePerSecond + a :Unit ; + bamm:name "bytePerSecond" ; + bamm:preferredName "byte per second"@en ; + :commonCode "P93" ; + :conversionFactor "byte/s" ; + :symbol "byte/s" . + +:cake + a :Unit ; + bamm:name "cake" ; + bamm:preferredName "cake"@en ; + :commonCode "KA" . + +:call + a :Unit ; + bamm:name "call" ; + bamm:preferredName "call"@en ; + :commonCode "C0" . + +:calorie20Degreesc + a :Unit ; + bamm:name "calorie20Degreesc" ; + bamm:preferredName "calorie (20 °C)"@en ; + :commonCode "N69" ; + :conversionFactor "4.18190" ; + :numericConversionFactor "4.1819"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "cal₂₀" . + +:calorieInternationalTablePerGramDegreeCelsius + a :Unit ; + bamm:name "calorieInternationalTablePerGramDegreeCelsius" ; + bamm:preferredName "calorie (international table) per gram degree Celsius"@en ; + :commonCode "J76" ; + :conversionFactor "4.1868 × 10³ J/(kg × K)" ; + :numericConversionFactor "4186.8"^^xsd:double ; + :quantityKind :entropy, :heatCapacity ; + :referenceUnit :joulePerKilogramKelvin ; + :symbol "calIT/(g·°C)" . + +:calorieMean + a :Unit ; + bamm:name "calorieMean" ; + bamm:preferredName "calorie (mean)"@en ; + :commonCode "J75" ; + :conversionFactor "4.19002 J" ; + :numericConversionFactor "4.19002"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "cal" . + +:calorieThermochemicalPerCentimetreSecondDegreeCelsius + a :Unit ; + bamm:name "calorieThermochemicalPerCentimetreSecondDegreeCelsius" ; + bamm:preferredName "calorie (thermochemical) per centimetre second degree Celsius"@en ; + :commonCode "J78" ; + :conversionFactor "4.184 × 10² W/(m × K)" ; + :numericConversionFactor "418.4"^^xsd:double ; + :quantityKind :thermalConductivity ; + :referenceUnit :wattPerMetreKelvin ; + :symbol "calth/(cm·s·°C)" . + +:calorieThermochemicalPerGramDegreeCelsius + a :Unit ; + bamm:name "calorieThermochemicalPerGramDegreeCelsius" ; + bamm:preferredName "calorie (thermochemical) per gram degree Celsius"@en ; + :commonCode "J79" ; + :conversionFactor "4.184 × 10³ J/(kg × K)" ; + :numericConversionFactor "4184.0"^^xsd:double ; + :quantityKind :entropy, :heatCapacity ; + :referenceUnit :joulePerKilogramKelvin ; + :symbol "calth/(g·°C)" . + +:calorieThermochemicalPerMinute + a :Unit ; + bamm:name "calorieThermochemicalPerMinute" ; + bamm:preferredName "calorie (thermochemical) per minute"@en ; + :commonCode "J81" ; + :conversionFactor "6.973333 × 10⁻² W" ; + :numericConversionFactor "0.06973333"^^xsd:double ; + :quantityKind :heatFlowRate ; + :referenceUnit :watt ; + :symbol "calth/min" . + +:calorieThermochemicalPerSecond + a :Unit ; + bamm:name "calorieThermochemicalPerSecond" ; + bamm:preferredName "calorie (thermochemical) per second"@en ; + :commonCode "J82" ; + :conversionFactor "4.184 W" ; + :numericConversionFactor "4.184"^^xsd:double ; + :quantityKind :heatFlowRate ; + :referenceUnit :watt ; + :symbol "calth/s" . + +:calorieThermochemicalPerSquareCentimetre + a :Unit ; + bamm:name "calorieThermochemicalPerSquareCentimetre" ; + bamm:preferredName "calorie (thermochemical) per square centimetre"@en ; + :commonCode "P39" ; + :conversionFactor "4.184 × 10⁴ J/m²" ; + :numericConversionFactor "41840.0"^^xsd:double ; + :quantityKind :radianceExposure, :radiantEnergyFluence ; + :referenceUnit :joulePerSquareMetre ; + :symbol "calth/cm²" . + +:calorieThermochemicalPerSquareCentimetreMinute + a :Unit ; + bamm:name "calorieThermochemicalPerSquareCentimetreMinute" ; + bamm:preferredName "calorie (thermochemical) per square centimetre minute"@en ; + :commonCode "N56" ; + :conversionFactor "6.973333 × 10² W/m²" ; + :numericConversionFactor "697.3333"^^xsd:double ; + :quantityKind :densityOfHeatFlowRate ; + :referenceUnit :wattPerSquareMetre ; + :symbol "calth/(cm²·min)" . + +:calorieThermochemicalPerSquareCentimetreSecond + a :Unit ; + bamm:name "calorieThermochemicalPerSquareCentimetreSecond" ; + bamm:preferredName "calorie (thermochemical) per square centimetre second"@en ; + :commonCode "N57" ; + :conversionFactor "4.184 × 10⁴ W/m²" ; + :numericConversionFactor "41840.0"^^xsd:double ; + :quantityKind :densityOfHeatFlowRate ; + :referenceUnit :wattPerSquareMetre ; + :symbol "calth/(cm²·s)" . + +:candela + a :Unit ; + bamm:name "candela" ; + bamm:preferredName "candela"@en ; + :commonCode "CDL" ; + :conversionFactor "cd" ; + :quantityKind :luminousIntensity ; + :symbol "cd" . + +:candelaPerSquareFoot + a :Unit ; + bamm:name "candelaPerSquareFoot" ; + bamm:preferredName "candela per square foot"@en ; + :commonCode "P32" ; + :conversionFactor "1.076391 × 10 cd/m²" ; + :numericConversionFactor "1.0763911"^^xsd:double ; + :quantityKind :luminance ; + :referenceUnit :candelaPerSquareMetre ; + :symbol "cd/ft²" . + +:candelaPerSquareInch + a :Unit ; + bamm:name "candelaPerSquareInch" ; + bamm:preferredName "candela per square inch"@en ; + :commonCode "P28" ; + :conversionFactor "1.550003 × 10³ cd/m²" ; + :numericConversionFactor "1550.003"^^xsd:double ; + :quantityKind :luminance ; + :referenceUnit :candelaPerSquareMetre ; + :symbol "cd/in²" . + +:candelaPerSquareMetre + a :Unit ; + bamm:name "candelaPerSquareMetre" ; + bamm:preferredName "candela per square metre"@en ; + :commonCode "A24" ; + :conversionFactor "cd/m²" ; + :quantityKind :luminance ; + :symbol "cd/m²" . + +:card + a :Unit ; + bamm:name "card" ; + bamm:preferredName "card"@en ; + :commonCode "CG" . + +:carryingCapacityInMetricTon + a :Unit ; + bamm:name "carryingCapacityInMetricTon" ; + bamm:preferredName "carrying capacity in metric ton"@en ; + :commonCode "CCT" . + +:centalUk + a :Unit ; + bamm:name "centalUk" ; + bamm:preferredName "cental (UK)"@en ; + :commonCode "CNT" ; + :conversionFactor "45.359237 kg" ; + :numericConversionFactor "45.359237"^^xsd:double ; + :referenceUnit :kilogram . + +:centigram + a :Unit ; + bamm:name "centigram" ; + bamm:preferredName "centigram"@en ; + :commonCode "CGM" ; + :conversionFactor "10⁻⁵ kg" ; + :numericConversionFactor "1.0E-5"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "cg" . + +:centilitre + a :Unit ; + bamm:name "centilitre" ; + bamm:preferredName "centilitre"@en ; + :commonCode "CLT" ; + :conversionFactor "10⁻⁵ m³" ; + :numericConversionFactor "1.0E-5"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "cl" . + +:centimetre + a :Unit ; + bamm:name "centimetre" ; + bamm:preferredName "centimetre"@en ; + :commonCode "CMT" ; + :conversionFactor "10⁻² m" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "cm" . + +:centimetreOfMercury0Degreesc + a :Unit ; + bamm:name "centimetreOfMercury0Degreesc" ; + bamm:preferredName "centimetre of mercury (0 °C)"@en ; + :commonCode "N13" ; + :conversionFactor "1.33322 × 10³ Pa" ; + :numericConversionFactor "1333.22"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "cmHg (0 °C)" . + +:centimetreOfWater4Degreesc + a :Unit ; + bamm:name "centimetreOfWater4Degreesc" ; + bamm:preferredName "centimetre of water (4 °C)"@en ; + :commonCode "N14" ; + :conversionFactor "9.80638 × 10 Pa" ; + :numericConversionFactor "9.806381"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "cmH₂O (4 °C)" . + +:centimetrePerBar + a :Unit ; + bamm:name "centimetrePerBar" ; + bamm:preferredName "centimetre per bar"@en ; + :commonCode "G04" ; + :conversionFactor "10⁻⁷ kg⁻¹ × m² × s²" ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :symbol "cm/bar" . + +:centimetrePerHour + a :Unit ; + bamm:name "centimetrePerHour" ; + bamm:preferredName "centimetre per hour"@en ; + :commonCode "H49" ; + :conversionFactor "0.277777778 × 10⁻⁶ m × s⁻¹" ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :symbol "cm/h" . + +:centimetrePerKelvin + a :Unit ; + bamm:name "centimetrePerKelvin" ; + bamm:preferredName "centimetre per kelvin"@en ; + :commonCode "F51" ; + :conversionFactor "10⁻² m × K⁻¹" ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :symbol "cm/K" . + +:centimetrePerSecond + a :Unit ; + bamm:name "centimetrePerSecond" ; + bamm:preferredName "centimetre per second"@en ; + :commonCode "2M" ; + :conversionFactor "10⁻² m/s" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "cm/s" . + +:centimetrePerSecondBar + a :Unit ; + bamm:name "centimetrePerSecondBar" ; + bamm:preferredName "centimetre per second bar"@en ; + :commonCode "J85" ; + :conversionFactor "10⁻⁷ (m/s)/Pa" ; + :numericConversionFactor "1.0E-7"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecondPascal ; + :symbol "(cm/s)/bar" . + +:centimetrePerSecondKelvin + a :Unit ; + bamm:name "centimetrePerSecondKelvin" ; + bamm:preferredName "centimetre per second kelvin"@en ; + :commonCode "J84" ; + :conversionFactor "10⁻² (m/s)/K" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecondKelvin ; + :symbol "(cm/s)/K" . + +:centimetrePerSecondSquared + a :Unit ; + bamm:name "centimetrePerSecondSquared" ; + bamm:preferredName "centimetre per second squared"@en ; + :commonCode "M39" ; + :conversionFactor "10⁻² m/s²" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :acceleration, :accelerationDueToGravity, :accelerationOfFreeFall ; + :referenceUnit :metrePerSecondSquared ; + :symbol "cm/s²" . + +:centinewtonMetre + a :Unit ; + bamm:name "centinewtonMetre" ; + bamm:preferredName "centinewton metre"@en ; + :commonCode "J72" ; + :conversionFactor "10⁻² N × m" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :newtonMetre ; + :symbol "cN·m" . + +:centipoise + a :Unit ; + bamm:name "centipoise" ; + bamm:preferredName "centipoise"@en ; + :commonCode "C7" ; + :conversionFactor "10⁻³ Pa × s" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "cP" . + +:centipoisePerBar + a :Unit ; + bamm:name "centipoisePerBar" ; + bamm:preferredName "centipoise per bar"@en ; + :commonCode "J74" ; + :conversionFactor "10⁻⁸ s" ; + :numericConversionFactor "1.0E-8"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :secondUnitOfTime ; + :symbol "cP/bar" . + +:centipoisePerKelvin + a :Unit ; + bamm:name "centipoisePerKelvin" ; + bamm:preferredName "centipoise per kelvin"@en ; + :commonCode "J73" ; + :conversionFactor "10⁻³ Pa × s/K" ; + :quantityKind :viscosityDynamicViscosity ; + :symbol "cP/K" . + +:centistokes + a :Unit ; + bamm:name "centistokes" ; + bamm:preferredName "centistokes"@en ; + :commonCode "4C" ; + :conversionFactor "10⁻⁶ m²/s" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :kinematicViscosity ; + :referenceUnit :squareMetrePerSecond ; + :symbol "cSt" . + +:chainBasedOnUsSurveyFoot + a :Unit ; + bamm:name "chainBasedOnUsSurveyFoot" ; + bamm:preferredName "chain (based on U.S. survey foot)"@en ; + :commonCode "M49" ; + :conversionFactor "2.011684 × 10 m" ; + :numericConversionFactor "2.0116841"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "ch (US survey)" . + +:circularMil + a :Unit ; + bamm:name "circularMil" ; + bamm:preferredName "circular mil"@en ; + :commonCode "M47" ; + :conversionFactor "5.067075 × 10⁻¹⁰ m²" ; + :numericConversionFactor "5.067075E-10"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "cmil" . + +:clo + a :Unit ; + bamm:name "clo" ; + bamm:preferredName "clo"@en ; + :commonCode "J83" ; + :conversionFactor "0.155 m² × K/W" ; + :numericConversionFactor "0.155"^^xsd:double ; + :quantityKind :coefficientOfThermalInsulation, :thermalInsulance ; + :referenceUnit :squareMetreKelvinPerWatt ; + :symbol "clo" . + +:coilGroup + a :Unit ; + bamm:name "coilGroup" ; + bamm:preferredName "coil group"@en ; + :commonCode "C9" . + +:commonYear + a :Unit ; + bamm:name "commonYear" ; + bamm:preferredName "common year"@en ; + :commonCode "L95" ; + :conversionFactor "3.1536 × 10⁷ s" ; + :numericConversionFactor "3.1536E7"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "y (365 days)" . + +:contentGram + a :Unit ; + bamm:name "contentGram" ; + bamm:preferredName "content gram"@en ; + :commonCode "CTG" . + +:contentTonMetric + a :Unit ; + bamm:name "contentTonMetric" ; + bamm:preferredName "content ton (metric)"@en ; + :commonCode "CTN" . + +:conventionalMetreOfWater + a :Unit ; + bamm:name "conventionalMetreOfWater" ; + bamm:preferredName "conventional metre of water"@en ; + :commonCode "N23" ; + :conversionFactor "9.80665 × 10³ Pa" ; + :numericConversionFactor "9806.65"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "mH₂O" . + +:cord + a :Unit ; + bamm:name "cord" ; + bamm:preferredName "cord"@en ; + :commonCode "WCD" ; + :conversionFactor "3.63 m³" ; + :numericConversionFactor "3.63"^^xsd:double ; + :referenceUnit :cubicMetre . + +:cord128Ft3 + a :Unit ; + bamm:name "cord128Ft3" ; + bamm:preferredName "cord (128 ft3)"@en ; + :commonCode "M68" ; + :conversionFactor "3.624556 m³" ; + :numericConversionFactor "3.624556"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "cord" . + +:coulomb + a :Unit ; + bamm:name "coulomb" ; + bamm:preferredName "coulomb"@en ; + :commonCode "COU" ; + :conversionFactor "A × s" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :elementaryCharge, :quantityOfElectricity ; + :referenceUnit :ampereSecond ; + :symbol "C" . + +:coulombMetre + a :Unit ; + bamm:name "coulombMetre" ; + bamm:preferredName "coulomb metre"@en ; + :commonCode "A26" ; + :conversionFactor "A × s × m" ; + :quantityKind :electricDipoleMoment, :electricDipoleMomentOfMolecule ; + :symbol "C·m" . + +:coulombMetreSquaredPerVolt + a :Unit ; + bamm:name "coulombMetreSquaredPerVolt" ; + bamm:preferredName "coulomb metre squared per volt"@en ; + :commonCode "A27" ; + :conversionFactor "A² × s⁴/kg" ; + :quantityKind :electricPolarizabilityOfAMolecule ; + :symbol "C·m²/V" . + +:coulombPerCubicCentimetre + a :Unit ; + bamm:name "coulombPerCubicCentimetre" ; + bamm:preferredName "coulomb per cubic centimetre"@en ; + :commonCode "A28" ; + :conversionFactor "10⁶ C/m³" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :chargeDensity, :volumeDensityOfCharge, :volumicCharge ; + :referenceUnit :coulombPerCubicMetre ; + :symbol "C/cm³" . + +:coulombPerCubicMetre + a :Unit ; + bamm:name "coulombPerCubicMetre" ; + bamm:preferredName "coulomb per cubic metre"@en ; + :commonCode "A29" ; + :conversionFactor "C/m³" ; + :quantityKind :chargeDensity, :volumeDensityOfCharge, :volumicCharge ; + :symbol "C/m³" . + +:coulombPerCubicMillimetre + a :Unit ; + bamm:name "coulombPerCubicMillimetre" ; + bamm:preferredName "coulomb per cubic millimetre"@en ; + :commonCode "A30" ; + :conversionFactor "10⁹ C/m³" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :chargeDensity, :volumeDensityOfCharge, :volumicCharge ; + :referenceUnit :coulombPerCubicMetre ; + :symbol "C/mm³" . + +:coulombPerKilogram + a :Unit ; + bamm:name "coulombPerKilogram" ; + bamm:preferredName "coulomb per kilogram"@en ; + :commonCode "CKG" ; + :conversionFactor "A × s/kg" ; + :quantityKind :exposure ; + :symbol "C/kg" . + +:coulombPerKilogramSecond + a :Unit ; + bamm:name "coulombPerKilogramSecond" ; + bamm:preferredName "coulomb per kilogram second"@en ; + :commonCode "A31" ; + :conversionFactor "A/kg" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :exposureRate ; + :referenceUnit :amperePerKilogram ; + :symbol "C/(kg·s)" . + +:coulombPerMetre + a :Unit ; + bamm:name "coulombPerMetre" ; + bamm:preferredName "coulomb per metre"@en ; + :commonCode "P10" ; + :conversionFactor "m⁻¹ × s × A" ; + :quantityKind :lineicCharge ; + :symbol "C/m" . + +:coulombPerMole + a :Unit ; + bamm:name "coulombPerMole" ; + bamm:preferredName "coulomb per mole"@en ; + :commonCode "A32" ; + :conversionFactor "A × s/mol" ; + :quantityKind :faradayConstant ; + :symbol "C/mol" . + +:coulombPerSquareCentimetre + a :Unit ; + bamm:name "coulombPerSquareCentimetre" ; + bamm:preferredName "coulomb per square centimetre"@en ; + :commonCode "A33" ; + :conversionFactor "10⁴ C/m²" ; + :numericConversionFactor "10000.0"^^xsd:double ; + :quantityKind :displacementElectricPolarization, :electricFluxDensity, :surfaceDensityOfCharge ; + :referenceUnit :coulombPerSquareMetre ; + :symbol "C/cm²" . + +:coulombPerSquareMetre + a :Unit ; + bamm:name "coulombPerSquareMetre" ; + bamm:preferredName "coulomb per square metre"@en ; + :commonCode "A34" ; + :conversionFactor "C/m²" ; + :quantityKind :displacementElectricPolarization, :electricFluxDensity, :surfaceDensityOfCharge ; + :symbol "C/m²" . + +:coulombPerSquareMillimetre + a :Unit ; + bamm:name "coulombPerSquareMillimetre" ; + bamm:preferredName "coulomb per square millimetre"@en ; + :commonCode "A35" ; + :conversionFactor "10⁶ C/m²" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :displacementElectricPolarization, :electricFluxDensity, :surfaceDensityOfCharge ; + :referenceUnit :coulombPerSquareMetre ; + :symbol "C/mm²" . + +:coulombSquareMetrePerKilogram + a :Unit ; + bamm:name "coulombSquareMetrePerKilogram" ; + bamm:preferredName "coulomb square metre per kilogram"@en ; + :commonCode "J53" ; + :conversionFactor "C × m²/kg" ; + :quantityKind :exposure ; + :symbol "C·m²/kg" . + +:credit + a :Unit ; + bamm:name "credit" ; + bamm:preferredName "credit"@en ; + :commonCode "B17" . + +:cubicCentimetre + a :Unit ; + bamm:name "cubicCentimetre" ; + bamm:preferredName "cubic centimetre"@en ; + :commonCode "CMQ" ; + :conversionFactor "10⁻⁶ m³" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "cm³" . + +:cubicCentimetrePerBar + a :Unit ; + bamm:name "cubicCentimetrePerBar" ; + bamm:preferredName "cubic centimetre per bar"@en ; + :commonCode "G94" ; + :conversionFactor "10⁻¹¹ kg⁻¹ × m⁴ × s²" ; + :quantityKind :volume ; + :symbol "cm³/bar" . + +:cubicCentimetrePerCubicMetre + a :Unit ; + bamm:name "cubicCentimetrePerCubicMetre" ; + bamm:preferredName "cubic centimetre per cubic metre"@en ; + :commonCode "J87" ; + :conversionFactor "10⁻⁶" ; + :quantityKind :volumeRatio ; + :symbol "cm³/m³" . + +:cubicCentimetrePerDay + a :Unit ; + bamm:name "cubicCentimetrePerDay" ; + bamm:preferredName "cubic centimetre per day"@en ; + :commonCode "G47" ; + :conversionFactor "1.15741 × 10⁻¹¹ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "cm³/d" . + +:cubicCentimetrePerDayBar + a :Unit ; + bamm:name "cubicCentimetrePerDayBar" ; + bamm:preferredName "cubic centimetre per day bar"@en ; + :commonCode "G78" ; + :conversionFactor "1.15741 × 10⁻¹⁶ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "cm³/(d·bar)" . + +:cubicCentimetrePerDayKelvin + a :Unit ; + bamm:name "cubicCentimetrePerDayKelvin" ; + bamm:preferredName "cubic centimetre per day kelvin"@en ; + :commonCode "G61" ; + :conversionFactor "1.15741 × 10⁻¹¹ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "cm³/(d·K)" . + +:cubicCentimetrePerHour + a :Unit ; + bamm:name "cubicCentimetrePerHour" ; + bamm:preferredName "cubic centimetre per hour"@en ; + :commonCode "G48" ; + :conversionFactor "2.77778 × 10⁻¹⁰ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "cm³/h" . + +:cubicCentimetrePerHourBar + a :Unit ; + bamm:name "cubicCentimetrePerHourBar" ; + bamm:preferredName "cubic centimetre per hour bar"@en ; + :commonCode "G79" ; + :conversionFactor "2.77778 × 10⁻¹⁵ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "cm³/(h·bar)" . + +:cubicCentimetrePerHourKelvin + a :Unit ; + bamm:name "cubicCentimetrePerHourKelvin" ; + bamm:preferredName "cubic centimetre per hour kelvin"@en ; + :commonCode "G62" ; + :conversionFactor "2.77778 × 10⁻¹⁰ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "cm³/(h·K)" . + +:cubicCentimetrePerKelvin + a :Unit ; + bamm:name "cubicCentimetrePerKelvin" ; + bamm:preferredName "cubic centimetre per kelvin"@en ; + :commonCode "G27" ; + :conversionFactor "10⁻⁶ m³ × K⁻¹" ; + :quantityKind :volumePerTemperature ; + :symbol "cm³/K" . + +:cubicCentimetrePerMinute + a :Unit ; + bamm:name "cubicCentimetrePerMinute" ; + bamm:preferredName "cubic centimetre per minute"@en ; + :commonCode "G49" ; + :conversionFactor "1.66667 × 10⁻⁸ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "cm³/min" . + +:cubicCentimetrePerMinuteBar + a :Unit ; + bamm:name "cubicCentimetrePerMinuteBar" ; + bamm:preferredName "cubic centimetre per minute bar"@en ; + :commonCode "G80" ; + :conversionFactor "1.66667 × 10⁻¹³ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "cm³/(min·bar)" . + +:cubicCentimetrePerMinuteKelvin + a :Unit ; + bamm:name "cubicCentimetrePerMinuteKelvin" ; + bamm:preferredName "cubic centimetre per minute kelvin"@en ; + :commonCode "G63" ; + :conversionFactor "1.66667 × 10⁻⁸ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "cm³/(min·K)" . + +:cubicCentimetrePerMole + a :Unit ; + bamm:name "cubicCentimetrePerMole" ; + bamm:preferredName "cubic centimetre per mole"@en ; + :commonCode "A36" ; + :conversionFactor "10⁻⁶ m³/mol" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :molarVolume ; + :referenceUnit :cubicMetrePerMole ; + :symbol "cm³/mol" . + +:cubicCentimetrePerSecond + a :Unit ; + bamm:name "cubicCentimetrePerSecond" ; + bamm:preferredName "cubic centimetre per second"@en ; + :commonCode "2J" ; + :conversionFactor "10⁻⁶ m³/s" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "cm³/s" . + +:cubicCentimetrePerSecondBar + a :Unit ; + bamm:name "cubicCentimetrePerSecondBar" ; + bamm:preferredName "cubic centimetre per second bar"@en ; + :commonCode "G81" ; + :conversionFactor "10⁻¹¹ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "cm³/(s·bar)" . + +:cubicCentimetrePerSecondKelvin + a :Unit ; + bamm:name "cubicCentimetrePerSecondKelvin" ; + bamm:preferredName "cubic centimetre per second kelvin"@en ; + :commonCode "G64" ; + :conversionFactor "10⁻⁶ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "cm³/(s·K)" . + +:cubicDecametre + a :Unit ; + bamm:name "cubicDecametre" ; + bamm:preferredName "cubic decametre"@en ; + :commonCode "DMA" ; + :conversionFactor "10³ m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "dam³" . + +:cubicDecimetre + a :Unit ; + bamm:name "cubicDecimetre" ; + bamm:preferredName "cubic decimetre"@en ; + :commonCode "DMQ" ; + :conversionFactor "10⁻³ m³" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "dm³" . + +:cubicDecimetrePerCubicMetre + a :Unit ; + bamm:name "cubicDecimetrePerCubicMetre" ; + bamm:preferredName "cubic decimetre per cubic metre"@en ; + :commonCode "J91" ; + :conversionFactor "10⁻³" ; + :quantityKind :volumeRatio ; + :symbol "dm³/m³" . + +:cubicDecimetrePerDay + a :Unit ; + bamm:name "cubicDecimetrePerDay" ; + bamm:preferredName "cubic decimetre per day"@en ; + :commonCode "J90" ; + :conversionFactor "1.15741 × 10⁻⁸ m³/s" ; + :numericConversionFactor "1.15741E-8"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "dm³/d" . + +:cubicDecimetrePerHour + a :Unit ; + bamm:name "cubicDecimetrePerHour" ; + bamm:preferredName "cubic decimetre per hour"@en ; + :commonCode "E92" ; + :conversionFactor "2.77778 × 10⁻⁷ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "dm³/h" . + +:cubicDecimetrePerKilogram + a :Unit ; + bamm:name "cubicDecimetrePerKilogram" ; + bamm:preferredName "cubic decimetre per kilogram"@en ; + :commonCode "N28" ; + :conversionFactor "10⁻³ m³ × kg⁻¹" ; + :quantityKind :massicVolume, :specificVolume ; + :symbol "dm³/kg" . + +:cubicDecimetrePerMinute + a :Unit ; + bamm:name "cubicDecimetrePerMinute" ; + bamm:preferredName "cubic decimetre per minute"@en ; + :commonCode "J92" ; + :conversionFactor "1.66667 × 10⁻⁵ m³/s" ; + :numericConversionFactor "1.66667E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "dm³/min" . + +:cubicDecimetrePerMole + a :Unit ; + bamm:name "cubicDecimetrePerMole" ; + bamm:preferredName "cubic decimetre per mole"@en ; + :commonCode "A37" ; + :conversionFactor "10⁻³ m³/mol" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :molarVolume ; + :referenceUnit :cubicMetrePerMole ; + :symbol "dm³/mol" . + +:cubicDecimetrePerSecond + a :Unit ; + bamm:name "cubicDecimetrePerSecond" ; + bamm:preferredName "cubic decimetre per second"@en ; + :commonCode "J93" ; + :conversionFactor "10⁻³ m³/s" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "dm³/s" . + +:cubicFoot + a :Unit ; + bamm:name "cubicFoot" ; + bamm:preferredName "cubic foot"@en ; + :commonCode "FTQ" ; + :conversionFactor "2.831685 × 10⁻² m³" ; + :numericConversionFactor "0.02831685"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "ft³" . + +:cubicFootPerDay + a :Unit ; + bamm:name "cubicFootPerDay" ; + bamm:preferredName "cubic foot per day"@en ; + :commonCode "K22" ; + :conversionFactor "3.277413 × 10⁻⁷ m³/s" ; + :numericConversionFactor "3.277413E-7"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "ft³/d" . + +:cubicFootPerDegreeFahrenheit + a :Unit ; + bamm:name "cubicFootPerDegreeFahrenheit" ; + bamm:preferredName "cubic foot per degree Fahrenheit"@en ; + :commonCode "K21" ; + :conversionFactor "5.097033 × 10⁻² m³/K" ; + :numericConversionFactor "0.05097033"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetrePerKelvin ; + :symbol "ft³/°F" . + +:cubicFootPerHour + a :Unit ; + bamm:name "cubicFootPerHour" ; + bamm:preferredName "cubic foot per hour"@en ; + :commonCode "2K" ; + :conversionFactor "7.86579 × 10⁻⁶ m³/s" ; + :numericConversionFactor "7.86579E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "ft³/h" . + +:cubicFootPerMinute + a :Unit ; + bamm:name "cubicFootPerMinute" ; + bamm:preferredName "cubic foot per minute"@en ; + :commonCode "2L" ; + :conversionFactor "4.719474 × 10⁻⁴ m³/s" ; + :numericConversionFactor "4.719474E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "ft³/min" . + +:cubicFootPerPound + a :Unit ; + bamm:name "cubicFootPerPound" ; + bamm:preferredName "cubic foot per pound"@en ; + :commonCode "N29" ; + :conversionFactor "6.242796 × 10⁻² m³/kg" ; + :numericConversionFactor "0.06242796"^^xsd:double ; + :quantityKind :massicVolume, :specificVolume ; + :referenceUnit :cubicMetrePerKilogram ; + :symbol "ft³/lb" . + +:cubicFootPerPsi + a :Unit ; + bamm:name "cubicFootPerPsi" ; + bamm:preferredName "cubic foot per psi"@en ; + :commonCode "K23" ; + :conversionFactor "4.107012 × 10⁻⁶ m³/Pa" ; + :numericConversionFactor "4.107012E-6"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetrePerPascal ; + :symbol "ft³/psi" . + +:cubicFootPerSecond + a :Unit ; + bamm:name "cubicFootPerSecond" ; + bamm:preferredName "cubic foot per second"@en ; + :commonCode "E17" ; + :conversionFactor "2.831685 × 10⁻² m³/s" ; + :numericConversionFactor "0.02831685"^^xsd:double ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "ft³/s" . + +:cubicHectometre + a :Unit ; + bamm:name "cubicHectometre" ; + bamm:preferredName "cubic hectometre"@en ; + :commonCode "H19" ; + :conversionFactor "10⁶ m³" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "hm³" . + +:cubicInch + a :Unit ; + bamm:name "cubicInch" ; + bamm:preferredName "cubic inch"@en ; + :commonCode "INQ" ; + :conversionFactor "16.387064 × 10⁻⁶ m³" ; + :numericConversionFactor "1.6387064E-5"^^xsd:double ; + :quantityKind :sectionModulus, :volume ; + :referenceUnit :cubicMetre ; + :symbol "in³" . + +:cubicInchPerHour + a :Unit ; + bamm:name "cubicInchPerHour" ; + bamm:preferredName "cubic inch per hour"@en ; + :commonCode "G56" ; + :conversionFactor "4.55196 × 10⁻⁹ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "in³/h" . + +:cubicInchPerMinute + a :Unit ; + bamm:name "cubicInchPerMinute" ; + bamm:preferredName "cubic inch per minute"@en ; + :commonCode "G57" ; + :conversionFactor "2.73118 × 10⁻⁷ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "in³/min" . + +:cubicInchPerPound + a :Unit ; + bamm:name "cubicInchPerPound" ; + bamm:preferredName "cubic inch per pound"@en ; + :commonCode "N30" ; + :conversionFactor "3.612728 × 10⁻⁵ m³/kg" ; + :numericConversionFactor "3.612728E-5"^^xsd:double ; + :quantityKind :massicVolume, :specificVolume ; + :referenceUnit :cubicMetrePerKilogram ; + :symbol "in³/lb" . + +:cubicInchPerSecond + a :Unit ; + bamm:name "cubicInchPerSecond" ; + bamm:preferredName "cubic inch per second"@en ; + :commonCode "G58" ; + :conversionFactor "1.63871 × 10⁻⁵ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "in³/s" . + +:cubicKilometre + a :Unit ; + bamm:name "cubicKilometre" ; + bamm:preferredName "cubic kilometre"@en ; + :commonCode "H20" ; + :conversionFactor "10⁹ m³" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "km³" . + +:cubicMetre + a :Unit ; + bamm:name "cubicMetre" ; + bamm:preferredName "cubic metre"@en ; + :commonCode "MTQ" ; + :conversionFactor "m³" ; + :quantityKind :sectionModulus, :volume ; + :symbol "m³" . + +:cubicMetrePerBar + a :Unit ; + bamm:name "cubicMetrePerBar" ; + bamm:preferredName "cubic metre per bar"@en ; + :commonCode "G96" ; + :conversionFactor "10⁻⁵ kg⁻¹ × m⁴ × s²" ; + :quantityKind :volume ; + :symbol "m³/bar" . + +:cubicMetrePerCoulomb + a :Unit ; + bamm:name "cubicMetrePerCoulomb" ; + bamm:preferredName "cubic metre per coulomb"@en ; + :commonCode "A38" ; + :conversionFactor "m³/A × s" ; + :quantityKind :hallCoefficient ; + :symbol "m³/C" . + +:cubicMetrePerCubicMetre + a :Unit ; + bamm:name "cubicMetrePerCubicMetre" ; + bamm:preferredName "cubic metre per cubic metre"@en ; + :commonCode "H60" ; + :conversionFactor "1.0" ; + :quantityKind :volumeRatio ; + :symbol "m³/m³" . + +:cubicMetrePerDay + a :Unit ; + bamm:name "cubicMetrePerDay" ; + bamm:preferredName "cubic metre per day"@en ; + :commonCode "G52" ; + :conversionFactor "1.15741 × 10⁻⁵ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "m³/d" . + +:cubicMetrePerDayBar + a :Unit ; + bamm:name "cubicMetrePerDayBar" ; + bamm:preferredName "cubic metre per day bar"@en ; + :commonCode "G86" ; + :conversionFactor "1.15741 × 10⁻¹⁰ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "m³/(d·bar)" . + +:cubicMetrePerDayKelvin + a :Unit ; + bamm:name "cubicMetrePerDayKelvin" ; + bamm:preferredName "cubic metre per day kelvin"@en ; + :commonCode "G69" ; + :conversionFactor "1.15741 × 10⁻⁵ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "m³/(d·K)" . + +:cubicMetrePerHour + a :Unit ; + bamm:name "cubicMetrePerHour" ; + bamm:preferredName "cubic metre per hour"@en ; + :commonCode "MQH" ; + :conversionFactor "2.77778 × 10⁻⁴ m³/s" ; + :numericConversionFactor "2.77778E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "m³/h" . + +:cubicMetrePerHourBar + a :Unit ; + bamm:name "cubicMetrePerHourBar" ; + bamm:preferredName "cubic metre per hour bar"@en ; + :commonCode "G87" ; + :conversionFactor "2.77778 × 10⁻⁹ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "m³/(h·bar)" . + +:cubicMetrePerHourKelvin + a :Unit ; + bamm:name "cubicMetrePerHourKelvin" ; + bamm:preferredName "cubic metre per hour kelvin"@en ; + :commonCode "G70" ; + :conversionFactor "2.77778 × 10⁻⁴ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "m³/(h·K)" . + +:cubicMetrePerKelvin + a :Unit ; + bamm:name "cubicMetrePerKelvin" ; + bamm:preferredName "cubic metre per kelvin"@en ; + :commonCode "G29" ; + :conversionFactor "m³ × K⁻¹" ; + :quantityKind :volumePerTemperature ; + :symbol "m³/K" . + +:cubicMetrePerKilogram + a :Unit ; + bamm:name "cubicMetrePerKilogram" ; + bamm:preferredName "cubic metre per kilogram"@en ; + :commonCode "A39" ; + :conversionFactor "m³/kg" ; + :quantityKind :massicVolume, :specificVolume ; + :symbol "m³/kg" . + +:cubicMetrePerMinute + a :Unit ; + bamm:name "cubicMetrePerMinute" ; + bamm:preferredName "cubic metre per minute"@en ; + :commonCode "G53" ; + :conversionFactor "1.66667 × 10⁻² m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "m³/min" . + +:cubicMetrePerMinuteBar + a :Unit ; + bamm:name "cubicMetrePerMinuteBar" ; + bamm:preferredName "cubic metre per minute bar"@en ; + :commonCode "G88" ; + :conversionFactor "1.66667 × 10⁻⁷ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "m³/(min·bar)" . + +:cubicMetrePerMinuteKelvin + a :Unit ; + bamm:name "cubicMetrePerMinuteKelvin" ; + bamm:preferredName "cubic metre per minute kelvin"@en ; + :commonCode "G71" ; + :conversionFactor "1.66667 × 10⁻² m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "m³/(min·K)" . + +:cubicMetrePerMole + a :Unit ; + bamm:name "cubicMetrePerMole" ; + bamm:preferredName "cubic metre per mole"@en ; + :commonCode "A40" ; + :conversionFactor "m³/mol" ; + :quantityKind :molarVolume ; + :symbol "m³/mol" . + +:cubicMetrePerPascal + a :Unit ; + bamm:name "cubicMetrePerPascal" ; + bamm:preferredName "cubic metre per pascal"@en ; + :commonCode "M71" ; + :conversionFactor "kg⁻¹ × m⁴ × s²" ; + :quantityKind :volume ; + :symbol "m³/Pa" . + +:cubicMetrePerSecond + a :Unit ; + bamm:name "cubicMetrePerSecond" ; + bamm:preferredName "cubic metre per second"@en ; + :commonCode "MQS" ; + :conversionFactor "m³/s" ; + :quantityKind :instantaneousVolumeFlowRate, :recombinationCoefficient, :volumeFlowRate ; + :symbol "m³/s" . + +:cubicMetrePerSecondBar + a :Unit ; + bamm:name "cubicMetrePerSecondBar" ; + bamm:preferredName "cubic metre per second bar"@en ; + :commonCode "G89" ; + :conversionFactor "10⁻⁵ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "m³/(s·bar)" . + +:cubicMetrePerSecondKelvin + a :Unit ; + bamm:name "cubicMetrePerSecondKelvin" ; + bamm:preferredName "cubic metre per second kelvin"@en ; + :commonCode "G72" ; + :conversionFactor "m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "m³/(s·K)" . + +:cubicMetrePerSecondPascal + a :Unit ; + bamm:name "cubicMetrePerSecondPascal" ; + bamm:preferredName "cubic metre per second pascal"@en ; + :commonCode "N45" ; + :conversionFactor "kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "(m³/s)/Pa" . + +:cubicMetrePerSecondSquareMetre + a :Unit ; + bamm:name "cubicMetrePerSecondSquareMetre" ; + bamm:preferredName "cubic metre per second square metre"@en ; + :commonCode "P87" ; + :conversionFactor "m/s" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :porosity ; + :referenceUnit :metrePerSecond ; + :symbol "(m³/s)/m²" . + +:cubicMicrometre + a :Unit ; + bamm:name "cubicMicrometre" ; + bamm:preferredName "cubic micrometre"@en ; + :conversionFactor "10⁻¹⁸ m³" ; + :numericConversionFactor "1.0E-18"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "µm³" . + +:cubicMileUkStatute + a :Unit ; + bamm:name "cubicMileUkStatute" ; + bamm:preferredName "cubic mile (UK statute)"@en ; + :commonCode "M69" ; + :conversionFactor "4.168182 × 10⁹ m³" ; + :numericConversionFactor "4.168182E9"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "mi³" . + +:cubicMillimetre + a :Unit ; + bamm:name "cubicMillimetre" ; + bamm:preferredName "cubic millimetre"@en ; + :commonCode "MMQ" ; + :conversionFactor "10⁻⁹ m³" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "mm³" . + +:cubicMillimetrePerCubicMetre + a :Unit ; + bamm:name "cubicMillimetrePerCubicMetre" ; + bamm:preferredName "cubic millimetre per cubic metre"@en ; + :commonCode "L21" ; + :conversionFactor "10⁹" ; + :quantityKind :volumeRatio ; + :symbol "mm³/m³" . + +:cubicYard + a :Unit ; + bamm:name "cubicYard" ; + bamm:preferredName "cubic yard"@en ; + :commonCode "YDQ" ; + :conversionFactor "0.764555 m³" ; + :numericConversionFactor "0.764555"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "yd³" . + +:cubicYardPerDay + a :Unit ; + bamm:name "cubicYardPerDay" ; + bamm:preferredName "cubic yard per day"@en ; + :commonCode "M12" ; + :conversionFactor "8.849015 × 10⁻⁶ m³/s" ; + :numericConversionFactor "8.849015E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "yd³/d" . + +:cubicYardPerDegreeFahrenheit + a :Unit ; + bamm:name "cubicYardPerDegreeFahrenheit" ; + bamm:preferredName "cubic yard per degree Fahrenheit"@en ; + :commonCode "M11" ; + :conversionFactor "1.376199 m³/K" ; + :numericConversionFactor "1.376199"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetrePerKelvin ; + :symbol "yd³/°F" . + +:cubicYardPerHour + a :Unit ; + bamm:name "cubicYardPerHour" ; + bamm:preferredName "cubic yard per hour"@en ; + :commonCode "M13" ; + :conversionFactor "2.123764 × 10⁻⁴ m³/s" ; + :numericConversionFactor "2.123764E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "yd³/h" . + +:cubicYardPerMinute + a :Unit ; + bamm:name "cubicYardPerMinute" ; + bamm:preferredName "cubic yard per minute"@en ; + :commonCode "M15" ; + :conversionFactor "1.274258 × 10⁻² m³/s" ; + :numericConversionFactor "0.01274258"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "yd³/min" . + +:cubicYardPerPsi + a :Unit ; + bamm:name "cubicYardPerPsi" ; + bamm:preferredName "cubic yard per psi"@en ; + :commonCode "M14" ; + :conversionFactor "1.108893 × 10⁻⁴ m³/Pa" ; + :numericConversionFactor "1.108893E-4"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetrePerPascal ; + :symbol "yd³/psi" . + +:cubicYardPerSecond + a :Unit ; + bamm:name "cubicYardPerSecond" ; + bamm:preferredName "cubic yard per second"@en ; + :commonCode "M16" ; + :conversionFactor "0.7645549 m³/s" ; + :numericConversionFactor "0.7645549"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "yd³/s" . + +:cupUnitOfVolume + a :Unit ; + bamm:name "cupUnitOfVolume" ; + bamm:preferredName "cup [unit of volume]"@en ; + :commonCode "G21" ; + :conversionFactor "2.365882 × 10⁻⁴ m³" ; + :numericConversionFactor "2.365882E-4"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "cup (US)" . + +:curie + a :Unit ; + bamm:name "curie" ; + bamm:preferredName "curie"@en ; + :commonCode "CUR" ; + :conversionFactor "3.7 × 10¹⁰ Bq" ; + :numericConversionFactor "3.7E10"^^xsd:double ; + :quantityKind :activity ; + :referenceUnit :becquerel ; + :symbol "Ci" . + +:curiePerKilogram + a :Unit ; + bamm:name "curiePerKilogram" ; + bamm:preferredName "curie per kilogram"@en ; + :commonCode "A42" ; + :conversionFactor "3.7 × 10¹⁰ Bq/kg" ; + :numericConversionFactor "3.7E10"^^xsd:double ; + :quantityKind :specificActivityInASample ; + :referenceUnit :becquerelPerKilogram ; + :symbol "Ci/kg" . + +:cycle + a :Unit ; + bamm:name "cycle" ; + bamm:preferredName "cycle"@en ; + :commonCode "B7" . + +:day + a :Unit ; + bamm:name "day" ; + bamm:preferredName "day"@en ; + :commonCode "DAY" ; + :conversionFactor "86400 s" ; + :numericConversionFactor "86400.0"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "d" . + +:deadweightTonnage + a :Unit ; + bamm:name "deadweightTonnage" ; + bamm:preferredName "deadweight tonnage"@en ; + :commonCode "A43" ; + :symbol "dwt" . + +:decade + a :Unit ; + bamm:name "decade" ; + bamm:preferredName "decade"@en ; + :commonCode "DEC" . + +:decadeLogarithmic + a :Unit ; + bamm:name "decadeLogarithmic" ; + bamm:preferredName "decade (logarithmic)"@en ; + :commonCode "P41" ; + :conversionFactor "dec" ; + :quantityKind :logarithmicDecrement ; + :symbol "dec" . + +:decagram + a :Unit ; + bamm:name "decagram" ; + bamm:preferredName "decagram"@en ; + :commonCode "DJ" ; + :conversionFactor "10⁻² kg" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "dag" . + +:decalitre + a :Unit ; + bamm:name "decalitre" ; + bamm:preferredName "decalitre"@en ; + :commonCode "A44" ; + :conversionFactor "10⁻² m³" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "dal" . + +:decametre + a :Unit ; + bamm:name "decametre" ; + bamm:preferredName "decametre"@en ; + :commonCode "A45" ; + :conversionFactor "10 m" ; + :numericConversionFactor "10.0"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "dam" . + +:decapascal + a :Unit ; + bamm:name "decapascal" ; + bamm:preferredName "decapascal"@en ; + :commonCode "H75" ; + :conversionFactor "10¹ Pa" ; + :numericConversionFactor "10.0"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "daPa" . + +:decare + a :Unit ; + bamm:name "decare" ; + bamm:preferredName "decare"@en ; + :commonCode "DAA" ; + :conversionFactor "10³ m²" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "daa" . + +:decibel + a :Unit ; + bamm:name "decibel" ; + bamm:preferredName "decibel"@en ; + :commonCode "2N" ; + :conversionFactor "0.1151293 Np" ; + :numericConversionFactor "0.1151293"^^xsd:double ; + :quantityKind :levelOfAFieldQuantity, :levelOfAPowerQuantity, :soundPowerLevel, :soundPressureLevel, :soundReductionIndex ; + :referenceUnit :neper ; + :symbol "dB" . + +:decibelPerKilometre + a :Unit ; + bamm:name "decibelPerKilometre" ; + bamm:preferredName "decibel per kilometre"@en ; + :commonCode "H51" ; + :conversionFactor "10⁻⁴ B/m" ; + :numericConversionFactor "1.0E-4"^^xsd:double ; + :quantityKind :soundPowerLevel, :soundPressureLevel ; + :referenceUnit :belPerMetre ; + :symbol "dB/km" . + +:decibelPerMetre + a :Unit ; + bamm:name "decibelPerMetre" ; + bamm:preferredName "decibel per metre"@en ; + :commonCode "H52" ; + :conversionFactor "10⁻¹ B/m" ; + :numericConversionFactor "0.1"^^xsd:double ; + :quantityKind :soundPowerLevel, :soundPressureLevel ; + :referenceUnit :belPerMetre ; + :symbol "dB/m" . + +:decigram + a :Unit ; + bamm:name "decigram" ; + bamm:preferredName "decigram"@en ; + :commonCode "DG" ; + :conversionFactor "10⁻⁴ kg" ; + :numericConversionFactor "1.0E-4"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "dg" . + +:decilitre + a :Unit ; + bamm:name "decilitre" ; + bamm:preferredName "decilitre"@en ; + :commonCode "DLT" ; + :conversionFactor "10⁻⁴ m³" ; + :numericConversionFactor "1.0E-4"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "dl" . + +:decilitrePerGram + a :Unit ; + bamm:name "decilitrePerGram" ; + bamm:preferredName "decilitre per gram"@en ; + :commonCode "22" ; + :conversionFactor "10⁻¹ × m³/kg" ; + :numericConversionFactor "0.1"^^xsd:double ; + :quantityKind :massicVolume, :specificVolume ; + :referenceUnit :cubicMetrePerKilogram ; + :symbol "dl/g" . + +:decimetre + a :Unit ; + bamm:name "decimetre" ; + bamm:preferredName "decimetre"@en ; + :commonCode "DMT" ; + :conversionFactor "10⁻¹ m" ; + :numericConversionFactor "0.1"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "dm" . + +:decinewtonMetre + a :Unit ; + bamm:name "decinewtonMetre" ; + bamm:preferredName "decinewton metre"@en ; + :commonCode "DN" ; + :conversionFactor "10⁻¹ N × m" ; + :numericConversionFactor "0.1"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :newtonMetre ; + :symbol "dN·m" . + +:decitex + a :Unit ; + bamm:name "decitex" ; + bamm:preferredName "decitex"@en ; + :commonCode "A47" ; + :symbol "dtex (g/10km)" . + +:decitonne + a :Unit ; + bamm:name "decitonne" ; + bamm:preferredName "decitonne"@en ; + :commonCode "DTN" ; + :conversionFactor "10² kg" ; + :numericConversionFactor "100.0"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "dt or dtn" . + +:degreeApi + a :Unit ; + bamm:name "degreeApi" ; + bamm:preferredName "degree API"@en ; + :commonCode "J13" ; + :symbol "°API" . + +:degreeBalling + a :Unit ; + bamm:name "degreeBalling" ; + bamm:preferredName "degree Balling"@en ; + :commonCode "J17" ; + :symbol "°Balling" . + +:degreeBaumeOriginScale + a :Unit ; + bamm:name "degreeBaumeOriginScale" ; + bamm:preferredName "degree Baume (origin scale)"@en ; + :commonCode "J14" ; + :symbol "°Bé" . + +:degreeBaumeUsHeavy + a :Unit ; + bamm:name "degreeBaumeUsHeavy" ; + bamm:preferredName "degree Baume (US heavy)"@en ; + :commonCode "J15" ; + :symbol "°Bé (US heavy)" . + +:degreeBaumeUsLight + a :Unit ; + bamm:name "degreeBaumeUsLight" ; + bamm:preferredName "degree Baume (US light)"@en ; + :commonCode "J16" ; + :symbol "°Bé (US light)" . + +:degreeBrix + a :Unit ; + bamm:name "degreeBrix" ; + bamm:preferredName "degree Brix"@en ; + :commonCode "J18" ; + :symbol "°Bx" . + +:degreeCelsius + a :Unit ; + bamm:name "degreeCelsius" ; + bamm:preferredName "degree Celsius"@en ; + :commonCode "CEL" ; + :conversionFactor "1 × K" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :temperature ; + :referenceUnit :kelvin ; + :symbol "°C" . + +:degreeCelsiusPerBar + a :Unit ; + bamm:name "degreeCelsiusPerBar" ; + bamm:preferredName "degree Celsius per bar"@en ; + :commonCode "F60" ; + :conversionFactor "10⁻⁵ kg⁻¹ × m × s² × K" ; + :quantityKind :temperature ; + :symbol "°C/bar" . + +:degreeCelsiusPerHour + a :Unit ; + bamm:name "degreeCelsiusPerHour" ; + bamm:preferredName "degree Celsius per hour"@en ; + :commonCode "H12" ; + :conversionFactor "2.77778 × 10⁻⁴ s⁻¹ K" ; + :quantityKind :temperature ; + :symbol "°C/h" . + +:degreeCelsiusPerKelvin + a :Unit ; + bamm:name "degreeCelsiusPerKelvin" ; + bamm:preferredName "degree Celsius per kelvin"@en ; + :commonCode "E98" ; + :conversionFactor "1.0" ; + :quantityKind :temperature ; + :symbol "°C/K" . + +:degreeCelsiusPerMinute + a :Unit ; + bamm:name "degreeCelsiusPerMinute" ; + bamm:preferredName "degree Celsius per minute"@en ; + :commonCode "H13" ; + :conversionFactor "1.66667 × 10⁻² s⁻¹ K" ; + :quantityKind :temperature ; + :symbol "°C/min" . + +:degreeCelsiusPerSecond + a :Unit ; + bamm:name "degreeCelsiusPerSecond" ; + bamm:preferredName "degree Celsius per second"@en ; + :commonCode "H14" ; + :conversionFactor "s⁻¹ K" ; + :quantityKind :temperature ; + :symbol "°C/s" . + +:degreeDay + a :Unit ; + bamm:name "degreeDay" ; + bamm:preferredName "degree day"@en ; + :commonCode "E10" ; + :symbol "deg da" . + +:degreeFahrenheit + a :Unit ; + bamm:name "degreeFahrenheit" ; + bamm:preferredName "degree Fahrenheit"@en ; + :commonCode "FAH" ; + :conversionFactor "5/9 × K" ; + :quantityKind :fahrenheitTemperature ; + :symbol "°F" . + +:degreeFahrenheitHourPerBritishThermalUnitInternationalTable + a :Unit ; + bamm:name "degreeFahrenheitHourPerBritishThermalUnitInternationalTable" ; + bamm:preferredName "degree Fahrenheit hour per British thermal unit (international table)"@en ; + :commonCode "N84" ; + :conversionFactor "1.895634 K/W" ; + :numericConversionFactor "1.895634"^^xsd:double ; + :quantityKind :thermalResistance ; + :referenceUnit :kelvinPerWatt ; + :symbol "°F/(BtuIT/h)" . + +:degreeFahrenheitHourPerBritishThermalUnitThermochemical + a :Unit ; + bamm:name "degreeFahrenheitHourPerBritishThermalUnitThermochemical" ; + bamm:preferredName "degree Fahrenheit hour per British thermal unit (thermochemical)"@en ; + :commonCode "N85" ; + :conversionFactor "1.896903 K/W" ; + :numericConversionFactor "1.896903"^^xsd:double ; + :quantityKind :thermalResistance ; + :referenceUnit :kelvinPerWatt ; + :symbol "°F/(Btuth/h)" . + +:degreeFahrenheitHourSquareFootPerBritishThermalUnitInternationalTable + a :Unit ; + bamm:name "degreeFahrenheitHourSquareFootPerBritishThermalUnitInternationalTable" ; + bamm:preferredName "degree Fahrenheit hour square foot per British thermal unit (international table)"@en ; + :commonCode "J22" ; + :conversionFactor "0.1761102 m² × K/W" ; + :numericConversionFactor "0.1761102"^^xsd:double ; + :quantityKind :coefficientOfThermalInsulation, :thermalInsulance ; + :referenceUnit :squareMetreKelvinPerWatt ; + :symbol "°F·h·ft²/BtuIT" . + +:degreeFahrenheitHourSquareFootPerBritishThermalUnitInternationalTableInch + a :Unit ; + bamm:name "degreeFahrenheitHourSquareFootPerBritishThermalUnitInternationalTableInch" ; + bamm:preferredName "degree Fahrenheit hour square foot per British thermal unit (international table) inch"@en ; + :commonCode "N88" ; + :conversionFactor "6.933472 K × m/W" ; + :numericConversionFactor "6.933472"^^xsd:double ; + :quantityKind :thermalResistance ; + :referenceUnit :kelvinMetrePerWatt ; + :symbol "°F·h·ft²/(BtuIT·in)" . + +:degreeFahrenheitHourSquareFootPerBritishThermalUnitThermochemical + a :Unit ; + bamm:name "degreeFahrenheitHourSquareFootPerBritishThermalUnitThermochemical" ; + bamm:preferredName "degree Fahrenheit hour square foot per British thermal unit (thermochemical)"@en ; + :commonCode "J19" ; + :conversionFactor "0.176228 m² × K/W" ; + :numericConversionFactor "0.176228"^^xsd:double ; + :quantityKind :coefficientOfThermalInsulation, :thermalInsulance ; + :referenceUnit :squareMetreKelvinPerWatt ; + :symbol "°F·h·ft²/Btuth" . + +:degreeFahrenheitHourSquareFootPerBritishThermalUnitThermochemicalInch + a :Unit ; + bamm:name "degreeFahrenheitHourSquareFootPerBritishThermalUnitThermochemicalInch" ; + bamm:preferredName "degree Fahrenheit hour square foot per British thermal unit (thermochemical) inch"@en ; + :commonCode "N89" ; + :conversionFactor "6.938112 K × m/W" ; + :numericConversionFactor "6.938112"^^xsd:double ; + :quantityKind :thermalResistance ; + :referenceUnit :kelvinMetrePerWatt ; + :symbol "°F·h·ft²/(Btuth·in)" . + +:degreeFahrenheitPerBar + a :Unit ; + bamm:name "degreeFahrenheitPerBar" ; + bamm:preferredName "degree Fahrenheit per bar"@en ; + :commonCode "J21" ; + :conversionFactor "0.5555556 × 10⁻⁵ K/Pa" ; + :numericConversionFactor "5.555556E-6"^^xsd:double ; + :quantityKind :temperature ; + :referenceUnit :kelvinPerPascal ; + :symbol "°F/bar" . + +:degreeFahrenheitPerHour + a :Unit ; + bamm:name "degreeFahrenheitPerHour" ; + bamm:preferredName "degree Fahrenheit per hour"@en ; + :commonCode "J23" ; + :conversionFactor "1.543210 × 10⁻⁴ K/s" ; + :numericConversionFactor "1.54321E-4"^^xsd:double ; + :quantityKind :temperatureVariationOverTime ; + :referenceUnit :kelvinPerSecond ; + :symbol "°F/h" . + +:degreeFahrenheitPerKelvin + a :Unit ; + bamm:name "degreeFahrenheitPerKelvin" ; + bamm:preferredName "degree Fahrenheit per kelvin"@en ; + :commonCode "J20" ; + :conversionFactor "0.5555556" ; + :quantityKind :temperature ; + :symbol "°F/K" . + +:degreeFahrenheitPerMinute + a :Unit ; + bamm:name "degreeFahrenheitPerMinute" ; + bamm:preferredName "degree Fahrenheit per minute"@en ; + :commonCode "J24" ; + :conversionFactor "9.259259 × 10⁻³ K/s" ; + :numericConversionFactor "0.009259259"^^xsd:double ; + :quantityKind :temperatureVariationOverTime ; + :referenceUnit :kelvinPerSecond ; + :symbol "°F/min" . + +:degreeFahrenheitPerSecond + a :Unit ; + bamm:name "degreeFahrenheitPerSecond" ; + bamm:preferredName "degree Fahrenheit per second"@en ; + :commonCode "J25" ; + :conversionFactor "0.5555556 K/s" ; + :numericConversionFactor "0.5555556"^^xsd:double ; + :quantityKind :temperatureVariationOverTime ; + :referenceUnit :kelvinPerSecond ; + :symbol "°F/s" . + +:degreeFahrenheitSecondPerBritishThermalUnitInternationalTable + a :Unit ; + bamm:name "degreeFahrenheitSecondPerBritishThermalUnitInternationalTable" ; + bamm:preferredName "degree Fahrenheit second per British thermal unit (international table)"@en ; + :commonCode "N86" ; + :conversionFactor "5.265651 × 10⁻⁴ K/W" ; + :numericConversionFactor "5.265651E-4"^^xsd:double ; + :quantityKind :thermalResistance ; + :referenceUnit :kelvinPerWatt ; + :symbol "°F/(BtuIT/s)" . + +:degreeFahrenheitSecondPerBritishThermalUnitThermochemical + a :Unit ; + bamm:name "degreeFahrenheitSecondPerBritishThermalUnitThermochemical" ; + bamm:preferredName "degree Fahrenheit second per British thermal unit (thermochemical)"@en ; + :commonCode "N87" ; + :conversionFactor "5.269175 × 10⁻⁴ K/W" ; + :numericConversionFactor "5.269175E-4"^^xsd:double ; + :quantityKind :thermalResistance ; + :referenceUnit :kelvinPerWatt ; + :symbol "°F/(Btuth/s)" . + +:degreeOechsle + a :Unit ; + bamm:name "degreeOechsle" ; + bamm:preferredName "degree Oechsle"@en ; + :commonCode "J27" ; + :symbol "°Oechsle" . + +:degreePerMetre + a :Unit ; + bamm:name "degreePerMetre" ; + bamm:preferredName "degree per metre"@en ; + :commonCode "H27" ; + :conversionFactor "1.745329 × 10⁻² rad/m" ; + :numericConversionFactor "0.01745329"^^xsd:double ; + :quantityKind :solidAngle ; + :referenceUnit :radianPerMetre ; + :symbol "°/m" . + +:degreePerSecond + a :Unit ; + bamm:name "degreePerSecond" ; + bamm:preferredName "degree per second"@en ; + :commonCode "E96" ; + :conversionFactor "1.745329 × 10⁻² rad × s⁻¹" ; + :quantityKind :solidAngle ; + :symbol "°/s" . + +:degreePlato + a :Unit ; + bamm:name "degreePlato" ; + bamm:preferredName "degree Plato"@en ; + :commonCode "PLA" ; + :symbol "°P" . + +:degreeRankine + a :Unit ; + bamm:name "degreeRankine" ; + bamm:preferredName "degree Rankine"@en ; + :commonCode "A48" ; + :conversionFactor "5/9 × K" ; + :quantityKind :temperature ; + :symbol "°R" . + +:degreeRankinePerHour + a :Unit ; + bamm:name "degreeRankinePerHour" ; + bamm:preferredName "degree Rankine per hour"@en ; + :commonCode "J28" ; + :conversionFactor "1.543210 × 10⁻⁴ K/s" ; + :numericConversionFactor "1.54321E-4"^^xsd:double ; + :quantityKind :temperatureVariationOverTime ; + :referenceUnit :kelvinPerSecond ; + :symbol "°R/h" . + +:degreeRankinePerMinute + a :Unit ; + bamm:name "degreeRankinePerMinute" ; + bamm:preferredName "degree Rankine per minute"@en ; + :commonCode "J29" ; + :conversionFactor "9.259259 × 10⁻³ K/s" ; + :numericConversionFactor "0.009259259"^^xsd:double ; + :quantityKind :temperatureVariationOverTime ; + :referenceUnit :kelvinPerSecond ; + :symbol "°R/min" . + +:degreeRankinePerSecond + a :Unit ; + bamm:name "degreeRankinePerSecond" ; + bamm:preferredName "degree Rankine per second"@en ; + :commonCode "J30" ; + :conversionFactor "0.5555556 K/s" ; + :numericConversionFactor "0.5555556"^^xsd:double ; + :quantityKind :temperatureVariationOverTime ; + :referenceUnit :kelvinPerSecond ; + :symbol "°R/s" . + +:degreeTwaddell + a :Unit ; + bamm:name "degreeTwaddell" ; + bamm:preferredName "degree Twaddell"@en ; + :commonCode "J31" ; + :symbol "°Tw" . + +:degreeUnitOfAngle + a :Unit ; + bamm:name "degreeUnitOfAngle" ; + bamm:preferredName "degree [unit of angle]"@en ; + :commonCode "DD" ; + :conversionFactor "1.745329 × 10⁻² rad" ; + :numericConversionFactor "0.01745329"^^xsd:double ; + :quantityKind :anglePlane, :braggAngle ; + :referenceUnit :rad ; + :symbol "°" . + +:degreeUnitOfAnglePerSecondSquared + a :Unit ; + bamm:name "degreeUnitOfAnglePerSecondSquared" ; + bamm:preferredName "degree [unit of angle] per second squared"@en ; + :commonCode "M45" ; + :conversionFactor "1.745329 × 10⁻² rad / s" ; + :quantityKind :angularAcceleration ; + :symbol "°/s²" . + +:denier + a :Unit ; + bamm:name "denier" ; + bamm:preferredName "denier"@en ; + :commonCode "A49" ; + :conversionFactor "1.111111 × 10⁻⁷ kg/m" ; + :numericConversionFactor "1.111111E-7"^^xsd:double ; + :quantityKind :linearDensity, :linearMass ; + :referenceUnit :kilogramPerMetre ; + :symbol "den (g/9 km)" . + +:digit + a :Unit ; + bamm:name "digit" ; + bamm:preferredName "digit"@en ; + :commonCode "B19" . + +:dioptre + a :Unit ; + bamm:name "dioptre" ; + bamm:preferredName "dioptre"@en ; + :commonCode "Q25" ; + :conversionFactor "m⁻¹" ; + :numericConversionFactor "1.0"^^xsd:double ; + :referenceUnit :reciprocalMetre ; + :symbol "dpt" . + +:displacementTonnage + a :Unit ; + bamm:name "displacementTonnage" ; + bamm:preferredName "displacement tonnage"@en ; + :commonCode "DPT" . + +:dose + a :Unit ; + bamm:name "dose" ; + bamm:preferredName "dose"@en ; + :commonCode "E27" . + +:dotsPerInch + a :Unit ; + bamm:name "dotsPerInch" ; + bamm:preferredName "dots per inch"@en ; + :commonCode "E39" ; + :symbol "dpi" . + +:dozen + a :Unit ; + bamm:name "dozen" ; + bamm:preferredName "dozen"@en ; + :commonCode "DZN" ; + :conversionFactor "12" ; + :symbol "DOZ" . + +:dozenPack + a :Unit ; + bamm:name "dozenPack" ; + bamm:preferredName "dozen pack"@en ; + :commonCode "DZP" . + +:dozenPair + a :Unit ; + bamm:name "dozenPair" ; + bamm:preferredName "dozen pair"@en ; + :commonCode "DPR" . + +:dozenPiece + a :Unit ; + bamm:name "dozenPiece" ; + bamm:preferredName "dozen piece"@en ; + :commonCode "DPC" . + +:dozenRoll + a :Unit ; + bamm:name "dozenRoll" ; + bamm:preferredName "dozen roll"@en ; + :commonCode "DRL" . + +:dramUk + a :Unit ; + bamm:name "dramUk" ; + bamm:preferredName "dram (UK)"@en ; + :commonCode "DRI" ; + :conversionFactor "1.771745 g" ; + :numericConversionFactor "1.771745"^^xsd:double ; + :referenceUnit :gram . + +:dramUs + a :Unit ; + bamm:name "dramUs" ; + bamm:preferredName "dram (US)"@en ; + :commonCode "DRA" ; + :conversionFactor "3.887935 g" ; + :numericConversionFactor "3.887935"^^xsd:double ; + :referenceUnit :gram . + +:dryBarrelUs + a :Unit ; + bamm:name "dryBarrelUs" ; + bamm:preferredName "dry barrel (US)"@en ; + :commonCode "BLD" ; + :conversionFactor "1.15627 × 10⁻¹ m³" ; + :numericConversionFactor "0.115627"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "bbl (US)" . + +:dryGallonUs + a :Unit ; + bamm:name "dryGallonUs" ; + bamm:preferredName "dry gallon (US)"@en ; + :commonCode "GLD" ; + :conversionFactor "4.404884 × 10⁻³ m³" ; + :numericConversionFactor "0.004404884"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "dry gal (US)" . + +:dryPintUs + a :Unit ; + bamm:name "dryPintUs" ; + bamm:preferredName "dry pint (US)"@en ; + :commonCode "PTD" ; + :conversionFactor "5.506105 × 10⁻⁴ m³" ; + :numericConversionFactor "5.506105E-4"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "dry pt (US)" . + +:dryPound + a :Unit ; + bamm:name "dryPound" ; + bamm:preferredName "dry pound"@en ; + :commonCode "DB" . + +:dryQuartUs + a :Unit ; + bamm:name "dryQuartUs" ; + bamm:preferredName "dry quart (US)"@en ; + :commonCode "QTD" ; + :conversionFactor "1.101221 × 10⁻³ m³" ; + :numericConversionFactor "0.001101221"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "dry qt (US)" . + +:dryTon + a :Unit ; + bamm:name "dryTon" ; + bamm:preferredName "dry ton"@en ; + :commonCode "DT" . + +:dyneMetre + a :Unit ; + bamm:name "dyneMetre" ; + bamm:preferredName "dyne metre"@en ; + :commonCode "M97" ; + :conversionFactor "10⁻⁵ N × m" ; + :numericConversionFactor "1.0E-5"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :newtonMetre ; + :symbol "dyn·m" . + +:each + a :Unit ; + bamm:name "each" ; + bamm:preferredName "each"@en ; + :commonCode "EA" . + +:eightPartCloudCover + a :Unit ; + bamm:name "eightPartCloudCover" ; + bamm:preferredName "8-part cloud cover"@en ; + :commonCode "A59" . + +:electronicMailBox + a :Unit ; + bamm:name "electronicMailBox" ; + bamm:preferredName "electronic mail box"@en ; + :commonCode "EB" . + +:electronvolt + a :Unit ; + bamm:name "electronvolt" ; + bamm:preferredName "electronvolt"@en ; + :commonCode "A53" ; + :conversionFactor "1.602176487 × 10⁻¹⁹ J" ; + :numericConversionFactor "1.602176487E-19"^^xsd:double ; + :quantityKind :betaDisintegrationEnergy, :energy, :fermiEnergy, :kineticEnergy, :maximumBetaParticleEnergy, :potentialEnergy, :resonanceEnergy, :work ; + :referenceUnit :joule ; + :symbol "eV" . + +:electronvoltPerMetre + a :Unit ; + bamm:name "electronvoltPerMetre" ; + bamm:preferredName "electronvolt per metre"@en ; + :commonCode "A54" ; + :conversionFactor "1.602176487 × 10⁻¹⁹ J/m" ; + :numericConversionFactor "1.602176487E-19"^^xsd:double ; + :quantityKind :linearEnergyTransfer, :totalLinearStoppingPower ; + :referenceUnit :joulePerMetre ; + :symbol "eV/m" . + +:electronvoltSquareMetre + a :Unit ; + bamm:name "electronvoltSquareMetre" ; + bamm:preferredName "electronvolt square metre"@en ; + :commonCode "A55" ; + :conversionFactor "1.602176487 × 10⁻¹⁹ J × m²" ; + :numericConversionFactor "1.602176487E-19"^^xsd:double ; + :quantityKind :totalAtomicStoppingPower ; + :referenceUnit :jouleSquareMetre ; + :symbol "eV·m²" . + +:electronvoltSquareMetrePerKilogram + a :Unit ; + bamm:name "electronvoltSquareMetrePerKilogram" ; + bamm:preferredName "electronvolt square metre per kilogram"@en ; + :commonCode "A56" ; + :conversionFactor "1.602176487 × 10⁻¹⁹ J × m²/kg" ; + :numericConversionFactor "1.602176487E-19"^^xsd:double ; + :quantityKind :totalMassStoppingPower ; + :referenceUnit :jouleSquareMetrePerKilogram ; + :symbol "eV·m²/kg" . + +:equivalentGallon + a :Unit ; + bamm:name "equivalentGallon" ; + bamm:preferredName "equivalent gallon"@en ; + :commonCode "EQ" . + +:erlang + a :Unit ; + bamm:name "erlang" ; + bamm:preferredName "erlang"@en ; + :commonCode "Q11" ; + :conversionFactor "1 E" ; + :symbol "E" . + +:exabitPerSecond + a :Unit ; + bamm:name "exabitPerSecond" ; + bamm:preferredName "exabit per second"@en ; + :commonCode "E58" ; + :symbol "Ebit/s" . + +:exabyte + a :Unit ; + bamm:name "exabyte" ; + bamm:preferredName "Exabyte"@en ; + :conversionFactor "10¹⁸ B" ; + :numericConversionFactor "1.0E18"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "EB" . + +:exajoule + a :Unit ; + bamm:name "exajoule" ; + bamm:preferredName "exajoule"@en ; + :commonCode "A68" ; + :conversionFactor "10¹⁸ J" ; + :numericConversionFactor "1.0E18"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "EJ" . + +:exbibitPerCubicMetre + a :Unit ; + bamm:name "exbibitPerCubicMetre" ; + bamm:preferredName "exbibit per cubic metre"@en ; + :commonCode "E67" ; + :symbol "Eibit/m³" . + +:exbibitPerMetre + a :Unit ; + bamm:name "exbibitPerMetre" ; + bamm:preferredName "exbibit per metre"@en ; + :commonCode "E65" ; + :symbol "Eibit/m" . + +:exbibitPerSquareMetre + a :Unit ; + bamm:name "exbibitPerSquareMetre" ; + bamm:preferredName "exbibit per square metre"@en ; + :commonCode "E66" ; + :symbol "Eibit/m²" . + +:exbibyte + a :Unit ; + bamm:name "exbibyte" ; + bamm:preferredName "exbibyte"@en ; + :commonCode "E59" ; + :conversionFactor "2⁶⁰ B" ; + :numericConversionFactor "1152921504606846976.0"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "Eibyte" . + +:failuresInTime + a :Unit ; + bamm:name "failuresInTime" ; + bamm:preferredName "failures in time"@en ; + :commonCode "FIT" ; + :conversionFactor "2.77778 × 10⁻¹³ s⁻¹" ; + :numericConversionFactor "2.77778E-13"^^xsd:double ; + :referenceUnit :reciprocalSecond ; + :symbol "FIT" . + +:farad + a :Unit ; + bamm:name "farad" ; + bamm:preferredName "farad"@en ; + :commonCode "FAR" ; + :conversionFactor "F" ; + :quantityKind :capacitance ; + :symbol "F" . + +:faradPerKilometre + a :Unit ; + bamm:name "faradPerKilometre" ; + bamm:preferredName "farad per kilometre"@en ; + :commonCode "H33" ; + :conversionFactor "10⁻³ F/m" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :electricConstant, :permittivity, :permittivityOfVacuum ; + :referenceUnit :faradPerMetre ; + :symbol "F/km" . + +:faradPerMetre + a :Unit ; + bamm:name "faradPerMetre" ; + bamm:preferredName "farad per metre"@en ; + :commonCode "A69" ; + :conversionFactor "kg⁻¹ × m⁻³ × s⁴ × A²" ; + :quantityKind :electricConstant, :permittivity, :permittivityOfVacuum ; + :symbol "F/m" . + +:fathom + a :Unit ; + bamm:name "fathom" ; + bamm:preferredName "fathom"@en ; + :commonCode "AK" ; + :conversionFactor "1.8288 m" ; + :numericConversionFactor "1.8288"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "fth" . + +:femtojoule + a :Unit ; + bamm:name "femtojoule" ; + bamm:preferredName "femtojoule"@en ; + :commonCode "A70" ; + :conversionFactor "10⁻¹⁵ J" ; + :numericConversionFactor "1.0E-15"^^xsd:double ; + :quantityKind :energy, :gapEnergy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "fJ" . + +:femtometre + a :Unit ; + bamm:name "femtometre" ; + bamm:preferredName "femtometre"@en ; + :commonCode "A71" ; + :conversionFactor "10⁻¹⁵ m" ; + :numericConversionFactor "1.0E-15"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "fm" . + +:fibreMetre + a :Unit ; + bamm:name "fibreMetre" ; + bamm:preferredName "fibre metre"@en ; + :commonCode "FBM" . + +:fivePack + a :Unit ; + bamm:name "fivePack" ; + bamm:preferredName "five pack"@en ; + :commonCode "P5" . + +:fixedRate + a :Unit ; + bamm:name "fixedRate" ; + bamm:preferredName "fixed rate"@en ; + :commonCode "1I" . + +:flakeTon + a :Unit ; + bamm:name "flakeTon" ; + bamm:preferredName "flake ton"@en ; + :commonCode "FL" . + +:fluidOunceUk + a :Unit ; + bamm:name "fluidOunceUk" ; + bamm:preferredName "fluid ounce (UK)"@en ; + :commonCode "OZI" ; + :conversionFactor "2.841306 × 10⁻⁵ m³" ; + :numericConversionFactor "2.841306E-5"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "fl oz (UK)" . + +:fluidOunceUs + a :Unit ; + bamm:name "fluidOunceUs" ; + bamm:preferredName "fluid ounce (US)"@en ; + :commonCode "OZA" ; + :conversionFactor "2.957353 × 10⁻⁵ m³" ; + :numericConversionFactor "2.957353E-5"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "fl oz (US)" . + +:foot + a :Unit ; + bamm:name "foot" ; + bamm:preferredName "foot"@en ; + :commonCode "FOT" ; + :conversionFactor "0.3048 m" ; + :numericConversionFactor "0.3048"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "ft" . + +:footOfWater392Degreesf + a :Unit ; + bamm:name "footOfWater392Degreesf" ; + bamm:preferredName "foot of water (39.2 °F)"@en ; + :commonCode "N15" ; + :conversionFactor "2.98898 × 10³ Pa" ; + :numericConversionFactor "2988.98"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "ftH₂O (39,2 °F)" . + +:footPerDegreeFahrenheit + a :Unit ; + bamm:name "footPerDegreeFahrenheit" ; + bamm:preferredName "foot per degree Fahrenheit"@en ; + :commonCode "K13" ; + :conversionFactor "0.54864 m/K" ; + :numericConversionFactor "0.54864"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metrePerKelvin ; + :symbol "ft/°F" . + +:footPerHour + a :Unit ; + bamm:name "footPerHour" ; + bamm:preferredName "foot per hour"@en ; + :commonCode "K14" ; + :conversionFactor "8.466667 × 10⁻⁵m/s" ; + :numericConversionFactor "8.466667E-5"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "ft/h" . + +:footPerMinute + a :Unit ; + bamm:name "footPerMinute" ; + bamm:preferredName "foot per minute"@en ; + :commonCode "FR" ; + :conversionFactor "5.08 × 10⁻³ m/s" ; + :numericConversionFactor "0.00508"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "ft/min" . + +:footPerPsi + a :Unit ; + bamm:name "footPerPsi" ; + bamm:preferredName "foot per psi"@en ; + :commonCode "K17" ; + :conversionFactor "4.420750 × 10⁻⁵ m/Pa" ; + :numericConversionFactor "4.42075E-5"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metrePerPascal ; + :symbol "ft/psi" . + +:footPerSecond + a :Unit ; + bamm:name "footPerSecond" ; + bamm:preferredName "foot per second"@en ; + :commonCode "FS" ; + :conversionFactor "0.3048 m/s" ; + :numericConversionFactor "0.3048"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "ft/s" . + +:footPerSecondDegreeFahrenheit + a :Unit ; + bamm:name "footPerSecondDegreeFahrenheit" ; + bamm:preferredName "foot per second degree Fahrenheit"@en ; + :commonCode "K18" ; + :conversionFactor "0.54864 (m/s)/K" ; + :numericConversionFactor "0.54864"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecondKelvin ; + :symbol "(ft/s)/°F" . + +:footPerSecondPsi + a :Unit ; + bamm:name "footPerSecondPsi" ; + bamm:preferredName "foot per second psi"@en ; + :commonCode "K19" ; + :conversionFactor "4.420750 × 10⁻⁵ (m/s)/Pa" ; + :numericConversionFactor "4.42075E-5"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecondPascal ; + :symbol "(ft/s)/psi" . + +:footPerSecondSquared + a :Unit ; + bamm:name "footPerSecondSquared" ; + bamm:preferredName "foot per second squared"@en ; + :commonCode "A73" ; + :conversionFactor "0.3048 m/s²" ; + :numericConversionFactor "0.3048"^^xsd:double ; + :quantityKind :acceleration, :accelerationDueToGravity, :accelerationOfFreeFall ; + :referenceUnit :metrePerSecondSquared ; + :symbol "ft/s²" . + +:footPerThousand + a :Unit ; + bamm:name "footPerThousand" ; + bamm:preferredName "foot per thousand"@en ; + :commonCode "E33" ; + :conversionFactor "3.048 × 10⁻⁴ m" ; + :numericConversionFactor "3.048E-4"^^xsd:double ; + :referenceUnit :metre . + +:footPoundForce + a :Unit ; + bamm:name "footPoundForce" ; + bamm:preferredName "foot pound-force"@en ; + :commonCode "85" ; + :conversionFactor "1.355818 J" ; + :numericConversionFactor "1.355818"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "ft·lbf" . + +:footPoundForcePerHour + a :Unit ; + bamm:name "footPoundForcePerHour" ; + bamm:preferredName "foot pound-force per hour"@en ; + :commonCode "K15" ; + :conversionFactor "3.766161 × 10⁻⁴ W" ; + :numericConversionFactor "3.766161E-4"^^xsd:double ; + :quantityKind :power ; + :referenceUnit :watt ; + :symbol "ft·lbf/h" . + +:footPoundForcePerMinute + a :Unit ; + bamm:name "footPoundForcePerMinute" ; + bamm:preferredName "foot pound-force per minute"@en ; + :commonCode "K16" ; + :conversionFactor "2.259697 × 10⁻² W" ; + :numericConversionFactor "0.02259697"^^xsd:double ; + :quantityKind :power ; + :referenceUnit :watt ; + :symbol "ft·lbf/min" . + +:footPoundForcePerSecond + a :Unit ; + bamm:name "footPoundForcePerSecond" ; + bamm:preferredName "foot pound-force per second"@en ; + :commonCode "A74" ; + :conversionFactor "1.355818 W" ; + :numericConversionFactor "1.355818"^^xsd:double ; + :quantityKind :power ; + :referenceUnit :watt ; + :symbol "ft·lbf/s" . + +:footPoundal + a :Unit ; + bamm:name "footPoundal" ; + bamm:preferredName "foot poundal"@en ; + :commonCode "N46" ; + :conversionFactor "4.214011 × 10⁻² J" ; + :numericConversionFactor "0.04214011"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "ft·pdl" . + +:footToTheFourthPower + a :Unit ; + bamm:name "footToTheFourthPower" ; + bamm:preferredName "foot to the fourth power"@en ; + :commonCode "N27" ; + :conversionFactor "8.630975 × 10⁻³ m⁴" ; + :numericConversionFactor "0.008630975"^^xsd:double ; + :quantityKind :secondPolarMomentOfArea ; + :referenceUnit :metreToTheFourthPower ; + :symbol "ft⁴" . + +:footUsSurvey + a :Unit ; + bamm:name "footUsSurvey" ; + bamm:preferredName "foot (U.S. survey)"@en ; + :commonCode "M51" ; + :conversionFactor "3.048006 × 10⁻¹ m" ; + :numericConversionFactor "0.3048006"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "ft (US survey)" . + +:footcandle + a :Unit ; + bamm:name "footcandle" ; + bamm:preferredName "footcandle"@en ; + :commonCode "P27" ; + :conversionFactor "1.076391 × 10¹ cd × sr / m²" ; + :quantityKind :illuminance ; + :symbol "ftc" . + +:footlambert + a :Unit ; + bamm:name "footlambert" ; + bamm:preferredName "footlambert"@en ; + :commonCode "P29" ; + :conversionFactor "3.426259 cd/m²" ; + :numericConversionFactor "3.426259"^^xsd:double ; + :quantityKind :luminance ; + :referenceUnit :candelaPerSquareMetre ; + :symbol "ftL" . + +:fortyFootContainer + a :Unit ; + bamm:name "fortyFootContainer" ; + bamm:preferredName "forty foot container"@en ; + :commonCode "21" . + +:franklin + a :Unit ; + bamm:name "franklin" ; + bamm:preferredName "franklin"@en ; + :commonCode "N94" ; + :conversionFactor "3.335641 × 10⁻¹⁰ C" ; + :numericConversionFactor "3.335641E-10"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "Fr" . + +:freightTon + a :Unit ; + bamm:name "freightTon" ; + bamm:preferredName "freight ton"@en ; + :commonCode "A75" . + +:frenchGauge + a :Unit ; + bamm:name "frenchGauge" ; + bamm:preferredName "French gauge"@en ; + :commonCode "H79" ; + :conversionFactor "0.333333333 × 10⁻³ m" ; + :numericConversionFactor "3.33333333E-4"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "Fg" . + +:furlong + a :Unit ; + bamm:name "furlong" ; + bamm:preferredName "furlong"@en ; + :commonCode "M50" ; + :conversionFactor "2.01168 × 10² m" ; + :numericConversionFactor "201.168"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "fur" . + +:gal + a :Unit ; + bamm:name "gal" ; + bamm:preferredName "gal"@en ; + :commonCode "A76" ; + :conversionFactor "10⁻² m/s²" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :acceleration, :accelerationDueToGravity, :accelerationOfFreeFall ; + :referenceUnit :metrePerSecondSquared ; + :symbol "Gal" . + +:gallonUk + a :Unit ; + bamm:name "gallonUk" ; + bamm:preferredName "gallon (UK)"@en ; + :commonCode "GLI" ; + :conversionFactor "4.546092 × 10⁻³ m³" ; + :numericConversionFactor "0.004546092"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "gal (UK)" . + +:gallonUkPerDay + a :Unit ; + bamm:name "gallonUkPerDay" ; + bamm:preferredName "gallon (UK) per day"@en ; + :commonCode "K26" ; + :conversionFactor "5.261678 × 10⁻⁸ m³/s" ; + :numericConversionFactor "5.261678E-8"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gal (UK)/d" . + +:gallonUkPerHour + a :Unit ; + bamm:name "gallonUkPerHour" ; + bamm:preferredName "gallon (UK) per hour"@en ; + :commonCode "K27" ; + :conversionFactor "1.262803 × 10⁻⁶ m³/s" ; + :numericConversionFactor "1.262803E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gal (UK)/h" . + +:gallonUkPerSecond + a :Unit ; + bamm:name "gallonUkPerSecond" ; + bamm:preferredName "gallon (UK) per second"@en ; + :commonCode "K28" ; + :conversionFactor "4.54609 × 10⁻³ m³/s" ; + :numericConversionFactor "0.00454609"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gal (UK)/s" . + +:gallonUs + a :Unit ; + bamm:name "gallonUs" ; + bamm:preferredName "gallon (US)"@en ; + :commonCode "GLL" ; + :conversionFactor "3.785412 × 10⁻³ m³" ; + :numericConversionFactor "0.003785412"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "gal (US)" . + +:gallonUsLiquidPerSecond + a :Unit ; + bamm:name "gallonUsLiquidPerSecond" ; + bamm:preferredName "gallon (US liquid) per second"@en ; + :commonCode "K30" ; + :conversionFactor "3.785412 × 10⁻³ m³/s" ; + :numericConversionFactor "0.003785412"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gal (US liq.)/s" . + +:gallonUsPerDay + a :Unit ; + bamm:name "gallonUsPerDay" ; + bamm:preferredName "gallon (US) per day"@en ; + :commonCode "GB" ; + :conversionFactor "4.381264 × 10⁻⁸ m³/s" ; + :numericConversionFactor "4.381264E-8"^^xsd:double ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gal (US)/d" . + +:gallonUsPerHour + a :Unit ; + bamm:name "gallonUsPerHour" ; + bamm:preferredName "gallon (US) per hour"@en ; + :commonCode "G50" ; + :conversionFactor "1.0515 × 10⁻⁶ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "gal/h" . + +:gamma + a :Unit ; + bamm:name "gamma" ; + bamm:preferredName "gamma"@en ; + :commonCode "P12" ; + :conversionFactor "10⁻⁹ T" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :magneticFluxDensity, :magneticInduction, :magneticPolarization ; + :referenceUnit :tesla ; + :symbol "γ" . + +:gibibit + a :Unit ; + bamm:name "gibibit" ; + bamm:preferredName "gibibit"@en ; + :commonCode "B30" ; + :symbol "Gibit" . + +:gibibitPerCubicMetre + a :Unit ; + bamm:name "gibibitPerCubicMetre" ; + bamm:preferredName "gibibit per cubic metre"@en ; + :commonCode "E71" ; + :symbol "Gibit/m³" . + +:gibibitPerMetre + a :Unit ; + bamm:name "gibibitPerMetre" ; + bamm:preferredName "gibibit per metre"@en ; + :commonCode "E69" ; + :symbol "Gibit/m" . + +:gibibitPerSquareMetre + a :Unit ; + bamm:name "gibibitPerSquareMetre" ; + bamm:preferredName "gibibit per square metre"@en ; + :commonCode "E70" ; + :symbol "Gibit/m²" . + +:gibibyte + a :Unit ; + bamm:name "gibibyte" ; + bamm:preferredName "Gibibyte"@en ; + :commonCode "E62" ; + :conversionFactor "2³⁰ B" ; + :numericConversionFactor "1073741824.0"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "GiB" . + +:gigabecquerel + a :Unit ; + bamm:name "gigabecquerel" ; + bamm:preferredName "gigabecquerel"@en ; + :commonCode "GBQ" ; + :conversionFactor "10⁹ Bq" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :activity ; + :referenceUnit :becquerel ; + :symbol "GBq" . + +:gigabit + a :Unit ; + bamm:name "gigabit" ; + bamm:preferredName "gigabit"@en ; + :commonCode "B68" ; + :symbol "Gbit" . + +:gigabitPerSecond + a :Unit ; + bamm:name "gigabitPerSecond" ; + bamm:preferredName "gigabit per second"@en ; + :commonCode "B80" ; + :symbol "Gbit/s" . + +:gigabyte + a :Unit ; + bamm:name "gigaabyte" ; + bamm:preferredName "Gigabyte"@en ; + :commonCode "E34" ; + :conversionFactor "10⁹ B" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "Gbyte" . + +:gigabytePerSecond + a :Unit ; + bamm:name "gigabytePerSecond" ; + bamm:preferredName "gigabyte per second"@en ; + :commonCode "E68" ; + :symbol "Gbyte/s" . + +:gigacoulombPerCubicMetre + a :Unit ; + bamm:name "gigacoulombPerCubicMetre" ; + bamm:preferredName "gigacoulomb per cubic metre"@en ; + :commonCode "A84" ; + :conversionFactor "10⁹ C/m³" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :chargeDensity, :volumeDensityOfCharge, :volumicCharge ; + :referenceUnit :coulombPerCubicMetre ; + :symbol "GC/m³" . + +:gigaelectronvolt + a :Unit ; + bamm:name "gigaelectronvolt" ; + bamm:preferredName "gigaelectronvolt"@en ; + :commonCode "A85" ; + :conversionFactor "10⁹ eV" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :electronvolt ; + :symbol "GeV" . + +:gigahertz + a :Unit ; + bamm:name "gigahertz" ; + bamm:preferredName "gigahertz"@en ; + :commonCode "A86" ; + :conversionFactor "10⁹ Hz" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :frequency ; + :referenceUnit :hertz ; + :symbol "GHz" . + +:gigahertzMetre + a :Unit ; + bamm:name "gigahertzMetre" ; + bamm:preferredName "gigahertz metre"@en ; + :commonCode "M18" ; + :conversionFactor "10⁹ Hz × m" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :coefficient, :performanceCharacteristic ; + :referenceUnit :hertzMetre ; + :symbol "GHz·m" . + +:gigajoule + a :Unit ; + bamm:name "gigajoule" ; + bamm:preferredName "gigajoule"@en ; + :commonCode "GV" ; + :conversionFactor "10⁹ J" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "GJ" . + +:gigaohm + a :Unit ; + bamm:name "gigaohm" ; + bamm:preferredName "gigaohm"@en ; + :commonCode "A87" ; + :conversionFactor "10⁹ Ω" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :complexImpedances, :impedance, :modulusOfImpedance, :reactance, :resistanceToAlternatingCurrent, :resistanceToDirectCurrent ; + :referenceUnit :ohm ; + :symbol "GΩ" . + +:gigaohmMetre + a :Unit ; + bamm:name "gigaohmMetre" ; + bamm:preferredName "gigaohm metre"@en ; + :commonCode "A88" ; + :conversionFactor "10⁹ Ω × m" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :resistivity ; + :referenceUnit :ohmMetre ; + :symbol "GΩ·m" . + +:gigaohmPerMetre + a :Unit ; + bamm:name "gigaohmPerMetre" ; + bamm:preferredName "gigaohm per metre"@en ; + :commonCode "M26" ; + :conversionFactor "10⁹ Ω/m" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :resistanceLoadPerUnitLength ; + :referenceUnit :ohmPerMetre ; + :symbol "GΩ/m" . + +:gigapascal + a :Unit ; + bamm:name "gigapascal" ; + bamm:preferredName "gigapascal"@en ; + :commonCode "A89" ; + :conversionFactor "10⁹ Pa" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "GPa" . + +:gigawatt + a :Unit ; + bamm:name "gigawatt" ; + bamm:preferredName "gigawatt"@en ; + :commonCode "A90" ; + :conversionFactor "10⁹ W" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :activePower, :power, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "GW" . + +:gigawattHour + a :Unit ; + bamm:name "gigawattHour" ; + bamm:preferredName "gigawatt hour"@en ; + :commonCode "GWH" ; + :conversionFactor "3.6 × 10¹² J" ; + :numericConversionFactor "3.6E12"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "GW·h" . + +:gilbert + a :Unit ; + bamm:name "gilbert" ; + bamm:preferredName "gilbert"@en ; + :commonCode "N97" ; + :conversionFactor "7.957747 × 10⁻¹ A" ; + :numericConversionFactor "0.7957747"^^xsd:double ; + :quantityKind :currentLinkage, :electricCurrent, :magneticPotentialDifference, :magnetomotiveForce ; + :referenceUnit :ampere ; + :symbol "Gi" . + +:gillUk + a :Unit ; + bamm:name "gillUk" ; + bamm:preferredName "gill (UK)"@en ; + :commonCode "GII" ; + :conversionFactor "1.420653 × 10⁻⁴ m³" ; + :numericConversionFactor "1.420653E-4"^^xsd:double ; + :referenceUnit :cubicMetre ; + :symbol "gi (UK)" . + +:gillUkPerDay + a :Unit ; + bamm:name "gillUkPerDay" ; + bamm:preferredName "gill (UK) per day"@en ; + :commonCode "K32" ; + :conversionFactor "1.644274 × 10⁻⁵ m³/s" ; + :numericConversionFactor "1.644274E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gi (UK)/d" . + +:gillUkPerHour + a :Unit ; + bamm:name "gillUkPerHour" ; + bamm:preferredName "gill (UK) per hour"@en ; + :commonCode "K33" ; + :conversionFactor "3.946258 × 10⁻⁸ m³/s" ; + :numericConversionFactor "3.946258E-8"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gi (UK)/h" . + +:gillUkPerMinute + a :Unit ; + bamm:name "gillUkPerMinute" ; + bamm:preferredName "gill (UK) per minute"@en ; + :commonCode "K34" ; + :conversionFactor "0.02367755 m³/s" ; + :numericConversionFactor "0.02367755"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gi (UK)/min" . + +:gillUkPerSecond + a :Unit ; + bamm:name "gillUkPerSecond" ; + bamm:preferredName "gill (UK) per second"@en ; + :commonCode "K35" ; + :conversionFactor "1.420653 × 10⁻⁴ m³/s" ; + :numericConversionFactor "1.420653E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gi (UK)/s" . + +:gillUs + a :Unit ; + bamm:name "gillUs" ; + bamm:preferredName "gill (US)"@en ; + :commonCode "GIA" ; + :conversionFactor "1.182941 × 10⁻⁴ m³" ; + :numericConversionFactor "1.182941E-4"^^xsd:double ; + :referenceUnit :cubicMetre ; + :symbol "gi (US)" . + +:gillUsPerDay + a :Unit ; + bamm:name "gillUsPerDay" ; + bamm:preferredName "gill (US) per day"@en ; + :commonCode "K36" ; + :conversionFactor "1.369145 × 10⁻⁹ m³/s" ; + :numericConversionFactor "1.369145E-9"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gi (US)/d" . + +:gillUsPerHour + a :Unit ; + bamm:name "gillUsPerHour" ; + bamm:preferredName "gill (US) per hour"@en ; + :commonCode "K37" ; + :conversionFactor "3.285947 × 10⁻⁸ m³/s" ; + :numericConversionFactor "3.285947E-8"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gi (US)/h" . + +:gillUsPerMinute + a :Unit ; + bamm:name "gillUsPerMinute" ; + bamm:preferredName "gill (US) per minute"@en ; + :commonCode "K38" ; + :conversionFactor "1.971568 × 10⁻⁶ m³/s" ; + :numericConversionFactor "1.971568E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gi (US)/min" . + +:gillUsPerSecond + a :Unit ; + bamm:name "gillUsPerSecond" ; + bamm:preferredName "gill (US) per second"@en ; + :commonCode "K39" ; + :conversionFactor "1.182941 × 10⁻⁴ m³/s" ; + :numericConversionFactor "1.182941E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gi (US)/s" . + +:gon + a :Unit ; + bamm:name "gon" ; + bamm:preferredName "gon"@en ; + :commonCode "A91" ; + :conversionFactor "1.570796 × 10⁻² rad" ; + :numericConversionFactor "0.01570796"^^xsd:double ; + :quantityKind :anglePlane ; + :referenceUnit :rad ; + :symbol "gon" . + +:grain + a :Unit ; + bamm:name "grain" ; + bamm:preferredName "grain"@en ; + :commonCode "GRN" ; + :conversionFactor "64.79891 × 10⁻⁶ kg" ; + :numericConversionFactor "6.479891E-5"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "gr" . + +:grainPerGallonUs + a :Unit ; + bamm:name "grainPerGallonUs" ; + bamm:preferredName "grain per gallon (US)"@en ; + :commonCode "K41" ; + :conversionFactor "1.711806 × 10⁻² kg/m³" ; + :numericConversionFactor "0.01711806"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "gr/gal (US)" . + +:gram + a :Unit ; + bamm:name "gram" ; + bamm:preferredName "gram"@en ; + :commonCode "GRM" ; + :conversionFactor "10⁻³ kg" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "g" . + +:gramCentimetrePerSecond + a :Unit ; + bamm:name "gramCentimetrePerSecond" ; + bamm:preferredName "gram centimetre per second"@en ; + :commonCode "M99" ; + :conversionFactor "10⁻⁵ kg × m/s" ; + :numericConversionFactor "1.0E-5"^^xsd:double ; + :quantityKind :momentum ; + :referenceUnit :kilogramMetrePerSecond ; + :symbol "g·(cm/s)" . + +:gramDryWeight + a :Unit ; + bamm:name "gramDryWeight" ; + bamm:preferredName "gram, dry weight"@en ; + :commonCode "GDW" . + +:gramForcePerSquareCentimetre + a :Unit ; + bamm:name "gramForcePerSquareCentimetre" ; + bamm:preferredName "gram-force per square centimetre"@en ; + :commonCode "K31" ; + :conversionFactor "98.0665 Pa" ; + :numericConversionFactor "98.0665"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "gf/cm²" . + +:gramIncludingContainer + a :Unit ; + bamm:name "gramIncludingContainer" ; + bamm:preferredName "gram, including container"@en ; + :commonCode "GIC" . + +:gramIncludingInnerPackaging + a :Unit ; + bamm:name "gramIncludingInnerPackaging" ; + bamm:preferredName "gram, including inner packaging"@en ; + :commonCode "GIP" . + +:gramMillimetre + a :Unit ; + bamm:name "gramMillimetre" ; + bamm:preferredName "gram millimetre"@en ; + :commonCode "H84" ; + :conversionFactor "10⁻⁶ kg × m" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :kilogramMetre ; + :symbol "g·mm" . + +:gramOfFissileIsotope + a :Unit ; + bamm:name "gramOfFissileIsotope" ; + bamm:preferredName "gram of fissile isotope"@en ; + :commonCode "GFI" ; + :symbol "gi F/S" . + +:gramPerBar + a :Unit ; + bamm:name "gramPerBar" ; + bamm:preferredName "gram per bar"@en ; + :commonCode "F74" ; + :conversionFactor "10⁻⁸ m × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/bar" . + +:gramPerCentimetreSecond + a :Unit ; + bamm:name "gramPerCentimetreSecond" ; + bamm:preferredName "gram per centimetre second"@en ; + :commonCode "N41" ; + :conversionFactor "0.1 Pa × s" ; + :numericConversionFactor "0.1"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "g/(cm·s)" . + +:gramPerCubicCentimetre + a :Unit ; + bamm:name "gramPerCubicCentimetre" ; + bamm:preferredName "gram per cubic centimetre"@en ; + :commonCode "23" ; + :conversionFactor "10³ kg/m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "g/cm³" . + +:gramPerCubicCentimetreBar + a :Unit ; + bamm:name "gramPerCubicCentimetreBar" ; + bamm:preferredName "gram per cubic centimetre bar"@en ; + :commonCode "G11" ; + :conversionFactor "10⁻² m⁻² × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/(cm³·bar)" . + +:gramPerCubicCentimetreKelvin + a :Unit ; + bamm:name "gramPerCubicCentimetreKelvin" ; + bamm:preferredName "gram per cubic centimetre kelvin"@en ; + :commonCode "G33" ; + :conversionFactor "10³ kg × m⁻³ × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/(cm³·K)" . + +:gramPerCubicDecimetre + a :Unit ; + bamm:name "gramPerCubicDecimetre" ; + bamm:preferredName "gram per cubic decimetre"@en ; + :commonCode "F23" ; + :conversionFactor "kg × m⁻³" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/dm³" . + +:gramPerCubicDecimetreBar + a :Unit ; + bamm:name "gramPerCubicDecimetreBar" ; + bamm:preferredName "gram per cubic decimetre bar"@en ; + :commonCode "G12" ; + :conversionFactor "10⁻⁵ m⁻² × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/(dm³·bar)" . + +:gramPerCubicDecimetreKelvin + a :Unit ; + bamm:name "gramPerCubicDecimetreKelvin" ; + bamm:preferredName "gram per cubic decimetre kelvin"@en ; + :commonCode "G34" ; + :conversionFactor "kg × m⁻³ × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/(dm³·K)" . + +:gramPerCubicMetre + a :Unit ; + bamm:name "gramPerCubicMetre" ; + bamm:preferredName "gram per cubic metre"@en ; + :commonCode "A93" ; + :conversionFactor "10⁻³ kg/m³" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "g/m³" . + +:gramPerCubicMetreBar + a :Unit ; + bamm:name "gramPerCubicMetreBar" ; + bamm:preferredName "gram per cubic metre bar"@en ; + :commonCode "G14" ; + :conversionFactor "10⁻⁸ m⁻² × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/(m³·bar)" . + +:gramPerCubicMetreKelvin + a :Unit ; + bamm:name "gramPerCubicMetreKelvin" ; + bamm:preferredName "gram per cubic metre kelvin"@en ; + :commonCode "G36" ; + :conversionFactor "10⁻³ kg × m⁻³ × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/(m³·K)" . + +:gramPerDay + a :Unit ; + bamm:name "gramPerDay" ; + bamm:preferredName "gram per day"@en ; + :commonCode "F26" ; + :conversionFactor "1.15741 × 10⁻⁸ kg × s⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "g/d" . + +:gramPerDayBar + a :Unit ; + bamm:name "gramPerDayBar" ; + bamm:preferredName "gram per day bar"@en ; + :commonCode "F62" ; + :conversionFactor "1.15741 × 10⁻¹³ m × s" ; + :quantityKind :massFlowRate ; + :symbol "g/(d·bar)" . + +:gramPerDayKelvin + a :Unit ; + bamm:name "gramPerDayKelvin" ; + bamm:preferredName "gram per day kelvin"@en ; + :commonCode "F35" ; + :conversionFactor "1.15741 × 10⁻⁸ kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "g/(d·K)" . + +:gramPerHertz + a :Unit ; + bamm:name "gramPerHertz" ; + bamm:preferredName "gram per hertz"@en ; + :commonCode "F25" ; + :conversionFactor "10⁻³ kg × s" ; + :quantityKind :massFlowRate ; + :symbol "g/Hz" . + +:gramPerHour + a :Unit ; + bamm:name "gramPerHour" ; + bamm:preferredName "gram per hour"@en ; + :commonCode "F27" ; + :conversionFactor "2.77778 × 10⁻⁷ kg × s⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "g/h" . + +:gramPerHourBar + a :Unit ; + bamm:name "gramPerHourBar" ; + bamm:preferredName "gram per hour bar"@en ; + :commonCode "F63" ; + :conversionFactor "2.77778 × 10⁻¹² m × s" ; + :quantityKind :massFlowRate ; + :symbol "g/(h·bar)" . + +:gramPerHourKelvin + a :Unit ; + bamm:name "gramPerHourKelvin" ; + bamm:preferredName "gram per hour kelvin"@en ; + :commonCode "F36" ; + :conversionFactor "2.77778 × 10⁻⁷ kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "g/(h·K)" . + +:gramPerKelvin + a :Unit ; + bamm:name "gramPerKelvin" ; + bamm:preferredName "gram per kelvin"@en ; + :commonCode "F14" ; + :conversionFactor "10⁻³ kg × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/K" . + +:gramPerLitre + a :Unit ; + bamm:name "gramPerLitre" ; + bamm:preferredName "gram per litre"@en ; + :commonCode "GL" ; + :conversionFactor "kg/m³" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "g/l" . + +:gramPerLitreBar + a :Unit ; + bamm:name "gramPerLitreBar" ; + bamm:preferredName "gram per litre bar"@en ; + :commonCode "G13" ; + :conversionFactor "10⁻⁵ m⁻² × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/(l·bar)" . + +:gramPerLitreKelvin + a :Unit ; + bamm:name "gramPerLitreKelvin" ; + bamm:preferredName "gram per litre kelvin"@en ; + :commonCode "G35" ; + :conversionFactor "kg × m⁻³ × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/(l·K)" . + +:gramPerMetreGramPer100Centimetres + a :Unit ; + bamm:name "gramPerMetreGramPer100Centimetres" ; + bamm:preferredName "gram per metre (gram per 100 centimetres)"@en ; + :commonCode "GF" ; + :conversionFactor "10⁻³ kg/m" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :linearDensity, :linearMass ; + :referenceUnit :kilogramPerMetre ; + :symbol "g/m" . + +:gramPerMillilitre + a :Unit ; + bamm:name "gramPerMillilitre" ; + bamm:preferredName "gram per millilitre"@en ; + :commonCode "GJ" ; + :conversionFactor "10³ kg/m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "g/ml" . + +:gramPerMillilitreBar + a :Unit ; + bamm:name "gramPerMillilitreBar" ; + bamm:preferredName "gram per millilitre bar"@en ; + :commonCode "G15" ; + :conversionFactor "10⁻² m⁻² × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/(ml·bar)" . + +:gramPerMillilitreKelvin + a :Unit ; + bamm:name "gramPerMillilitreKelvin" ; + bamm:preferredName "gram per millilitre kelvin"@en ; + :commonCode "G37" ; + :conversionFactor "10³ kg × m⁻³ × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "g/(ml·K)" . + +:gramPerMillimetre + a :Unit ; + bamm:name "gramPerMillimetre" ; + bamm:preferredName "gram per millimetre"@en ; + :commonCode "H76" ; + :conversionFactor "10¹ kg × m⁻¹" ; + :quantityKind :linearDensity, :linearMass ; + :symbol "g/mm" . + +:gramPerMinute + a :Unit ; + bamm:name "gramPerMinute" ; + bamm:preferredName "gram per minute"@en ; + :commonCode "F28" ; + :conversionFactor "1.66667 × 10⁻⁵ kg × s⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "g/min" . + +:gramPerMinuteBar + a :Unit ; + bamm:name "gramPerMinuteBar" ; + bamm:preferredName "gram per minute bar"@en ; + :commonCode "F64" ; + :conversionFactor "1.66667 × 10⁻¹⁰ m × s" ; + :quantityKind :massFlowRate ; + :symbol "g/(min·bar)" . + +:gramPerMinuteKelvin + a :Unit ; + bamm:name "gramPerMinuteKelvin" ; + bamm:preferredName "gram per minute kelvin"@en ; + :commonCode "F37" ; + :conversionFactor "1.66667 × 10⁻⁵ kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "g/(min·K)" . + +:gramPerMole + a :Unit ; + bamm:name "gramPerMole" ; + bamm:preferredName "gram per mole"@en ; + :commonCode "A94" ; + :conversionFactor "10⁻³ kg/mol" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :molarMass ; + :referenceUnit :kilogramPerMole ; + :symbol "g/mol" . + +:gramPerSecond + a :Unit ; + bamm:name "gramPerSecond" ; + bamm:preferredName "gram per second"@en ; + :commonCode "F29" ; + :conversionFactor "10⁻³ kg × s⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "g/s" . + +:gramPerSecondBar + a :Unit ; + bamm:name "gramPerSecondBar" ; + bamm:preferredName "gram per second bar"@en ; + :commonCode "F65" ; + :conversionFactor "10⁻⁸ m × s" ; + :quantityKind :massFlowRate ; + :symbol "g/(s·bar)" . + +:gramPerSecondKelvin + a :Unit ; + bamm:name "gramPerSecondKelvin" ; + bamm:preferredName "gram per second kelvin"@en ; + :commonCode "F38" ; + :conversionFactor "10⁻³ kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "g/(s·K)" . + +:gramPerSquareCentimetre + a :Unit ; + bamm:name "gramPerSquareCentimetre" ; + bamm:preferredName "gram per square centimetre"@en ; + :commonCode "25" ; + :conversionFactor "10 kg/m²" ; + :numericConversionFactor "10.0"^^xsd:double ; + :quantityKind :areicMass, :surfaceDensity ; + :referenceUnit :kilogramPerSquareMetre ; + :symbol "g/cm²" . + +:gramPerSquareMetre + a :Unit ; + bamm:name "gramPerSquareMetre" ; + bamm:preferredName "gram per square metre"@en ; + :commonCode "GM" ; + :conversionFactor "10⁻³ kg/m²" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :areicMass, :surfaceDensity ; + :referenceUnit :kilogramPerSquareMetre ; + :symbol "g/m²" . + +:gramPerSquareMillimetre + a :Unit ; + bamm:name "gramPerSquareMillimetre" ; + bamm:preferredName "gram per square millimetre"@en ; + :commonCode "N24" ; + :conversionFactor "10³ kg/m²" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :kilogramPerSquareMetre ; + :symbol "g/mm²" . + +:gray + a :Unit ; + bamm:name "gray" ; + bamm:preferredName "gray"@en ; + :commonCode "A95" ; + :conversionFactor "m²/s²" ; + :quantityKind :massicEnergyImparted, :specificEnergyImparted ; + :symbol "Gy" . + +:grayPerHour + a :Unit ; + bamm:name "grayPerHour" ; + bamm:preferredName "gray per hour"@en ; + :commonCode "P61" ; + :conversionFactor "2.77778 × 10⁻⁴ Gy/s" ; + :numericConversionFactor "2.77778E-4"^^xsd:double ; + :quantityKind :absorbedDoseRate ; + :referenceUnit :grayPerSecond ; + :symbol "Gy/h" . + +:grayPerMinute + a :Unit ; + bamm:name "grayPerMinute" ; + bamm:preferredName "gray per minute"@en ; + :commonCode "P57" ; + :conversionFactor "1.66667 × 10⁻² Gy/s" ; + :numericConversionFactor "0.0166667"^^xsd:double ; + :quantityKind :absorbedDoseRate ; + :referenceUnit :grayPerSecond ; + :symbol "Gy/min" . + +:grayPerSecond + a :Unit ; + bamm:name "grayPerSecond" ; + bamm:preferredName "gray per second"@en ; + :commonCode "A96" ; + :conversionFactor "m²/s³" ; + :quantityKind :absorbedDoseRate ; + :symbol "Gy/s" . + +:greatGross + a :Unit ; + bamm:name "greatGross" ; + bamm:preferredName "great gross"@en ; + :commonCode "GGR" ; + :conversionFactor "1728" . + +:gross + a :Unit ; + bamm:name "gross" ; + bamm:preferredName "gross"@en ; + :commonCode "GRO" ; + :conversionFactor "144" ; + :symbol "gr" . + +:grossKilogram + a :Unit ; + bamm:name "grossKilogram" ; + bamm:preferredName "gross kilogram"@en ; + :commonCode "E4" . + +:group + a :Unit ; + bamm:name "group" ; + bamm:preferredName "group"@en ; + :commonCode "10" . + +:guntersChain + a :Unit ; + bamm:name "guntersChain" ; + bamm:preferredName "Gunter's chain"@en ; + :commonCode "X1" ; + :conversionFactor "20.1168 m" ; + :numericConversionFactor "20.1168"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "ch (UK)" . + +:halfYear6Months + a :Unit ; + bamm:name "halfYear6Months" ; + bamm:preferredName "half year (6 months)"@en ; + :commonCode "SAN" . + +:hangingContainer + a :Unit ; + bamm:name "hangingContainer" ; + bamm:preferredName "hanging container"@en ; + :commonCode "Z11" . + +:hank + a :Unit ; + bamm:name "hank" ; + bamm:preferredName "hank"@en ; + :commonCode "HA" . + +:hartley + a :Unit ; + bamm:name "hartley" ; + bamm:preferredName "hartley"@en ; + :commonCode "Q15" ; + :symbol "Hart" . + +:hartleyPerSecond + a :Unit ; + bamm:name "hartleyPerSecond" ; + bamm:preferredName "hartley per second"@en ; + :commonCode "Q18" ; + :conversionFactor "Hart/s" ; + :symbol "Hart/s" . + +:head + a :Unit ; + bamm:name "head" ; + bamm:preferredName "head"@en ; + :commonCode "HEA" . + +:hectobar + a :Unit ; + bamm:name "hectobar" ; + bamm:preferredName "hectobar"@en ; + :commonCode "HBA" ; + :conversionFactor "10⁷ Pa" ; + :numericConversionFactor "1.0E7"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "hbar" . + +:hectogram + a :Unit ; + bamm:name "hectogram" ; + bamm:preferredName "hectogram"@en ; + :commonCode "HGM" ; + :conversionFactor "10⁻¹ kg" ; + :numericConversionFactor "0.1"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "hg" . + +:hectolitre + a :Unit ; + bamm:name "hectolitre" ; + bamm:preferredName "hectolitre"@en ; + :commonCode "HLT" ; + :conversionFactor "10⁻¹ m³" ; + :numericConversionFactor "0.1"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "hl" . + +:hectolitreOfPureAlcohol + a :Unit ; + bamm:name "hectolitreOfPureAlcohol" ; + bamm:preferredName "hectolitre of pure alcohol"@en ; + :commonCode "HPA" . + +:hectometre + a :Unit ; + bamm:name "hectometre" ; + bamm:preferredName "hectometre"@en ; + :commonCode "HMT" ; + :conversionFactor "10² m" ; + :numericConversionFactor "100.0"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "hm" . + +:hectopascal + a :Unit ; + bamm:name "hectopascal" ; + bamm:preferredName "hectopascal"@en ; + :commonCode "A97" ; + :conversionFactor "10² Pa" ; + :numericConversionFactor "100.0"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "hPa" . + +:hectopascalCubicMetrePerSecond + a :Unit ; + bamm:name "hectopascalCubicMetrePerSecond" ; + bamm:preferredName "hectopascal cubic metre per second"@en ; + :commonCode "F94" ; + :conversionFactor "10² kg × m² × s⁻³" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "hPa·m³/s" . + +:hectopascalLitrePerSecond + a :Unit ; + bamm:name "hectopascalLitrePerSecond" ; + bamm:preferredName "hectopascal litre per second"@en ; + :commonCode "F93" ; + :conversionFactor "10⁻¹ kg × m² × s⁻³" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "hPa·l/s" . + +:hectopascalPerBar + a :Unit ; + bamm:name "hectopascalPerBar" ; + bamm:preferredName "hectopascal per bar"@en ; + :commonCode "E99" ; + :conversionFactor "10⁻³" ; + :quantityKind :pressureRatio ; + :symbol "hPa/bar" . + +:hectopascalPerKelvin + a :Unit ; + bamm:name "hectopascalPerKelvin" ; + bamm:preferredName "hectopascal per kelvin"@en ; + :commonCode "F82" ; + :conversionFactor "10² kg × m⁻¹ × s⁻² × K⁻¹" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "hPa/K" . + +:hectopascalPerMetre + a :Unit ; + bamm:name "hectopascalPerMetre" ; + bamm:preferredName "hectopascal per metre"@en ; + :commonCode "P82" ; + :conversionFactor "10² kg/(m² × s²)" ; + :quantityKind :hardnessIndex ; + :symbol "hPa/m" . + +:hefnerKerze + a :Unit ; + bamm:name "hefnerKerze" ; + bamm:preferredName "Hefner-Kerze"@en ; + :commonCode "P35" ; + :conversionFactor "0.903 cd" ; + :numericConversionFactor "0.903"^^xsd:double ; + :quantityKind :luminousIntensity ; + :referenceUnit :candela ; + :symbol "HK" . + +:henry + a :Unit ; + bamm:name "henry" ; + bamm:preferredName "henry"@en ; + :commonCode "81" ; + :conversionFactor "H" ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :symbol "H" . + +:henryPerKiloohm + a :Unit ; + bamm:name "henryPerKiloohm" ; + bamm:preferredName "henry per kiloohm"@en ; + :commonCode "H03" ; + :conversionFactor "10⁻³ s" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :referenceUnit :secondUnitOfTime ; + :symbol "H/kΩ" . + +:henryPerMetre + a :Unit ; + bamm:name "henryPerMetre" ; + bamm:preferredName "henry per metre"@en ; + :commonCode "A98" ; + :conversionFactor "H/m" ; + :quantityKind :magneticConstant, :permeability, :permeabilityOfVacuum ; + :symbol "H/m" . + +:henryPerOhm + a :Unit ; + bamm:name "henryPerOhm" ; + bamm:preferredName "henry per ohm"@en ; + :commonCode "H04" ; + :conversionFactor "s" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :referenceUnit :secondUnitOfTime ; + :symbol "H/Ω" . + +:hertz + a :Unit ; + bamm:name "hertz" ; + bamm:preferredName "hertz"@en ; + :commonCode "HTZ" ; + :conversionFactor "Hz" ; + :quantityKind :frequency ; + :symbol "Hz" . + +:hertzMetre + a :Unit ; + bamm:name "hertzMetre" ; + bamm:preferredName "hertz metre"@en ; + :commonCode "H34" ; + :conversionFactor "Hz × m" ; + :quantityKind :coefficient, :performanceCharacteristic ; + :symbol "Hz·m" . + +:horsepowerBoiler + a :Unit ; + bamm:name "horsepowerBoiler" ; + bamm:preferredName "horsepower (boiler)"@en ; + :commonCode "K42" ; + :conversionFactor "9.80950 × 10³ W" ; + :numericConversionFactor "9809.5"^^xsd:double ; + :quantityKind :power ; + :referenceUnit :watt ; + :symbol "boiler hp" . + +:horsepowerElectric + a :Unit ; + bamm:name "horsepowerElectric" ; + bamm:preferredName "horsepower (electric)"@en ; + :commonCode "K43" ; + :conversionFactor "746 W" ; + :numericConversionFactor "746.0"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "electric hp" . + +:hour + a :Unit ; + bamm:name "hour" ; + bamm:preferredName "hour"@en ; + :commonCode "HUR" ; + :conversionFactor "3600 s" ; + :numericConversionFactor "3600.0"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "h" . + +:hundred + a :Unit ; + bamm:name "hundred" ; + bamm:preferredName "hundred"@en ; + :commonCode "CEN" ; + :conversionFactor "100" . + +:hundredBoardFoot + a :Unit ; + bamm:name "hundredBoardFoot" ; + bamm:preferredName "hundred board foot"@en ; + :commonCode "BP" . + +:hundredBoxes + a :Unit ; + bamm:name "hundredBoxes" ; + bamm:preferredName "hundred boxes"@en ; + :commonCode "HBX" . + +:hundredCount + a :Unit ; + bamm:name "hundredCount" ; + bamm:preferredName "hundred count"@en ; + :commonCode "HC" . + +:hundredCubicFoot + a :Unit ; + bamm:name "hundredCubicFoot" ; + bamm:preferredName "hundred cubic foot"@en ; + :commonCode "HH" . + +:hundredCubicMetre + a :Unit ; + bamm:name "hundredCubicMetre" ; + bamm:preferredName "hundred cubic metre"@en ; + :commonCode "FF" . + +:hundredInternationalUnit + a :Unit ; + bamm:name "hundredInternationalUnit" ; + bamm:preferredName "hundred international unit"@en ; + :commonCode "HIU" . + +:hundredKilogramDryWeight + a :Unit ; + bamm:name "hundredKilogramDryWeight" ; + bamm:preferredName "hundred kilogram, dry weight"@en ; + :commonCode "HDW" . + +:hundredKilogramNetMass + a :Unit ; + bamm:name "hundredKilogramNetMass" ; + bamm:preferredName "hundred kilogram, net mass"@en ; + :commonCode "HKM" . + +:hundredLeave + a :Unit ; + bamm:name "hundredLeave" ; + bamm:preferredName "hundred leave"@en ; + :commonCode "CLF" . + +:hundredMetre + a :Unit ; + bamm:name "hundredMetre" ; + bamm:preferredName "hundred metre"@en ; + :commonCode "JPS" . + +:hundredPack + a :Unit ; + bamm:name "hundredPack" ; + bamm:preferredName "hundred pack"@en ; + :commonCode "CNP" . + +:hundredPoundCwtOrHundredWeightUs + a :Unit ; + bamm:name "hundredPoundCwtOrHundredWeightUs" ; + bamm:preferredName "hundred pound (cwt) / hundred weight (US)"@en ; + :commonCode "CWA" ; + :conversionFactor "45.3592 kg" ; + :numericConversionFactor "45.3592"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "cwt (US)" . + +:hundredWeightUk + a :Unit ; + bamm:name "hundredWeightUk" ; + bamm:preferredName "hundred weight (UK)"@en ; + :commonCode "CWI" ; + :conversionFactor "50.80235 kg" ; + :numericConversionFactor "50.80235"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "cwt (UK)" . + +:hydraulicHorsePower + a :Unit ; + bamm:name "hydraulicHorsePower" ; + bamm:preferredName "hydraulic horse power"@en ; + :commonCode "5J" . + +:imperialGallonPerMinute + a :Unit ; + bamm:name "imperialGallonPerMinute" ; + bamm:preferredName "Imperial gallon per minute"@en ; + :commonCode "G3" ; + :conversionFactor "7.57682 × 10⁻⁵ m³/s" ; + :numericConversionFactor "7.57682E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gal (UK) /min" . + +:inch + a :Unit ; + bamm:name "inch" ; + bamm:preferredName "inch"@en ; + :commonCode "INH" ; + :conversionFactor "25.4 × 10⁻³ m" ; + :numericConversionFactor "0.0254"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "in" . + +:inchOfMercury + a :Unit ; + bamm:name "inchOfMercury" ; + bamm:preferredName "inch of mercury"@en ; + :commonCode "F79" ; + :conversionFactor "3.38639 × 10³ kg × m⁻¹ × s⁻²" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "inHg" . + +:inchOfMercury32Degreesf + a :Unit ; + bamm:name "inchOfMercury32Degreesf" ; + bamm:preferredName "inch of mercury (32 °F)"@en ; + :commonCode "N16" ; + :conversionFactor "3.38638 × 10³ Pa" ; + :numericConversionFactor "3386.38"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "inHG (32 °F)" . + +:inchOfMercury60Degreesf + a :Unit ; + bamm:name "inchOfMercury60Degreesf" ; + bamm:preferredName "inch of mercury (60 °F)"@en ; + :commonCode "N17" ; + :conversionFactor "3.37685 × 10³ Pa" ; + :numericConversionFactor "3376.85"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "inHg (60 °F)" . + +:inchOfWater + a :Unit ; + bamm:name "inchOfWater" ; + bamm:preferredName "inch of water"@en ; + :commonCode "F78" ; + :conversionFactor "2.49089 × 10² kg × m⁻¹ × s⁻²" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "inH₂O" . + +:inchOfWater392Degreesf + a :Unit ; + bamm:name "inchOfWater392Degreesf" ; + bamm:preferredName "inch of water (39.2 °F)"@en ; + :commonCode "N18" ; + :conversionFactor "2.49082 × 10² Pa" ; + :numericConversionFactor "249.082"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "inH₂O (39,2 °F)" . + +:inchOfWater60Degreesf + a :Unit ; + bamm:name "inchOfWater60Degreesf" ; + bamm:preferredName "inch of water (60 °F)"@en ; + :commonCode "N19" ; + :conversionFactor "2.4884 × 10² Pa" ; + :numericConversionFactor "248.84"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "inH₂O (60 °F)" . + +:inchPerDegreeFahrenheit + a :Unit ; + bamm:name "inchPerDegreeFahrenheit" ; + bamm:preferredName "inch per degree Fahrenheit"@en ; + :commonCode "K45" ; + :conversionFactor "4.572 × 10⁻² m/K" ; + :numericConversionFactor "0.04572"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metrePerKelvin ; + :symbol "in/°F" . + +:inchPerLinearFoot + a :Unit ; + bamm:name "inchPerLinearFoot" ; + bamm:preferredName "inch per linear foot"@en ; + :commonCode "B82" . + +:inchPerMinute + a :Unit ; + bamm:name "inchPerMinute" ; + bamm:preferredName "inch per minute"@en ; + :commonCode "M63" ; + :conversionFactor "4.233333 × 10⁻⁴ m/s" ; + :numericConversionFactor "4.233333E-4"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "in/min" . + +:inchPerPsi + a :Unit ; + bamm:name "inchPerPsi" ; + bamm:preferredName "inch per psi"@en ; + :commonCode "K46" ; + :conversionFactor "3.683959 × 10⁻⁶ m/Pa" ; + :numericConversionFactor "3.683959E-6"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metrePerPascal ; + :symbol "in/psi" . + +:inchPerSecond + a :Unit ; + bamm:name "inchPerSecond" ; + bamm:preferredName "inch per second"@en ; + :commonCode "IU" ; + :conversionFactor "0.0254 m/s" ; + :numericConversionFactor "0.0254"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "in/s" . + +:inchPerSecondDegreeFahrenheit + a :Unit ; + bamm:name "inchPerSecondDegreeFahrenheit" ; + bamm:preferredName "inch per second degree Fahrenheit"@en ; + :commonCode "K47" ; + :conversionFactor "4.572 × 10⁻² (m/s)/K" ; + :numericConversionFactor "0.04572"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecondKelvin ; + :symbol "(in/s)/°F" . + +:inchPerSecondPsi + a :Unit ; + bamm:name "inchPerSecondPsi" ; + bamm:preferredName "inch per second psi"@en ; + :commonCode "K48" ; + :conversionFactor "3.683959 × 10⁻⁶ (m/s)/Pa" ; + :numericConversionFactor "3.683959E-6"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecondPascal ; + :symbol "(in/s)/psi" . + +:inchPerSecondSquared + a :Unit ; + bamm:name "inchPerSecondSquared" ; + bamm:preferredName "inch per second squared"@en ; + :commonCode "IV" ; + :conversionFactor "0.0254 m/s²" ; + :numericConversionFactor "0.0254"^^xsd:double ; + :quantityKind :acceleration, :accelerationDueToGravity, :accelerationOfFreeFall ; + :referenceUnit :metrePerSecondSquared ; + :symbol "in/s²" . + +:inchPerTwoPiRadiant + a :Unit ; + bamm:name "inchPerTwoPiRadiant" ; + bamm:preferredName "inch per two pi radiant"@en ; + :commonCode "H57" ; + :conversionFactor "2.54 × 10⁻² m/(2 × π × rad)" ; + :quantityKind :solidAngle ; + :symbol "in/revolution" . + +:inchPerYear + a :Unit ; + bamm:name "inchPerYear" ; + bamm:preferredName "inch per year"@en ; + :commonCode "M61" ; + :conversionFactor "8.048774 × 10⁻¹⁰ m/s" ; + :numericConversionFactor "8.048774E-10"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "in/y" . + +:inchPoundPoundInch + a :Unit ; + bamm:name "inchPoundPoundInch" ; + bamm:preferredName "inch pound (pound inch)"@en ; + :commonCode "IA" ; + :conversionFactor "1.15212 × 10⁻² kg × m" ; + :numericConversionFactor "0.0115212"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :kilogramMetre ; + :symbol "in·lb" . + +:inchPoundal + a :Unit ; + bamm:name "inchPoundal" ; + bamm:preferredName "inch poundal"@en ; + :commonCode "N47" ; + :conversionFactor "3.511677 × 10⁻³ J" ; + :numericConversionFactor "0.003511677"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "in·pdl" . + +:inchToTheFourthPower + a :Unit ; + bamm:name "inchToTheFourthPower" ; + bamm:preferredName "inch to the fourth power"@en ; + :commonCode "D69" ; + :conversionFactor "41.62314 × 10⁻⁸ m⁴" ; + :numericConversionFactor "4.162314E-7"^^xsd:double ; + :quantityKind :secondPolarMomentOfArea ; + :referenceUnit :metreToTheFourthPower ; + :symbol "in⁴" . + +:internationalCandle + a :Unit ; + bamm:name "internationalCandle" ; + bamm:preferredName "international candle"@en ; + :commonCode "P36" ; + :conversionFactor "1.019 cd" ; + :numericConversionFactor "1.019"^^xsd:double ; + :quantityKind :luminousIntensity ; + :referenceUnit :candela ; + :symbol "IK" . + +:internationalSugarDegree + a :Unit ; + bamm:name "internationalSugarDegree" ; + bamm:preferredName "international sugar degree"@en ; + :commonCode "ISD" . + +:job + a :Unit ; + bamm:name "job" ; + bamm:preferredName "job"@en ; + :commonCode "E51" . + +:joule + a :Unit ; + bamm:name "joule" ; + bamm:preferredName "joule"@en ; + :commonCode "JOU" ; + :conversionFactor "J" ; + :quantityKind :activeEnergy, :alphaDisintegrationEnergy, :energy, :energyImparted, :enthalpy, :hartreeEnergy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :kineticEnergy, :levelWidth, :meanEnergyImparted, :potentialEnergy, :quantityOfHeat, :radiantEnergy, :reactionEnergy, :thermodynamicEnergy, :work, :workFunction ; + :symbol "J" . + +:joulePerCubicMetre + a :Unit ; + bamm:name "joulePerCubicMetre" ; + bamm:preferredName "joule per cubic metre"@en ; + :commonCode "B8" ; + :conversionFactor "J/m³" ; + :quantityKind :electromagneticEnergyDensity, :radiantEnergyDensity, :soundEnergy, :soundEnergyDensity, :volumic, :volumicElectromagneticEnergy ; + :symbol "J/m³" . + +:joulePerDay + a :Unit ; + bamm:name "joulePerDay" ; + bamm:preferredName "joule per day"@en ; + :commonCode "P17" ; + :conversionFactor "1.15741 × 10⁻⁵ W" ; + :numericConversionFactor "1.15741E-5"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "J/d" . + +:joulePerGram + a :Unit ; + bamm:name "joulePerGram" ; + bamm:preferredName "joule per gram"@en ; + :commonCode "D95" ; + :conversionFactor "J/(10⁻³ × kg)" ; + :quantityKind :massicThermodynamicEnergy ; + :symbol "J/g" . + +:joulePerHour + a :Unit ; + bamm:name "joulePerHour" ; + bamm:preferredName "joule per hour"@en ; + :commonCode "P16" ; + :conversionFactor "2.77778 × 10⁻⁴ W" ; + :numericConversionFactor "2.77778E-4"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "J/h" . + +:joulePerKelvin + a :Unit ; + bamm:name "joulePerKelvin" ; + bamm:preferredName "joule per kelvin"@en ; + :commonCode "JE" ; + :conversionFactor "J/K" ; + :quantityKind :boltzmannConstant, :entropy, :heatCapacity, :massieuFunction, :planckFunction ; + :symbol "J/K" . + +:joulePerKilogram + a :Unit ; + bamm:name "joulePerKilogram" ; + bamm:preferredName "joule per kilogram"@en ; + :commonCode "J2" ; + :conversionFactor "J/kg" ; + :quantityKind :massicEnergy, :specificEnergy ; + :symbol "J/kg" . + +:joulePerKilogramKelvin + a :Unit ; + bamm:name "joulePerKilogramKelvin" ; + bamm:preferredName "joule per kilogram kelvin"@en ; + :commonCode "B11" ; + :conversionFactor "J/(kg × K)" ; + :quantityKind :specificHeatCapacityAtConstantPressure, :specificHeatCapacityAtConstantVolume, :specificHeatCapacityAtSaturation ; + :symbol "J/(kg·K)" . + +:joulePerMetre + a :Unit ; + bamm:name "joulePerMetre" ; + bamm:preferredName "joule per metre"@en ; + :commonCode "B12" ; + :conversionFactor "J/m" ; + :quantityKind :linearEnergyTransfer, :totalLinearStoppingPower ; + :symbol "J/m" . + +:joulePerMetreToTheFourthPower + a :Unit ; + bamm:name "joulePerMetreToTheFourthPower" ; + bamm:preferredName "joule per metre to the fourth power"@en ; + :commonCode "B14" ; + :conversionFactor "J/m⁴" ; + :quantityKind :spectralConcentrationOfRadiantEnergyDensityInTermsOfWavelength, :spectralRadiantEnergyDensityInTermsOfWaveLength ; + :symbol "J/m⁴" . + +:joulePerMinute + a :Unit ; + bamm:name "joulePerMinute" ; + bamm:preferredName "joule per minute"@en ; + :commonCode "P15" ; + :conversionFactor "1.66667 × 10⁻² W" ; + :numericConversionFactor "0.0166667"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "J/min" . + +:joulePerMole + a :Unit ; + bamm:name "joulePerMole" ; + bamm:preferredName "joule per mole"@en ; + :commonCode "B15" ; + :conversionFactor "J/mol" ; + :quantityKind :affinityOfAChemicalReaction, :chemicalPotential, :molarThermodynamicEnergy ; + :symbol "J/mol" . + +:joulePerMoleKelvin + a :Unit ; + bamm:name "joulePerMoleKelvin" ; + bamm:preferredName "joule per mole kelvin"@en ; + :commonCode "B16" ; + :conversionFactor "J/(mol × K)" ; + :quantityKind :molarEntropy, :molarGasConstant, :molarHeatCapacity ; + :symbol "J/(mol·K)" . + +:joulePerSecond + a :Unit ; + bamm:name "joulePerSecond" ; + bamm:preferredName "joule per second"@en ; + :commonCode "P14" ; + :conversionFactor "W" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "J/s" . + +:joulePerSquareCentimetre + a :Unit ; + bamm:name "joulePerSquareCentimetre" ; + bamm:preferredName "joule per square centimetre"@en ; + :commonCode "E43" ; + :conversionFactor "10⁴ J/m²" ; + :numericConversionFactor "10000.0"^^xsd:double ; + :quantityKind :radianceExposure, :radiantEnergyFluence ; + :referenceUnit :joulePerSquareMetre ; + :symbol "J/cm²" . + +:joulePerSquareMetre + a :Unit ; + bamm:name "joulePerSquareMetre" ; + bamm:preferredName "joule per square metre"@en ; + :commonCode "B13" ; + :conversionFactor "J/m²" ; + :quantityKind :energyFluence, :radianceExposure, :radiantEnergyFluence ; + :symbol "J/m²" . + +:joulePerTesla + a :Unit ; + bamm:name "joulePerTesla" ; + bamm:preferredName "joule per tesla"@en ; + :commonCode "Q10" ; + :conversionFactor "m² × A" ; + :symbol "J/T" . + +:jouleSecond + a :Unit ; + bamm:name "jouleSecond" ; + bamm:preferredName "joule second"@en ; + :commonCode "B18" ; + :conversionFactor "J × s" ; + :quantityKind :planckConstant ; + :symbol "J·s" . + +:jouleSquareMetre + a :Unit ; + bamm:name "jouleSquareMetre" ; + bamm:preferredName "joule square metre"@en ; + :commonCode "D73" ; + :conversionFactor "J × m²" ; + :quantityKind :totalAtomicStoppingPower ; + :symbol "J·m²" . + +:jouleSquareMetrePerKilogram + a :Unit ; + bamm:name "jouleSquareMetrePerKilogram" ; + bamm:preferredName "joule square metre per kilogram"@en ; + :commonCode "B20" ; + :conversionFactor "J × m²/kg" ; + :quantityKind :totalMassStoppingPower ; + :symbol "J·m²/kg" . + +:katal + a :Unit ; + bamm:name "katal" ; + bamm:preferredName "katal"@en ; + :commonCode "KAT" ; + :conversionFactor "s⁻¹ × mol" ; + :quantityKind :catalyticActivity ; + :symbol "kat" . + +:kelvin + a :Unit ; + bamm:name "kelvin" ; + bamm:preferredName "kelvin"@en ; + :commonCode "KEL" ; + :conversionFactor "K" ; + :quantityKind :curieTemperature, :debyeTemperature, :fermiTemperature, :neelTemperature, :superConductorTransitionTemperature, :thermodynamic ; + :symbol "K" . + +:kelvinMetrePerWatt + a :Unit ; + bamm:name "kelvinMetrePerWatt" ; + bamm:preferredName "kelvin metre per watt"@en ; + :commonCode "H35" ; + :conversionFactor "K × m⁻¹ × kg⁻¹ × s³" ; + :quantityKind :thermalResistance ; + :symbol "K·m/W" . + +:kelvinPerBar + a :Unit ; + bamm:name "kelvinPerBar" ; + bamm:preferredName "kelvin per bar"@en ; + :commonCode "F61" ; + :conversionFactor "10⁻⁵ kg⁻¹ × m × s² × K" ; + :quantityKind :temperature ; + :symbol "K/bar" . + +:kelvinPerHour + a :Unit ; + bamm:name "kelvinPerHour" ; + bamm:preferredName "kelvin per hour"@en ; + :commonCode "F10" ; + :conversionFactor "2.77778 × 10⁻⁴ s⁻¹ × K" ; + :quantityKind :temperature ; + :symbol "K/h" . + +:kelvinPerKelvin + a :Unit ; + bamm:name "kelvinPerKelvin" ; + bamm:preferredName "kelvin per kelvin"@en ; + :commonCode "F02" ; + :conversionFactor "1.0" ; + :quantityKind :temperature ; + :symbol "K/K" . + +:kelvinPerMinute + a :Unit ; + bamm:name "kelvinPerMinute" ; + bamm:preferredName "kelvin per minute"@en ; + :commonCode "F11" ; + :conversionFactor "1.66667 × 10⁻² s⁻¹ × K" ; + :quantityKind :temperature ; + :symbol "K/min" . + +:kelvinPerPascal + a :Unit ; + bamm:name "kelvinPerPascal" ; + bamm:preferredName "kelvin per pascal"@en ; + :commonCode "N79" ; + :conversionFactor "kg⁻¹ × m × s² × K" ; + :quantityKind :temperature ; + :symbol "K/Pa" . + +:kelvinPerSecond + a :Unit ; + bamm:name "kelvinPerSecond" ; + bamm:preferredName "kelvin per second"@en ; + :commonCode "F12" ; + :conversionFactor "s⁻¹ × K" ; + :quantityKind :temperature ; + :symbol "K/s" . + +:kelvinPerWatt + a :Unit ; + bamm:name "kelvinPerWatt" ; + bamm:preferredName "kelvin per watt"@en ; + :commonCode "B21" ; + :conversionFactor "K/W" ; + :quantityKind :thermalResistance ; + :symbol "K/W" . + +:kibibit + a :Unit ; + bamm:name "kibibit" ; + bamm:preferredName "kibibit"@en ; + :commonCode "C21" ; + :symbol "Kibit" . + +:kibibitPerCubicMetre + a :Unit ; + bamm:name "kibibitPerCubicMetre" ; + bamm:preferredName "kibibit per cubic metre"@en ; + :commonCode "E74" ; + :symbol "Kibit/m³" . + +:kibibitPerMetre + a :Unit ; + bamm:name "kibibitPerMetre" ; + bamm:preferredName "kibibit per metre"@en ; + :commonCode "E72" ; + :symbol "Kibit/m" . + +:kibibitPerSquareMetre + a :Unit ; + bamm:name "kibibitPerSquareMetre" ; + bamm:preferredName "kibibit per square metre"@en ; + :commonCode "E73" ; + :symbol "Kibit/m²" . + +:kibibyte + a :Unit ; + bamm:name "kibibyte" ; + bamm:preferredName "kibibyte"@en ; + :commonCode "E64" ; + :conversionFactor "2¹⁰ B" ; + :numericConversionFactor "1024.0"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "Kibyte" . + +:kiloampere + a :Unit ; + bamm:name "kiloampere" ; + bamm:preferredName "kiloampere"@en ; + :commonCode "B22" ; + :conversionFactor "10³ A" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :currentLinkage, :electricCurrent, :magneticPotentialDifference, :magnetomotiveForce ; + :referenceUnit :ampere ; + :symbol "kA" . + +:kiloampereHourThousandAmpereHour + a :Unit ; + bamm:name "kiloampereHourThousandAmpereHour" ; + bamm:preferredName "kiloampere hour (thousand ampere hour)"@en ; + :commonCode "TAH" ; + :conversionFactor "3.6 × 10⁶ C" ; + :numericConversionFactor "3600000.0"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "kA·h" . + +:kiloamperePerMetre + a :Unit ; + bamm:name "kiloamperePerMetre" ; + bamm:preferredName "kiloampere per metre"@en ; + :commonCode "B24" ; + :conversionFactor "10³ A/m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :linearElectricCurrentDensity, :lineicElectricCurrent, :magneticFieldStrength ; + :referenceUnit :amperePerMetre ; + :symbol "kA/m" . + +:kiloamperePerSquareMetre + a :Unit ; + bamm:name "kiloamperePerSquareMetre" ; + bamm:preferredName "kiloampere per square metre"@en ; + :commonCode "B23" ; + :conversionFactor "10³ A/m²" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :currentDensity ; + :referenceUnit :amperePerSquareMetre ; + :symbol "kA/m²" . + +:kilobar + a :Unit ; + bamm:name "kilobar" ; + bamm:preferredName "kilobar"@en ; + :commonCode "KBA" ; + :conversionFactor "10⁸ Pa" ; + :numericConversionFactor "1.0E8"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "kbar" . + +:kilobaud + a :Unit ; + bamm:name "kilobaud" ; + bamm:preferredName "kilobaud"@en ; + :commonCode "K50" ; + :conversionFactor "10³ Bd" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :referenceUnit :baud ; + :symbol "kBd" . + +:kilobecquerel + a :Unit ; + bamm:name "kilobecquerel" ; + bamm:preferredName "kilobecquerel"@en ; + :commonCode "2Q" ; + :conversionFactor "10³ Bq" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :activity ; + :referenceUnit :becquerel ; + :symbol "kBq" . + +:kilobecquerelPerKilogram + a :Unit ; + bamm:name "kilobecquerelPerKilogram" ; + bamm:preferredName "kilobecquerel per kilogram"@en ; + :commonCode "B25" ; + :conversionFactor "10³ Bq/kg" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :specificActivityInASample ; + :referenceUnit :becquerelPerKilogram ; + :symbol "kBq/kg" . + +:kilobit + a :Unit ; + bamm:name "kilobit" ; + bamm:preferredName "kilobit"@en ; + :commonCode "C37" ; + :symbol "kbit" . + +:kilobitPerSecond + a :Unit ; + bamm:name "kilobitPerSecond" ; + bamm:preferredName "kilobit per second"@en ; + :commonCode "C74" ; + :conversionFactor "10³ bit/s" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :referenceUnit :bitPerSecond ; + :symbol "kbit/s" . + +:kilobyte + a :Unit ; + bamm:name "kilobyte" ; + bamm:preferredName "Kilobyte"@en ; + :commonCode "2P" ; + :conversionFactor "10³ B" ; + :numericConversionFactor "1.0E3"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "kbyte" . + +:kilobytePerSecond + a :Unit ; + bamm:name "kilobytePerSecond" ; + bamm:preferredName "kilobyte per second"@en ; + :commonCode "P94" ; + :conversionFactor "10³ byte/s" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :referenceUnit :bytePerSecond ; + :symbol "kbyte/s" . + +:kilocalorieInternationalTable + a :Unit ; + bamm:name "kilocalorieInternationalTable" ; + bamm:preferredName "kilocalorie (international table)"@en ; + :commonCode "E14" ; + :conversionFactor "4.1868 × 10³ J" ; + :numericConversionFactor "4186.8"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "kcalIT" . + +:kilocalorieInternationalTablePerGramKelvin + a :Unit ; + bamm:name "kilocalorieInternationalTablePerGramKelvin" ; + bamm:preferredName "kilocalorie (international table) per gram kelvin"@en ; + :commonCode "N65" ; + :conversionFactor "4.1868 × 10⁶ J/(kg × K)" ; + :numericConversionFactor "4186800.0"^^xsd:double ; + :quantityKind :entropy, :heatCapacity ; + :referenceUnit :joulePerKilogramKelvin ; + :symbol "(kcalIT/K)/g" . + +:kilocalorieInternationalTablePerHourMetreDegreeCelsius + a :Unit ; + bamm:name "kilocalorieInternationalTablePerHourMetreDegreeCelsius" ; + bamm:preferredName "kilocalorie (international table) per hour metre degree Celsius"@en ; + :commonCode "K52" ; + :conversionFactor "1.163 J/(m × s × K)" ; + :quantityKind :thermalConductivity ; + :symbol "kcal/(m·h·°C)" . + +:kilocalorieMean + a :Unit ; + bamm:name "kilocalorieMean" ; + bamm:preferredName "kilocalorie (mean)"@en ; + :commonCode "K51" ; + :conversionFactor "4.19002 × 10³ J" ; + :numericConversionFactor "4190.02"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "kcal" . + +:kilocalorieThermochemical + a :Unit ; + bamm:name "kilocalorieThermochemical" ; + bamm:preferredName "kilocalorie (thermochemical)"@en ; + :commonCode "K53" ; + :conversionFactor "4.184 × 10³ J" ; + :numericConversionFactor "4184.0"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "kcalth" . + +:kilocalorieThermochemicalPerHour + a :Unit ; + bamm:name "kilocalorieThermochemicalPerHour" ; + bamm:preferredName "kilocalorie (thermochemical) per hour"@en ; + :commonCode "E15" ; + :conversionFactor "1.16222 W" ; + :numericConversionFactor "1.16222"^^xsd:double ; + :quantityKind :heatFlowRate ; + :referenceUnit :watt ; + :symbol "kcalth/h" . + +:kilocalorieThermochemicalPerMinute + a :Unit ; + bamm:name "kilocalorieThermochemicalPerMinute" ; + bamm:preferredName "kilocalorie (thermochemical) per minute"@en ; + :commonCode "K54" ; + :conversionFactor "69.73333 W" ; + :numericConversionFactor "69.73333"^^xsd:double ; + :quantityKind :heatFlowRate ; + :referenceUnit :watt ; + :symbol "kcalth/min" . + +:kilocalorieThermochemicalPerSecond + a :Unit ; + bamm:name "kilocalorieThermochemicalPerSecond" ; + bamm:preferredName "kilocalorie (thermochemical) per second"@en ; + :commonCode "K55" ; + :conversionFactor "4.184 × 10³ W" ; + :numericConversionFactor "4184.0"^^xsd:double ; + :quantityKind :heatFlowRate ; + :referenceUnit :watt ; + :symbol "kcalth/s" . + +:kilocandela + a :Unit ; + bamm:name "kilocandela" ; + bamm:preferredName "kilocandela"@en ; + :commonCode "P33" ; + :conversionFactor "10³ cd" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :luminousIntensity ; + :referenceUnit :candela ; + :symbol "kcd" . + +:kilocharacter + a :Unit ; + bamm:name "kilocharacter" ; + bamm:preferredName "kilocharacter"@en ; + :commonCode "KB" . + +:kilocoulomb + a :Unit ; + bamm:name "kilocoulomb" ; + bamm:preferredName "kilocoulomb"@en ; + :commonCode "B26" ; + :conversionFactor "10³ C" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "kC" . + +:kilocoulombPerCubicMetre + a :Unit ; + bamm:name "kilocoulombPerCubicMetre" ; + bamm:preferredName "kilocoulomb per cubic metre"@en ; + :commonCode "B27" ; + :conversionFactor "10³ C/m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :chargeDensity, :volumeDensityOfCharge, :volumicCharge ; + :referenceUnit :coulombPerCubicMetre ; + :symbol "kC/m³" . + +:kilocoulombPerSquareMetre + a :Unit ; + bamm:name "kilocoulombPerSquareMetre" ; + bamm:preferredName "kilocoulomb per square metre"@en ; + :commonCode "B28" ; + :conversionFactor "10³ C/m²" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :displacementElectricPolarization, :electricFluxDensity, :surfaceDensityOfCharge ; + :referenceUnit :coulombPerSquareMetre ; + :symbol "kC/m²" . + +:kilocurie + a :Unit ; + bamm:name "kilocurie" ; + bamm:preferredName "kilocurie"@en ; + :commonCode "2R" ; + :conversionFactor "3.7 × 10¹³ Bq" ; + :numericConversionFactor "3.7E13"^^xsd:double ; + :quantityKind :activity ; + :referenceUnit :becquerel ; + :symbol "kCi" . + +:kiloelectronvolt + a :Unit ; + bamm:name "kiloelectronvolt" ; + bamm:preferredName "kiloelectronvolt"@en ; + :commonCode "B29" ; + :conversionFactor "10³ eV" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :electronvolt ; + :symbol "keV" . + +:kilofarad + a :Unit ; + bamm:name "kilofarad" ; + bamm:preferredName "kilofarad"@en ; + :commonCode "N90" ; + :conversionFactor "10³ F" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :capacitance ; + :referenceUnit :farad ; + :symbol "kF" . + +:kilogram + a :Unit ; + bamm:name "kilogram" ; + bamm:preferredName "kilogram"@en ; + :commonCode "KGM" ; + :conversionFactor "kg" ; + :quantityKind :effectiveMass, :mass, :massExcess, :massOfAtomOfANuclideX, :massOfMolecule, :nuclidicMass ; + :symbol "kg" . + +:kilogramCentimetrePerSecond + a :Unit ; + bamm:name "kilogramCentimetrePerSecond" ; + bamm:preferredName "kilogram centimetre per second"@en ; + :commonCode "M98" ; + :conversionFactor "10⁻² kg × m/s" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :momentum ; + :referenceUnit :kilogramMetrePerSecond ; + :symbol "kg·(cm/s)" . + +:kilogramDrainedNetWeight + a :Unit ; + bamm:name "kilogramDrainedNetWeight" ; + bamm:preferredName "kilogram drained net weight"@en ; + :commonCode "KDW" ; + :symbol "kg/net eda" . + +:kilogramDryWeight + a :Unit ; + bamm:name "kilogramDryWeight" ; + bamm:preferredName "kilogram, dry weight"@en ; + :commonCode "MND" . + +:kilogramForceMetrePerSquareCentimetre + a :Unit ; + bamm:name "kilogramForceMetrePerSquareCentimetre" ; + bamm:preferredName "kilogram-force metre per square centimetre"@en ; + :commonCode "E44" ; + :symbol "kgf·m/cm²" . + +:kilogramForcePerSquareCentimetre + a :Unit ; + bamm:name "kilogramForcePerSquareCentimetre" ; + bamm:preferredName "kilogram-force per square centimetre"@en ; + :commonCode "E42" ; + :conversionFactor "9.80665 × 10⁴ Pa" ; + :numericConversionFactor "98066.5"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "kgf/cm²" . + +:kilogramForcePerSquareMillimetre + a :Unit ; + bamm:name "kilogramForcePerSquareMillimetre" ; + bamm:preferredName "kilogram-force per square millimetre"@en ; + :commonCode "E41" ; + :conversionFactor "9.80665 × 10⁶ Pa" ; + :numericConversionFactor "9.80665E-6"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "kgf/mm²" . + +:kilogramIncludingContainer + a :Unit ; + bamm:name "kilogramIncludingContainer" ; + bamm:preferredName "kilogram, including container"@en ; + :commonCode "KIC" . + +:kilogramIncludingInnerPackaging + a :Unit ; + bamm:name "kilogramIncludingInnerPackaging" ; + bamm:preferredName "kilogram, including inner packaging"@en ; + :commonCode "KIP" . + +:kilogramMetre + a :Unit ; + bamm:name "kilogramMetre" ; + bamm:preferredName "kilogram metre"@en ; + :commonCode "M94" ; + :conversionFactor "kg × m" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "kg·m" . + +:kilogramMetrePerSecond + a :Unit ; + bamm:name "kilogramMetrePerSecond" ; + bamm:preferredName "kilogram metre per second"@en ; + :commonCode "B31" ; + :conversionFactor "kg × m/s" ; + :quantityKind :momentum ; + :symbol "kg·m/s" . + +:kilogramMetrePerSecondSquared + a :Unit ; + bamm:name "kilogramMetrePerSecondSquared" ; + bamm:preferredName "kilogram metre per second squared"@en ; + :commonCode "M77" ; + :conversionFactor "(kg × m)/s²" ; + :quantityKind :force, :weight ; + :symbol "kg·m/s²" . + +:kilogramMetreSquared + a :Unit ; + bamm:name "kilogramMetreSquared" ; + bamm:preferredName "kilogram metre squared"@en ; + :commonCode "B32" ; + :conversionFactor "kg × m²" ; + :quantityKind :momentOfInertiaDynamicMomentOfInertia ; + :symbol "kg·m²" . + +:kilogramMetreSquaredPerSecond + a :Unit ; + bamm:name "kilogramMetreSquaredPerSecond" ; + bamm:preferredName "kilogram metre squared per second"@en ; + :commonCode "B33" ; + :conversionFactor "kg × m²/s" ; + :quantityKind :angularMomentum, :momentOfMomentum ; + :symbol "kg·m²/s" . + +:kilogramNamedSubstance + a :Unit ; + bamm:name "kilogramNamedSubstance" ; + bamm:preferredName "kilogram named substance"@en ; + :commonCode "KNS" . + +:kilogramOfCholineChloride + a :Unit ; + bamm:name "kilogramOfCholineChloride" ; + bamm:preferredName "kilogram of choline chloride"@en ; + :commonCode "KCC" ; + :symbol "kg C₅ H₁₄ClNO" . + +:kilogramOfHydrogenPeroxide + a :Unit ; + bamm:name "kilogramOfHydrogenPeroxide" ; + bamm:preferredName "kilogram of hydrogen peroxide"@en ; + :commonCode "KHY" ; + :symbol "kg H₂O₂" . + +:kilogramOfImportedMeatLessOffal + a :Unit ; + bamm:name "kilogramOfImportedMeatLessOffal" ; + bamm:preferredName "kilogram of imported meat, less offal"@en ; + :commonCode "TMS" . + +:kilogramOfMethylamine + a :Unit ; + bamm:name "kilogramOfMethylamine" ; + bamm:preferredName "kilogram of methylamine"@en ; + :commonCode "KMA" ; + :symbol "kg met.am." . + +:kilogramOfNitrogen + a :Unit ; + bamm:name "kilogramOfNitrogen" ; + bamm:preferredName "kilogram of nitrogen"@en ; + :commonCode "KNI" ; + :symbol "kg N" . + +:kilogramOfPhosphorusPentoxidePhosphoricAnhydride + a :Unit ; + bamm:name "kilogramOfPhosphorusPentoxidePhosphoricAnhydride" ; + bamm:preferredName "kilogram of phosphorus pentoxide (phosphoric anhydride)"@en ; + :commonCode "KPP" . + +:kilogramOfPotassiumHydroxideCausticPotash + a :Unit ; + bamm:name "kilogramOfPotassiumHydroxideCausticPotash" ; + bamm:preferredName "kilogram of potassium hydroxide (caustic potash)"@en ; + :commonCode "KPH" ; + :symbol "kg KOH" . + +:kilogramOfPotassiumOxide + a :Unit ; + bamm:name "kilogramOfPotassiumOxide" ; + bamm:preferredName "kilogram of potassium oxide"@en ; + :commonCode "KPO" ; + :symbol "kg K₂O" . + +:kilogramOfSodiumHydroxideCausticSoda + a :Unit ; + bamm:name "kilogramOfSodiumHydroxideCausticSoda" ; + bamm:preferredName "kilogram of sodium hydroxide (caustic soda)"@en ; + :commonCode "KSH" ; + :symbol "kg NaOH" . + +:kilogramOfSubstance90PercentDry + a :Unit ; + bamm:name "kilogramOfSubstance90PercentDry" ; + bamm:preferredName "kilogram of substance 90 % dry"@en ; + :commonCode "KSD" ; + :symbol "kg 90 % sdt" . + +:kilogramOfTungstenTrioxide + a :Unit ; + bamm:name "kilogramOfTungstenTrioxide" ; + bamm:preferredName "kilogram of tungsten trioxide"@en ; + :commonCode "KWO" ; + :symbol "kg WO₃" . + +:kilogramOfUranium + a :Unit ; + bamm:name "kilogramOfUranium" ; + bamm:preferredName "kilogram of uranium"@en ; + :commonCode "KUR" ; + :symbol "kg U" . + +:kilogramPerBar + a :Unit ; + bamm:name "kilogramPerBar" ; + bamm:preferredName "kilogram per bar"@en ; + :commonCode "H53" ; + :conversionFactor "10⁻⁵ m × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg/bar" . + +:kilogramPerCubicCentimetre + a :Unit ; + bamm:name "kilogramPerCubicCentimetre" ; + bamm:preferredName "kilogram per cubic centimetre"@en ; + :commonCode "G31" ; + :conversionFactor "10⁶ kg × m⁻³" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg/cm³" . + +:kilogramPerCubicCentimetreBar + a :Unit ; + bamm:name "kilogramPerCubicCentimetreBar" ; + bamm:preferredName "kilogram per cubic centimetre bar"@en ; + :commonCode "G16" ; + :conversionFactor "10¹ m⁻² × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg/(cm³·bar)" . + +:kilogramPerCubicCentimetreKelvin + a :Unit ; + bamm:name "kilogramPerCubicCentimetreKelvin" ; + bamm:preferredName "kilogram per cubic centimetre kelvin"@en ; + :commonCode "G38" ; + :conversionFactor "10⁶ kg × m⁻³ × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg/(cm³·K)" . + +:kilogramPerCubicDecimetre + a :Unit ; + bamm:name "kilogramPerCubicDecimetre" ; + bamm:preferredName "kilogram per cubic decimetre"@en ; + :commonCode "B34" ; + :conversionFactor "10³ kg/m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "kg/dm³" . + +:kilogramPerCubicDecimetreBar + a :Unit ; + bamm:name "kilogramPerCubicDecimetreBar" ; + bamm:preferredName "kilogram per cubic decimetre bar"@en ; + :commonCode "H55" ; + :conversionFactor "10⁻² m⁻² × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "(kg/dm³)/bar" . + +:kilogramPerCubicDecimetreKelvin + a :Unit ; + bamm:name "kilogramPerCubicDecimetreKelvin" ; + bamm:preferredName "kilogram per cubic decimetre kelvin"@en ; + :commonCode "H54" ; + :conversionFactor "10³ m⁻³ × kg × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "(kg/dm³)/K" . + +:kilogramPerCubicMetre + a :Unit ; + bamm:name "kilogramPerCubicMetre" ; + bamm:preferredName "kilogram per cubic metre"@en ; + :commonCode "KMQ" ; + :conversionFactor "kg/m³" ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :symbol "kg/m³" . + +:kilogramPerCubicMetreBar + a :Unit ; + bamm:name "kilogramPerCubicMetreBar" ; + bamm:preferredName "kilogram per cubic metre bar"@en ; + :commonCode "G18" ; + :conversionFactor "10⁻⁵ m⁻² × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg/(m³·bar)" . + +:kilogramPerCubicMetreKelvin + a :Unit ; + bamm:name "kilogramPerCubicMetreKelvin" ; + bamm:preferredName "kilogram per cubic metre kelvin"@en ; + :commonCode "G40" ; + :conversionFactor "kg × m⁻³ × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg/(m³·K)" . + +:kilogramPerCubicMetrePascal + a :Unit ; + bamm:name "kilogramPerCubicMetrePascal" ; + bamm:preferredName "kilogram per cubic metre pascal"@en ; + :commonCode "M73" ; + :conversionFactor "m⁻² × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "(kg/m³)/Pa" . + +:kilogramPerDay + a :Unit ; + bamm:name "kilogramPerDay" ; + bamm:preferredName "kilogram per day"@en ; + :commonCode "F30" ; + :conversionFactor "1.15741 × 10⁻⁵ kg × s⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "kg/d" . + +:kilogramPerDayBar + a :Unit ; + bamm:name "kilogramPerDayBar" ; + bamm:preferredName "kilogram per day bar"@en ; + :commonCode "F66" ; + :conversionFactor "1.15741 × 10⁻¹⁰ m × s" ; + :quantityKind :massFlowRate ; + :symbol "kg/(d·bar)" . + +:kilogramPerDayKelvin + a :Unit ; + bamm:name "kilogramPerDayKelvin" ; + bamm:preferredName "kilogram per day kelvin"@en ; + :commonCode "F39" ; + :conversionFactor "1.15741 × 10⁻⁵ kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "kg/(d·K)" . + +:kilogramPerHour + a :Unit ; + bamm:name "kilogramPerHour" ; + bamm:preferredName "kilogram per hour"@en ; + :commonCode "E93" ; + :conversionFactor "2.77778 × 10⁻⁴ kg × s⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "kg/h" . + +:kilogramPerHourBar + a :Unit ; + bamm:name "kilogramPerHourBar" ; + bamm:preferredName "kilogram per hour bar"@en ; + :commonCode "F67" ; + :conversionFactor "2.77778 × 10⁻⁹ m × s" ; + :quantityKind :massFlowRate ; + :symbol "kg/(h·bar)" . + +:kilogramPerHourKelvin + a :Unit ; + bamm:name "kilogramPerHourKelvin" ; + bamm:preferredName "kilogram per hour kelvin"@en ; + :commonCode "F40" ; + :conversionFactor "2.77778 × 10⁻⁴ kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "kg/(h·K)" . + +:kilogramPerKelvin + a :Unit ; + bamm:name "kilogramPerKelvin" ; + bamm:preferredName "kilogram per kelvin"@en ; + :commonCode "F15" ; + :conversionFactor "kg × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg/K" . + +:kilogramPerKilogram + a :Unit ; + bamm:name "kilogramPerKilogram" ; + bamm:preferredName "kilogram per kilogram"@en ; + :commonCode "M29" ; + :conversionFactor "1" ; + :quantityKind :massRatio ; + :symbol "kg/kg" . + +:kilogramPerKilometre + a :Unit ; + bamm:name "kilogramPerKilometre" ; + bamm:preferredName "kilogram per kilometre"@en ; + :commonCode "M31" ; + :conversionFactor "10⁻³ kg/m" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :linearDensity, :linearMass ; + :referenceUnit :kilogramPerMetre ; + :symbol "kg/km" . + +:kilogramPerKilomol + a :Unit ; + bamm:name "kilogramPerKilomol" ; + bamm:preferredName "kilogram per kilomol"@en ; + :commonCode "F24" ; + :conversionFactor "10⁻³ kg × mol⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg/kmol" . + +:kilogramPerLitre + a :Unit ; + bamm:name "kilogramPerLitre" ; + bamm:preferredName "kilogram per litre"@en ; + :commonCode "B35" ; + :conversionFactor "10³ kg/m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "kg/l or kg/L" . + +:kilogramPerLitreBar + a :Unit ; + bamm:name "kilogramPerLitreBar" ; + bamm:preferredName "kilogram per litre bar"@en ; + :commonCode "G17" ; + :conversionFactor "10⁻² m⁻² × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg/(l·bar)" . + +:kilogramPerLitreKelvin + a :Unit ; + bamm:name "kilogramPerLitreKelvin" ; + bamm:preferredName "kilogram per litre kelvin"@en ; + :commonCode "G39" ; + :conversionFactor "10³ kg × m⁻³ × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg/(l·K)" . + +:kilogramPerMetre + a :Unit ; + bamm:name "kilogramPerMetre" ; + bamm:preferredName "kilogram per metre"@en ; + :commonCode "KL" ; + :conversionFactor "kg/m" ; + :quantityKind :linearDensity, :linearMass ; + :symbol "kg/m" . + +:kilogramPerMetreDay + a :Unit ; + bamm:name "kilogramPerMetreDay" ; + bamm:preferredName "kilogram per metre day"@en ; + :commonCode "N39" ; + :conversionFactor "1.15741 × 10⁻⁵ Pa × s" ; + :numericConversionFactor "1.15741E-5"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "kg/(m·d)" . + +:kilogramPerMetreHour + a :Unit ; + bamm:name "kilogramPerMetreHour" ; + bamm:preferredName "kilogram per metre hour"@en ; + :commonCode "N40" ; + :conversionFactor "2.77778 × 10⁻⁴ Pa × s" ; + :numericConversionFactor "2.77778E-4"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "kg/(m·h)" . + +:kilogramPerMetreMinute + a :Unit ; + bamm:name "kilogramPerMetreMinute" ; + bamm:preferredName "kilogram per metre minute"@en ; + :commonCode "N38" ; + :conversionFactor "1.66667 × 10⁻² Pa × s" ; + :numericConversionFactor "0.0166667"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "kg/(m·min)" . + +:kilogramPerMetreSecond + a :Unit ; + bamm:name "kilogramPerMetreSecond" ; + bamm:preferredName "kilogram per metre second"@en ; + :commonCode "N37" ; + :conversionFactor "Pa × s" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "kg/(m·s)" . + +:kilogramPerMillimetre + a :Unit ; + bamm:name "kilogramPerMillimetre" ; + bamm:preferredName "kilogram per millimetre"@en ; + :commonCode "KW" ; + :conversionFactor "10³ kg/m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :linearDensity, :linearMass ; + :referenceUnit :kilogramPerMetre ; + :symbol "kg/mm" . + +:kilogramPerMillimetreWidth + a :Unit ; + bamm:name "kilogramPerMillimetreWidth" ; + bamm:preferredName "kilogram per millimetre width"@en ; + :commonCode "KI" ; + :conversionFactor "10³ kg/m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :referenceUnit :kilogramPerMetre . + +:kilogramPerMinute + a :Unit ; + bamm:name "kilogramPerMinute" ; + bamm:preferredName "kilogram per minute"@en ; + :commonCode "F31" ; + :conversionFactor "1.66667 × 10⁻² kg × s⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "kg/min" . + +:kilogramPerMinuteBar + a :Unit ; + bamm:name "kilogramPerMinuteBar" ; + bamm:preferredName "kilogram per minute bar"@en ; + :commonCode "F68" ; + :conversionFactor "1.66667 × 10⁻⁷ m × s" ; + :quantityKind :massFlowRate ; + :symbol "kg/(min·bar)" . + +:kilogramPerMinuteKelvin + a :Unit ; + bamm:name "kilogramPerMinuteKelvin" ; + bamm:preferredName "kilogram per minute kelvin"@en ; + :commonCode "F41" ; + :conversionFactor "1.66667 × 10⁻²kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "kg/(min·K)" . + +:kilogramPerMole + a :Unit ; + bamm:name "kilogramPerMole" ; + bamm:preferredName "kilogram per mole"@en ; + :commonCode "D74" ; + :conversionFactor "kg/mol" ; + :quantityKind :molarMass ; + :symbol "kg/mol" . + +:kilogramPerPascal + a :Unit ; + bamm:name "kilogramPerPascal" ; + bamm:preferredName "kilogram per pascal"@en ; + :commonCode "M74" ; + :conversionFactor "m × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg/Pa" . + +:kilogramPerSecond + a :Unit ; + bamm:name "kilogramPerSecond" ; + bamm:preferredName "kilogram per second"@en ; + :commonCode "KGS" ; + :conversionFactor "kg/s" ; + :quantityKind :massFlowRate ; + :symbol "kg/s" . + +:kilogramPerSecondBar + a :Unit ; + bamm:name "kilogramPerSecondBar" ; + bamm:preferredName "kilogram per second bar"@en ; + :commonCode "F69" ; + :conversionFactor "10⁻⁵ m × s" ; + :quantityKind :massFlowRate ; + :symbol "kg/(s·bar)" . + +:kilogramPerSecondKelvin + a :Unit ; + bamm:name "kilogramPerSecondKelvin" ; + bamm:preferredName "kilogram per second kelvin"@en ; + :commonCode "F42" ; + :conversionFactor "kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "kg/(s·K)" . + +:kilogramPerSecondPascal + a :Unit ; + bamm:name "kilogramPerSecondPascal" ; + bamm:preferredName "kilogram per second pascal"@en ; + :commonCode "M87" ; + :conversionFactor "m × s" ; + :quantityKind :massFlowRate ; + :symbol "(kg/s)/Pa" . + +:kilogramPerSquareCentimetre + a :Unit ; + bamm:name "kilogramPerSquareCentimetre" ; + bamm:preferredName "kilogram per square centimetre"@en ; + :commonCode "D5" ; + :conversionFactor "10⁴ kg/m²" ; + :numericConversionFactor "10000.0"^^xsd:double ; + :quantityKind :areicMass, :surfaceDensity ; + :referenceUnit :kilogramPerSquareMetre ; + :symbol "kg/cm²" . + +:kilogramPerSquareMetre + a :Unit ; + bamm:name "kilogramPerSquareMetre" ; + bamm:preferredName "kilogram per square metre"@en ; + :commonCode "28" ; + :conversionFactor "kg/m²" ; + :quantityKind :areicMass, :meanMassRange, :surfaceDensity ; + :symbol "kg/m²" . + +:kilogramPerSquareMetrePascalSecond + a :Unit ; + bamm:name "kilogramPerSquareMetrePascalSecond" ; + bamm:preferredName "kilogram per square metre pascal second"@en ; + :commonCode "Q28" ; + :conversionFactor "kg/(m² × Pa × s)" ; + :symbol "kg/(m²·Pa·s)" . + +:kilogramPerSquareMetreSecond + a :Unit ; + bamm:name "kilogramPerSquareMetreSecond" ; + bamm:preferredName "kilogram per square metre second"@en ; + :commonCode "H56" ; + :conversionFactor "kg m⁻² × s⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "kg/(m²·s)" . + +:kilogramSquareCentimetre + a :Unit ; + bamm:name "kilogramSquareCentimetre" ; + bamm:preferredName "kilogram square centimetre"@en ; + :commonCode "F18" ; + :conversionFactor "10⁻⁴ kg m²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg·cm²" . + +:kilogramSquareMillimetre + a :Unit ; + bamm:name "kilogramSquareMillimetre" ; + bamm:preferredName "kilogram square millimetre"@en ; + :commonCode "F19" ; + :conversionFactor "10⁻⁶ kg m²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "kg·mm²" . + +:kilohenry + a :Unit ; + bamm:name "kilohenry" ; + bamm:preferredName "kilohenry"@en ; + :commonCode "P24" ; + :conversionFactor "10³ H" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :referenceUnit :henry ; + :symbol "kH" . + +:kilohertz + a :Unit ; + bamm:name "kilohertz" ; + bamm:preferredName "kilohertz"@en ; + :commonCode "KHZ" ; + :conversionFactor "10³ Hz" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :frequency ; + :referenceUnit :hertz ; + :symbol "kHz" . + +:kilohertzMetre + a :Unit ; + bamm:name "kilohertzMetre" ; + bamm:preferredName "kilohertz metre"@en ; + :commonCode "M17" ; + :conversionFactor "10³ Hz × m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :coefficient, :performanceCharacteristic ; + :referenceUnit :hertzMetre ; + :symbol "kHz·m" . + +:kilojoule + a :Unit ; + bamm:name "kilojoule" ; + bamm:preferredName "kilojoule"@en ; + :commonCode "KJO" ; + :conversionFactor "10³ J" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "kJ" . + +:kilojoulePerDay + a :Unit ; + bamm:name "kilojoulePerDay" ; + bamm:preferredName "kilojoule per day"@en ; + :commonCode "P21" ; + :conversionFactor "1.15741 × 10⁻² W" ; + :numericConversionFactor "0.0115741"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "kJ/d" . + +:kilojoulePerHour + a :Unit ; + bamm:name "kilojoulePerHour" ; + bamm:preferredName "kilojoule per hour"@en ; + :commonCode "P20" ; + :conversionFactor "2.77778 × 10⁻¹ W" ; + :numericConversionFactor "0.277778"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "kJ/h" . + +:kilojoulePerKelvin + a :Unit ; + bamm:name "kilojoulePerKelvin" ; + bamm:preferredName "kilojoule per kelvin"@en ; + :commonCode "B41" ; + :conversionFactor "10³ J/K" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :entropy, :heatCapacity ; + :referenceUnit :joulePerKelvin ; + :symbol "kJ/K" . + +:kilojoulePerKilogram + a :Unit ; + bamm:name "kilojoulePerKilogram" ; + bamm:preferredName "kilojoule per kilogram"@en ; + :commonCode "B42" ; + :conversionFactor "10³ J/kg" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :massicEnthalpy, :specificEnthalpy ; + :referenceUnit :joulePerKilogram ; + :symbol "kJ/kg" . + +:kilojoulePerKilogramKelvin + a :Unit ; + bamm:name "kilojoulePerKilogramKelvin" ; + bamm:preferredName "kilojoule per kilogram kelvin"@en ; + :commonCode "B43" ; + :conversionFactor "10³ J/(kg × K)" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :specificHeatCapacityAtConstantPressure, :specificHeatCapacityAtConstantVolume, :specificHeatCapacityAtSaturation ; + :referenceUnit :joulePerKilogramKelvin ; + :symbol "kJ/(kg·K)" . + +:kilojoulePerMinute + a :Unit ; + bamm:name "kilojoulePerMinute" ; + bamm:preferredName "kilojoule per minute"@en ; + :commonCode "P19" ; + :conversionFactor "1.66667 × 10 W" ; + :numericConversionFactor "1.666671"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "kJ/min" . + +:kilojoulePerMole + a :Unit ; + bamm:name "kilojoulePerMole" ; + bamm:preferredName "kilojoule per mole"@en ; + :commonCode "B44" ; + :conversionFactor "10³ J/mol" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :molarThermodynamicEnergy ; + :referenceUnit :joulePerMole ; + :symbol "kJ/mol" . + +:kilojoulePerSecond + a :Unit ; + bamm:name "kilojoulePerSecond" ; + bamm:preferredName "kilojoule per second"@en ; + :commonCode "P18" ; + :conversionFactor "10³ W" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "kJ/s" . + +:kilolitre + a :Unit ; + bamm:name "kilolitre" ; + bamm:preferredName "kilolitre"@en ; + :commonCode "K6" ; + :conversionFactor "m³" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "kl" . + +:kilolitrePerHour + a :Unit ; + bamm:name "kilolitrePerHour" ; + bamm:preferredName "kilolitre per hour"@en ; + :commonCode "4X" ; + :conversionFactor "2.77778 × 10⁻⁴ m³/s" ; + :numericConversionFactor "2.77778E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "kl/h" . + +:kilolux + a :Unit ; + bamm:name "kilolux" ; + bamm:preferredName "kilolux"@en ; + :commonCode "KLX" ; + :conversionFactor "10³ cd × sr / m²" ; + :quantityKind :illuminance ; + :symbol "klx" . + +:kilometre + a :Unit ; + bamm:name "kilometre" ; + bamm:preferredName "kilometre"@en ; + :commonCode "KMT" ; + :conversionFactor "10³ m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "km" . + +:kilometrePerHour + a :Unit ; + bamm:name "kilometrePerHour" ; + bamm:preferredName "kilometre per hour"@en ; + :commonCode "KMH" ; + :conversionFactor "0.277778 m/s" ; + :numericConversionFactor "0.277778"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "km/h" . + +:kilometrePerSecond + a :Unit ; + bamm:name "kilometrePerSecond" ; + bamm:preferredName "kilometre per second"@en ; + :commonCode "M62" ; + :conversionFactor "10³ m/s" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "km/s" . + +:kilometrePerSecondSquared + a :Unit ; + bamm:name "kilometrePerSecondSquared" ; + bamm:preferredName "kilometre per second squared"@en ; + :commonCode "M38" ; + :conversionFactor "10³ m/s²" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :acceleration, :accelerationDueToGravity, :accelerationOfFreeFall ; + :referenceUnit :metrePerSecondSquared ; + :symbol "km/s²" . + +:kilomole + a :Unit ; + bamm:name "kilomole" ; + bamm:preferredName "kilomole"@en ; + :commonCode "B45" ; + :conversionFactor "10³ mol" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :amountOfSubstance ; + :referenceUnit :mole ; + :symbol "kmol" . + +:kilomolePerCubicMetre + a :Unit ; + bamm:name "kilomolePerCubicMetre" ; + bamm:preferredName "kilomole per cubic metre"@en ; + :commonCode "B46" ; + :conversionFactor "10³ mol/m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :molePerCubicMetre ; + :symbol "kmol/m³" . + +:kilomolePerCubicMetreBar + a :Unit ; + bamm:name "kilomolePerCubicMetreBar" ; + bamm:preferredName "kilomole per cubic metre bar"@en ; + :commonCode "K60" ; + :conversionFactor "10⁻² (mol/m³)/Pa" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :molPerCubicMetrePascal ; + :symbol "(kmol/m³)/bar" . + +:kilomolePerCubicMetreKelvin + a :Unit ; + bamm:name "kilomolePerCubicMetreKelvin" ; + bamm:preferredName "kilomole per cubic metre kelvin"@en ; + :commonCode "K59" ; + :conversionFactor "10³ (mol/m³)/K" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :molePerCubicMetreKelvin ; + :symbol "(kmol/m³)/K" . + +:kilomolePerHour + a :Unit ; + bamm:name "kilomolePerHour" ; + bamm:preferredName "kilomole per hour"@en ; + :commonCode "K58" ; + :conversionFactor "2.77778 × 10⁻¹ mol/s" ; + :numericConversionFactor "0.277778"^^xsd:double ; + :quantityKind :molarFlux ; + :referenceUnit :molePerSecond ; + :symbol "kmol/h" . + +:kilomolePerKilogram + a :Unit ; + bamm:name "kilomolePerKilogram" ; + bamm:preferredName "kilomole per kilogram"@en ; + :commonCode "P47" ; + :conversionFactor "10³ mol/kg" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :ionicStrength ; + :referenceUnit :molePerKilogram ; + :symbol "kmol/kg" . + +:kilomolePerMinute + a :Unit ; + bamm:name "kilomolePerMinute" ; + bamm:preferredName "kilomole per minute"@en ; + :commonCode "K61" ; + :conversionFactor "16.6667 mol/s" ; + :numericConversionFactor "16.6667"^^xsd:double ; + :quantityKind :molarFlux ; + :referenceUnit :molePerSecond ; + :symbol "kmol/min" . + +:kilomolePerSecond + a :Unit ; + bamm:name "kilomolePerSecond" ; + bamm:preferredName "kilomole per second"@en ; + :commonCode "E94" ; + :conversionFactor "10³ s⁻¹ × mol" ; + :quantityKind :catalyticActivity ; + :symbol "kmol/s" . + +:kilonewton + a :Unit ; + bamm:name "kilonewton" ; + bamm:preferredName "kilonewton"@en ; + :commonCode "B47" ; + :conversionFactor "10³ N" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :force, :weight ; + :referenceUnit :newton ; + :symbol "kN" . + +:kilonewtonMetre + a :Unit ; + bamm:name "kilonewtonMetre" ; + bamm:preferredName "kilonewton metre"@en ; + :commonCode "B48" ; + :conversionFactor "10³ N × m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :newtonMetre ; + :symbol "kN·m" . + +:kilonewtonPerMetre + a :Unit ; + bamm:name "kilonewtonPerMetre" ; + bamm:preferredName "kilonewton per metre"@en ; + :commonCode "N31" ; + :conversionFactor "10³ N/m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :surfaceTension ; + :referenceUnit :newtonPerMetre ; + :symbol "kN/m" . + +:kiloohm + a :Unit ; + bamm:name "kiloohm" ; + bamm:preferredName "kiloohm"@en ; + :commonCode "B49" ; + :conversionFactor "10³ Ω" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :complexImpedances, :impedance, :modulusOfImpedance, :reactance, :resistanceToAlternatingCurrent, :resistanceToDirectCurrent ; + :referenceUnit :ohm ; + :symbol "kΩ" . + +:kiloohmMetre + a :Unit ; + bamm:name "kiloohmMetre" ; + bamm:preferredName "kiloohm metre"@en ; + :commonCode "B50" ; + :conversionFactor "10³ Ω × m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :resistivity ; + :referenceUnit :ohmMetre ; + :symbol "kΩ·m" . + +:kilopascal + a :Unit ; + bamm:name "kilopascal" ; + bamm:preferredName "kilopascal"@en ; + :commonCode "KPA" ; + :conversionFactor "10³ Pa" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "kPa" . + +:kilopascalPerBar + a :Unit ; + bamm:name "kilopascalPerBar" ; + bamm:preferredName "kilopascal per bar"@en ; + :commonCode "F03" ; + :conversionFactor "10⁻²" ; + :quantityKind :pressureRatio ; + :symbol "kPa/bar" . + +:kilopascalPerKelvin + a :Unit ; + bamm:name "kilopascalPerKelvin" ; + bamm:preferredName "kilopascal per kelvin"@en ; + :commonCode "F83" ; + :conversionFactor "10³ kg × m⁻¹ × s⁻² × K⁻¹" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "kPa/K" . + +:kilopascalPerMetre + a :Unit ; + bamm:name "kilopascalPerMetre" ; + bamm:preferredName "kilopascal per metre"@en ; + :commonCode "P81" ; + :conversionFactor "10³ kg/(m² × s²)" ; + :quantityKind :hardnessIndex ; + :symbol "kPa/m" . + +:kilopascalPerMillimetre + a :Unit ; + bamm:name "kilopascalPerMillimetre" ; + bamm:preferredName "kilopascal per millimetre"@en ; + :commonCode "34" ; + :conversionFactor "10⁶ kg/(m² × s²)" ; + :quantityKind :hardnessIndex ; + :symbol "kPa/mm" . + +:kilopascalSquareMetrePerGram + a :Unit ; + bamm:name "kilopascalSquareMetrePerGram" ; + bamm:preferredName "kilopascal square metre per gram"@en ; + :commonCode "33" ; + :conversionFactor "10⁶ m/s²" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :burstIndex ; + :referenceUnit :metrePerSecondSquared ; + :symbol "kPa·m²/g" . + +:kilopoundForce + a :Unit ; + bamm:name "kilopoundForce" ; + bamm:preferredName "kilopound-force"@en ; + :commonCode "M75" ; + :conversionFactor "4.448222 × 10³ N" ; + :numericConversionFactor "4448.222"^^xsd:double ; + :quantityKind :force, :weight ; + :referenceUnit :newton ; + :symbol "kip" . + +:kilopoundPerHour + a :Unit ; + bamm:name "kilopoundPerHour" ; + bamm:preferredName "kilopound per hour"@en ; + :commonCode "M90" ; + :conversionFactor "0.125997889 kg/s" ; + :numericConversionFactor "0.125997889"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "klb/h" . + +:kiloroentgen + a :Unit ; + bamm:name "kiloroentgen" ; + bamm:preferredName "kiloroentgen"@en ; + :commonCode "KR" ; + :conversionFactor "2.58 × 10⁻¹ C/kg" ; + :numericConversionFactor "0.258"^^xsd:double ; + :quantityKind :exposure ; + :referenceUnit :coulombPerKilogram ; + :symbol "kR" . + +:kilosecond + a :Unit ; + bamm:name "kilosecond" ; + bamm:preferredName "kilosecond"@en ; + :commonCode "B52" ; + :conversionFactor "10³ s" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "ks" . + +:kilosegment + a :Unit ; + bamm:name "kilosegment" ; + bamm:preferredName "kilosegment"@en ; + :commonCode "KJ" . + +:kilosiemens + a :Unit ; + bamm:name "kilosiemens" ; + bamm:preferredName "kilosiemens"@en ; + :commonCode "B53" ; + :conversionFactor "10³ S" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :admittance, :complexAdmittance, :conductanceForAlternatingCurrent, :conductanceForDirectCurrent, :modulusOfAdmittance ; + :referenceUnit :siemens ; + :symbol "kS" . + +:kilosiemensPerMetre + a :Unit ; + bamm:name "kilosiemensPerMetre" ; + bamm:preferredName "kilosiemens per metre"@en ; + :commonCode "B54" ; + :conversionFactor "10³ S/m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :conductivity ; + :referenceUnit :siemensPerMetre ; + :symbol "kS/m" . + +:kilotesla + a :Unit ; + bamm:name "kilotesla" ; + bamm:preferredName "kilotesla"@en ; + :commonCode "P13" ; + :conversionFactor "10³ T" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :magneticFluxDensity, :magneticInduction, :magneticPolarization ; + :referenceUnit :tesla ; + :symbol "kT" . + +:kilotonne + a :Unit ; + bamm:name "kilotonne" ; + bamm:preferredName "kilotonne"@en ; + :commonCode "KTN" ; + :conversionFactor "10⁶ kg" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "kt" . + +:kilovar + a :Unit ; + bamm:name "kilovar" ; + bamm:preferredName "kilovar"@en ; + :commonCode "KVR" ; + :conversionFactor "10³ V × A" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :reactivePower ; + :referenceUnit :voltAmpere ; + :symbol "kvar" . + +:kilovolt + a :Unit ; + bamm:name "kilovolt" ; + bamm:preferredName "kilovolt"@en ; + :commonCode "KVT" ; + :conversionFactor "10³ V" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :electricPotential, :electromotiveForce, :potentialDifference, :tension, :voltage ; + :referenceUnit :volt ; + :symbol "kV" . + +:kilovoltAmpere + a :Unit ; + bamm:name "kilovoltAmpere" ; + bamm:preferredName "kilovolt - ampere"@en ; + :commonCode "KVA" ; + :conversionFactor "10³ V × A" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :apparentPower ; + :referenceUnit :voltAmpere ; + :symbol "kV·A" . + +:kilovoltAmpereHour + a :Unit ; + bamm:name "kilovoltAmpereHour" ; + bamm:preferredName "kilovolt ampere hour"@en ; + :commonCode "C79" ; + :symbol "kVAh" . + +:kilovoltAmpereReactiveDemand + a :Unit ; + bamm:name "kilovoltAmpereReactiveDemand" ; + bamm:preferredName "kilovolt ampere reactive demand"@en ; + :commonCode "K2" . + +:kilovoltAmpereReactiveHour + a :Unit ; + bamm:name "kilovoltAmpereReactiveHour" ; + bamm:preferredName "kilovolt ampere reactive hour"@en ; + :commonCode "K3" ; + :symbol "kvar·h" . + +:kilovoltPerMetre + a :Unit ; + bamm:name "kilovoltPerMetre" ; + bamm:preferredName "kilovolt per metre"@en ; + :commonCode "B55" ; + :conversionFactor "10³ V/m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :electricFieldStrength ; + :referenceUnit :voltPerMetre ; + :symbol "kV/m" . + +:kilowatt + a :Unit ; + bamm:name "kilowatt" ; + bamm:preferredName "kilowatt"@en ; + :commonCode "KWT" ; + :conversionFactor "10³ W" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :activePower, :heatFlowRate, :power, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "kW" . + +:kilowattDemand + a :Unit ; + bamm:name "kilowattDemand" ; + bamm:preferredName "kilowatt demand"@en ; + :commonCode "K1" . + +:kilowattHour + a :Unit ; + bamm:name "kilowattHour" ; + bamm:preferredName "kilowatt hour"@en ; + :commonCode "KWH" ; + :conversionFactor "3.6 × 10⁶ J" ; + :numericConversionFactor "3600000.0"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "kW·h" . + +:kilowattHourPerCubicMetre + a :Unit ; + bamm:name "kilowattHourPerCubicMetre" ; + bamm:preferredName "kilowatt hour per cubic metre"@en ; + :commonCode "E46" ; + :conversionFactor "3.6 × 10⁶ J/m³" ; + :numericConversionFactor "3600000.0"^^xsd:double ; + :referenceUnit :joulePerCubicMetre ; + :symbol "kW·h/m³" . + +:kilowattHourPerHour + a :Unit ; + bamm:name "kilowattHourPerHour" ; + bamm:preferredName "kilowatt hour per hour"@en ; + :commonCode "D03" ; + :symbol "kW·h/h" . + +:kilowattHourPerKelvin + a :Unit ; + bamm:name "kilowattHourPerKelvin" ; + bamm:preferredName "kilowatt hour per kelvin"@en ; + :commonCode "E47" ; + :conversionFactor "3.6 × 10⁶ J/K" ; + :numericConversionFactor "3600000.0"^^xsd:double ; + :referenceUnit :joulePerKelvin ; + :symbol "kW·h/K" . + +:kilowattPerMetreDegreeCelsius + a :Unit ; + bamm:name "kilowattPerMetreDegreeCelsius" ; + bamm:preferredName "kilowatt per metre degree Celsius"@en ; + :commonCode "N82" ; + :conversionFactor "10³ W/(m × K)" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :thermalConductivity ; + :referenceUnit :wattPerMetreKelvin ; + :symbol "kW/(m·°C)" . + +:kilowattPerMetreKelvin + a :Unit ; + bamm:name "kilowattPerMetreKelvin" ; + bamm:preferredName "kilowatt per metre kelvin"@en ; + :commonCode "N81" ; + :conversionFactor "10³ W/(m × K)" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :thermalConductivity ; + :referenceUnit :wattPerMetreKelvin ; + :symbol "kW/(m·K)" . + +:kilowattPerSquareMetreKelvin + a :Unit ; + bamm:name "kilowattPerSquareMetreKelvin" ; + bamm:preferredName "kilowatt per square metre kelvin"@en ; + :commonCode "N78" ; + :conversionFactor "10³ W/(m² × K)" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :surfaceCoefficientOfHeatTransfer ; + :referenceUnit :wattPerSquareMetreKelvin ; + :symbol "kW/(m²·K)" . + +:kiloweber + a :Unit ; + bamm:name "kiloweber" ; + bamm:preferredName "kiloweber"@en ; + :commonCode "P11" ; + :conversionFactor "10³ Wb" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :magneticFlux ; + :referenceUnit :weber ; + :symbol "kWb" . + +:kiloweberPerMetre + a :Unit ; + bamm:name "kiloweberPerMetre" ; + bamm:preferredName "kiloweber per metre"@en ; + :commonCode "B56" ; + :conversionFactor "10³ Wb/m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :magneticVectorPotential ; + :referenceUnit :weberPerMetre ; + :symbol "kWb/m" . + +:kipPerSquareInch + a :Unit ; + bamm:name "kipPerSquareInch" ; + bamm:preferredName "kip per square inch"@en ; + :commonCode "N20" ; + :conversionFactor "6.894757 × 10⁶ Pa" ; + :numericConversionFactor "6894757.0"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "ksi" . + +:kit + a :Unit ; + bamm:name "kit" ; + bamm:preferredName "kit"@en ; + :commonCode "KT" . + +:knot + a :Unit ; + bamm:name "knot" ; + bamm:preferredName "knot"@en ; + :commonCode "KNT" ; + :conversionFactor "0.514444 m/s" ; + :numericConversionFactor "0.514444"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "kn" . + +:labourHour + a :Unit ; + bamm:name "labourHour" ; + bamm:preferredName "labour hour"@en ; + :commonCode "LH" . + +:lacticDryMaterialPercentage + a :Unit ; + bamm:name "lacticDryMaterialPercentage" ; + bamm:preferredName "lactic dry material percentage"@en ; + :commonCode "KLK" . + +:lactoseExcessPercentage + a :Unit ; + bamm:name "lactoseExcessPercentage" ; + bamm:preferredName "lactose excess percentage"@en ; + :commonCode "LAC" . + +:lambert + a :Unit ; + bamm:name "lambert" ; + bamm:preferredName "lambert"@en ; + :commonCode "P30" ; + :conversionFactor "3.183099 × 10³ cd/m²" ; + :numericConversionFactor "3183.099"^^xsd:double ; + :quantityKind :luminance ; + :referenceUnit :candelaPerSquareMetre ; + :symbol "Lb" . + +:langley + a :Unit ; + bamm:name "langley" ; + bamm:preferredName "langley"@en ; + :commonCode "P40" ; + :conversionFactor "4.184 × 10⁴ J/m²" ; + :numericConversionFactor "41840.0"^^xsd:double ; + :quantityKind :radianceExposure, :radiantEnergyFluence ; + :referenceUnit :joulePerSquareMetre ; + :symbol "Ly" . + +:layer + a :Unit ; + bamm:name "layer" ; + bamm:preferredName "layer"@en ; + :commonCode "LR" . + +:leaf + a :Unit ; + bamm:name "leaf" ; + bamm:preferredName "leaf"@en ; + :commonCode "LEF" . + +:lengthUnit + a :Unit ; + bamm:name "lengthUnit" ; + bamm:preferredName "length"@en ; + :commonCode "LN" . + +:lightYear + a :Unit ; + bamm:name "lightYear" ; + bamm:preferredName "light year"@en ; + :commonCode "B57" ; + :conversionFactor "9.46073 × 10¹⁵ m" ; + :numericConversionFactor "9.46073E15"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "ly" . + +:linearFoot + a :Unit ; + bamm:name "linearFoot" ; + bamm:preferredName "linear foot"@en ; + :commonCode "LF" . + +:linearMetre + a :Unit ; + bamm:name "linearMetre" ; + bamm:preferredName "linear metre"@en ; + :commonCode "LM" . + +:linearYard + a :Unit ; + bamm:name "linearYard" ; + bamm:preferredName "linear yard"@en ; + :commonCode "LY" . + +:link + a :Unit ; + bamm:name "link" ; + bamm:preferredName "link"@en ; + :commonCode "LK" . + +:liquidPintUs + a :Unit ; + bamm:name "liquidPintUs" ; + bamm:preferredName "liquid pint (US)"@en ; + :commonCode "PTL" ; + :conversionFactor "4. 731765 × 10⁻⁴ m³" ; + :numericConversionFactor "4.731765E-4"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "liq pt (US)" . + +:liquidPound + a :Unit ; + bamm:name "liquidPound" ; + bamm:preferredName "liquid pound"@en ; + :commonCode "LP" . + +:liquidQuartUs + a :Unit ; + bamm:name "liquidQuartUs" ; + bamm:preferredName "liquid quart (US)"@en ; + :commonCode "QTL" ; + :conversionFactor "9.463529 × 10⁻⁴ m³" ; + :numericConversionFactor "9.463529E-4"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "liq qt (US)" . + +:litre + a :Unit ; + bamm:name "litre" ; + bamm:preferredName "litre"@en ; + :commonCode "LTR" ; + :conversionFactor "10⁻³ m³" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "l" . + +:litreOfPureAlcohol + a :Unit ; + bamm:name "litreOfPureAlcohol" ; + bamm:preferredName "litre of pure alcohol"@en ; + :commonCode "LPA" . + +:litrePerBar + a :Unit ; + bamm:name "litrePerBar" ; + bamm:preferredName "litre per bar"@en ; + :commonCode "G95" ; + :conversionFactor "10⁻⁸ kg⁻¹ × m⁴ × s²" ; + :quantityKind :volume ; + :symbol "l/bar" . + +:litrePerDay + a :Unit ; + bamm:name "litrePerDay" ; + bamm:preferredName "litre per day"@en ; + :commonCode "LD" ; + :conversionFactor "1.15741 × 10⁻⁸ m³/s" ; + :numericConversionFactor "1.15741E-8"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "l/d" . + +:litrePerDayBar + a :Unit ; + bamm:name "litrePerDayBar" ; + bamm:preferredName "litre per day bar"@en ; + :commonCode "G82" ; + :conversionFactor "1.15741 × 10⁻¹³ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "l/(d·bar)" . + +:litrePerDayKelvin + a :Unit ; + bamm:name "litrePerDayKelvin" ; + bamm:preferredName "litre per day kelvin"@en ; + :commonCode "G65" ; + :conversionFactor "1.15741 × 10⁻⁸ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "l/(d·K)" . + +:litrePerHour + a :Unit ; + bamm:name "litrePerHour" ; + bamm:preferredName "litre per hour"@en ; + :commonCode "E32" ; + :conversionFactor "2.77778 × 10⁻⁷ m³/s" ; + :numericConversionFactor "2.77778E-7"^^xsd:double ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "l/h" . + +:litrePerHourBar + a :Unit ; + bamm:name "litrePerHourBar" ; + bamm:preferredName "litre per hour bar"@en ; + :commonCode "G83" ; + :conversionFactor "2.77778 × 10⁻¹² kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "l/(h·bar)" . + +:litrePerHourKelvin + a :Unit ; + bamm:name "litrePerHourKelvin" ; + bamm:preferredName "litre per hour kelvin"@en ; + :commonCode "G66" ; + :conversionFactor "2.77778 × 10⁻⁷ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "l/(h·K)" . + +:litrePerKelvin + a :Unit ; + bamm:name "litrePerKelvin" ; + bamm:preferredName "litre per kelvin"@en ; + :commonCode "G28" ; + :conversionFactor "10⁻³ m³ × K⁻¹" ; + :quantityKind :volumePerTemperature ; + :symbol "l/K" . + +:litrePerKilogram + a :Unit ; + bamm:name "litrePerKilogram" ; + bamm:preferredName "litre per kilogram"@en ; + :commonCode "H83" ; + :conversionFactor "10⁻³ m³ × kg⁻¹" ; + :quantityKind :massicVolume, :specificVolume ; + :symbol "l/kg" . + +:litrePerLitre + a :Unit ; + bamm:name "litrePerLitre" ; + bamm:preferredName "litre per litre"@en ; + :commonCode "K62" ; + :conversionFactor "1" ; + :quantityKind :volumeRatio ; + :symbol "l/l" . + +:litrePerMinute + a :Unit ; + bamm:name "litrePerMinute" ; + bamm:preferredName "litre per minute"@en ; + :commonCode "L2" ; + :conversionFactor "1.66667 × 10⁻⁵ m³/s" ; + :numericConversionFactor "1.66667E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "l/min" . + +:litrePerMinuteBar + a :Unit ; + bamm:name "litrePerMinuteBar" ; + bamm:preferredName "litre per minute bar"@en ; + :commonCode "G84" ; + :conversionFactor "1.66667 × 10⁻¹⁰ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "l/(min·bar)" . + +:litrePerMinuteKelvin + a :Unit ; + bamm:name "litrePerMinuteKelvin" ; + bamm:preferredName "litre per minute kelvin"@en ; + :commonCode "G67" ; + :conversionFactor "1.66667 × 10⁻⁵ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "l/(min·K)" . + +:litrePerMole + a :Unit ; + bamm:name "litrePerMole" ; + bamm:preferredName "litre per mole"@en ; + :commonCode "B58" ; + :conversionFactor "10⁻³ m³/mol" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :molarVolume ; + :referenceUnit :cubicMetrePerMole ; + :symbol "l/mol" . + +:litrePerSecond + a :Unit ; + bamm:name "litrePerSecond" ; + bamm:preferredName "litre per second"@en ; + :commonCode "G51" ; + :conversionFactor "10⁻³ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "l/s" . + +:litrePerSecondBar + a :Unit ; + bamm:name "litrePerSecondBar" ; + bamm:preferredName "litre per second bar"@en ; + :commonCode "G85" ; + :conversionFactor "10⁻⁸ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "l/(s·bar)" . + +:litrePerSecondKelvin + a :Unit ; + bamm:name "litrePerSecondKelvin" ; + bamm:preferredName "litre per second kelvin"@en ; + :commonCode "G68" ; + :conversionFactor "10⁻³ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "l/(s·K)" . + +:load + a :Unit ; + bamm:name "load" ; + bamm:preferredName "load"@en ; + :commonCode "NL" . + +:lotUnitOfProcurement + a :Unit ; + bamm:name "lotUnitOfProcurement" ; + bamm:preferredName "lot [unit of procurement]"@en ; + :commonCode "LO" . + +:lotUnitOfWeight + a :Unit ; + bamm:name "lotUnitOfWeight" ; + bamm:preferredName "lot [unit of weight]"@en ; + :commonCode "D04" . + +:lumen + a :Unit ; + bamm:name "lumen" ; + bamm:preferredName "lumen"@en ; + :commonCode "LUM" ; + :conversionFactor "cd × sr" ; + :quantityKind :luminousFlux ; + :symbol "lm" . + +:lumenHour + a :Unit ; + bamm:name "lumenHour" ; + bamm:preferredName "lumen hour"@en ; + :commonCode "B59" ; + :conversionFactor "3.6 × 10³ s × cd × sr" ; + :quantityKind :quantityOfLight ; + :symbol "lm·h" . + +:lumenPerSquareFoot + a :Unit ; + bamm:name "lumenPerSquareFoot" ; + bamm:preferredName "lumen per square foot"@en ; + :commonCode "P25" ; + :conversionFactor "1.076391 × 10¹ cd × sr / m²" ; + :quantityKind :illuminance ; + :symbol "lm/ft²" . + +:lumenPerSquareMetre + a :Unit ; + bamm:name "lumenPerSquareMetre" ; + bamm:preferredName "lumen per square metre"@en ; + :commonCode "B60" ; + :conversionFactor "cd × sr/m²" ; + :quantityKind :luminousExitance ; + :symbol "lm/m²" . + +:lumenPerWatt + a :Unit ; + bamm:name "lumenPerWatt" ; + bamm:preferredName "lumen per watt"@en ; + :commonCode "B61" ; + :conversionFactor "cd × sr/W" ; + :quantityKind :luminiousEfficacy, :luminousEfficacyAtASpecifiedWavelength, :maximumSpectralLuminousEfficacy, :spectralLuminousEfficacy ; + :symbol "lm/W" . + +:lumenSecond + a :Unit ; + bamm:name "lumenSecond" ; + bamm:preferredName "lumen second"@en ; + :commonCode "B62" ; + :conversionFactor "s × cd × sr" ; + :quantityKind :quantityOfLight ; + :symbol "lm·s" . + +:lumpSum + a :Unit ; + bamm:name "lumpSum" ; + bamm:preferredName "lump sum"@en ; + :commonCode "LS" . + +:lux + a :Unit ; + bamm:name "lux" ; + bamm:preferredName "lux"@en ; + :commonCode "LUX" ; + :conversionFactor "cd × sr / m²" ; + :quantityKind :illuminance ; + :symbol "lx" . + +:luxHour + a :Unit ; + bamm:name "luxHour" ; + bamm:preferredName "lux hour"@en ; + :commonCode "B63" ; + :conversionFactor "3.6 × 10³ s × cd × sr / m²" ; + :quantityKind :lightExposure ; + :symbol "lx·h" . + +:luxSecond + a :Unit ; + bamm:name "luxSecond" ; + bamm:preferredName "lux second"@en ; + :commonCode "B64" ; + :conversionFactor "s × cd × sr / m²" ; + :quantityKind :lightExposure ; + :symbol "lx·s" . + +:manmonth + a :Unit ; + bamm:name "manmonth" ; + bamm:preferredName "manmonth"@en ; + :commonCode "3C" . + +:meal + a :Unit ; + bamm:name "meal" ; + bamm:preferredName "meal"@en ; + :commonCode "Q3" . + +:mebibit + a :Unit ; + bamm:name "mebibit" ; + bamm:preferredName "mebibit"@en ; + :commonCode "D11" ; + :symbol "Mibit" . + +:mebibitPerCubicMetre + a :Unit ; + bamm:name "mebibitPerCubicMetre" ; + bamm:preferredName "mebibit per cubic metre"@en ; + :commonCode "E77" ; + :symbol "Mibit/m³" . + +:mebibitPerMetre + a :Unit ; + bamm:name "mebibitPerMetre" ; + bamm:preferredName "mebibit per metre"@en ; + :commonCode "E75" ; + :symbol "Mibit/m" . + +:mebibitPerSquareMetre + a :Unit ; + bamm:name "mebibitPerSquareMetre" ; + bamm:preferredName "mebibit per square metre"@en ; + :commonCode "E76" ; + :symbol "Mibit/m²" . + +:mebibyte + a :Unit ; + bamm:name "mebibyte" ; + bamm:preferredName "mebibyte"@en ; + :commonCode "E63" ; + :conversionFactor "2²⁰ B" ; + :numericConversionFactor "1048576.0"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "Mibyte" . + +:megaampere + a :Unit ; + bamm:name "megaampere" ; + bamm:preferredName "megaampere"@en ; + :commonCode "H38" ; + :conversionFactor "10⁶ A" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :currentLinkage, :electricCurrent, :magneticPotentialDifference, :magnetomotiveForce ; + :referenceUnit :ampere ; + :symbol "MA" . + +:megaamperePerSquareMetre + a :Unit ; + bamm:name "megaamperePerSquareMetre" ; + bamm:preferredName "megaampere per square metre"@en ; + :commonCode "B66" ; + :conversionFactor "10⁶ A/m²" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :currentDensity ; + :referenceUnit :amperePerSquareMetre ; + :symbol "MA/m²" . + +:megabaud + a :Unit ; + bamm:name "megabaud" ; + bamm:preferredName "megabaud"@en ; + :commonCode "J54" ; + :conversionFactor "10⁶ Bd" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :referenceUnit :baud ; + :symbol "MBd" . + +:megabecquerel + a :Unit ; + bamm:name "megabecquerel" ; + bamm:preferredName "megabecquerel"@en ; + :commonCode "4N" ; + :conversionFactor "10⁶ Bq" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :activity ; + :referenceUnit :becquerel ; + :symbol "MBq" . + +:megabecquerelPerKilogram + a :Unit ; + bamm:name "megabecquerelPerKilogram" ; + bamm:preferredName "megabecquerel per kilogram"@en ; + :commonCode "B67" ; + :conversionFactor "10⁶ Bq/kg" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :specificActivityInASample ; + :referenceUnit :becquerelPerKilogram ; + :symbol "MBq/kg" . + +:megabit + a :Unit ; + bamm:name "megabit" ; + bamm:preferredName "megabit"@en ; + :commonCode "D36" ; + :symbol "Mbit" . + +:megabitPerSecond + a :Unit ; + bamm:name "megabitPerSecond" ; + bamm:preferredName "megabit per second"@en ; + :commonCode "E20" ; + :symbol "Mbit/s" . + +:megabyte + a :Unit ; + bamm:name "megabyte" ; + bamm:preferredName "Megabyte"@en ; + :commonCode "4L" ; + :conversionFactor "10⁶ B" ; + :numericConversionFactor "1.0E6"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "MB" . + +:megabytePerSecond + a :Unit ; + bamm:name "megabytePerSecond" ; + bamm:preferredName "megabyte per second"@en ; + :commonCode "P95" ; + :conversionFactor "10⁶ byte/s" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :referenceUnit :bytePerSecond ; + :symbol "Mbyte/s" . + +:megacoulomb + a :Unit ; + bamm:name "megacoulomb" ; + bamm:preferredName "megacoulomb"@en ; + :commonCode "D77" ; + :conversionFactor "10⁶ C" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "MC" . + +:megacoulombPerCubicMetre + a :Unit ; + bamm:name "megacoulombPerCubicMetre" ; + bamm:preferredName "megacoulomb per cubic metre"@en ; + :commonCode "B69" ; + :conversionFactor "10⁶ C/m³" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :chargeDensity, :volumeDensityOfCharge, :volumicCharge ; + :referenceUnit :coulombPerCubicMetre ; + :symbol "MC/m³" . + +:megacoulombPerSquareMetre + a :Unit ; + bamm:name "megacoulombPerSquareMetre" ; + bamm:preferredName "megacoulomb per square metre"@en ; + :commonCode "B70" ; + :conversionFactor "10⁶ C/m²" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :displacementElectricPolarization, :electricFluxDensity, :surfaceDensityOfCharge ; + :referenceUnit :coulombPerSquareMetre ; + :symbol "MC/m²" . + +:megaelectronvolt + a :Unit ; + bamm:name "megaelectronvolt" ; + bamm:preferredName "megaelectronvolt"@en ; + :commonCode "B71" ; + :conversionFactor "10⁶ eV" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :electronvolt ; + :symbol "MeV" . + +:megagram + a :Unit ; + bamm:name "megagram" ; + bamm:preferredName "megagram"@en ; + :commonCode "2U" ; + :conversionFactor "10³ kg" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "Mg" . + +:megagramPerCubicMetre + a :Unit ; + bamm:name "megagramPerCubicMetre" ; + bamm:preferredName "megagram per cubic metre"@en ; + :commonCode "B72" ; + :conversionFactor "10³ kg/m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "Mg/m³" . + +:megahertz + a :Unit ; + bamm:name "megahertz" ; + bamm:preferredName "megahertz"@en ; + :commonCode "MHZ" ; + :conversionFactor "10⁶ Hz" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :frequency ; + :referenceUnit :hertz ; + :symbol "MHz" . + +:megahertzKilometre + a :Unit ; + bamm:name "megahertzKilometre" ; + bamm:preferredName "megahertz kilometre"@en ; + :commonCode "H39" ; + :conversionFactor "10⁹ Hz × m" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :coefficient, :performanceCharacteristic ; + :referenceUnit :hertzMetre ; + :symbol "MHz·km" . + +:megahertzMetre + a :Unit ; + bamm:name "megahertzMetre" ; + bamm:preferredName "megahertz metre"@en ; + :commonCode "M27" ; + :conversionFactor "10⁶ Hz × m" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :coefficient, :performanceCharacteristic ; + :referenceUnit :hertzMetre ; + :symbol "MHz·m" . + +:megajoule + a :Unit ; + bamm:name "megajoule" ; + bamm:preferredName "megajoule"@en ; + :commonCode "3B" ; + :conversionFactor "10⁶ J" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "MJ" . + +:megajoulePerCubicMetre + a :Unit ; + bamm:name "megajoulePerCubicMetre" ; + bamm:preferredName "megajoule per cubic metre"@en ; + :commonCode "JM" ; + :conversionFactor "10⁶ J/m³" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :radiantEnergyDensity ; + :referenceUnit :joulePerCubicMetre ; + :symbol "MJ/m³" . + +:megajoulePerKilogram + a :Unit ; + bamm:name "megajoulePerKilogram" ; + bamm:preferredName "megajoule per kilogram"@en ; + :commonCode "JK" ; + :conversionFactor "10⁶ J/kg" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :specificThermodynamicEnergy ; + :referenceUnit :joulePerKilogram ; + :symbol "MJ/kg" . + +:megajoulePerSecond + a :Unit ; + bamm:name "megajoulePerSecond" ; + bamm:preferredName "megajoule per second"@en ; + :commonCode "D78" ; + :symbol "MJ/s" . + +:megalitre + a :Unit ; + bamm:name "megalitre" ; + bamm:preferredName "megalitre"@en ; + :commonCode "MAL" ; + :conversionFactor "10³ m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "Ml" . + +:megametre + a :Unit ; + bamm:name "megametre" ; + bamm:preferredName "megametre"@en ; + :commonCode "MAM" ; + :conversionFactor "10⁶ m" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "Mm" . + +:meganewton + a :Unit ; + bamm:name "meganewton" ; + bamm:preferredName "meganewton"@en ; + :commonCode "B73" ; + :conversionFactor "10⁶ N" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :force, :weight ; + :referenceUnit :newton ; + :symbol "MN" . + +:meganewtonMetre + a :Unit ; + bamm:name "meganewtonMetre" ; + bamm:preferredName "meganewton metre"@en ; + :commonCode "B74" ; + :conversionFactor "10⁶ N × m" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :newtonMetre ; + :symbol "MN·m" . + +:megaohm + a :Unit ; + bamm:name "megaohm" ; + bamm:preferredName "megaohm"@en ; + :commonCode "B75" ; + :conversionFactor "10⁶ Ω" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :complexImpedances, :impedance, :modulusOfImpedance, :reactance, :resistanceToAlternatingCurrent, :resistanceToDirectCurrent ; + :referenceUnit :ohm ; + :symbol "MΩ" . + +:megaohmKilometre + a :Unit ; + bamm:name "megaohmKilometre" ; + bamm:preferredName "megaohm kilometre"@en ; + :commonCode "H88" ; + :conversionFactor "10⁹ Ω × m" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :resistivity ; + :referenceUnit :ohmMetre ; + :symbol "MΩ·km" . + +:megaohmMetre + a :Unit ; + bamm:name "megaohmMetre" ; + bamm:preferredName "megaohm metre"@en ; + :commonCode "B76" ; + :conversionFactor "10⁶ Ω × m" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :resistivity ; + :referenceUnit :ohmMetre ; + :symbol "MΩ·m" . + +:megaohmPerKilometre + a :Unit ; + bamm:name "megaohmPerKilometre" ; + bamm:preferredName "megaohm per kilometre"@en ; + :commonCode "H36" ; + :conversionFactor "10³ Ω/m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :lineicResistance ; + :referenceUnit :ohmPerMetre ; + :symbol "MΩ/km" . + +:megaohmPerMetre + a :Unit ; + bamm:name "megaohmPerMetre" ; + bamm:preferredName "megaohm per metre"@en ; + :commonCode "H37" ; + :conversionFactor "10⁶ Ω/m" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :lineicResistance ; + :referenceUnit :ohmPerMetre ; + :symbol "MΩ/m" . + +:megapascal + a :Unit ; + bamm:name "megapascal" ; + bamm:preferredName "megapascal"@en ; + :commonCode "MPA" ; + :conversionFactor "10⁶ Pa" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "MPa" . + +:megapascalCubicMetrePerSecond + a :Unit ; + bamm:name "megapascalCubicMetrePerSecond" ; + bamm:preferredName "megapascal cubic metre per second"@en ; + :commonCode "F98" ; + :conversionFactor "10⁶ kg × m² × s⁻³" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "MPa·m³/s" . + +:megapascalLitrePerSecond + a :Unit ; + bamm:name "megapascalLitrePerSecond" ; + bamm:preferredName "megapascal litre per second"@en ; + :commonCode "F97" ; + :conversionFactor "10³ kg × m² × s⁻³" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "MPa·l/s" . + +:megapascalPerBar + a :Unit ; + bamm:name "megapascalPerBar" ; + bamm:preferredName "megapascal per bar"@en ; + :commonCode "F05" ; + :conversionFactor "10¹" ; + :quantityKind :pressureRatio ; + :symbol "MPa/bar" . + +:megapascalPerKelvin + a :Unit ; + bamm:name "megapascalPerKelvin" ; + bamm:preferredName "megapascal per kelvin"@en ; + :commonCode "F85" ; + :conversionFactor "10⁶ kg × m⁻¹ × s⁻² × K⁻¹" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "MPa/K" . + +:megapixel + a :Unit ; + bamm:name "megapixel" ; + bamm:preferredName "megapixel"@en ; + :commonCode "E38" . + +:megasiemensPerMetre + a :Unit ; + bamm:name "megasiemensPerMetre" ; + bamm:preferredName "megasiemens per metre"@en ; + :commonCode "B77" ; + :conversionFactor "10⁶ S/m" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :conductivity ; + :referenceUnit :siemensPerMetre ; + :symbol "MS/m" . + +:megavar + a :Unit ; + bamm:name "megavar" ; + bamm:preferredName "megavar"@en ; + :commonCode "MAR" ; + :conversionFactor "10³ V × A" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :reactivePower ; + :referenceUnit :voltAmpere ; + :symbol "kvar" . + +:megavolt + a :Unit ; + bamm:name "megavolt" ; + bamm:preferredName "megavolt"@en ; + :commonCode "B78" ; + :conversionFactor "10⁶ V" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :electricPotential, :electromotiveForce, :potentialDifference, :tension, :voltage ; + :referenceUnit :volt ; + :symbol "MV" . + +:megavoltAmpere + a :Unit ; + bamm:name "megavoltAmpere" ; + bamm:preferredName "megavolt - ampere"@en ; + :commonCode "MVA" ; + :conversionFactor "10⁶ V × A" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :apparentPower ; + :referenceUnit :voltAmpere ; + :symbol "MV·A" . + +:megavoltAmpereReactiveHour + a :Unit ; + bamm:name "megavoltAmpereReactiveHour" ; + bamm:preferredName "megavolt ampere reactive hour"@en ; + :commonCode "MAH" ; + :symbol "Mvar·h" . + +:megavoltPerMetre + a :Unit ; + bamm:name "megavoltPerMetre" ; + bamm:preferredName "megavolt per metre"@en ; + :commonCode "B79" ; + :conversionFactor "10⁶ V/m" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :electricFieldStrength ; + :referenceUnit :voltPerMetre ; + :symbol "MV/m" . + +:megawatt + a :Unit ; + bamm:name "megawatt" ; + bamm:preferredName "megawatt"@en ; + :commonCode "MAW" ; + :conversionFactor "10⁶ W" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :activePower, :power, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "MW" . + +:megawattHour1000Kwh + a :Unit ; + bamm:name "megawattHour1000Kwh" ; + bamm:preferredName "megawatt hour (1000 kW.h)"@en ; + :commonCode "MWH" ; + :conversionFactor "3.6 × 10⁹ J" ; + :numericConversionFactor "3.6E9"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "MW·h" . + +:megawattHourPerHour + a :Unit ; + bamm:name "megawattHourPerHour" ; + bamm:preferredName "megawatt hour per hour"@en ; + :commonCode "E07" ; + :symbol "MW·h/h" . + +:megawattPerHertz + a :Unit ; + bamm:name "megawattPerHertz" ; + bamm:preferredName "megawatt per hertz"@en ; + :commonCode "E08" ; + :symbol "MW/Hz" . + +:mesh + a :Unit ; + bamm:name "mesh" ; + bamm:preferredName "mesh"@en ; + :commonCode "57" . + +:message + a :Unit ; + bamm:name "message" ; + bamm:preferredName "message"@en ; + :commonCode "NF" . + +:metre + a :Unit ; + bamm:name "metre" ; + bamm:preferredName "metre"@en ; + :commonCode "MTR" ; + :conversionFactor "m" ; + :quantityKind :bohrRadius, :breadth, :cartesianCoordinates, :coherenceLength, :comptonWavelength, :diameter, :diffusionCoefficientForNeutronFluenceRate, :diffusionCoefficientForNeutronFluxDensity, :diffusionLength, :displacementVectorOfIonOrAtom, :distance, :electronRadius, :equilibriumPositionVectorOfIonOrAtom, :focalDistance, :fundamentalLatticeVector, :halfThickness, :halfValueThickness, :height, :imageDistance, :instantaneousSoundParticleDisplacement, :latticeVector, :length, :lengthOfPath, :londonPenetrationDepth, :meanFreePath, :meanFreePathOfPhononsOrElectrons, :meanLinearRange, :migrationLength, :nuclearRadius, :objectDistance, :particlePositionVector, :radius, :radiusOfCurvature, :slowingDownLength, :thickness, :wavelength ; + :symbol "m" . + +:metreKelvin + a :Unit ; + bamm:name "metreKelvin" ; + bamm:preferredName "metre kelvin"@en ; + :commonCode "D18" ; + :conversionFactor "m × K" ; + :quantityKind :secondRadiationConstant ; + :symbol "m·K" . + +:metrePerBar + a :Unit ; + bamm:name "metrePerBar" ; + bamm:preferredName "metre per bar"@en ; + :commonCode "G05" ; + :conversionFactor "10⁻⁵ kg⁻¹ × m² × s²" ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :symbol "m/bar" . + +:metrePerDegreeCelsiusMetre + a :Unit ; + bamm:name "metrePerDegreeCelsiusMetre" ; + bamm:preferredName "metre per degree Celsius metre"@en ; + :commonCode "N83" ; + :conversionFactor "K⁻¹" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :thermalDiffusivity ; + :referenceUnit :reciprocalKelvinOrKelvinToThePowerMinusOne ; + :symbol "m/(°C·m)" . + +:metrePerHour + a :Unit ; + bamm:name "metrePerHour" ; + bamm:preferredName "metre per hour"@en ; + :commonCode "M60" ; + :conversionFactor "2.77778 × 10⁻⁴ m/s" ; + :numericConversionFactor "2.77778E-4"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "m/h" . + +:metrePerKelvin + a :Unit ; + bamm:name "metrePerKelvin" ; + bamm:preferredName "metre per kelvin"@en ; + :commonCode "F52" ; + :conversionFactor "m × K⁻¹" ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :symbol "m/K" . + +:metrePerMinute + a :Unit ; + bamm:name "metrePerMinute" ; + bamm:preferredName "metre per minute"@en ; + :commonCode "2X" ; + :conversionFactor "0.016666 m/s" ; + :numericConversionFactor "0.016666"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "m/min" . + +:metrePerPascal + a :Unit ; + bamm:name "metrePerPascal" ; + bamm:preferredName "metre per pascal"@en ; + :commonCode "M53" ; + :conversionFactor "kg⁻¹ × m² × s²" ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :symbol "m/Pa" . + +:metrePerRadiant + a :Unit ; + bamm:name "metrePerRadiant" ; + bamm:preferredName "metre per radiant"@en ; + :commonCode "M55" ; + :conversionFactor "m/rad" ; + :quantityKind :solidAngle ; + :symbol "m/rad" . + +:metrePerSecond + a :Unit ; + bamm:name "metrePerSecond" ; + bamm:preferredName "metre per second"@en ; + :commonCode "MTS" ; + :conversionFactor "m/s" ; + :quantityKind :groupVelocity, :instantaneousSoundParticleVelocity, :neutronSpeed, :phaseSpeedOfElectromagneticWaves, :phaseVelocity, :phaseVelocityOfElectromagneticWaves, :velocity, :velocityOfSoundPhaseVelocity, :velocitySpeedOnPropagationOfElectromagneticWavesInVacuo ; + :symbol "m/s" . + +:metrePerSecondBar + a :Unit ; + bamm:name "metrePerSecondBar" ; + bamm:preferredName "metre per second bar"@en ; + :commonCode "L13" ; + :conversionFactor "10⁻⁵ (m/s)/Pa" ; + :numericConversionFactor "1.0E-5"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecondPascal ; + :symbol "(m/s)/bar" . + +:metrePerSecondKelvin + a :Unit ; + bamm:name "metrePerSecondKelvin" ; + bamm:preferredName "metre per second kelvin"@en ; + :commonCode "L12" ; + :conversionFactor "(m/s)/K" ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :symbol "(m/s)/K" . + +:metrePerSecondPascal + a :Unit ; + bamm:name "metrePerSecondPascal" ; + bamm:preferredName "metre per second pascal"@en ; + :commonCode "M59" ; + :conversionFactor "m² × kg⁻¹ × s" ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :symbol "(m/s)/Pa" . + +:metrePerSecondSquared + a :Unit ; + bamm:name "metrePerSecondSquared" ; + bamm:preferredName "metre per second squared"@en ; + :commonCode "MSK" ; + :conversionFactor "m/s²" ; + :quantityKind :acceleration, :accelerationDueToGravity, :accelerationOfFreeFall, :instantaneousSoundParticleAcceleration ; + :symbol "m/s²" . + +:metrePerVoltSecond + a :Unit ; + bamm:name "metrePerVoltSecond" ; + bamm:preferredName "metre per volt second"@en ; + :commonCode "H58" ; + :conversionFactor "m⁻¹ × kg⁻¹ × s² × A" ; + :quantityKind :mobility ; + :symbol "m/(V·s)" . + +:metreToTheFourthPower + a :Unit ; + bamm:name "metreToTheFourthPower" ; + bamm:preferredName "metre to the fourth power"@en ; + :commonCode "B83" ; + :conversionFactor "m⁴" ; + :quantityKind :secondAxialMomentOfArea, :secondMomentOfArea ; + :symbol "m⁴" . + +:metricCarat + a :Unit ; + bamm:name "metricCarat" ; + bamm:preferredName "metric carat"@en ; + :commonCode "CTM" ; + :conversionFactor "200 mg" ; + :numericConversionFactor "200.0"^^xsd:double ; + :referenceUnit :milligram . + +:metricTonIncludingContainer + a :Unit ; + bamm:name "metricTonIncludingContainer" ; + bamm:preferredName "metric ton, including container"@en ; + :commonCode "TIC" . + +:metricTonIncludingInnerPackaging + a :Unit ; + bamm:name "metricTonIncludingInnerPackaging" ; + bamm:preferredName "metric ton, including inner packaging"@en ; + :commonCode "TIP" . + +:metricTonLubricatingOil + a :Unit ; + bamm:name "metricTonLubricatingOil" ; + bamm:preferredName "metric ton, lubricating oil"@en ; + :commonCode "LUB" . + +:microInch + a :Unit ; + bamm:name "microInch" ; + bamm:preferredName "micro-inch"@en ; + :commonCode "M7" ; + :conversionFactor "25.4 × 10⁻⁹ m" ; + :numericConversionFactor "2.54E-8"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "µin" . + +:microampere + a :Unit ; + bamm:name "microampere" ; + bamm:preferredName "microampere"@en ; + :commonCode "B84" ; + :conversionFactor "10⁻⁶ A" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :currentLinkage, :electricCurrent, :magneticPotentialDifference, :magnetomotiveForce ; + :referenceUnit :ampere ; + :symbol "µA" . + +:microbar + a :Unit ; + bamm:name "microbar" ; + bamm:preferredName "microbar"@en ; + :commonCode "B85" ; + :conversionFactor "10⁻¹ Pa" ; + :numericConversionFactor "0.1"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "µbar" . + +:microbecquerel + a :Unit ; + bamm:name "microbecquerel" ; + bamm:preferredName "microbecquerel"@en ; + :commonCode "H08" ; + :conversionFactor "10⁻⁶ Bq" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :activity ; + :referenceUnit :becquerel ; + :symbol "µBq" . + +:microcoulomb + a :Unit ; + bamm:name "microcoulomb" ; + bamm:preferredName "microcoulomb"@en ; + :commonCode "B86" ; + :conversionFactor "10⁻⁶ C" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "µC" . + +:microcoulombPerCubicMetre + a :Unit ; + bamm:name "microcoulombPerCubicMetre" ; + bamm:preferredName "microcoulomb per cubic metre"@en ; + :commonCode "B87" ; + :conversionFactor "10⁻⁶ C/m³" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :chargeDensity, :volumeDensityOfCharge, :volumicCharge ; + :referenceUnit :coulombPerCubicMetre ; + :symbol "µC/m³" . + +:microcoulombPerSquareMetre + a :Unit ; + bamm:name "microcoulombPerSquareMetre" ; + bamm:preferredName "microcoulomb per square metre"@en ; + :commonCode "B88" ; + :conversionFactor "10⁻⁶ C/m²" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :displacementElectricPolarization, :electricFluxDensity, :surfaceDensityOfCharge ; + :referenceUnit :coulombPerSquareMetre ; + :symbol "µC/m²" . + +:microcurie + a :Unit ; + bamm:name "microcurie" ; + bamm:preferredName "microcurie"@en ; + :commonCode "M5" ; + :conversionFactor "3.7 × 10⁴ Bq" ; + :numericConversionFactor "37000.0"^^xsd:double ; + :quantityKind :activity ; + :referenceUnit :becquerel ; + :symbol "µCi" . + +:microfarad + a :Unit ; + bamm:name "microfarad" ; + bamm:preferredName "microfarad"@en ; + :commonCode "4O" ; + :conversionFactor "10⁻⁶ F" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :capacitance ; + :referenceUnit :farad ; + :symbol "µF" . + +:microfaradPerKilometre + a :Unit ; + bamm:name "microfaradPerKilometre" ; + bamm:preferredName "microfarad per kilometre"@en ; + :commonCode "H28" ; + :conversionFactor "10⁻⁹ F/m" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :electricConstant, :permittivity, :permittivityOfVacuum ; + :referenceUnit :faradPerMetre ; + :symbol "µF/km" . + +:microfaradPerMetre + a :Unit ; + bamm:name "microfaradPerMetre" ; + bamm:preferredName "microfarad per metre"@en ; + :commonCode "B89" ; + :conversionFactor "10⁻⁶ F/m" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :electricConstant, :permittivity, :permittivityOfVacuum ; + :referenceUnit :faradPerMetre ; + :symbol "µF/m" . + +:microgram + a :Unit ; + bamm:name "microgram" ; + bamm:preferredName "microgram"@en ; + :commonCode "MC" ; + :conversionFactor "10⁻⁹ kg" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "µg" . + +:microgramPerCubicMetre + a :Unit ; + bamm:name "microgramPerCubicMetre" ; + bamm:preferredName "microgram per cubic metre"@en ; + :commonCode "GQ" ; + :conversionFactor "10⁻⁹ kg/m³" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "µg/m³" . + +:microgramPerCubicMetreBar + a :Unit ; + bamm:name "microgramPerCubicMetreBar" ; + bamm:preferredName "microgram per cubic metre bar"@en ; + :commonCode "J35" ; + :conversionFactor "10⁻¹⁴ (kg/m³)/Pa" ; + :numericConversionFactor "1.0E-14"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetrePascal ; + :symbol "(µg/m³)/bar" . + +:microgramPerCubicMetreKelvin + a :Unit ; + bamm:name "microgramPerCubicMetreKelvin" ; + bamm:preferredName "microgram per cubic metre kelvin"@en ; + :commonCode "J34" ; + :conversionFactor "10⁻⁹ (kg/m³)/K" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "(µg/m³)/K" . + +:microgramPerKilogram + a :Unit ; + bamm:name "microgramPerKilogram" ; + bamm:preferredName "microgram per kilogram"@en ; + :commonCode "J33" ; + :conversionFactor "10⁻⁹" ; + :quantityKind :massRatio ; + :symbol "µg/kg" . + +:microgramPerLitre + a :Unit ; + bamm:name "microgramPerLitre" ; + bamm:preferredName "microgram per litre"@en ; + :commonCode "H29" ; + :conversionFactor "10⁻⁶ m⁻³ × kg" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "µg/l" . + +:micrograyPerHour + a :Unit ; + bamm:name "micrograyPerHour" ; + bamm:preferredName "microgray per hour"@en ; + :commonCode "P63" ; + :conversionFactor "2.77778 × 10⁻¹⁰ Gy/s" ; + :numericConversionFactor "2.77778E-10"^^xsd:double ; + :quantityKind :absorbedDoseRate ; + :referenceUnit :grayPerSecond ; + :symbol "µGy/h" . + +:micrograyPerMinute + a :Unit ; + bamm:name "micrograyPerMinute" ; + bamm:preferredName "microgray per minute"@en ; + :commonCode "P59" ; + :conversionFactor "1.66667 × 10⁻⁸ Gy/s" ; + :numericConversionFactor "1.66667E-8"^^xsd:double ; + :quantityKind :absorbedDoseRate ; + :referenceUnit :grayPerSecond ; + :symbol "µGy/min" . + +:micrograyPerSecond + a :Unit ; + bamm:name "micrograyPerSecond" ; + bamm:preferredName "microgray per second"@en ; + :commonCode "P55" ; + :conversionFactor "10⁻⁶ Gy/s" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :absorbedDoseRate ; + :referenceUnit :grayPerSecond ; + :symbol "µGy/s" . + +:microhenry + a :Unit ; + bamm:name "microhenry" ; + bamm:preferredName "microhenry"@en ; + :commonCode "B90" ; + :conversionFactor "10⁻⁶ H" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :referenceUnit :henry ; + :symbol "µH" . + +:microhenryPerKiloohm + a :Unit ; + bamm:name "microhenryPerKiloohm" ; + bamm:preferredName "microhenry per kiloohm"@en ; + :commonCode "G98" ; + :conversionFactor "10⁻⁹ s" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :referenceUnit :secondUnitOfTime ; + :symbol "µH/kΩ" . + +:microhenryPerMetre + a :Unit ; + bamm:name "microhenryPerMetre" ; + bamm:preferredName "microhenry per metre"@en ; + :commonCode "B91" ; + :conversionFactor "10⁻⁶ H/m" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :magneticConstant, :permeability, :permeabilityOfVacuum ; + :referenceUnit :henryPerMetre ; + :symbol "µH/m" . + +:microhenryPerOhm + a :Unit ; + bamm:name "microhenryPerOhm" ; + bamm:preferredName "microhenry per ohm"@en ; + :commonCode "G99" ; + :conversionFactor "10⁻⁶ s" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :referenceUnit :secondUnitOfTime ; + :symbol "µH/Ω" . + +:microlitre + a :Unit ; + bamm:name "microlitre" ; + bamm:preferredName "microlitre"@en ; + :commonCode "4G" ; + :conversionFactor "10⁻⁹ m³" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "µl" . + +:microlitrePerLitre + a :Unit ; + bamm:name "microlitrePerLitre" ; + bamm:preferredName "microlitre per litre"@en ; + :commonCode "J36" ; + :conversionFactor "10⁻⁶" ; + :quantityKind :volumeRatio ; + :symbol "µl/l" . + +:micrometreMicron + a :Unit ; + bamm:name "micrometreMicron" ; + bamm:preferredName "micrometre (micron)"@en ; + :commonCode "4H" ; + :conversionFactor "10⁻⁶ m" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "µm" . + +:micrometrePerKelvin + a :Unit ; + bamm:name "micrometrePerKelvin" ; + bamm:preferredName "micrometre per kelvin"@en ; + :commonCode "F50" ; + :conversionFactor "10⁻⁶ m × K⁻¹" ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :symbol "µm/K" . + +:micromole + a :Unit ; + bamm:name "micromole" ; + bamm:preferredName "micromole"@en ; + :commonCode "FH" ; + :conversionFactor "10⁻⁶ mol" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :amountOfSubstance ; + :referenceUnit :mole ; + :symbol "µmol" . + +:micronewton + a :Unit ; + bamm:name "micronewton" ; + bamm:preferredName "micronewton"@en ; + :commonCode "B92" ; + :conversionFactor "10⁻⁶ N" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :force, :weight ; + :referenceUnit :newton ; + :symbol "µN" . + +:micronewtonMetre + a :Unit ; + bamm:name "micronewtonMetre" ; + bamm:preferredName "micronewton metre"@en ; + :commonCode "B93" ; + :conversionFactor "10⁻⁶ N × m" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :newtonMetre ; + :symbol "µN·m" . + +:microohm + a :Unit ; + bamm:name "microohm" ; + bamm:preferredName "microohm"@en ; + :commonCode "B94" ; + :conversionFactor "10⁻⁶ Ω" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :complexImpedances, :impedance, :modulusOfImpedance, :reactance, :resistanceToAlternatingCurrent, :resistanceToDirectCurrent ; + :referenceUnit :ohm ; + :symbol "µΩ" . + +:microohmMetre + a :Unit ; + bamm:name "microohmMetre" ; + bamm:preferredName "microohm metre"@en ; + :commonCode "B95" ; + :conversionFactor "10⁻⁶ Ω × m" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :resistivity ; + :referenceUnit :ohmMetre ; + :symbol "µΩ·m" . + +:micropascal + a :Unit ; + bamm:name "micropascal" ; + bamm:preferredName "micropascal"@en ; + :commonCode "B96" ; + :conversionFactor "10⁻⁶ Pa" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "µPa" . + +:micropoise + a :Unit ; + bamm:name "micropoise" ; + bamm:preferredName "micropoise"@en ; + :commonCode "J32" ; + :conversionFactor "10⁻⁶ Pa × s" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "µP" . + +:microradian + a :Unit ; + bamm:name "microradian" ; + bamm:preferredName "microradian"@en ; + :commonCode "B97" ; + :conversionFactor "10⁻⁶ rad" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :anglePlane ; + :referenceUnit :rad ; + :symbol "µrad" . + +:microsecond + a :Unit ; + bamm:name "microsecond" ; + bamm:preferredName "microsecond"@en ; + :commonCode "B98" ; + :conversionFactor "10⁻⁶ s" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "µs" . + +:microsiemens + a :Unit ; + bamm:name "microsiemens" ; + bamm:preferredName "microsiemens"@en ; + :commonCode "B99" ; + :conversionFactor "10⁻⁶ S" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :admittance, :complexAdmittance, :conductanceForAlternatingCurrent, :conductanceForDirectCurrent, :modulusOfAdmittance ; + :referenceUnit :siemens ; + :symbol "µS" . + +:microsiemensPerCentimetre + a :Unit ; + bamm:name "microsiemensPerCentimetre" ; + bamm:preferredName "microsiemens per centimetre"@en ; + :commonCode "G42" ; + :conversionFactor "10⁻⁴ S/m" ; + :numericConversionFactor "1.0E-4"^^xsd:double ; + :quantityKind :admittance, :complexAdmittance, :conductanceForAlternatingCurrent, :conductanceForDirectCurrent, :modulusOfAdmittance ; + :referenceUnit :siemensPerMetre ; + :symbol "µS/cm" . + +:microsiemensPerMetre + a :Unit ; + bamm:name "microsiemensPerMetre" ; + bamm:preferredName "microsiemens per metre"@en ; + :commonCode "G43" ; + :conversionFactor "10⁻⁶ S/m" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :admittance, :complexAdmittance, :conductanceForAlternatingCurrent, :conductanceForDirectCurrent, :modulusOfAdmittance ; + :referenceUnit :siemensPerMetre ; + :symbol "µS/m" . + +:microsievertPerHour + a :Unit ; + bamm:name "microsievertPerHour" ; + bamm:preferredName "microsievert per hour"@en ; + :commonCode "P72" ; + :conversionFactor "0.277777778 × 10⁻¹⁰ Sv/s" ; + :numericConversionFactor "2.77777778E-11"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "µSv/h" . + +:microsievertPerMinute + a :Unit ; + bamm:name "microsievertPerMinute" ; + bamm:preferredName "microsievert per minute"@en ; + :commonCode "P76" ; + :conversionFactor "1.666666667 × 10⁻⁸ Sv/s" ; + :numericConversionFactor "1.666666667E-8"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "µSv/min" . + +:microsievertPerSecond + a :Unit ; + bamm:name "microsievertPerSecond" ; + bamm:preferredName "microsievert per second"@en ; + :commonCode "P67" ; + :conversionFactor "10⁻⁶ Sv/s" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "µSv/s" . + +:microtesla + a :Unit ; + bamm:name "microtesla" ; + bamm:preferredName "microtesla"@en ; + :commonCode "D81" ; + :conversionFactor "10⁻⁶ T" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :magneticFluxDensity, :magneticInduction, :magneticPolarization ; + :referenceUnit :tesla ; + :symbol "µT" . + +:microvolt + a :Unit ; + bamm:name "microvolt" ; + bamm:preferredName "microvolt"@en ; + :commonCode "D82" ; + :conversionFactor "10⁻⁶ V" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :electricPotential, :electromotiveForce, :potentialDifference, :tension, :voltage ; + :referenceUnit :volt ; + :symbol "µV" . + +:microvoltPerMetre + a :Unit ; + bamm:name "microvoltPerMetre" ; + bamm:preferredName "microvolt per metre"@en ; + :commonCode "C3" ; + :conversionFactor "10⁻⁶ V/m" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :electricFieldStrength ; + :referenceUnit :voltPerMetre ; + :symbol "µV/m" . + +:microwatt + a :Unit ; + bamm:name "microwatt" ; + bamm:preferredName "microwatt"@en ; + :commonCode "D80" ; + :conversionFactor "10⁻⁶ W" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :activePower, :power, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "µW" . + +:microwattPerSquareMetre + a :Unit ; + bamm:name "microwattPerSquareMetre" ; + bamm:preferredName "microwatt per square metre"@en ; + :commonCode "D85" ; + :conversionFactor "10⁻⁶ W/m²" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :soundIntensity ; + :referenceUnit :wattPerSquareMetre ; + :symbol "µW/m²" . + +:mil + a :Unit ; + bamm:name "mil" ; + bamm:preferredName "mil"@en ; + :commonCode "M43" ; + :conversionFactor "9.817477 × 10⁻⁴ rad" ; + :numericConversionFactor "9.817477E-4"^^xsd:double ; + :quantityKind :anglePlane ; + :referenceUnit :rad ; + :symbol "mil" . + +:mileBasedOnUsSurveyFoot + a :Unit ; + bamm:name "mileBasedOnUsSurveyFoot" ; + bamm:preferredName "mile (based on U.S. survey foot)"@en ; + :commonCode "M52" ; + :conversionFactor "1.609347 × 10³ m" ; + :numericConversionFactor "1609.347"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "mi (US survey)" . + +:milePerHourStatuteMile + a :Unit ; + bamm:name "milePerHourStatuteMile" ; + bamm:preferredName "mile per hour (statute mile)"@en ; + :commonCode "HM" ; + :conversionFactor "0.44704 m/s" ; + :numericConversionFactor "0.44704"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "mile/h" . + +:milePerMinute + a :Unit ; + bamm:name "milePerMinute" ; + bamm:preferredName "mile per minute"@en ; + :commonCode "M57" ; + :conversionFactor "26.8224 m/s" ; + :numericConversionFactor "26.8224"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "mi/min" . + +:milePerSecond + a :Unit ; + bamm:name "milePerSecond" ; + bamm:preferredName "mile per second"@en ; + :commonCode "M58" ; + :conversionFactor "1.609344 × 10³ m/s" ; + :numericConversionFactor "1609.344"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "mi/s" . + +:mileStatuteMile + a :Unit ; + bamm:name "mileStatuteMile" ; + bamm:preferredName "mile (statute mile)"@en ; + :commonCode "SMI" ; + :conversionFactor "1609.344 m" ; + :numericConversionFactor "1609.344"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "mile" . + +:mileStatuteMilePerSecondSquared + a :Unit ; + bamm:name "mileStatuteMilePerSecondSquared" ; + bamm:preferredName "mile (statute mile) per second squared"@en ; + :commonCode "M42" ; + :conversionFactor "1.609344 × 10³ m/s²" ; + :numericConversionFactor "1609.344"^^xsd:double ; + :quantityKind :acceleration, :accelerationDueToGravity, :accelerationOfFreeFall ; + :referenceUnit :metrePerSecondSquared ; + :symbol "mi/s²" . + +:mille + a :Unit ; + bamm:name "mille" ; + bamm:preferredName "mille"@en ; + :commonCode "E12" . + +:milliInch + a :Unit ; + bamm:name "milliInch" ; + bamm:preferredName "milli-inch"@en ; + :commonCode "77" ; + :conversionFactor "25.4 × 10⁻⁶ m" ; + :numericConversionFactor "2.54E-5"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "mil" . + +:milliampere + a :Unit ; + bamm:name "milliampere" ; + bamm:preferredName "milliampere"@en ; + :commonCode "4K" ; + :conversionFactor "10⁻³ A" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :currentLinkage, :electricCurrent, :magneticPotentialDifference, :magnetomotiveForce ; + :referenceUnit :ampere ; + :symbol "mA" . + +:milliampereHour + a :Unit ; + bamm:name "milliampereHour" ; + bamm:preferredName "milliampere hour"@en ; + :commonCode "E09" ; + :conversionFactor "3.6 C" ; + :numericConversionFactor "3.6"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "mA·h" . + +:milliamperePerBar + a :Unit ; + bamm:name "milliamperePerBar" ; + bamm:preferredName "milliampere per bar"@en ; + :commonCode "F59" ; + :conversionFactor "10⁻⁸ kg⁻¹ × m × s² × A" ; + :quantityKind :linearElectricCurrentDensity, :lineicElectricCurrent, :magneticFieldStrength ; + :symbol "mA/bar" . + +:milliamperePerInch + a :Unit ; + bamm:name "milliamperePerInch" ; + bamm:preferredName "milliampere per inch"@en ; + :commonCode "F08" ; + :conversionFactor "3.93700787401575 × 10⁻² A × m⁻¹" ; + :quantityKind :linearElectricCurrentDensity, :lineicElectricCurrent, :magneticFieldStrength ; + :symbol "mA/in" . + +:milliamperePerLitreMinute + a :Unit ; + bamm:name "milliamperePerLitreMinute" ; + bamm:preferredName "milliampere per litre minute"@en ; + :commonCode "G59" ; + :conversionFactor "1.66667 × 10⁻² m⁻³ × s⁻¹ × A" ; + :quantityKind :currentDensity ; + :symbol "mA/(l·min)" . + +:milliamperePerMillimetre + a :Unit ; + bamm:name "milliamperePerMillimetre" ; + bamm:preferredName "milliampere per millimetre"@en ; + :commonCode "F76" ; + :conversionFactor "m⁻¹ × A" ; + :quantityKind :linearElectricCurrentDensity, :lineicElectricCurrent, :magneticFieldStrength ; + :symbol "mA/mm" . + +:milliamperePerPoundForcePerSquareInch + a :Unit ; + bamm:name "milliamperePerPoundForcePerSquareInch" ; + bamm:preferredName "milliampere per pound-force per square inch"@en ; + :commonCode "F57" ; + :conversionFactor "1.45038 × 10⁻⁷ kg⁻¹ × m × s² × A" ; + :quantityKind :currentDensity ; + :symbol "mA/(lbf/in²)" . + +:milliard + a :Unit ; + bamm:name "milliard" ; + bamm:preferredName "milliard"@en ; + :commonCode "MLD" ; + :conversionFactor "10⁹" . + +:millibar + a :Unit ; + bamm:name "millibar" ; + bamm:preferredName "millibar"@en ; + :commonCode "MBR" ; + :conversionFactor "10² Pa" ; + :numericConversionFactor "100.0"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "mbar" . + +:millibarCubicMetrePerSecond + a :Unit ; + bamm:name "millibarCubicMetrePerSecond" ; + bamm:preferredName "millibar cubic metre per second"@en ; + :commonCode "F96" ; + :conversionFactor "10² kg × m² × s⁻³" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "mbar·m³/s" . + +:millibarLitrePerSecond + a :Unit ; + bamm:name "millibarLitrePerSecond" ; + bamm:preferredName "millibar litre per second"@en ; + :commonCode "F95" ; + :conversionFactor "10⁻¹ kg × m² × s⁻³" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "mbar·l/s" . + +:millibarPerBar + a :Unit ; + bamm:name "millibarPerBar" ; + bamm:preferredName "millibar per bar"@en ; + :commonCode "F04" ; + :conversionFactor "10⁻³" ; + :quantityKind :pressureRatio ; + :symbol "mbar/bar" . + +:millibarPerKelvin + a :Unit ; + bamm:name "millibarPerKelvin" ; + bamm:preferredName "millibar per kelvin"@en ; + :commonCode "F84" ; + :conversionFactor "10² kg × m⁻¹ × s⁻² × K⁻¹" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "mbar/K" . + +:millicandela + a :Unit ; + bamm:name "millicandela" ; + bamm:preferredName "millicandela"@en ; + :commonCode "P34" ; + :conversionFactor "10⁻³ cd" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :luminousIntensity ; + :referenceUnit :candela ; + :symbol "mcd" . + +:millicoulomb + a :Unit ; + bamm:name "millicoulomb" ; + bamm:preferredName "millicoulomb"@en ; + :commonCode "D86" ; + :conversionFactor "10⁻³ C" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "mC" . + +:millicoulombPerCubicMetre + a :Unit ; + bamm:name "millicoulombPerCubicMetre" ; + bamm:preferredName "millicoulomb per cubic metre"@en ; + :commonCode "D88" ; + :conversionFactor "10⁻³ C/m³" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :chargeDensity, :volumeDensityOfCharge, :volumicCharge ; + :referenceUnit :coulombPerCubicMetre ; + :symbol "mC/m³" . + +:millicoulombPerKilogram + a :Unit ; + bamm:name "millicoulombPerKilogram" ; + bamm:preferredName "millicoulomb per kilogram"@en ; + :commonCode "C8" ; + :conversionFactor "10⁻³ C/kg" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :exposure ; + :referenceUnit :coulombPerKilogram ; + :symbol "mC/kg" . + +:millicoulombPerSquareMetre + a :Unit ; + bamm:name "millicoulombPerSquareMetre" ; + bamm:preferredName "millicoulomb per square metre"@en ; + :commonCode "D89" ; + :conversionFactor "10⁻³ C/m²" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :displacementElectricPolarization, :electricFluxDensity, :surfaceDensityOfCharge ; + :referenceUnit :coulombPerSquareMetre ; + :symbol "mC/m²" . + +:millicurie + a :Unit ; + bamm:name "millicurie" ; + bamm:preferredName "millicurie"@en ; + :commonCode "MCU" ; + :conversionFactor "3.7 × 10⁷ Bq" ; + :numericConversionFactor "3.7E7"^^xsd:double ; + :quantityKind :activity ; + :referenceUnit :becquerel ; + :symbol "mCi" . + +:milliequivalenceCausticPotashPerGramOfProduct + a :Unit ; + bamm:name "milliequivalenceCausticPotashPerGramOfProduct" ; + bamm:preferredName "milliequivalence caustic potash per gram of product"@en ; + :commonCode "KO" . + +:millifarad + a :Unit ; + bamm:name "millifarad" ; + bamm:preferredName "millifarad"@en ; + :commonCode "C10" ; + :conversionFactor "10⁻³ F" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :capacitance ; + :referenceUnit :farad ; + :symbol "mF" . + +:milligal + a :Unit ; + bamm:name "milligal" ; + bamm:preferredName "milligal"@en ; + :commonCode "C11" ; + :conversionFactor "10⁻⁵ m/s²" ; + :numericConversionFactor "1.0E-5"^^xsd:double ; + :quantityKind :acceleration, :accelerationDueToGravity, :accelerationOfFreeFall ; + :referenceUnit :metrePerSecondSquared ; + :symbol "mGal" . + +:milligram + a :Unit ; + bamm:name "milligram" ; + bamm:preferredName "milligram"@en ; + :commonCode "MGM" ; + :conversionFactor "10⁻⁶ kg" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "mg" . + +:milligramPerBar + a :Unit ; + bamm:name "milligramPerBar" ; + bamm:preferredName "milligram per bar"@en ; + :commonCode "F75" ; + :conversionFactor "10⁻¹¹ m × s²" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "mg/bar" . + +:milligramPerCubicMetre + a :Unit ; + bamm:name "milligramPerCubicMetre" ; + bamm:preferredName "milligram per cubic metre"@en ; + :commonCode "GP" ; + :conversionFactor "10⁻⁶ kg/m³" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "mg/m³" . + +:milligramPerCubicMetreBar + a :Unit ; + bamm:name "milligramPerCubicMetreBar" ; + bamm:preferredName "milligram per cubic metre bar"@en ; + :commonCode "L18" ; + :conversionFactor "10⁻¹¹ (kg/m³)/Pa" ; + :numericConversionFactor "1.0E-11"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetrePascal ; + :symbol "(mg/m³)/bar" . + +:milligramPerCubicMetreKelvin + a :Unit ; + bamm:name "milligramPerCubicMetreKelvin" ; + bamm:preferredName "milligram per cubic metre kelvin"@en ; + :commonCode "L17" ; + :conversionFactor "10⁻⁶ (kg/m³)/K" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "(mg/m³)/K" . + +:milligramPerDay + a :Unit ; + bamm:name "milligramPerDay" ; + bamm:preferredName "milligram per day"@en ; + :commonCode "F32" ; + :conversionFactor "1.15741 × 10⁻¹¹ kg × s⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "mg/d" . + +:milligramPerDayBar + a :Unit ; + bamm:name "milligramPerDayBar" ; + bamm:preferredName "milligram per day bar"@en ; + :commonCode "F70" ; + :conversionFactor "1.15741 × 10⁻¹⁶ m × s" ; + :quantityKind :massFlowRate ; + :symbol "mg/(d·bar)" . + +:milligramPerDayKelvin + a :Unit ; + bamm:name "milligramPerDayKelvin" ; + bamm:preferredName "milligram per day kelvin"@en ; + :commonCode "F43" ; + :conversionFactor "1.15741 × 10⁻¹¹ kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "mg/(d·K)" . + +:milligramPerGram + a :Unit ; + bamm:name "milligramPerGram" ; + bamm:preferredName "milligram per gram"@en ; + :commonCode "H64" ; + :conversionFactor "10⁻³ 1" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "mg/g" . + +:milligramPerHour + a :Unit ; + bamm:name "milligramPerHour" ; + bamm:preferredName "milligram per hour"@en ; + :commonCode "4M" ; + :conversionFactor "2.77778 × 10⁻¹⁰ kg/s" ; + :numericConversionFactor "2.77778E-10"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "mg/h" . + +:milligramPerHourBar + a :Unit ; + bamm:name "milligramPerHourBar" ; + bamm:preferredName "milligram per hour bar"@en ; + :commonCode "F71" ; + :conversionFactor "2.77778 × 10⁻¹⁵ m × s" ; + :quantityKind :massFlowRate ; + :symbol "mg/(h·bar)" . + +:milligramPerHourKelvin + a :Unit ; + bamm:name "milligramPerHourKelvin" ; + bamm:preferredName "milligram per hour kelvin"@en ; + :commonCode "F44" ; + :conversionFactor "2.77778 × 10⁻¹⁰ kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "mg/(h·K)" . + +:milligramPerKelvin + a :Unit ; + bamm:name "milligramPerKelvin" ; + bamm:preferredName "milligram per kelvin"@en ; + :commonCode "F16" ; + :conversionFactor "10⁻⁶ kg × K⁻¹" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "mg/K" . + +:milligramPerKilogram + a :Unit ; + bamm:name "milligramPerKilogram" ; + bamm:preferredName "milligram per kilogram"@en ; + :commonCode "NA" ; + :conversionFactor "10⁻⁶ 1" ; + :quantityKind :massRatio ; + :symbol "mg/kg" . + +:milligramPerLitre + a :Unit ; + bamm:name "milligramPerLitre" ; + bamm:preferredName "milligram per litre"@en ; + :commonCode "M1" ; + :conversionFactor "10⁻³ kg/m³" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "mg/l" . + +:milligramPerMetre + a :Unit ; + bamm:name "milligramPerMetre" ; + bamm:preferredName "milligram per metre"@en ; + :commonCode "C12" ; + :conversionFactor "10⁻⁶ kg/m" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :linearDensity, :linearMass ; + :referenceUnit :kilogramPerMetre ; + :symbol "mg/m" . + +:milligramPerMinute + a :Unit ; + bamm:name "milligramPerMinute" ; + bamm:preferredName "milligram per minute"@en ; + :commonCode "F33" ; + :conversionFactor "1.66667 × 10⁻⁸ kg × s⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "mg/min" . + +:milligramPerMinuteBar + a :Unit ; + bamm:name "milligramPerMinuteBar" ; + bamm:preferredName "milligram per minute bar"@en ; + :commonCode "F72" ; + :conversionFactor "1.66667 × 10⁻¹³ m × s" ; + :quantityKind :massFlowRate ; + :symbol "mg/(min·bar)" . + +:milligramPerMinuteKelvin + a :Unit ; + bamm:name "milligramPerMinuteKelvin" ; + bamm:preferredName "milligram per minute kelvin"@en ; + :commonCode "F45" ; + :conversionFactor "1.66667 × 10⁻⁸ kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "mg/(min·K)" . + +:milligramPerSecond + a :Unit ; + bamm:name "milligramPerSecond" ; + bamm:preferredName "milligram per second"@en ; + :commonCode "F34" ; + :conversionFactor "10⁻⁶ kg × s⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "mg/s" . + +:milligramPerSecondBar + a :Unit ; + bamm:name "milligramPerSecondBar" ; + bamm:preferredName "milligram per second bar"@en ; + :commonCode "F73" ; + :conversionFactor "10⁻¹¹ m × s" ; + :quantityKind :massFlowRate ; + :symbol "mg/(s·bar)" . + +:milligramPerSecondKelvin + a :Unit ; + bamm:name "milligramPerSecondKelvin" ; + bamm:preferredName "milligram per second kelvin"@en ; + :commonCode "F46" ; + :conversionFactor "10⁻⁶ kg × s⁻¹ × K⁻¹" ; + :quantityKind :massFlowRate ; + :symbol "mg/(s·K)" . + +:milligramPerSquareCentimetre + a :Unit ; + bamm:name "milligramPerSquareCentimetre" ; + bamm:preferredName "milligram per square centimetre"@en ; + :commonCode "H63" ; + :conversionFactor "10⁻² m⁻² × kg" ; + :quantityKind :areicMass, :surfaceDensity ; + :symbol "mg/cm²" . + +:milligramPerSquareMetre + a :Unit ; + bamm:name "milligramPerSquareMetre" ; + bamm:preferredName "milligram per square metre"@en ; + :commonCode "GO" ; + :conversionFactor "10⁻⁶ kg/m²" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :areicMass, :surfaceDensity ; + :referenceUnit :kilogramPerSquareMetre ; + :symbol "mg/m²" . + +:milligray + a :Unit ; + bamm:name "milligray" ; + bamm:preferredName "milligray"@en ; + :commonCode "C13" ; + :conversionFactor "10⁻³ Gy" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :massicEnergyImparted, :specificEnergyImparted ; + :referenceUnit :gray ; + :symbol "mGy" . + +:milligrayPerHour + a :Unit ; + bamm:name "milligrayPerHour" ; + bamm:preferredName "milligray per hour"@en ; + :commonCode "P62" ; + :conversionFactor "2.77778 × 10⁻⁷ Gy/s" ; + :numericConversionFactor "2.77778E-7"^^xsd:double ; + :quantityKind :absorbedDoseRate ; + :referenceUnit :grayPerSecond ; + :symbol "mGy/h" . + +:milligrayPerMinute + a :Unit ; + bamm:name "milligrayPerMinute" ; + bamm:preferredName "milligray per minute"@en ; + :commonCode "P58" ; + :conversionFactor "1.66667 × 10⁻⁵ Gy/s" ; + :numericConversionFactor "1.66667E-5"^^xsd:double ; + :quantityKind :absorbedDoseRate ; + :referenceUnit :grayPerSecond ; + :symbol "mGy/min" . + +:milligrayPerSecond + a :Unit ; + bamm:name "milligrayPerSecond" ; + bamm:preferredName "milligray per second"@en ; + :commonCode "P54" ; + :conversionFactor "10⁻³ Gy/s" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :absorbedDoseRate ; + :referenceUnit :grayPerSecond ; + :symbol "mGy/s" . + +:millihenry + a :Unit ; + bamm:name "millihenry" ; + bamm:preferredName "millihenry"@en ; + :commonCode "C14" ; + :conversionFactor "10⁻³ H" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :referenceUnit :henry ; + :symbol "mH" . + +:millihenryPerKiloohm + a :Unit ; + bamm:name "millihenryPerKiloohm" ; + bamm:preferredName "millihenry per kiloohm"@en ; + :commonCode "H05" ; + :conversionFactor "10⁻⁶ s" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :referenceUnit :secondUnitOfTime ; + :symbol "mH/kΩ" . + +:millihenryPerOhm + a :Unit ; + bamm:name "millihenryPerOhm" ; + bamm:preferredName "millihenry per ohm"@en ; + :commonCode "H06" ; + :conversionFactor "10⁻³ s" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :referenceUnit :secondUnitOfTime ; + :symbol "mH/Ω" . + +:millijoule + a :Unit ; + bamm:name "millijoule" ; + bamm:preferredName "millijoule"@en ; + :commonCode "C15" ; + :conversionFactor "10⁻³ J" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "mJ" . + +:millilitre + a :Unit ; + bamm:name "millilitre" ; + bamm:preferredName "millilitre"@en ; + :commonCode "MLT" ; + :conversionFactor "10⁻⁶ m³" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "ml" . + +:millilitrePerBar + a :Unit ; + bamm:name "millilitrePerBar" ; + bamm:preferredName "millilitre per bar"@en ; + :commonCode "G97" ; + :conversionFactor "10⁻¹¹ kg⁻¹ × m⁴ × s²" ; + :quantityKind :volume ; + :symbol "ml/bar" . + +:millilitrePerCubicMetre + a :Unit ; + bamm:name "millilitrePerCubicMetre" ; + bamm:preferredName "millilitre per cubic metre"@en ; + :commonCode "H65" ; + :conversionFactor "10⁻⁶ 1" ; + :quantityKind :massicVolume, :specificVolume ; + :symbol "ml/m³" . + +:millilitrePerDay + a :Unit ; + bamm:name "millilitrePerDay" ; + bamm:preferredName "millilitre per day"@en ; + :commonCode "G54" ; + :conversionFactor "1.15741 × 10⁻¹¹ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "ml/d" . + +:millilitrePerDayBar + a :Unit ; + bamm:name "millilitrePerDayBar" ; + bamm:preferredName "millilitre per day bar"@en ; + :commonCode "G90" ; + :conversionFactor "1.15741 × 10⁻¹⁶ × kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "ml/(d·bar)" . + +:millilitrePerDayKelvin + a :Unit ; + bamm:name "millilitrePerDayKelvin" ; + bamm:preferredName "millilitre per day kelvin"@en ; + :commonCode "G73" ; + :conversionFactor "1.15741 × 10⁻¹¹ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "ml/(d·K)" . + +:millilitrePerHour + a :Unit ; + bamm:name "millilitrePerHour" ; + bamm:preferredName "millilitre per hour"@en ; + :commonCode "G55" ; + :conversionFactor "2.77778 × 10⁻¹⁰ m³ × s⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "ml/h" . + +:millilitrePerHourBar + a :Unit ; + bamm:name "millilitrePerHourBar" ; + bamm:preferredName "millilitre per hour bar"@en ; + :commonCode "G91" ; + :conversionFactor "2.77778 × 10⁻¹⁵ × kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "ml/(h·bar)" . + +:millilitrePerHourKelvin + a :Unit ; + bamm:name "millilitrePerHourKelvin" ; + bamm:preferredName "millilitre per hour kelvin"@en ; + :commonCode "G74" ; + :conversionFactor "2.77778 × 10⁻¹⁰ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "ml/(h·K)" . + +:millilitrePerKelvin + a :Unit ; + bamm:name "millilitrePerKelvin" ; + bamm:preferredName "millilitre per kelvin"@en ; + :commonCode "G30" ; + :conversionFactor "10⁻⁶ m³ × K⁻¹" ; + :quantityKind :volumePerTemperature ; + :symbol "ml/K" . + +:millilitrePerKilogram + a :Unit ; + bamm:name "millilitrePerKilogram" ; + bamm:preferredName "millilitre per kilogram"@en ; + :commonCode "KX" ; + :conversionFactor "10⁻⁶ m³/kg" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :massicVolume, :specificVolume ; + :referenceUnit :cubicMetrePerKilogram ; + :symbol "ml/kg" . + +:millilitrePerLitre + a :Unit ; + bamm:name "millilitrePerLitre" ; + bamm:preferredName "millilitre per litre"@en ; + :commonCode "L19" ; + :conversionFactor "10⁻³" ; + :quantityKind :volumeRatio ; + :symbol "ml/l" . + +:millilitrePerMinute + a :Unit ; + bamm:name "millilitrePerMinute" ; + bamm:preferredName "millilitre per minute"@en ; + :commonCode "41" ; + :conversionFactor "1.66667 × 10⁻⁸ m³/s" ; + :numericConversionFactor "1.66667E-8"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "ml/min" . + +:millilitrePerMinuteBar + a :Unit ; + bamm:name "millilitrePerMinuteBar" ; + bamm:preferredName "millilitre per minute bar"@en ; + :commonCode "G92" ; + :conversionFactor "1.66667 × 10⁻¹³ × kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "ml/(min·bar)" . + +:millilitrePerMinuteKelvin + a :Unit ; + bamm:name "millilitrePerMinuteKelvin" ; + bamm:preferredName "millilitre per minute kelvin"@en ; + :commonCode "G75" ; + :conversionFactor "1.66667 × 10⁻⁸ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "ml/(min·K)" . + +:millilitrePerSecond + a :Unit ; + bamm:name "millilitrePerSecond" ; + bamm:preferredName "millilitre per second"@en ; + :commonCode "40" ; + :conversionFactor "10⁻⁶ m³/s" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "ml/s" . + +:millilitrePerSecondBar + a :Unit ; + bamm:name "millilitrePerSecondBar" ; + bamm:preferredName "millilitre per second bar"@en ; + :commonCode "G93" ; + :conversionFactor "10⁻¹¹ kg⁻¹ × m⁴ × s" ; + :quantityKind :volumeFlowRate ; + :symbol "ml/(s·bar)" . + +:millilitrePerSecondKelvin + a :Unit ; + bamm:name "millilitrePerSecondKelvin" ; + bamm:preferredName "millilitre per second kelvin"@en ; + :commonCode "G76" ; + :conversionFactor "10⁻⁶ m³ × s⁻¹ × K⁻¹" ; + :quantityKind :volumeFlowRate ; + :symbol "ml/(s·K)" . + +:millilitrePerSquareCentimetreMinute + a :Unit ; + bamm:name "millilitrePerSquareCentimetreMinute" ; + bamm:preferredName "millilitre per square centimetre minute"@en ; + :commonCode "M22" ; + :conversionFactor "2.777778 × 10⁻⁶ (m³/s)/m²" ; + :numericConversionFactor "2.777778E-6"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :cubicMetrePerSecondSquareMetre ; + :symbol "(ml/min)/cm²" . + +:millilitrePerSquareCentimetreSecond + a :Unit ; + bamm:name "millilitrePerSquareCentimetreSecond" ; + bamm:preferredName "millilitre per square centimetre second"@en ; + :commonCode "35" ; + :conversionFactor "10⁻² m/s" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :porosity ; + :referenceUnit :metrePerSecond ; + :symbol "ml/(cm²·s)" . + +:millimetre + a :Unit ; + bamm:name "millimetre" ; + bamm:preferredName "millimetre"@en ; + :commonCode "MMT" ; + :conversionFactor "10⁻³ m" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "mm" . + +:millimetrePerBar + a :Unit ; + bamm:name "millimetrePerBar" ; + bamm:preferredName "millimetre per bar"@en ; + :commonCode "G06" ; + :conversionFactor "10⁻⁸ kg⁻¹ × m² × s²" ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :symbol "mm/bar" . + +:millimetrePerDegreeCelsiusMetre + a :Unit ; + bamm:name "millimetrePerDegreeCelsiusMetre" ; + bamm:preferredName "millimetre per degree Celsius metre"@en ; + :commonCode "E97" ; + :conversionFactor "10⁻³ K⁻¹" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :thermalDiffusivity ; + :referenceUnit :reciprocalKelvinOrKelvinToThePowerMinusOne ; + :symbol "mm/(°C·m)" . + +:millimetrePerHour + a :Unit ; + bamm:name "millimetrePerHour" ; + bamm:preferredName "millimetre per hour"@en ; + :commonCode "H67" ; + :conversionFactor "0.277777778 × 10⁻⁷ m × s⁻¹" ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :symbol "mm/h" . + +:millimetrePerKelvin + a :Unit ; + bamm:name "millimetrePerKelvin" ; + bamm:preferredName "millimetre per kelvin"@en ; + :commonCode "F53" ; + :conversionFactor "10⁻³ m × K⁻¹" ; + :quantityKind :thermalDiffusivity ; + :symbol "mm/K" . + +:millimetrePerMinute + a :Unit ; + bamm:name "millimetrePerMinute" ; + bamm:preferredName "millimetre per minute"@en ; + :commonCode "H81" ; + :conversionFactor "1.666666667 × 10⁻⁵ m × s⁻¹" ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :symbol "mm/min" . + +:millimetrePerSecond + a :Unit ; + bamm:name "millimetrePerSecond" ; + bamm:preferredName "millimetre per second"@en ; + :commonCode "C16" ; + :conversionFactor "10⁻³ m/s" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "mm/s" . + +:millimetrePerSecondSquared + a :Unit ; + bamm:name "millimetrePerSecondSquared" ; + bamm:preferredName "millimetre per second squared"@en ; + :commonCode "M41" ; + :conversionFactor "10⁻³ m/s²" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :acceleration, :accelerationDueToGravity, :accelerationOfFreeFall ; + :referenceUnit :metrePerSecondSquared ; + :symbol "mm/s²" . + +:millimetrePerYear + a :Unit ; + bamm:name "millimetrePerYear" ; + bamm:preferredName "millimetre per year"@en ; + :commonCode "H66" ; + :conversionFactor "3.15576 × 10⁴ m × s⁻¹" ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :symbol "mm/y" . + +:millimetreSquaredPerSecond + a :Unit ; + bamm:name "millimetreSquaredPerSecond" ; + bamm:preferredName "millimetre squared per second"@en ; + :commonCode "C17" ; + :conversionFactor "10⁻⁶ m²/s" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :kinematicViscosity ; + :referenceUnit :squareMetrePerSecond ; + :symbol "mm²/s" . + +:millimetreToTheFourthPower + a :Unit ; + bamm:name "millimetreToTheFourthPower" ; + bamm:preferredName "millimetre to the fourth power"@en ; + :commonCode "G77" ; + :conversionFactor "10⁻¹² m⁴" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :secondAxialMomentOfArea, :secondMomentOfArea ; + :referenceUnit :metreToTheFourthPower ; + :symbol "mm⁴" . + +:millimole + a :Unit ; + bamm:name "millimole" ; + bamm:preferredName "millimole"@en ; + :commonCode "C18" ; + :conversionFactor "10⁻³ mol" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :amountOfSubstance ; + :referenceUnit :mole ; + :symbol "mmol" . + +:millimolePerGram + a :Unit ; + bamm:name "millimolePerGram" ; + bamm:preferredName "millimole per gram"@en ; + :commonCode "H68" ; + :conversionFactor "mol × kg⁻¹" ; + :quantityKind :ionicStrength ; + :symbol "mmol/g" . + +:millimolePerKilogram + a :Unit ; + bamm:name "millimolePerKilogram" ; + bamm:preferredName "millimole per kilogram"@en ; + :commonCode "D87" ; + :conversionFactor "10⁻³ mol/kg" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :ionicStrength ; + :referenceUnit :molePerKilogram ; + :symbol "mmol/kg" . + +:millimolePerLitre + a :Unit ; + bamm:name "millimolePerLitre" ; + bamm:preferredName "millimole per litre"@en ; + :commonCode "M33" ; + :conversionFactor "mol/m³" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :molePerCubicMetre ; + :symbol "mmol/l" . + +:millinewton + a :Unit ; + bamm:name "millinewton" ; + bamm:preferredName "millinewton"@en ; + :commonCode "C20" ; + :conversionFactor "10⁻³ N" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :force, :weight ; + :referenceUnit :newton ; + :symbol "mN" . + +:millinewtonMetre + a :Unit ; + bamm:name "millinewtonMetre" ; + bamm:preferredName "millinewton metre"@en ; + :commonCode "D83" ; + :conversionFactor "10⁻³ N × m" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :newtonMetre ; + :symbol "mN·m" . + +:millinewtonPerMetre + a :Unit ; + bamm:name "millinewtonPerMetre" ; + bamm:preferredName "millinewton per metre"@en ; + :commonCode "C22" ; + :conversionFactor "10⁻³ N/m" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :surfaceTension ; + :referenceUnit :newtonPerMetre ; + :symbol "mN/m" . + +:milliohm + a :Unit ; + bamm:name "milliohm" ; + bamm:preferredName "milliohm"@en ; + :commonCode "E45" ; + :conversionFactor "10⁻³ Ω" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :complexImpedances, :impedance, :modulusOfImpedance, :reactance, :resistanceToAlternatingCurrent, :resistanceToDirectCurrent ; + :referenceUnit :ohm ; + :symbol "mΩ" . + +:milliohmMetre + a :Unit ; + bamm:name "milliohmMetre" ; + bamm:preferredName "milliohm metre"@en ; + :commonCode "C23" ; + :conversionFactor "10⁻³ Ω × m" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :resistivity ; + :referenceUnit :ohmMetre ; + :symbol "mΩ·m" . + +:milliohmPerMetre + a :Unit ; + bamm:name "milliohmPerMetre" ; + bamm:preferredName "milliohm per metre"@en ; + :commonCode "F54" ; + :conversionFactor "10⁻³ Ω/m" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :lineicResistance ; + :referenceUnit :ohmPerMetre ; + :symbol "mΩ/m" . + +:million + a :Unit ; + bamm:name "million" ; + bamm:preferredName "million"@en ; + :commonCode "MIO" ; + :conversionFactor "10⁶" . + +:millionBtuItPerHour + a :Unit ; + bamm:name "millionBtuItPerHour" ; + bamm:preferredName "million Btu(IT) per hour"@en ; + :commonCode "E16" ; + :conversionFactor "293071.1 W" ; + :numericConversionFactor "293071.1"^^xsd:double ; + :referenceUnit :watt ; + :symbol "BtuIT/h" . + +:millionBtuPer1000CubicFoot + a :Unit ; + bamm:name "millionBtuPer1000CubicFoot" ; + bamm:preferredName "million Btu per 1000 cubic foot"@en ; + :commonCode "M9" ; + :symbol "MBTU/kft³" . + +:millionCubicMetre + a :Unit ; + bamm:name "millionCubicMetre" ; + bamm:preferredName "million cubic metre"@en ; + :commonCode "HMQ" ; + :symbol "Mm³" . + +:millionInternationalUnit + a :Unit ; + bamm:name "millionInternationalUnit" ; + bamm:preferredName "million international unit"@en ; + :commonCode "MIU" . + +:millipascal + a :Unit ; + bamm:name "millipascal" ; + bamm:preferredName "millipascal"@en ; + :commonCode "74" ; + :conversionFactor "10⁻³ Pa" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "mPa" . + +:millipascalPerMetre + a :Unit ; + bamm:name "millipascalPerMetre" ; + bamm:preferredName "millipascal per metre"@en ; + :commonCode "P80" ; + :conversionFactor "10⁻³ kg/(m² × s²)" ; + :quantityKind :hardnessIndex ; + :symbol "mPa/m" . + +:millipascalSecond + a :Unit ; + bamm:name "millipascalSecond" ; + bamm:preferredName "millipascal second"@en ; + :commonCode "C24" ; + :conversionFactor "10⁻³ Pa × s" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "mPa·s" . + +:millipascalSecondPerBar + a :Unit ; + bamm:name "millipascalSecondPerBar" ; + bamm:preferredName "millipascal second per bar"@en ; + :commonCode "L16" ; + :conversionFactor "10⁻⁸ s" ; + :numericConversionFactor "1.0E-8"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :secondUnitOfTime ; + :symbol "mPa·s/bar" . + +:millipascalSecondPerKelvin + a :Unit ; + bamm:name "millipascalSecondPerKelvin" ; + bamm:preferredName "millipascal second per kelvin"@en ; + :commonCode "L15" ; + :conversionFactor "10⁻³ Pa × s/K" ; + :quantityKind :viscosityDynamicViscosity ; + :symbol "mPa·s/K" . + +:milliradian + a :Unit ; + bamm:name "milliradian" ; + bamm:preferredName "milliradian"@en ; + :commonCode "C25" ; + :conversionFactor "10⁻³ rad" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :anglePlane ; + :referenceUnit :rad ; + :symbol "mrad" . + +:milliroentgen + a :Unit ; + bamm:name "milliroentgen" ; + bamm:preferredName "milliroentgen"@en ; + :commonCode "2Y" ; + :conversionFactor "2.58 × 10⁻⁷ C/kg" ; + :numericConversionFactor "2.58E-7"^^xsd:double ; + :quantityKind :exposure ; + :referenceUnit :coulombPerKilogram ; + :symbol "mR" . + +:milliroentgenAequivalentMen + a :Unit ; + bamm:name "milliroentgenAequivalentMen" ; + bamm:preferredName "milliroentgen aequivalent men"@en ; + :commonCode "L31" ; + :conversionFactor "10⁻⁵ Sv" ; + :numericConversionFactor "1.0E-5"^^xsd:double ; + :quantityKind :doseEquivalent ; + :referenceUnit :sievert ; + :symbol "mrem" . + +:millisecond + a :Unit ; + bamm:name "millisecond" ; + bamm:preferredName "millisecond"@en ; + :commonCode "C26" ; + :conversionFactor "10⁻³ s" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "ms" . + +:millisiemens + a :Unit ; + bamm:name "millisiemens" ; + bamm:preferredName "millisiemens"@en ; + :commonCode "C27" ; + :conversionFactor "10⁻³ S" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :admittance, :complexAdmittance, :conductanceForAlternatingCurrent, :conductanceForDirectCurrent, :modulusOfAdmittance ; + :referenceUnit :siemens ; + :symbol "mS" . + +:millisiemensPerCentimetre + a :Unit ; + bamm:name "millisiemensPerCentimetre" ; + bamm:preferredName "millisiemens per centimetre"@en ; + :commonCode "H61" ; + :conversionFactor "10⁻¹ S/m" ; + :numericConversionFactor "0.1"^^xsd:double ; + :quantityKind :conductivity ; + :referenceUnit :siemensPerMetre ; + :symbol "mS/cm" . + +:millisievert + a :Unit ; + bamm:name "millisievert" ; + bamm:preferredName "millisievert"@en ; + :commonCode "C28" ; + :conversionFactor "10⁻³ Sv" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :doseEquivalent ; + :referenceUnit :sievert ; + :symbol "mSv" . + +:millisievertPerHour + a :Unit ; + bamm:name "millisievertPerHour" ; + bamm:preferredName "millisievert per hour"@en ; + :commonCode "P71" ; + :conversionFactor "0.277777778 × 10⁻⁷ Sv/s" ; + :numericConversionFactor "2.77777778E-8"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "mSv/h" . + +:millisievertPerMinute + a :Unit ; + bamm:name "millisievertPerMinute" ; + bamm:preferredName "millisievert per minute"@en ; + :commonCode "P75" ; + :conversionFactor "1.666666667 × 10⁻⁵ Sv/s" ; + :numericConversionFactor "1.666666667E-5"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "mSv/min" . + +:millisievertPerSecond + a :Unit ; + bamm:name "millisievertPerSecond" ; + bamm:preferredName "millisievert per second"@en ; + :commonCode "P66" ; + :conversionFactor "10⁻³ Sv/s" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "mSv/s" . + +:millitesla + a :Unit ; + bamm:name "millitesla" ; + bamm:preferredName "millitesla"@en ; + :commonCode "C29" ; + :conversionFactor "10⁻³ T" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :magneticFluxDensity, :magneticInduction, :magneticPolarization ; + :referenceUnit :tesla ; + :symbol "mT" . + +:millivolt + a :Unit ; + bamm:name "millivolt" ; + bamm:preferredName "millivolt"@en ; + :commonCode "2Z" ; + :conversionFactor "10⁻³ V" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :electricPotential, :electromotiveForce, :potentialDifference, :tension, :voltage ; + :referenceUnit :volt ; + :symbol "mV" . + +:millivoltAmpere + a :Unit ; + bamm:name "millivoltAmpere" ; + bamm:preferredName "millivolt - ampere"@en ; + :commonCode "M35" ; + :conversionFactor "10⁻³ V × A" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :apparentPower ; + :referenceUnit :voltAmpere ; + :symbol "mV·A" . + +:millivoltPerKelvin + a :Unit ; + bamm:name "millivoltPerKelvin" ; + bamm:preferredName "millivolt per kelvin"@en ; + :commonCode "D49" ; + :conversionFactor "10⁻³ V/K" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :thompsonCoefficient ; + :referenceUnit :voltPerKelvin ; + :symbol "mV/K" . + +:millivoltPerMetre + a :Unit ; + bamm:name "millivoltPerMetre" ; + bamm:preferredName "millivolt per metre"@en ; + :commonCode "C30" ; + :conversionFactor "10⁻³ V/m" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :electricFieldStrength ; + :referenceUnit :voltPerMetre ; + :symbol "mV/m" . + +:millivoltPerMinute + a :Unit ; + bamm:name "millivoltPerMinute" ; + bamm:preferredName "millivolt per minute"@en ; + :commonCode "H62" ; + :conversionFactor "1.666666667 × 10⁻⁵ m² × kg × s⁻⁴ × A⁻¹" ; + :quantityKind :electricFieldStrength ; + :symbol "mV/min" . + +:milliwatt + a :Unit ; + bamm:name "milliwatt" ; + bamm:preferredName "milliwatt"@en ; + :commonCode "C31" ; + :conversionFactor "10⁻³ W" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :activePower, :power, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "mW" . + +:milliwattPerSquareMetre + a :Unit ; + bamm:name "milliwattPerSquareMetre" ; + bamm:preferredName "milliwatt per square metre"@en ; + :commonCode "C32" ; + :conversionFactor "10⁻³ W/m²" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :soundIntensity ; + :referenceUnit :wattPerSquareMetre ; + :symbol "mW/m²" . + +:milliweber + a :Unit ; + bamm:name "milliweber" ; + bamm:preferredName "milliweber"@en ; + :commonCode "C33" ; + :conversionFactor "10⁻³ Wb" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :magneticFlux ; + :referenceUnit :weber ; + :symbol "mWb" . + +:minuteUnitOfAngle + a :Unit ; + bamm:name "minuteUnitOfAngle" ; + bamm:preferredName "minute [unit of angle]"@en ; + :commonCode "D61" ; + :conversionFactor "2.908882 × 10⁻⁴ rad" ; + :numericConversionFactor "2.908882E-4"^^xsd:double ; + :quantityKind :anglePlane ; + :referenceUnit :rad ; + :symbol "'" . + +:minuteUnitOfTime + a :Unit ; + bamm:name "minuteUnitOfTime" ; + bamm:preferredName "minute [unit of time]"@en ; + :commonCode "MIN" ; + :conversionFactor "60 s" ; + :numericConversionFactor "60.0"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "min" . + +:mmscfPerDay + a :Unit ; + bamm:name "mmscfPerDay" ; + bamm:preferredName "MMSCF/day"@en ; + :commonCode "5E" . + +:moduleWidth + a :Unit ; + bamm:name "moduleWidth" ; + bamm:preferredName "module width"@en ; + :commonCode "H77" ; + :symbol "MW" . + +:molPerCubicMetrePascal + a :Unit ; + bamm:name "molPerCubicMetrePascal" ; + bamm:preferredName "mol per cubic metre pascal"@en ; + :commonCode "P52" ; + :conversionFactor "m⁻² × kg⁻¹ × s² × mol" ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :symbol "(mol/m³)/Pa" . + +:molPerKilogramPascal + a :Unit ; + bamm:name "molPerKilogramPascal" ; + bamm:preferredName "mol per kilogram pascal"@en ; + :commonCode "P51" ; + :conversionFactor "m × kg⁻² × s² × mol" ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :symbol "(mol/kg)/Pa" . + +:mole + a :Unit ; + bamm:name "mole" ; + bamm:preferredName "mole"@en ; + :commonCode "C34" ; + :conversionFactor "mol" ; + :quantityKind :amountOfSubstance ; + :symbol "mol" . + +:molePerCubicDecimetre + a :Unit ; + bamm:name "molePerCubicDecimetre" ; + bamm:preferredName "mole per cubic decimetre"@en ; + :commonCode "C35" ; + :conversionFactor "10³ mol/m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :molePerCubicMetre ; + :symbol "mol/dm³" . + +:molePerCubicMetre + a :Unit ; + bamm:name "molePerCubicMetre" ; + bamm:preferredName "mole per cubic metre"@en ; + :commonCode "C36" ; + :conversionFactor "mol/m³" ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :symbol "mol/m³" . + +:molePerCubicMetreBar + a :Unit ; + bamm:name "molePerCubicMetreBar" ; + bamm:preferredName "mole per cubic metre bar"@en ; + :commonCode "L29" ; + :conversionFactor "10⁻⁵ (mol/m³)/Pa" ; + :numericConversionFactor "1.0E-5"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :molPerCubicMetrePascal ; + :symbol "(mol/m³)/bar" . + +:molePerCubicMetreKelvin + a :Unit ; + bamm:name "molePerCubicMetreKelvin" ; + bamm:preferredName "mole per cubic metre kelvin"@en ; + :commonCode "L28" ; + :conversionFactor "(mol/m³)/K" ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :symbol "(mol/m³)/K" . + +:molePerCubicMetreToThePowerSumOfStoichiometricNumbers + a :Unit ; + bamm:name "molePerCubicMetreToThePowerSumOfStoichiometricNumbers" ; + bamm:preferredName "mole per cubic metre to the power sum of stoichiometric numbers"@en ; + :commonCode "P99" ; + :symbol "(mol/m³)∑νB" . + +:molePerHour + a :Unit ; + bamm:name "molePerHour" ; + bamm:preferredName "mole per hour"@en ; + :commonCode "L23" ; + :conversionFactor "2.77778 × 10⁻⁴ mol/s" ; + :numericConversionFactor "2.77778E-4"^^xsd:double ; + :quantityKind :molarFlux ; + :referenceUnit :molePerSecond ; + :symbol "mol/h" . + +:molePerKilogram + a :Unit ; + bamm:name "molePerKilogram" ; + bamm:preferredName "mole per kilogram"@en ; + :commonCode "C19" ; + :conversionFactor "mol/kg" ; + :quantityKind :molalityOfSoluteB ; + :symbol "mol/kg" . + +:molePerKilogramBar + a :Unit ; + bamm:name "molePerKilogramBar" ; + bamm:preferredName "mole per kilogram bar"@en ; + :commonCode "L25" ; + :conversionFactor "10⁻⁵ (mol/kg)/Pa" ; + :numericConversionFactor "1.0E-5"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :molPerKilogramPascal ; + :symbol "(mol/kg)/bar" . + +:molePerKilogramKelvin + a :Unit ; + bamm:name "molePerKilogramKelvin" ; + bamm:preferredName "mole per kilogram kelvin"@en ; + :commonCode "L24" ; + :conversionFactor "(mol/kg)/K" ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :symbol "(mol/kg)/K" . + +:molePerLitre + a :Unit ; + bamm:name "molePerLitre" ; + bamm:preferredName "mole per litre"@en ; + :commonCode "C38" ; + :conversionFactor "10³ mol/m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :molePerCubicMetre ; + :symbol "mol/l" . + +:molePerLitreBar + a :Unit ; + bamm:name "molePerLitreBar" ; + bamm:preferredName "mole per litre bar"@en ; + :commonCode "L27" ; + :conversionFactor "10⁻² (mol/m³)/Pa" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :molPerCubicMetrePascal ; + :symbol "(mol/l)/bar" . + +:molePerLitreKelvin + a :Unit ; + bamm:name "molePerLitreKelvin" ; + bamm:preferredName "mole per litre kelvin"@en ; + :commonCode "L26" ; + :conversionFactor "10³ (mol/m³)/K" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :molePerCubicMetreKelvin ; + :symbol "(mol/l)/K" . + +:molePerMinute + a :Unit ; + bamm:name "molePerMinute" ; + bamm:preferredName "mole per minute"@en ; + :commonCode "L30" ; + :conversionFactor "1.66667 × 10⁻² mol/s" ; + :numericConversionFactor "0.0166667"^^xsd:double ; + :quantityKind :molarFlux ; + :referenceUnit :molePerSecond ; + :symbol "mol/min" . + +:molePerSecond + a :Unit ; + bamm:name "molePerSecond" ; + bamm:preferredName "mole per second"@en ; + :commonCode "E95" ; + :conversionFactor "s⁻¹ × mol" ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :symbol "mol/s" . + +:monetaryValue + a :Unit ; + bamm:name "monetaryValue" ; + bamm:preferredName "monetary value"@en ; + :commonCode "M4" . + +:month + a :Unit ; + bamm:name "month" ; + bamm:preferredName "month"@en ; + :commonCode "MON" ; + :conversionFactor "2.629800 × 10⁶ s" ; + :numericConversionFactor "2629800.0"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "mo" . + +:mutuallyDefined + a :Unit ; + bamm:name "mutuallyDefined" ; + bamm:preferredName "mutually defined"@en ; + :commonCode "ZZ" . + +:nanoampere + a :Unit ; + bamm:name "nanoampere" ; + bamm:preferredName "nanoampere"@en ; + :commonCode "C39" ; + :conversionFactor "10⁻⁹ A" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :currentLinkage, :electricCurrent, :magneticPotentialDifference, :magnetomotiveForce ; + :referenceUnit :ampere ; + :symbol "nA" . + +:nanocoulomb + a :Unit ; + bamm:name "nanocoulomb" ; + bamm:preferredName "nanocoulomb"@en ; + :commonCode "C40" ; + :conversionFactor "10⁻⁹ C" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "nC" . + +:nanofarad + a :Unit ; + bamm:name "nanofarad" ; + bamm:preferredName "nanofarad"@en ; + :commonCode "C41" ; + :conversionFactor "10⁻⁹ F" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :capacitance ; + :referenceUnit :farad ; + :symbol "nF" . + +:nanofaradPerMetre + a :Unit ; + bamm:name "nanofaradPerMetre" ; + bamm:preferredName "nanofarad per metre"@en ; + :commonCode "C42" ; + :conversionFactor "10⁻⁹ F/m" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :electricConstant, :permittivity, :permittivityOfVacuum ; + :referenceUnit :faradPerMetre ; + :symbol "nF/m" . + +:nanogramPerKilogram + a :Unit ; + bamm:name "nanogramPerKilogram" ; + bamm:preferredName "nanogram per kilogram"@en ; + :commonCode "L32" ; + :conversionFactor "10⁻¹²" ; + :quantityKind :massRatio ; + :symbol "ng/kg" . + +:nanograyPerHour + a :Unit ; + bamm:name "nanograyPerHour" ; + bamm:preferredName "nanogray per hour"@en ; + :commonCode "P64" ; + :conversionFactor "2.77778 × 10⁻¹³ Gy/s" ; + :numericConversionFactor "2.77778E-13"^^xsd:double ; + :quantityKind :absorbedDoseRate ; + :referenceUnit :grayPerSecond ; + :symbol "nGy/h" . + +:nanograyPerMinute + a :Unit ; + bamm:name "nanograyPerMinute" ; + bamm:preferredName "nanogray per minute"@en ; + :commonCode "P60" ; + :conversionFactor "1.66667 × 10⁻¹¹ Gy/s" ; + :numericConversionFactor "1.66667E-11"^^xsd:double ; + :quantityKind :absorbedDoseRate ; + :referenceUnit :grayPerSecond ; + :symbol "nGy/min" . + +:nanograyPerSecond + a :Unit ; + bamm:name "nanograyPerSecond" ; + bamm:preferredName "nanogray per second"@en ; + :commonCode "P56" ; + :conversionFactor "10⁻⁹ Gy/s" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :absorbedDoseRate ; + :referenceUnit :grayPerSecond ; + :symbol "nGy/s" . + +:nanohenry + a :Unit ; + bamm:name "nanohenry" ; + bamm:preferredName "nanohenry"@en ; + :commonCode "C43" ; + :conversionFactor "10⁻⁹ H" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :referenceUnit :henry ; + :symbol "nH" . + +:nanohenryPerMetre + a :Unit ; + bamm:name "nanohenryPerMetre" ; + bamm:preferredName "nanohenry per metre"@en ; + :commonCode "C44" ; + :conversionFactor "10⁻⁹ H/m" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :magneticConstant, :permeability, :permeabilityOfVacuum ; + :referenceUnit :henryPerMetre ; + :symbol "nH/m" . + +:nanometre + a :Unit ; + bamm:name "nanometre" ; + bamm:preferredName "nanometre"@en ; + :commonCode "C45" ; + :conversionFactor "10⁻⁹ m" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "nm" . + +:nanoohm + a :Unit ; + bamm:name "nanoohm" ; + bamm:preferredName "nanoohm"@en ; + :commonCode "P22" ; + :conversionFactor "10⁻⁹ Ω" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :complexImpedances, :impedance, :modulusOfImpedance, :reactance, :resistanceToAlternatingCurrent, :resistanceToDirectCurrent ; + :referenceUnit :ohm ; + :symbol "nΩ" . + +:nanoohmMetre + a :Unit ; + bamm:name "nanoohmMetre" ; + bamm:preferredName "nanoohm metre"@en ; + :commonCode "C46" ; + :conversionFactor "10⁻⁹ Ω·× m" ; + :quantityKind :resistivity ; + :symbol "nΩ·m" . + +:nanosecond + a :Unit ; + bamm:name "nanosecond" ; + bamm:preferredName "nanosecond"@en ; + :commonCode "C47" ; + :conversionFactor "10⁻⁹ s" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "ns" . + +:nanosiemensPerCentimetre + a :Unit ; + bamm:name "nanosiemensPerCentimetre" ; + bamm:preferredName "nanosiemens per centimetre"@en ; + :commonCode "G44" ; + :conversionFactor "10⁻⁷ S/m" ; + :numericConversionFactor "1.0E-7"^^xsd:double ; + :quantityKind :conductivity ; + :referenceUnit :siemensPerMetre ; + :symbol "nS/cm" . + +:nanosiemensPerMetre + a :Unit ; + bamm:name "nanosiemensPerMetre" ; + bamm:preferredName "nanosiemens per metre"@en ; + :commonCode "G45" ; + :conversionFactor "10⁻⁹ S/m" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :conductivity ; + :referenceUnit :siemensPerMetre ; + :symbol "nS/m" . + +:nanosievertPerHour + a :Unit ; + bamm:name "nanosievertPerHour" ; + bamm:preferredName "nanosievert per hour"@en ; + :commonCode "P73" ; + :conversionFactor "0.277777778 × 10⁻¹³ Sv/s" ; + :numericConversionFactor "2.77777778E-14"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "nSv/h" . + +:nanosievertPerMinute + a :Unit ; + bamm:name "nanosievertPerMinute" ; + bamm:preferredName "nanosievert per minute"@en ; + :commonCode "P77" ; + :conversionFactor "1.666666667 × 10⁻¹¹ Sv/s" ; + :numericConversionFactor "1.666666667E-11"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "nSv/min" . + +:nanosievertPerSecond + a :Unit ; + bamm:name "nanosievertPerSecond" ; + bamm:preferredName "nanosievert per second"@en ; + :commonCode "P68" ; + :conversionFactor "10⁻⁹ Sv/s" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "nSv/s" . + +:nanotesla + a :Unit ; + bamm:name "nanotesla" ; + bamm:preferredName "nanotesla"@en ; + :commonCode "C48" ; + :conversionFactor "10⁻⁹ T" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :magneticFluxDensity, :magneticInduction, :magneticPolarization ; + :referenceUnit :tesla ; + :symbol "nT" . + +:nanowatt + a :Unit ; + bamm:name "nanowatt" ; + bamm:preferredName "nanowatt"@en ; + :commonCode "C49" ; + :conversionFactor "10⁻⁹ W" ; + :numericConversionFactor "1.0E-9"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "nW" . + +:naturalUnitOfInformation + a :Unit ; + bamm:name "naturalUnitOfInformation" ; + bamm:preferredName "natural unit of information"@en ; + :commonCode "Q16" ; + :conversionFactor "nat" ; + :symbol "nat" . + +:naturalUnitOfInformationPerSecond + a :Unit ; + bamm:name "naturalUnitOfInformationPerSecond" ; + bamm:preferredName "natural unit of information per second"@en ; + :commonCode "Q19" ; + :conversionFactor "nat/s" ; + :symbol "nat/s" . + +:nauticalMile + a :Unit ; + bamm:name "nauticalMile" ; + bamm:preferredName "nautical mile"@en ; + :commonCode "NMI" ; + :conversionFactor "1852 m" ; + :numericConversionFactor "1852.0"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "n mile" . + +:neper + a :Unit ; + bamm:name "neper" ; + bamm:preferredName "neper"@en ; + :commonCode "C50" ; + :conversionFactor "Np" ; + :quantityKind :levelOfAFieldQuantity, :levelOfAPowerQuantity, :logarithmicDecrement ; + :symbol "Np" . + +:neperPerSecond + a :Unit ; + bamm:name "neperPerSecond" ; + bamm:preferredName "neper per second"@en ; + :commonCode "C51" ; + :conversionFactor "Np/s" ; + :quantityKind :dampingCoefficient ; + :symbol "Np/s" . + +:netKilogram + a :Unit ; + bamm:name "netKilogram" ; + bamm:preferredName "net kilogram"@en ; + :commonCode "58" . + +:netTon + a :Unit ; + bamm:name "netTon" ; + bamm:preferredName "net ton"@en ; + :commonCode "NT" . + +:newton + a :Unit ; + bamm:name "newton" ; + bamm:preferredName "newton"@en ; + :commonCode "NEW" ; + :conversionFactor "(kg × m)/s²" ; + :quantityKind :force, :weight ; + :symbol "N" . + +:newtonCentimetre + a :Unit ; + bamm:name "newtonCentimetre" ; + bamm:preferredName "newton centimetre"@en ; + :commonCode "F88" ; + :conversionFactor "10⁻² kg × m² × s⁻²" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "N·cm" . + +:newtonMetre + a :Unit ; + bamm:name "newtonMetre" ; + bamm:preferredName "newton metre"@en ; + :commonCode "NU" ; + :conversionFactor "N × m" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "N·m" . + +:newtonMetrePerAmpere + a :Unit ; + bamm:name "newtonMetrePerAmpere" ; + bamm:preferredName "newton metre per ampere"@en ; + :commonCode "F90" ; + :conversionFactor "kg × m² × s⁻² × A⁻¹" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "N·m/A" . + +:newtonMetrePerDegree + a :Unit ; + bamm:name "newtonMetrePerDegree" ; + bamm:preferredName "newton metre per degree"@en ; + :commonCode "F89" ; + :conversionFactor "57.295788 kg × m² × s⁻² × rad⁻¹" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "Nm/°" . + +:newtonMetrePerKilogram + a :Unit ; + bamm:name "newtonMetrePerKilogram" ; + bamm:preferredName "newton metre per kilogram"@en ; + :commonCode "G19" ; + :conversionFactor "m² × s⁻²" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "N·m/kg" . + +:newtonMetrePerMetre + a :Unit ; + bamm:name "newtonMetrePerMetre" ; + bamm:preferredName "newton metre per metre"@en ; + :commonCode "Q27" ; + :conversionFactor "m × kg × s⁻²" ; + :symbol "N·m/m²" . + +:newtonMetrePerRadian + a :Unit ; + bamm:name "newtonMetrePerRadian" ; + bamm:preferredName "newton metre per radian"@en ; + :commonCode "M93" ; + :conversionFactor "m² × kg × s⁻² × rad⁻¹" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "N·m/rad" . + +:newtonMetrePerSquareMetre + a :Unit ; + bamm:name "newtonMetrePerSquareMetre" ; + bamm:preferredName "newton metre per square metre"@en ; + :commonCode "M34" ; + :conversionFactor "N × m/m²" ; + :quantityKind :areaRelatedTorsionalMoment, :torsionalStiffness ; + :symbol "N·m/m²" . + +:newtonMetreSecond + a :Unit ; + bamm:name "newtonMetreSecond" ; + bamm:preferredName "newton metre second"@en ; + :commonCode "C53" ; + :conversionFactor "N × m × s" ; + :quantityKind :angularImpulse ; + :symbol "N·m·s" . + +:newtonMetreSquaredPerKilogramSquared + a :Unit ; + bamm:name "newtonMetreSquaredPerKilogramSquared" ; + bamm:preferredName "newton metre squared per kilogram squared"@en ; + :commonCode "C54" ; + :conversionFactor "N × m²/kg²" ; + :quantityKind :gravitationalConstant ; + :symbol "N·m²/kg²" . + +:newtonMetreWattToThePowerMinus0point5 + a :Unit ; + bamm:name "newtonMetreWattToThePowerMinus0point5" ; + bamm:preferredName "newton metre watt to the power minus 0,5"@en ; + :commonCode "H41" ; + :conversionFactor "kg × m² × s⁻² × W⁻⁰‧⁵" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "N·m·W⁻⁰‧⁵" . + +:newtonPerAmpere + a :Unit ; + bamm:name "newtonPerAmpere" ; + bamm:preferredName "newton per ampere"@en ; + :commonCode "H40" ; + :conversionFactor "kg × m × s⁻² × A⁻¹" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "N/A" . + +:newtonPerCentimetre + a :Unit ; + bamm:name "newtonPerCentimetre" ; + bamm:preferredName "newton per centimetre"@en ; + :commonCode "M23" ; + :conversionFactor "10² N/m" ; + :numericConversionFactor "100.0"^^xsd:double ; + :quantityKind :surfaceTension ; + :referenceUnit :newtonPerMetre ; + :symbol "N/cm" . + +:newtonPerMetre + a :Unit ; + bamm:name "newtonPerMetre" ; + bamm:preferredName "newton per metre"@en ; + :commonCode "4P" ; + :conversionFactor "N/m" ; + :quantityKind :surfaceTension ; + :symbol "N/m" . + +:newtonPerMillimetre + a :Unit ; + bamm:name "newtonPerMillimetre" ; + bamm:preferredName "newton per millimetre"@en ; + :commonCode "F47" ; + :conversionFactor "10³ kg × s⁻²" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "N/mm" . + +:newtonPerSquareCentimetre + a :Unit ; + bamm:name "newtonPerSquareCentimetre" ; + bamm:preferredName "newton per square centimetre"@en ; + :commonCode "E01" ; + :conversionFactor "10⁴ Pa" ; + :numericConversionFactor "10000.0"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "N/cm²" . + +:newtonPerSquareMetre + a :Unit ; + bamm:name "newtonPerSquareMetre" ; + bamm:preferredName "newton per square metre"@en ; + :commonCode "C55" ; + :conversionFactor "Pa" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "N/m²" . + +:newtonPerSquareMillimetre + a :Unit ; + bamm:name "newtonPerSquareMillimetre" ; + bamm:preferredName "newton per square millimetre"@en ; + :commonCode "C56" ; + :conversionFactor "10⁶ Pa" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "N/mm²" . + +:newtonSecond + a :Unit ; + bamm:name "newtonSecond" ; + bamm:preferredName "newton second"@en ; + :commonCode "C57" ; + :conversionFactor "N × s" ; + :quantityKind :impulse ; + :symbol "N·s" . + +:newtonSecondPerMetre + a :Unit ; + bamm:name "newtonSecondPerMetre" ; + bamm:preferredName "newton second per metre"@en ; + :commonCode "C58" ; + :conversionFactor "N × s/m" ; + :quantityKind :mechanicalImpedance ; + :symbol "N·s/m" . + +:newtonSecondPerSquareMetre + a :Unit ; + bamm:name "newtonSecondPerSquareMetre" ; + bamm:preferredName "newton second per square metre"@en ; + :commonCode "N36" ; + :conversionFactor "Pa × s" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "(N/m²)·s" . + +:newtonSquareMetrePerAmpere + a :Unit ; + bamm:name "newtonSquareMetrePerAmpere" ; + bamm:preferredName "newton square metre per ampere"@en ; + :commonCode "P49" ; + :conversionFactor "m³ × kg × s⁻² × A⁻¹" ; + :quantityKind :magneticDipoleMoment ; + :symbol "N·m²/A" . + +:nil + a :Unit ; + bamm:name "nil" ; + bamm:preferredName "nil"@en ; + :commonCode "NIL" ; + :symbol "()" . + +:numberOfArticles + a :Unit ; + bamm:name "numberOfArticles" ; + bamm:preferredName "number of articles"@en ; + :commonCode "NAR" . + +:numberOfCells + a :Unit ; + bamm:name "numberOfCells" ; + bamm:preferredName "number of cells"@en ; + :commonCode "NCL" . + +:numberOfInternationalUnits + a :Unit ; + bamm:name "numberOfInternationalUnits" ; + bamm:preferredName "number of international units"@en ; + :commonCode "NIU" . + +:numberOfJewels + a :Unit ; + bamm:name "numberOfJewels" ; + bamm:preferredName "number of jewels"@en ; + :commonCode "JWL" . + +:numberOfPacks + a :Unit ; + bamm:name "numberOfPacks" ; + bamm:preferredName "number of packs"@en ; + :commonCode "NMP" . + +:numberOfParts + a :Unit ; + bamm:name "numberOfParts" ; + bamm:preferredName "number of parts"@en ; + :commonCode "NPT" . + +:numberOfWords + a :Unit ; + bamm:name "numberOfWords" ; + bamm:preferredName "number of words"@en ; + :commonCode "D68" . + +:octave + a :Unit ; + bamm:name "octave" ; + bamm:preferredName "octave"@en ; + :commonCode "C59" ; + :quantityKind :frequencyInterval . + +:octet + a :Unit ; + bamm:name "octet" ; + bamm:preferredName "octet"@en ; + :commonCode "Q12" ; + :conversionFactor "8 bit" ; + :numericConversionFactor "8.0"^^xsd:double ; + :referenceUnit :bit ; + :symbol "o" . + +:octetPerSecond + a :Unit ; + bamm:name "octetPerSecond" ; + bamm:preferredName "octet per second"@en ; + :commonCode "Q13" ; + :conversionFactor "8 bit/s" ; + :numericConversionFactor "8.0"^^xsd:double ; + :referenceUnit :bitPerSecond ; + :symbol "o/s" . + +:ohm + a :Unit ; + bamm:name "ohm" ; + bamm:preferredName "ohm"@en ; + :commonCode "OHM" ; + :conversionFactor "Ω" ; + :quantityKind :complexImpedances, :impedance, :modulusOfImpedance, :reactance, :resistanceToAlternatingCurrent, :resistanceToDirectCurrent ; + :symbol "Ω" . + +:ohmCentimetre + a :Unit ; + bamm:name "ohmCentimetre" ; + bamm:preferredName "ohm centimetre"@en ; + :commonCode "C60" ; + :conversionFactor "10⁻² Ω × m" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :resistivity ; + :referenceUnit :ohmMetre ; + :symbol "Ω·cm" . + +:ohmCircularMilPerFoot + a :Unit ; + bamm:name "ohmCircularMilPerFoot" ; + bamm:preferredName "ohm circular-mil per foot"@en ; + :commonCode "P23" ; + :conversionFactor "1.662426 × 10⁻⁹ Ω × m" ; + :numericConversionFactor "1.662426E-9"^^xsd:double ; + :quantityKind :resistivity ; + :referenceUnit :ohmMetre ; + :symbol "Ω·cmil/ft" . + +:ohmKilometre + a :Unit ; + bamm:name "ohmKilometre" ; + bamm:preferredName "ohm kilometre"@en ; + :commonCode "M24" ; + :conversionFactor "10³ Ω × m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :resistivity ; + :referenceUnit :ohmMetre ; + :symbol "Ω·km" . + +:ohmMetre + a :Unit ; + bamm:name "ohmMetre" ; + bamm:preferredName "ohm metre"@en ; + :commonCode "C61" ; + :conversionFactor "Ω × m" ; + :quantityKind :residualResistivity, :resistivity ; + :symbol "Ω·m" . + +:ohmPerKilometre + a :Unit ; + bamm:name "ohmPerKilometre" ; + bamm:preferredName "ohm per kilometre"@en ; + :commonCode "F56" ; + :conversionFactor "10⁻³ Ω/m" ; + :numericConversionFactor "0.001"^^xsd:double ; + :quantityKind :lineicResistance ; + :referenceUnit :ohmPerMetre ; + :symbol "Ω/km" . + +:ohmPerMetre + a :Unit ; + bamm:name "ohmPerMetre" ; + bamm:preferredName "ohm per metre"@en ; + :commonCode "H26" ; + :conversionFactor "Ω/m" ; + :quantityKind :lineicResistance ; + :symbol "Ω/m" . + +:ohmPerMileStatuteMile + a :Unit ; + bamm:name "ohmPerMileStatuteMile" ; + bamm:preferredName "ohm per mile (statute mile)"@en ; + :commonCode "F55" ; + :conversionFactor "6.21371 × 10⁻⁴ Ω/m" ; + :numericConversionFactor "6.21371E-4"^^xsd:double ; + :quantityKind :lineicResistance ; + :referenceUnit :ohmPerMetre ; + :symbol "Ω/mi" . + +:one + a :Unit ; + bamm:name "one" ; + bamm:preferredName "one"@en ; + :commonCode "C62" ; + :conversionFactor "1" ; + :quantityKind :absoluteActivity, :absorbance, :absorptionFactor, :activityCoefficientOfBInALiquidAsASolidMixture, :activityCoefficientOfSoluteBEspeciallyInADiluteSolution, :activityOfSolventA, :alfvenNumber, :atomicNumber, :averageLogarithmicEnergyDecrement, :bindingFraction, :canonicalPartitionFunction, :chargeNumberOfIon, :cieColorimetricFunctions, :coefficientOfFriction, :coordinatesTrichromatic, :couplingCoefficient, :cowlingNumber, :currentFractionOfIonB, :debyeWalleFactor, :degreeOfDissociation, :directionalSpectralEmissivity, :dissipance, :dissipationFactor, :effectiveMultiplicationFactor, :electricSusceptibility, :emissivity, :emissivityAtASpecifiedWavelength, :eulerNumber, :fastFissionFactor, :fineStructureConstant, :fourierNumber, :fourierNumberForMassTransfer, :frictionFactor, :froudeNumber, :gFactorOfAtomOrElectron, :gFactorOfNucleus, :grandCanonicalPartitionFunction, :grandPartitionFunction, :grashofNumber, :grashofNumberForMassTransfer, :grueneisenParameter, :hartmannNumber, :hyperfineStructureQuantumNumber, :infiniteMediumMultiplicationFactor, :internalConversionFactor, :isentropicExponent, :knudsenNumber, :landauGinzburgNumber, :leakageCoefficient, :lethargy, :lewisNumber, :linearStrain, :longRangeOrderParameter, :luminousEfficiency, :luminousEfficiencyAtASpecifiedWavelength, :machNumber, :madelungConstant, :magneticQuantumNumber, :magneticReynoldsNumber, :magneticSusceptibility, :massNumber, :microcanonicalPartitionFunction, :mobilityRatio, :moleFractionOfB, :moleRatioOfSoluteB, :molecularPartitionFunction, :multiplicationFactor, :neutronNumber, :neutronYieldPerAbsorption, :neutronYieldPerFission, :nonLeakageProbability, :nuclearSpinQuantumNumber, :nucleonNumber, :numberOfMoleculesOrOtherElementaryEntities, :numberOfPairsOfPoles, :numberOfPhases, :numberOfTurnsInAWinding, :nusseltNumber, :nusseltNumberForMassTransfer, :opticalDensity, :orbitalAngularMomentumQuantumNumber, :orderOfReflexion, :osmoticCoefficientOfTheSolventAEspeciallyInADiluteSolution, :packingFraction, :partitionFunctionOfAMolecule, :pecletNumber, :pecletNumberForMassTransfer, :poissonNumber, :poissonRatio, :prandtlNumber, :principleQuantumNumber, :protonNumber, :ratioOfTheMassicHeatCapacity, :ratioOfTheSpecificHeatCapacities, :rayleighNumber, :reactivity, :reflectance, :reflectionFactor, :refractiveIndex, :relativeActivityOfSolventAEspeciallyInADiluteSolution, :relativeAtomicMass, :relativeDensity, :relativeElongation, :relativeMassDefect, :relativeMassDensity, :relativeMassExcess, :relativeMolecularMass, :relativePermeability, :relativePermittivity, :resonanceEscapeProbability, :restMassOfElectron, :restMassOfNeutron, :restMassOfProton, :reynoldsNumber, :schmidtNumber, :shearStrain, :shortRangeOrderParameter, :spectralAbsorptance, :spectralAbsorptionFactor, :spectralEmissivity, :spectralLuminousEfficiency, :spectralRadianceFactor, :spectralReflectance, :spectralReflectionfactor, :spectralTransmissionFactor, :spectralTransmittance, :spinAngularMomentumQuantumNumber, :standardAbsoluteActivityOfBInAGaseousMixture, :standardAbsoluteActivityOfBInALiquidOrASolidMixture, :standardAbsoluteActivityOfSoluteBEspeciallyInADiluteSolution, :standardAbsoluteActivityOfSolventAEspeciallyInADiluteSolution, :standardEquilibriumConstant, :stantonNumber, :stantonNumberForMassTransfer, :statisticalWeight, :stoichiometricNumberOfB, :strouhalNumber, :thermalDiffusionFactor, :thermalDiffusionRatio, :thermalUtilizationFactor, :totalAngularMomentumQuantumNumber, :transmissionFactor, :transmittance, :transportNumberOfIonB, :volumeOrBulkStrain, :weberNumber ; + :symbol "1" . + +:onePerOne + a :Unit ; + bamm:name "onePerOne" ; + bamm:preferredName "one per one"@en ; + :commonCode "Q26" ; + :conversionFactor "1/1" ; + :symbol "1/1" . + +:ounceAvoirdupois + a :Unit ; + bamm:name "ounceAvoirdupois" ; + bamm:preferredName "ounce (avoirdupois)"@en ; + :commonCode "ONZ" ; + :conversionFactor "2.834952 × 10⁻² kg" ; + :numericConversionFactor "0.02834952"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "oz" . + +:ounceAvoirdupoisForce + a :Unit ; + bamm:name "ounceAvoirdupoisForce" ; + bamm:preferredName "ounce (avoirdupois)-force"@en ; + :commonCode "L40" ; + :conversionFactor "0.2780139 N" ; + :numericConversionFactor "0.2780139"^^xsd:double ; + :quantityKind :force, :weight ; + :referenceUnit :newton ; + :symbol "ozf" . + +:ounceAvoirdupoisForceInch + a :Unit ; + bamm:name "ounceAvoirdupoisForceInch" ; + bamm:preferredName "ounce (avoirdupois)-force inch"@en ; + :commonCode "L41" ; + :conversionFactor "7.061552 × 10⁻³ N × m" ; + :numericConversionFactor "0.007061552"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :newtonMetre ; + :symbol "ozf·in" . + +:ounceAvoirdupoisPerCubicInch + a :Unit ; + bamm:name "ounceAvoirdupoisPerCubicInch" ; + bamm:preferredName "ounce (avoirdupois) per cubic inch"@en ; + :commonCode "L39" ; + :conversionFactor "1.729994 × 10³ kg/m³" ; + :numericConversionFactor "1729.994"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "oz/in³" . + +:ounceAvoirdupoisPerCubicYard + a :Unit ; + bamm:name "ounceAvoirdupoisPerCubicYard" ; + bamm:preferredName "ounce (avoirdupois) per cubic yard"@en ; + :commonCode "G32" ; + :conversionFactor "3.70798 × 10⁻² kg × m⁻³" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "oz/yd³" . + +:ounceAvoirdupoisPerDay + a :Unit ; + bamm:name "ounceAvoirdupoisPerDay" ; + bamm:preferredName "ounce (avoirdupois) per day"@en ; + :commonCode "L33" ; + :conversionFactor "3.281194 × 10⁻⁷kg/s" ; + :numericConversionFactor "3.281194E-7"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "oz/d" . + +:ounceAvoirdupoisPerGallonUk + a :Unit ; + bamm:name "ounceAvoirdupoisPerGallonUk" ; + bamm:preferredName "ounce (avoirdupois) per gallon (UK)"@en ; + :commonCode "L37" ; + :conversionFactor "6.236023 kg/m³" ; + :numericConversionFactor "6.236023"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "oz/gal (UK)" . + +:ounceAvoirdupoisPerGallonUs + a :Unit ; + bamm:name "ounceAvoirdupoisPerGallonUs" ; + bamm:preferredName "ounce (avoirdupois) per gallon (US)"@en ; + :commonCode "L38" ; + :conversionFactor "7.489152 kg/m³" ; + :numericConversionFactor "7.489152"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "oz/gal (US)" . + +:ounceAvoirdupoisPerHour + a :Unit ; + bamm:name "ounceAvoirdupoisPerHour" ; + bamm:preferredName "ounce (avoirdupois) per hour"@en ; + :commonCode "L34" ; + :conversionFactor "7.874867 × 10⁻⁶ kg/s" ; + :numericConversionFactor "7.874867E-6"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "oz/h" . + +:ounceAvoirdupoisPerMinute + a :Unit ; + bamm:name "ounceAvoirdupoisPerMinute" ; + bamm:preferredName "ounce (avoirdupois) per minute"@en ; + :commonCode "L35" ; + :conversionFactor "4.72492 × 10⁻⁴ kg/s" ; + :numericConversionFactor "4.72492E-4"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "oz/min" . + +:ounceAvoirdupoisPerSecond + a :Unit ; + bamm:name "ounceAvoirdupoisPerSecond" ; + bamm:preferredName "ounce (avoirdupois) per second"@en ; + :commonCode "L36" ; + :conversionFactor "2.834952 × 10⁻² kg/s" ; + :numericConversionFactor "0.02834952"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "oz/s" . + +:ounceAvoirdupoisPerSquareInch + a :Unit ; + bamm:name "ounceAvoirdupoisPerSquareInch" ; + bamm:preferredName "ounce (avoirdupois) per square inch"@en ; + :commonCode "N22" ; + :conversionFactor "4.394185 × 10 kg/m²" ; + :numericConversionFactor "4.3941851"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :kilogramPerSquareMetre ; + :symbol "oz/in²" . + +:ounceFoot + a :Unit ; + bamm:name "ounceFoot" ; + bamm:preferredName "ounce foot"@en ; + :commonCode "4R" ; + :conversionFactor "8.640934 × 10⁻³ kg × m" ; + :numericConversionFactor "0.008640934"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :kilogramMetre ; + :symbol "oz·ft" . + +:ounceInch + a :Unit ; + bamm:name "ounceInch" ; + bamm:preferredName "ounce inch"@en ; + :commonCode "4Q" ; + :conversionFactor "7.200778 × 10⁻⁴ kg × m" ; + :numericConversionFactor "7.200778E-4"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :kilogramMetre ; + :symbol "oz·in" . + +:ouncePerSquareFoot + a :Unit ; + bamm:name "ouncePerSquareFoot" ; + bamm:preferredName "ounce per square foot"@en ; + :commonCode "37" ; + :conversionFactor "0.3051517 kg/m²" ; + :numericConversionFactor "0.3051517"^^xsd:double ; + :quantityKind :areicMass, :surfaceDensity ; + :referenceUnit :kilogramPerSquareMetre ; + :symbol "oz/ft²" . + +:ouncePerSquareFootPer0point01inch + a :Unit ; + bamm:name "ouncePerSquareFootPer0point01inch" ; + bamm:preferredName "ounce per square foot per 0,01inch"@en ; + :commonCode "38" ; + :symbol "oz/(ft²/cin)" . + +:ouncePerSquareYard + a :Unit ; + bamm:name "ouncePerSquareYard" ; + bamm:preferredName "ounce per square yard"@en ; + :commonCode "ON" ; + :conversionFactor "3.390575 × 10⁻² kg/m²" ; + :numericConversionFactor "0.03390575"^^xsd:double ; + :quantityKind :areicMass, :surfaceDensity ; + :referenceUnit :kilogramPerSquareMetre ; + :symbol "oz/yd²" . + +:ounceUkFluidPerDay + a :Unit ; + bamm:name "ounceUkFluidPerDay" ; + bamm:preferredName "ounce (UK fluid) per day"@en ; + :commonCode "J95" ; + :conversionFactor "3.288549 × 10⁻¹⁰ m³/s" ; + :numericConversionFactor "3.288549E-10"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "fl oz (UK)/d" . + +:ounceUkFluidPerHour + a :Unit ; + bamm:name "ounceUkFluidPerHour" ; + bamm:preferredName "ounce (UK fluid) per hour"@en ; + :commonCode "J96" ; + :conversionFactor "7.892517 × 10⁻⁹ m³/s" ; + :numericConversionFactor "7.892517E-9"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "fl oz (UK)/h" . + +:ounceUkFluidPerMinute + a :Unit ; + bamm:name "ounceUkFluidPerMinute" ; + bamm:preferredName "ounce (UK fluid) per minute"@en ; + :commonCode "J97" ; + :conversionFactor "4.73551 × 10⁻⁷ m³/s" ; + :numericConversionFactor "4.73551E-7"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "fl oz (UK)/min" . + +:ounceUkFluidPerSecond + a :Unit ; + bamm:name "ounceUkFluidPerSecond" ; + bamm:preferredName "ounce (UK fluid) per second"@en ; + :commonCode "J98" ; + :conversionFactor "2.841306 × 10⁻⁵ m³/s" ; + :numericConversionFactor "2.841306E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "fl oz (UK)/s" . + +:ounceUsFluidPerDay + a :Unit ; + bamm:name "ounceUsFluidPerDay" ; + bamm:preferredName "ounce (US fluid) per day"@en ; + :commonCode "J99" ; + :conversionFactor "3.422862 × 10⁻¹⁰ m³/s" ; + :numericConversionFactor "3.422862E-10"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "fl oz (US)/d" . + +:ounceUsFluidPerHour + a :Unit ; + bamm:name "ounceUsFluidPerHour" ; + bamm:preferredName "ounce (US fluid) per hour"@en ; + :commonCode "K10" ; + :conversionFactor "8.214869 × 10⁻⁹ m³/s" ; + :numericConversionFactor "8.214869E-9"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "fl oz (US)/h" . + +:ounceUsFluidPerMinute + a :Unit ; + bamm:name "ounceUsFluidPerMinute" ; + bamm:preferredName "ounce (US fluid) per minute"@en ; + :commonCode "K11" ; + :conversionFactor "4.928922 × 10⁻⁷ m³/s" ; + :numericConversionFactor "4.928922E-7"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "fl oz (US)/min" . + +:ounceUsFluidPerSecond + a :Unit ; + bamm:name "ounceUsFluidPerSecond" ; + bamm:preferredName "ounce (US fluid) per second"@en ; + :commonCode "K12" ; + :conversionFactor "2.957353 × 10⁻⁵ m³/s" ; + :numericConversionFactor "2.957353E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "fl oz (US)/s" . + +:outfit + a :Unit ; + bamm:name "outfit" ; + bamm:preferredName "outfit"@en ; + :commonCode "11" . + +:overtimeHour + a :Unit ; + bamm:name "overtimeHour" ; + bamm:preferredName "overtime hour"@en ; + :commonCode "OT" . + +:ozoneDepletionEquivalent + a :Unit ; + bamm:name "ozoneDepletionEquivalent" ; + bamm:preferredName "ozone depletion equivalent"@en ; + :commonCode "ODE" . + +:pad + a :Unit ; + bamm:name "pad" ; + bamm:preferredName "pad"@en ; + :commonCode "PD" . + +:page + a :Unit ; + bamm:name "page" ; + bamm:preferredName "page"@en ; + :commonCode "ZP" . + +:pageFacsimile + a :Unit ; + bamm:name "pageFacsimile" ; + bamm:preferredName "page - facsimile"@en ; + :commonCode "QA" . + +:pageHardcopy + a :Unit ; + bamm:name "pageHardcopy" ; + bamm:preferredName "page - hardcopy"@en ; + :commonCode "QB" . + +:pagePerInch + a :Unit ; + bamm:name "pagePerInch" ; + bamm:preferredName "page per inch"@en ; + :commonCode "PQ" ; + :symbol "ppi" . + +:pair + a :Unit ; + bamm:name "pair" ; + bamm:preferredName "pair"@en ; + :commonCode "PR" ; + :conversionFactor "2" . + +:panel + a :Unit ; + bamm:name "panel" ; + bamm:preferredName "panel"@en ; + :commonCode "OA" . + +:parsec + a :Unit ; + bamm:name "parsec" ; + bamm:preferredName "parsec"@en ; + :commonCode "C63" ; + :conversionFactor "3.085678 × 10¹⁶ m" ; + :numericConversionFactor "3.085678E16"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "pc" . + +:partPerBillionUs + a :Unit ; + bamm:name "partPerBillionUs" ; + bamm:preferredName "part per billion (US)"@en ; + :commonCode "61" ; + :conversionFactor "1 × 10⁻⁹" ; + :symbol "ppb" . + +:partPerHundredThousand + a :Unit ; + bamm:name "partPerHundredThousand" ; + bamm:preferredName "part per hundred thousand"@en ; + :commonCode "E40" ; + :conversionFactor "1 × 10⁻⁵" ; + :symbol "ppht" . + +:partPerMillion + a :Unit ; + bamm:name "partPerMillion" ; + bamm:preferredName "part per million"@en ; + :commonCode "59" ; + :conversionFactor "1 × 10⁻⁶" ; + :symbol "ppm" . + +:partPerQuadrillionUs + a :Unit ; + bamm:name "partPerQuadrillionUs" ; + bamm:preferredName "Part per quadrillion (US)"@en ; + :conversionFactor "1 × 10¯¹⁵" ; + :symbol "ppq" . + +:partPerThousand + a :Unit ; + bamm:name "partPerThousand" ; + bamm:preferredName "part per thousand"@en ; + :commonCode "NX" ; + :conversionFactor "1 × 10⁻³" ; + :symbol "‰" . + +:partPerTrillionUs + a :Unit ; + bamm:name "partPerTrillionUs" ; + bamm:preferredName "part per trillion (US)"@en ; + :conversionFactor "1 × 10¯¹²" ; + :symbol "ppt" . + +:pascal + a :Unit ; + bamm:name "pascal" ; + bamm:preferredName "pascal"@en ; + :commonCode "PAL" ; + :conversionFactor "Pa" ; + :quantityKind :bulkModulus, :fugacityOfBInAGaseousMixture, :instantaneousSoundPressure, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :osmoticPressure, :partialPressureOfBInAGaseousMixture, :pressure, :shearModulus, :shearStress, :staticPressure ; + :symbol "Pa" . + +:pascalCubicMetrePerSecond + a :Unit ; + bamm:name "pascalCubicMetrePerSecond" ; + bamm:preferredName "pascal cubic metre per second"@en ; + :commonCode "G01" ; + :conversionFactor "kg × m² × s⁻³" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "Pa·m³/s" . + +:pascalLitrePerSecond + a :Unit ; + bamm:name "pascalLitrePerSecond" ; + bamm:preferredName "pascal litre per second"@en ; + :commonCode "F99" ; + :conversionFactor "10⁻³ kg × m² × s⁻³" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "Pa·l/s" . + +:pascalPerBar + a :Unit ; + bamm:name "pascalPerBar" ; + bamm:preferredName "pascal per bar"@en ; + :commonCode "F07" ; + :conversionFactor "10⁻⁵" ; + :quantityKind :pressureRatio ; + :symbol "Pa/bar" . + +:pascalPerKelvin + a :Unit ; + bamm:name "pascalPerKelvin" ; + bamm:preferredName "pascal per kelvin"@en ; + :commonCode "C64" ; + :conversionFactor "Pa/K" ; + :quantityKind :pressureCoefficient ; + :symbol "Pa/K" . + +:pascalPerMetre + a :Unit ; + bamm:name "pascalPerMetre" ; + bamm:preferredName "pascal per metre"@en ; + :commonCode "H42" ; + :conversionFactor "m⁻² kg × s⁻²" ; + :quantityKind :hardnessIndex ; + :symbol "Pa/m" . + +:pascalSecond + a :Unit ; + bamm:name "pascalSecond" ; + bamm:preferredName "pascal second"@en ; + :commonCode "C65" ; + :conversionFactor "Pa × s" ; + :quantityKind :viscosityDynamicViscosity ; + :symbol "Pa·s" . + +:pascalSecondPerBar + a :Unit ; + bamm:name "pascalSecondPerBar" ; + bamm:preferredName "pascal second per bar"@en ; + :commonCode "H07" ; + :conversionFactor "10⁻⁵ s" ; + :numericConversionFactor "1.0E-5"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :secondUnitOfTime ; + :symbol "Pa·s/bar" . + +:pascalSecondPerCubicMetre + a :Unit ; + bamm:name "pascalSecondPerCubicMetre" ; + bamm:preferredName "pascal second per cubic metre"@en ; + :commonCode "C66" ; + :conversionFactor "Pa × s/m³" ; + :quantityKind :acousticImpedance ; + :symbol "Pa·s/m³" . + +:pascalSecondPerKelvin + a :Unit ; + bamm:name "pascalSecondPerKelvin" ; + bamm:preferredName "pascal second per kelvin"@en ; + :commonCode "F77" ; + :conversionFactor "kg × m⁻¹ × s⁻¹ × K⁻¹" ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :symbol "Pa.s/K" . + +:pascalSecondPerLitre + a :Unit ; + bamm:name "pascalSecondPerLitre" ; + bamm:preferredName "pascal second per litre"@en ; + :commonCode "M32" ; + :conversionFactor "10³ Pa × s/m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :acousticImpedance ; + :referenceUnit :pascalSecondPerCubicMetre ; + :symbol "Pa·s/l" . + +:pascalSecondPerMetre + a :Unit ; + bamm:name "pascalSecondPerMetre" ; + bamm:preferredName "pascal second per metre"@en ; + :commonCode "C67" ; + :conversionFactor "Pa × s/m" ; + :quantityKind :characteristicImpedanceOfAMedium ; + :symbol "Pa· s/m" . + +:pascalSquareMetrePerKilogram + a :Unit ; + bamm:name "pascalSquareMetrePerKilogram" ; + bamm:preferredName "pascal square metre per kilogram"@en ; + :commonCode "P79" ; + :conversionFactor "m/s²" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :burstIndex ; + :referenceUnit :metrePerSecondSquared ; + :symbol "Pa/(kg/m²)" . + +:pascalSquaredSecond + a :Unit ; + bamm:name "pascalSquaredSecond" ; + bamm:preferredName "pascal squared second"@en ; + :commonCode "P42" ; + :conversionFactor "m⁻² × kg² × s⁻³" ; + :quantityKind :soundExposure ; + :symbol "Pa²·s" . + +:pascalToThePowerSumOfStoichiometricNumbers + a :Unit ; + bamm:name "pascalToThePowerSumOfStoichiometricNumbers" ; + bamm:preferredName "pascal to the power sum of stoichiometric numbers"@en ; + :commonCode "P98" ; + :symbol "PaΣνB" . + +:pebibitPerCubicMetre + a :Unit ; + bamm:name "pebibitPerCubicMetre" ; + bamm:preferredName "pebibit per cubic metre"@en ; + :commonCode "E82" ; + :symbol "Pibit/m³" . + +:pebibitPerMetre + a :Unit ; + bamm:name "pebibitPerMetre" ; + bamm:preferredName "pebibit per metre"@en ; + :commonCode "E80" ; + :symbol "Pibit/m" . + +:pebibitPerSquareMetre + a :Unit ; + bamm:name "pebibitPerSquareMetre" ; + bamm:preferredName "pebibit per square metre"@en ; + :commonCode "E81" ; + :symbol "Pibit/m²" . + +:pebibyte + a :Unit ; + bamm:name "pebibyte" ; + bamm:preferredName "pebibyte"@en ; + :commonCode "E60" ; + :conversionFactor "2⁵⁰ B" ; + :numericConversionFactor "1125899906842624.0"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "PiB" . + +:peck + a :Unit ; + bamm:name "peck" ; + bamm:preferredName "peck"@en ; + :commonCode "G23" ; + :conversionFactor "8.809768 × 10⁻³ m³" ; + :numericConversionFactor "0.008809768"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "pk (US)" . + +:peckUk + a :Unit ; + bamm:name "peckUk" ; + bamm:preferredName "peck (UK)"@en ; + :commonCode "L43" ; + :conversionFactor "9.092181 × 10⁻³ m³" ; + :numericConversionFactor "0.009092181"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "pk (UK)" . + +:peckUkPerDay + a :Unit ; + bamm:name "peckUkPerDay" ; + bamm:preferredName "peck (UK) per day"@en ; + :commonCode "L44" ; + :conversionFactor "1.052336 × 10⁻⁷ m³/s" ; + :numericConversionFactor "1.052336E-7"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pk (UK)/d" . + +:peckUkPerHour + a :Unit ; + bamm:name "peckUkPerHour" ; + bamm:preferredName "peck (UK) per hour"@en ; + :commonCode "L45" ; + :conversionFactor "2.525606 × 10⁻⁶ m³/s" ; + :numericConversionFactor "2.525606E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pk (UK)/h" . + +:peckUkPerMinute + a :Unit ; + bamm:name "peckUkPerMinute" ; + bamm:preferredName "peck (UK) per minute"@en ; + :commonCode "L46" ; + :conversionFactor "1.5153635 × 10⁻⁴ m³/s" ; + :numericConversionFactor "1.5153635E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pk (UK)/min" . + +:peckUkPerSecond + a :Unit ; + bamm:name "peckUkPerSecond" ; + bamm:preferredName "peck (UK) per second"@en ; + :commonCode "L47" ; + :conversionFactor "9.092181 × 10⁻³ m³/s" ; + :numericConversionFactor "0.009092181"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pk (UK)/s" . + +:peckUsDryPerDay + a :Unit ; + bamm:name "peckUsDryPerDay" ; + bamm:preferredName "peck (US dry) per day"@en ; + :commonCode "L48" ; + :conversionFactor "1.019649 × 10⁻⁷ m³/s" ; + :numericConversionFactor "1.019649E-7"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pk (US dry)/d" . + +:peckUsDryPerHour + a :Unit ; + bamm:name "peckUsDryPerHour" ; + bamm:preferredName "peck (US dry) per hour"@en ; + :commonCode "L49" ; + :conversionFactor "2.447158 × 10⁻⁶ m³/s" ; + :numericConversionFactor "2.447158E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pk (US dry)/h" . + +:peckUsDryPerMinute + a :Unit ; + bamm:name "peckUsDryPerMinute" ; + bamm:preferredName "peck (US dry) per minute"@en ; + :commonCode "L50" ; + :conversionFactor "1.468295 × 10⁻⁴ m³/s" ; + :numericConversionFactor "1.468295E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pk (US dry)/min" . + +:peckUsDryPerSecond + a :Unit ; + bamm:name "peckUsDryPerSecond" ; + bamm:preferredName "peck (US dry) per second"@en ; + :commonCode "L51" ; + :conversionFactor "8.809768 × 10⁻³ m³/s" ; + :numericConversionFactor "0.008809768"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pk (US dry)/s" . + +:penCalorie + a :Unit ; + bamm:name "penCalorie" ; + bamm:preferredName "pen calorie"@en ; + :commonCode "N1" . + +:penGramProtein + a :Unit ; + bamm:name "penGramProtein" ; + bamm:preferredName "pen gram (protein)"@en ; + :commonCode "D23" . + +:pennyweight + a :Unit ; + bamm:name "pennyweight" ; + bamm:preferredName "pennyweight"@en ; + :commonCode "DWT" ; + :conversionFactor "1.555174 g" ; + :numericConversionFactor "1.555174"^^xsd:double ; + :referenceUnit :gram . + +:perMillePerPsi + a :Unit ; + bamm:name "perMillePerPsi" ; + bamm:preferredName "per mille per psi"@en ; + :commonCode "J12" ; + :conversionFactor "1.450377 × 10⁻⁷ Pa⁻¹" ; + :numericConversionFactor "1.450377E-7"^^xsd:double ; + :referenceUnit :reciprocalPascalOrPascalToThePowerMinusOne ; + :symbol "‰/psi" . + +:percent + a :Unit ; + bamm:name "percent" ; + bamm:preferredName "percent"@en ; + :commonCode "P1" ; + :conversionFactor "1 × 10⁻²" ; + :quantityKind :dimensionless ; + :symbol "%" . + +:percentPerBar + a :Unit ; + bamm:name "percentPerBar" ; + bamm:preferredName "percent per bar"@en ; + :commonCode "H96" ; + :conversionFactor "10⁻⁷ Pa⁻¹" ; + :numericConversionFactor "1.0E-7"^^xsd:double ; + :referenceUnit :reciprocalPascalOrPascalToThePowerMinusOne ; + :symbol "%/bar" . + +:percentPerDecakelvin + a :Unit ; + bamm:name "percentPerDecakelvin" ; + bamm:preferredName "percent per decakelvin"@en ; + :commonCode "H73" ; + :conversionFactor "10⁻³ K⁻¹" ; + :numericConversionFactor "0.001"^^xsd:double ; + :referenceUnit :reciprocalKelvinOrKelvinToThePowerMinusOne ; + :symbol "%/daK" . + +:percentPerDegree + a :Unit ; + bamm:name "percentPerDegree" ; + bamm:preferredName "percent per degree"@en ; + :commonCode "H90" ; + :conversionFactor "0.5729578 rad⁻¹" ; + :symbol "%/°" . + +:percentPerDegreeCelsius + a :Unit ; + bamm:name "percentPerDegreeCelsius" ; + bamm:preferredName "percent per degree Celsius"@en ; + :commonCode "M25" ; + :conversionFactor "10⁻² °C⁻¹" ; + :symbol "%/°C" . + +:percentPerHectobar + a :Unit ; + bamm:name "percentPerHectobar" ; + bamm:preferredName "percent per hectobar"@en ; + :commonCode "H72" ; + :symbol "%/hbar" . + +:percentPerHundred + a :Unit ; + bamm:name "percentPerHundred" ; + bamm:preferredName "percent per hundred"@en ; + :commonCode "H93" ; + :conversionFactor "10⁻⁴" ; + :symbol "%/100" . + +:percentPerInch + a :Unit ; + bamm:name "percentPerInch" ; + bamm:preferredName "percent per inch"@en ; + :commonCode "H98" ; + :conversionFactor "0.3937008 m⁻¹" ; + :numericConversionFactor "0.3937008"^^xsd:double ; + :referenceUnit :reciprocalMetre ; + :symbol "%/in" . + +:percentPerKelvin + a :Unit ; + bamm:name "percentPerKelvin" ; + bamm:preferredName "percent per kelvin"@en ; + :commonCode "H25" ; + :conversionFactor "10⁻² K⁻¹" ; + :numericConversionFactor "0.01"^^xsd:double ; + :referenceUnit :reciprocalKelvinOrKelvinToThePowerMinusOne ; + :symbol "%/K" . + +:percentPerMetre + a :Unit ; + bamm:name "percentPerMetre" ; + bamm:preferredName "percent per metre"@en ; + :commonCode "H99" ; + :conversionFactor "10⁻² m⁻¹" ; + :numericConversionFactor "0.01"^^xsd:double ; + :referenceUnit :reciprocalMetre ; + :symbol "%/m" . + +:percentPerMillimetre + a :Unit ; + bamm:name "percentPerMillimetre" ; + bamm:preferredName "percent per millimetre"@en ; + :commonCode "J10" ; + :conversionFactor "10 m⁻¹" ; + :numericConversionFactor "10.0"^^xsd:double ; + :referenceUnit :reciprocalMetre ; + :symbol "%/mm" . + +:percentPerMonth + a :Unit ; + bamm:name "percentPerMonth" ; + bamm:preferredName "percent per month"@en ; + :commonCode "H71" ; + :symbol "%/mo" . + +:percentPerOhm + a :Unit ; + bamm:name "percentPerOhm" ; + bamm:preferredName "percent per ohm"@en ; + :commonCode "H89" ; + :conversionFactor "10⁻² Ω⁻¹" ; + :symbol "%/Ω" . + +:percentPerOneHundredThousand + a :Unit ; + bamm:name "percentPerOneHundredThousand" ; + bamm:preferredName "percent per one hundred thousand"@en ; + :commonCode "H92" ; + :conversionFactor "10⁻⁷" ; + :symbol "%/100000" . + +:percentPerTenThousand + a :Unit ; + bamm:name "percentPerTenThousand" ; + bamm:preferredName "percent per ten thousand"@en ; + :commonCode "H91" ; + :conversionFactor "10⁻⁶" ; + :symbol "%/10000" . + +:percentPerThousand + a :Unit ; + bamm:name "percentPerThousand" ; + bamm:preferredName "percent per thousand"@en ; + :commonCode "H94" ; + :conversionFactor "10⁻⁵" ; + :symbol "%/1000" . + +:percentPerVolt + a :Unit ; + bamm:name "percentPerVolt" ; + bamm:preferredName "percent per volt"@en ; + :commonCode "H95" ; + :conversionFactor "10⁻² V⁻¹" ; + :symbol "%/V" . + +:percentVolume + a :Unit ; + bamm:name "percentVolume" ; + bamm:preferredName "percent volume"@en ; + :commonCode "VP" . + +:percentWeight + a :Unit ; + bamm:name "percentWeight" ; + bamm:preferredName "percent weight"@en ; + :commonCode "60" ; + :conversionFactor "1 × 10⁻²" . + +:perm0Degreesc + a :Unit ; + bamm:name "perm0Degreesc" ; + bamm:preferredName "perm (0 °C)"@en ; + :commonCode "P91" ; + :conversionFactor "5.72135 × 10⁻¹¹ kg/(m² × Pa × s)" ; + :numericConversionFactor "5.72135E-11"^^xsd:double ; + :referenceUnit :kilogramPerSquareMetrePascalSecond ; + :symbol "perm (0 °C)" . + +:perm23Degreesc + a :Unit ; + bamm:name "perm23Degreesc" ; + bamm:preferredName "perm (23 °C)"@en ; + :commonCode "P92" ; + :conversionFactor "5.74525 × 10⁻¹¹ kg/(m² × Pa × s)" ; + :numericConversionFactor "5.74525E-11"^^xsd:double ; + :referenceUnit :kilogramPerSquareMetrePascalSecond ; + :symbol "perm (23 °C)" . + +:person + a :Unit ; + bamm:name "person" ; + bamm:preferredName "person"@en ; + :commonCode "IE" . + +:petabit + a :Unit ; + bamm:name "petabit" ; + bamm:preferredName "petabit"@en ; + :commonCode "E78" ; + :symbol "Pbit" . + +:petabitPerSecond + a :Unit ; + bamm:name "petabitPerSecond" ; + bamm:preferredName "petabit per second"@en ; + :commonCode "E79" ; + :symbol "Pbit/s" . + +:petabyte + a :Unit ; + bamm:name "petabyte" ; + bamm:preferredName "petabyte"@en ; + :commonCode "E36" ; + :conversionFactor "10¹⁵ B" ; + :numericConversionFactor "1.0E15"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "Pbyte" . + +:petajoule + a :Unit ; + bamm:name "petajoule" ; + bamm:preferredName "petajoule"@en ; + :commonCode "C68" ; + :conversionFactor "10¹⁵ J" ; + :numericConversionFactor "1.0E15"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "PJ" . + +:pferdestaerke + a :Unit ; + bamm:name "pferdestaerke" ; + bamm:preferredName "Pferdestaerke"@en ; + :commonCode "N12" ; + :conversionFactor "7.354988 × 10² W" ; + :numericConversionFactor "735.4988"^^xsd:double ; + :quantityKind :power ; + :referenceUnit :watt ; + :symbol "PS" . + +:pfund + a :Unit ; + bamm:name "pfund" ; + bamm:preferredName "pfund"@en ; + :commonCode "M86" ; + :conversionFactor "0.5 kg" ; + :numericConversionFactor "0.5"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "pfd" . + +:phon + a :Unit ; + bamm:name "phon" ; + bamm:preferredName "phon"@en ; + :commonCode "C69" ; + :quantityKind :loudnessLevel . + +:phot + a :Unit ; + bamm:name "phot" ; + bamm:preferredName "phot"@en ; + :commonCode "P26" ; + :conversionFactor "10⁴ cd × sr / m²" ; + :quantityKind :illuminance ; + :symbol "ph" . + +:pica + a :Unit ; + bamm:name "pica" ; + bamm:preferredName "pica"@en ; + :commonCode "R1" ; + :conversionFactor "4.217518 × 10⁻³ m" ; + :numericConversionFactor "0.004217518"^^xsd:double ; + :referenceUnit :metre . + +:picoampere + a :Unit ; + bamm:name "picoampere" ; + bamm:preferredName "picoampere"@en ; + :commonCode "C70" ; + :conversionFactor "10⁻¹² A" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :currentLinkage, :electricCurrent, :magneticPotentialDifference, :magnetomotiveForce ; + :referenceUnit :ampere ; + :symbol "pA" . + +:picocoulomb + a :Unit ; + bamm:name "picocoulomb" ; + bamm:preferredName "picocoulomb"@en ; + :commonCode "C71" ; + :conversionFactor "10⁻¹² C" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :electricCharge, :electricFluxFluxOfDisplacement, :quantityOfElectricity ; + :referenceUnit :coulomb ; + :symbol "pC" . + +:picofarad + a :Unit ; + bamm:name "picofarad" ; + bamm:preferredName "picofarad"@en ; + :commonCode "4T" ; + :conversionFactor "10⁻¹² F" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :capacitance ; + :referenceUnit :farad ; + :symbol "pF" . + +:picofaradPerMetre + a :Unit ; + bamm:name "picofaradPerMetre" ; + bamm:preferredName "picofarad per metre"@en ; + :commonCode "C72" ; + :conversionFactor "10⁻¹² F/m" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :electricConstant, :permittivity, :permittivityOfVacuum ; + :referenceUnit :faradPerMetre ; + :symbol "pF/m" . + +:picohenry + a :Unit ; + bamm:name "picohenry" ; + bamm:preferredName "picohenry"@en ; + :commonCode "C73" ; + :conversionFactor "10⁻¹² H" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :mutualInductance, :permeance, :selfInductance ; + :referenceUnit :henry ; + :symbol "pH" . + +:picometre + a :Unit ; + bamm:name "picometre" ; + bamm:preferredName "picometre"@en ; + :commonCode "C52" ; + :conversionFactor "10⁻¹² m" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "pm" . + +:picopascalPerKilometre + a :Unit ; + bamm:name "picopascalPerKilometre" ; + bamm:preferredName "picopascal per kilometre"@en ; + :commonCode "H69" ; + :conversionFactor "10⁻¹⁵ m⁻² × kg × s⁻²" ; + :quantityKind :hardnessIndex ; + :symbol "pPa/km" . + +:picosecond + a :Unit ; + bamm:name "picosecond" ; + bamm:preferredName "picosecond"@en ; + :commonCode "H70" ; + :conversionFactor "10⁻¹² s" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "ps" . + +:picosiemens + a :Unit ; + bamm:name "picosiemens" ; + bamm:preferredName "picosiemens"@en ; + :commonCode "N92" ; + :conversionFactor "10⁻¹² S" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :admittance, :complexAdmittance, :conductanceForAlternatingCurrent, :conductanceForDirectCurrent, :modulusOfAdmittance ; + :referenceUnit :siemens ; + :symbol "pS" . + +:picosiemensPerMetre + a :Unit ; + bamm:name "picosiemensPerMetre" ; + bamm:preferredName "picosiemens per metre"@en ; + :commonCode "L42" ; + :conversionFactor "10⁻¹² S/m" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :conductivity ; + :referenceUnit :siemensPerMetre ; + :symbol "pS/m" . + +:picovolt + a :Unit ; + bamm:name "picovolt" ; + bamm:preferredName "picovolt"@en ; + :commonCode "N99" ; + :conversionFactor "10⁻¹² V" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :electricPotential, :electromotiveForce, :potentialDifference, :tension, :voltage ; + :referenceUnit :volt ; + :symbol "pV" . + +:picowatt + a :Unit ; + bamm:name "picowatt" ; + bamm:preferredName "picowatt"@en ; + :commonCode "C75" ; + :conversionFactor "10⁻¹² W" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "pW" . + +:picowattPerSquareMetre + a :Unit ; + bamm:name "picowattPerSquareMetre" ; + bamm:preferredName "picowatt per square metre"@en ; + :commonCode "C76" ; + :conversionFactor "10⁻¹² W/m²" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :soundIntensity ; + :referenceUnit :wattPerSquareMetre ; + :symbol "pW/m²" . + +:piece + a :Unit ; + bamm:name "piece" ; + bamm:preferredName "piece"@en ; + :commonCode "H87" . + +:ping + a :Unit ; + bamm:name "ping" ; + bamm:preferredName "ping"@en ; + :commonCode "E19" ; + :conversionFactor "3.305 m²" ; + :numericConversionFactor "3.305"^^xsd:double ; + :referenceUnit :squareMetre . + +:pintUk + a :Unit ; + bamm:name "pintUk" ; + bamm:preferredName "pint (UK)"@en ; + :commonCode "PTI" ; + :conversionFactor "5. 68261 × 10⁻⁴ m³" ; + :numericConversionFactor "5.68261E-4"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "pt (UK)" . + +:pintUkPerDay + a :Unit ; + bamm:name "pintUkPerDay" ; + bamm:preferredName "pint (UK) per day"@en ; + :commonCode "L53" ; + :conversionFactor "6.577098 × 10⁻⁹ m³/s" ; + :numericConversionFactor "6.577098E-9"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pt (UK)/d" . + +:pintUkPerHour + a :Unit ; + bamm:name "pintUkPerHour" ; + bamm:preferredName "pint (UK) per hour"@en ; + :commonCode "L54" ; + :conversionFactor "1.578504 × 10⁻⁷ m³/s" ; + :numericConversionFactor "1.578504E-7"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pt (UK)/h" . + +:pintUkPerMinute + a :Unit ; + bamm:name "pintUkPerMinute" ; + bamm:preferredName "pint (UK) per minute"@en ; + :commonCode "L55" ; + :conversionFactor "9.471022 × 10⁻⁶ m³/s" ; + :numericConversionFactor "9.471022E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pt (UK)/min" . + +:pintUkPerSecond + a :Unit ; + bamm:name "pintUkPerSecond" ; + bamm:preferredName "pint (UK) per second"@en ; + :commonCode "L56" ; + :conversionFactor "5.682613 × 10⁻⁴ m³/s" ; + :numericConversionFactor "5.682613E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pt (UK)/s" . + +:pintUsLiquidPerDay + a :Unit ; + bamm:name "pintUsLiquidPerDay" ; + bamm:preferredName "pint (US liquid) per day"@en ; + :commonCode "L57" ; + :conversionFactor "5.476580 × 10⁻⁹ m³/s" ; + :numericConversionFactor "5.47658E-9"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pt (US liq.)/d" . + +:pintUsLiquidPerHour + a :Unit ; + bamm:name "pintUsLiquidPerHour" ; + bamm:preferredName "pint (US liquid) per hour"@en ; + :commonCode "L58" ; + :conversionFactor "1.314379 × 10⁻⁷ m³/s" ; + :numericConversionFactor "1.314379E-7"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pt (US liq.)/h" . + +:pintUsLiquidPerMinute + a :Unit ; + bamm:name "pintUsLiquidPerMinute" ; + bamm:preferredName "pint (US liquid) per minute"@en ; + :commonCode "L59" ; + :conversionFactor "7.886275 × 10⁻⁶ m³/s" ; + :numericConversionFactor "7.886275E-6"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pt (US liq.)/min" . + +:pintUsLiquidPerSecond + a :Unit ; + bamm:name "pintUsLiquidPerSecond" ; + bamm:preferredName "pint (US liquid) per second"@en ; + :commonCode "L60" ; + :conversionFactor "4.731765 × 10⁻⁴ m³/s" ; + :numericConversionFactor "4.731765E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "pt (US liq.)/s" . + +:pipelineJoint + a :Unit ; + bamm:name "pipelineJoint" ; + bamm:preferredName "pipeline joint"@en ; + :commonCode "JNT" . + +:pitch + a :Unit ; + bamm:name "pitch" ; + bamm:preferredName "pitch"@en ; + :commonCode "PI" . + +:pixel + a :Unit ; + bamm:name "pixel" ; + bamm:preferredName "pixel"@en ; + :commonCode "E37" . + +:poise + a :Unit ; + bamm:name "poise" ; + bamm:preferredName "poise"@en ; + :commonCode "89" ; + :conversionFactor "0.1 Pa × s" ; + :numericConversionFactor "0.1"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "P" . + +:poisePerBar + a :Unit ; + bamm:name "poisePerBar" ; + bamm:preferredName "poise per bar"@en ; + :commonCode "F06" ; + :conversionFactor "10⁻⁶ s" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :secondUnitOfTime ; + :symbol "P/bar" . + +:poisePerKelvin + a :Unit ; + bamm:name "poisePerKelvin" ; + bamm:preferredName "poise per kelvin"@en ; + :commonCode "F86" ; + :conversionFactor "10⁻¹ kg × m⁻¹ × s⁻¹ × K⁻¹" ; + :quantityKind :viscosityDynamicViscosity ; + :symbol "P/K" . + +:poisePerPascal + a :Unit ; + bamm:name "poisePerPascal" ; + bamm:preferredName "poise per pascal"@en ; + :commonCode "N35" ; + :conversionFactor "0.1 s" ; + :numericConversionFactor "0.1"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :secondUnitOfTime ; + :symbol "P/Pa" . + +:pond + a :Unit ; + bamm:name "pond" ; + bamm:preferredName "pond"@en ; + :commonCode "M78" ; + :conversionFactor "9.80665 × 10⁻³ N" ; + :numericConversionFactor "0.00980665"^^xsd:double ; + :quantityKind :force, :weight ; + :referenceUnit :newton ; + :symbol "p" . + +:pound + a :Unit ; + bamm:name "pound" ; + bamm:preferredName "pound"@en ; + :commonCode "LBR" ; + :conversionFactor "0.45359237 kg" ; + :numericConversionFactor "0.45359237"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "lb" . + +:poundAvoirdupoisPerCubicFootDegreeFahrenheit + a :Unit ; + bamm:name "poundAvoirdupoisPerCubicFootDegreeFahrenheit" ; + bamm:preferredName "pound (avoirdupois) per cubic foot degree Fahrenheit"@en ; + :commonCode "K69" ; + :conversionFactor "28.83323 (kg/m³)/K" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "(lb/ft³)/°F" . + +:poundAvoirdupoisPerCubicFootPsi + a :Unit ; + bamm:name "poundAvoirdupoisPerCubicFootPsi" ; + bamm:preferredName "pound (avoirdupois) per cubic foot psi"@en ; + :commonCode "K70" ; + :conversionFactor "2.323282 × 10⁻³" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "(lb/ft³)/psi" . + +:poundAvoirdupoisPerCubicInchDegreeFahrenheit + a :Unit ; + bamm:name "poundAvoirdupoisPerCubicInchDegreeFahrenheit" ; + bamm:preferredName "pound (avoirdupois) per cubic inch degree Fahrenheit"@en ; + :commonCode "K75" ; + :conversionFactor "4.982384 × 10⁴ (kg/m³)/K" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "(lb/in³)/°F" . + +:poundAvoirdupoisPerCubicInchPsi + a :Unit ; + bamm:name "poundAvoirdupoisPerCubicInchPsi" ; + bamm:preferredName "pound (avoirdupois) per cubic inch psi"@en ; + :commonCode "K76" ; + :conversionFactor "4.014632 (kg/m³)/Pa" ; + :numericConversionFactor "4.014632"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetrePascal ; + :symbol "(lb/in³)/psi" . + +:poundAvoirdupoisPerDay + a :Unit ; + bamm:name "poundAvoirdupoisPerDay" ; + bamm:preferredName "pound (avoirdupois) per day"@en ; + :commonCode "K66" ; + :conversionFactor "5.249912 × 10⁻⁶ kg/s" ; + :numericConversionFactor "5.249912E-6"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "lb/d" . + +:poundAvoirdupoisPerDegreeFahrenheit + a :Unit ; + bamm:name "poundAvoirdupoisPerDegreeFahrenheit" ; + bamm:preferredName "pound (avoirdupois) per degree Fahrenheit"@en ; + :commonCode "K64" ; + :conversionFactor "0.8164663 kg/K" ; + :numericConversionFactor "0.8164663"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogramPerKelvin ; + :symbol "lb/°F" . + +:poundAvoirdupoisPerGallonUk + a :Unit ; + bamm:name "poundAvoirdupoisPerGallonUk" ; + bamm:preferredName "pound (avoirdupois) per gallon (UK)"@en ; + :commonCode "K71" ; + :conversionFactor "99.77637 kg/m³" ; + :numericConversionFactor "99.77637"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "lb/gal (UK)" . + +:poundAvoirdupoisPerHourDegreeFahrenheit + a :Unit ; + bamm:name "poundAvoirdupoisPerHourDegreeFahrenheit" ; + bamm:preferredName "pound (avoirdupois) per hour degree Fahrenheit"@en ; + :commonCode "K73" ; + :conversionFactor "2.267962 × 10⁻⁴ (kg/s)/K" ; + :quantityKind :massFlowRate ; + :symbol "(lb/h)/°F" . + +:poundAvoirdupoisPerHourPsi + a :Unit ; + bamm:name "poundAvoirdupoisPerHourPsi" ; + bamm:preferredName "pound (avoirdupois) per hour psi"@en ; + :commonCode "K74" ; + :conversionFactor "1.827445 × 10⁻⁸ (kg/s)/Pa" ; + :numericConversionFactor "1.827445E-8"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecondPascal ; + :symbol "(lb/h)/psi" . + +:poundAvoirdupoisPerMinute + a :Unit ; + bamm:name "poundAvoirdupoisPerMinute" ; + bamm:preferredName "pound (avoirdupois) per minute"@en ; + :commonCode "K78" ; + :conversionFactor "7.559873 × 10⁻³ kg/s" ; + :numericConversionFactor "0.007559873"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "lb/min" . + +:poundAvoirdupoisPerMinuteDegreeFahrenheit + a :Unit ; + bamm:name "poundAvoirdupoisPerMinuteDegreeFahrenheit" ; + bamm:preferredName "pound (avoirdupois) per minute degree Fahrenheit"@en ; + :commonCode "K79" ; + :conversionFactor "1.360777 × 10⁻² (kg/s)/K" ; + :quantityKind :massFlowRate ; + :symbol "lb/(min·°F)" . + +:poundAvoirdupoisPerMinutePsi + a :Unit ; + bamm:name "poundAvoirdupoisPerMinutePsi" ; + bamm:preferredName "pound (avoirdupois) per minute psi"@en ; + :commonCode "K80" ; + :conversionFactor "1.096467 × 10⁻⁶ (kg/s)/Pa" ; + :numericConversionFactor "1.096467E-6"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecondPascal ; + :symbol "(lb/min)/psi" . + +:poundAvoirdupoisPerPsi + a :Unit ; + bamm:name "poundAvoirdupoisPerPsi" ; + bamm:preferredName "pound (avoirdupois) per psi"@en ; + :commonCode "K77" ; + :conversionFactor "6.578802 × 10⁻⁵ kg/Pa" ; + :numericConversionFactor "6.578802E-5"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerPascal ; + :symbol "lb/psi" . + +:poundAvoirdupoisPerSecond + a :Unit ; + bamm:name "poundAvoirdupoisPerSecond" ; + bamm:preferredName "pound (avoirdupois) per second"@en ; + :commonCode "K81" ; + :conversionFactor "0.4535924 kg/s" ; + :numericConversionFactor "0.4535924"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "lb/s" . + +:poundAvoirdupoisPerSecondDegreeFahrenheit + a :Unit ; + bamm:name "poundAvoirdupoisPerSecondDegreeFahrenheit" ; + bamm:preferredName "pound (avoirdupois) per second degree Fahrenheit"@en ; + :commonCode "K82" ; + :conversionFactor "0.8164663 (kg/s)/K" ; + :quantityKind :massFlowRate ; + :symbol "(lb/s)/°F" . + +:poundAvoirdupoisPerSecondPsi + a :Unit ; + bamm:name "poundAvoirdupoisPerSecondPsi" ; + bamm:preferredName "pound (avoirdupois) per second psi"@en ; + :commonCode "K83" ; + :conversionFactor "6.578802 × 10⁻⁵ (kg/s)/Pa" ; + :numericConversionFactor "6.578802E-5"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecondPascal ; + :symbol "(lb/s)/psi" . + +:poundAvoirdupoisSquareFoot + a :Unit ; + bamm:name "poundAvoirdupoisSquareFoot" ; + bamm:preferredName "pound (avoirdupois) square foot"@en ; + :commonCode "K65" ; + :conversionFactor "4.214011 × 10⁻² kg × m²" ; + :numericConversionFactor "0.04214011"^^xsd:double ; + :quantityKind :momentOfInertiaDynamicMomentOfInertia ; + :referenceUnit :kilogramMetreSquared ; + :symbol "lb·ft²" . + +:poundFootPerSecond + a :Unit ; + bamm:name "poundFootPerSecond" ; + bamm:preferredName "pound foot per second"@en ; + :commonCode "N10" ; + :conversionFactor "1.382550 × 10⁻¹ kg × m/s" ; + :numericConversionFactor "0.138255"^^xsd:double ; + :quantityKind :momentum ; + :referenceUnit :kilogramMetrePerSecond ; + :symbol "lb·(ft/s)" . + +:poundForce + a :Unit ; + bamm:name "poundForce" ; + bamm:preferredName "pound-force"@en ; + :commonCode "C78" ; + :conversionFactor "4.448222 N" ; + :numericConversionFactor "4.448222"^^xsd:double ; + :quantityKind :force, :weight ; + :referenceUnit :newton ; + :symbol "lbf" . + +:poundForceFoot + a :Unit ; + bamm:name "poundForceFoot" ; + bamm:preferredName "pound-force foot"@en ; + :commonCode "M92" ; + :conversionFactor "1.355818 N × m" ; + :numericConversionFactor "1.355818"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :newtonMetre ; + :symbol "lbf·ft" . + +:poundForceFootPerAmpere + a :Unit ; + bamm:name "poundForceFootPerAmpere" ; + bamm:preferredName "pound-force foot per ampere"@en ; + :commonCode "F22" ; + :conversionFactor "1.35582 kg × m² × s⁻² × A⁻¹" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "lbf·ft/A" . + +:poundForceFootPerInch + a :Unit ; + bamm:name "poundForceFootPerInch" ; + bamm:preferredName "pound-force foot per inch"@en ; + :commonCode "P89" ; + :conversionFactor "53.37866 m × kg / s²" ; + :symbol "lbf·ft/in" . + +:poundForceFootPerPound + a :Unit ; + bamm:name "poundForceFootPerPound" ; + bamm:preferredName "pound-force foot per pound"@en ; + :commonCode "G20" ; + :conversionFactor "2.98907 m² × s⁻²" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque, :workPerUnitWeight ; + :symbol "lbf·ft/lb" . + +:poundForceInch + a :Unit ; + bamm:name "poundForceInch" ; + bamm:preferredName "pound-force inch"@en ; + :commonCode "F21" ; + :conversionFactor "1.12985 × 10⁻¹ kg × m² × s⁻²" ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :symbol "lbf·in" . + +:poundForceInchPerInch + a :Unit ; + bamm:name "poundForceInchPerInch" ; + bamm:preferredName "pound-force inch per inch"@en ; + :commonCode "P90" ; + :conversionFactor "4.448222 m × kg / s²" ; + :symbol "lbf·in/in" . + +:poundForcePerFoot + a :Unit ; + bamm:name "poundForcePerFoot" ; + bamm:preferredName "pound-force per foot"@en ; + :commonCode "F17" ; + :conversionFactor "1.45939 × 10¹ kg × s⁻²" ; + :quantityKind :forceDividedByLength ; + :symbol "lbf/ft" . + +:poundForcePerInch + a :Unit ; + bamm:name "poundForcePerInch" ; + bamm:preferredName "pound-force per inch"@en ; + :commonCode "F48" ; + :conversionFactor "1.75127 × 10² kg × s⁻²" ; + :quantityKind :forceDividedByLength ; + :symbol "lbf/in" . + +:poundForcePerSquareFoot + a :Unit ; + bamm:name "poundForcePerSquareFoot" ; + bamm:preferredName "pound-force per square foot"@en ; + :commonCode "K85" ; + :conversionFactor "47.88026 Pa" ; + :numericConversionFactor "47.88026"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "lbf/ft²" . + +:poundForcePerSquareInch + a :Unit ; + bamm:name "poundForcePerSquareInch" ; + bamm:preferredName "pound-force per square inch"@en ; + :commonCode "PS" ; + :conversionFactor "6.894757 × 10³ Pa" ; + :numericConversionFactor "6894.757"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "lbf/in²" . + +:poundForcePerSquareInchDegreeFahrenheit + a :Unit ; + bamm:name "poundForcePerSquareInchDegreeFahrenheit" ; + bamm:preferredName "pound-force per square inch degree Fahrenheit"@en ; + :commonCode "K86" ; + :conversionFactor "1.241056 × 10⁴ Pa/K" ; + :numericConversionFactor "12410.56"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascalPerKelvin ; + :symbol "psi/°F" . + +:poundForcePerYard + a :Unit ; + bamm:name "poundForcePerYard" ; + bamm:preferredName "pound-force per yard"@en ; + :commonCode "N33" ; + :conversionFactor "4.864635 N/m" ; + :numericConversionFactor "4.864635"^^xsd:double ; + :quantityKind :surfaceTension ; + :referenceUnit :newtonPerMetre ; + :symbol "lbf/yd" . + +:poundForceSecondPerSquareFoot + a :Unit ; + bamm:name "poundForceSecondPerSquareFoot" ; + bamm:preferredName "pound-force second per square foot"@en ; + :commonCode "K91" ; + :conversionFactor "47.88026 Pa × s" ; + :numericConversionFactor "47.88026"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "lbf·s/ft²" . + +:poundForceSecondPerSquareInch + a :Unit ; + bamm:name "poundForceSecondPerSquareInch" ; + bamm:preferredName "pound-force second per square inch"@en ; + :commonCode "K92" ; + :conversionFactor "6.894757 × 10³ Pa × s" ; + :numericConversionFactor "6894.757"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "lbf·s/in²" . + +:poundInchPerSecond + a :Unit ; + bamm:name "poundInchPerSecond" ; + bamm:preferredName "pound inch per second"@en ; + :commonCode "N11" ; + :conversionFactor "1.152125 × 10⁻² kg × m/s" ; + :numericConversionFactor "0.01152125"^^xsd:double ; + :quantityKind :momentum ; + :referenceUnit :kilogramMetrePerSecond ; + :symbol "lb·(in/s)" . + +:poundInchSquared + a :Unit ; + bamm:name "poundInchSquared" ; + bamm:preferredName "pound inch squared"@en ; + :commonCode "F20" ; + :conversionFactor "2.926397 × 10⁻⁴ kg × m²" ; + :numericConversionFactor "2.926397E-4"^^xsd:double ; + :quantityKind :momentOfInertiaDynamicMomentOfInertia ; + :referenceUnit :kilogramMetreSquared ; + :symbol "lb·in²" . + +:poundMole + a :Unit ; + bamm:name "poundMole" ; + bamm:preferredName "pound mole"@en ; + :commonCode "P44" ; + :conversionFactor "453.5924 mol" ; + :numericConversionFactor "453.5924"^^xsd:double ; + :quantityKind :amountOfSubstance ; + :referenceUnit :mole ; + :symbol "lbmol" . + +:poundMolePerMinute + a :Unit ; + bamm:name "poundMolePerMinute" ; + bamm:preferredName "pound mole per minute"@en ; + :commonCode "P46" ; + :conversionFactor "7.559873 mol/s" ; + :numericConversionFactor "7.559873"^^xsd:double ; + :quantityKind :catalyticActivity ; + :referenceUnit :molePerSecond ; + :symbol "lbmol/h" . + +:poundMolePerPound + a :Unit ; + bamm:name "poundMolePerPound" ; + bamm:preferredName "pound mole per pound"@en ; + :commonCode "P48" ; + :conversionFactor "10³ mol/kg" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :ionicStrength ; + :referenceUnit :molePerKilogram ; + :symbol "lbmol/lb" . + +:poundMolePerSecond + a :Unit ; + bamm:name "poundMolePerSecond" ; + bamm:preferredName "pound mole per second"@en ; + :commonCode "P45" ; + :conversionFactor "4.535924 × 10² mol/s" ; + :numericConversionFactor "453.5924"^^xsd:double ; + :quantityKind :catalyticActivity ; + :referenceUnit :molePerSecond ; + :symbol "lbmol/s" . + +:poundPerCubicFoot + a :Unit ; + bamm:name "poundPerCubicFoot" ; + bamm:preferredName "pound per cubic foot"@en ; + :commonCode "87" ; + :conversionFactor "1.601846 × 10¹ kg/m³" ; + :numericConversionFactor "16.01846"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "lb/ft³" . + +:poundPerCubicInch + a :Unit ; + bamm:name "poundPerCubicInch" ; + bamm:preferredName "pound per cubic inch"@en ; + :commonCode "LA" ; + :conversionFactor "2.767990 × 10⁴ kg/m³" ; + :numericConversionFactor "27679.9"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "lb/in³" . + +:poundPerCubicYard + a :Unit ; + bamm:name "poundPerCubicYard" ; + bamm:preferredName "pound per cubic yard"@en ; + :commonCode "K84" ; + :conversionFactor "0.5932764 kg/m³" ; + :numericConversionFactor "0.5932764"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "lb/yd³" . + +:poundPerFoot + a :Unit ; + bamm:name "poundPerFoot" ; + bamm:preferredName "pound per foot"@en ; + :commonCode "P2" ; + :conversionFactor "1.488164 kg/m" ; + :numericConversionFactor "1.488164"^^xsd:double ; + :quantityKind :linearDensity, :linearMass ; + :referenceUnit :kilogramPerMetre ; + :symbol "lb/ft" . + +:poundPerFootDay + a :Unit ; + bamm:name "poundPerFootDay" ; + bamm:preferredName "pound per foot day"@en ; + :commonCode "N44" ; + :conversionFactor "1.722412 × 10⁻⁵ Pa × s" ; + :numericConversionFactor "1.722412E-5"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "lb/(ft·d)" . + +:poundPerFootHour + a :Unit ; + bamm:name "poundPerFootHour" ; + bamm:preferredName "pound per foot hour"@en ; + :commonCode "K67" ; + :conversionFactor "4.133789 × 10⁻⁴ Pa × s" ; + :numericConversionFactor "4.133789E-4"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "lb/(ft·h)" . + +:poundPerFootMinute + a :Unit ; + bamm:name "poundPerFootMinute" ; + bamm:preferredName "pound per foot minute"@en ; + :commonCode "N43" ; + :conversionFactor "2.480273 × 10⁻² Pa × s" ; + :numericConversionFactor "0.02480273"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "lb/(ft·min)" . + +:poundPerFootSecond + a :Unit ; + bamm:name "poundPerFootSecond" ; + bamm:preferredName "pound per foot second"@en ; + :commonCode "K68" ; + :conversionFactor "1.488164 Pa × s" ; + :numericConversionFactor "1.488164"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "lb/(ft·s)" . + +:poundPerGallonUs + a :Unit ; + bamm:name "poundPerGallonUs" ; + bamm:preferredName "pound per gallon (US)"@en ; + :commonCode "GE" ; + :conversionFactor "1.198264 × 10² kg/m³" ; + :numericConversionFactor "119.8264"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "lb/gal (US)" . + +:poundPerHour + a :Unit ; + bamm:name "poundPerHour" ; + bamm:preferredName "pound per hour"@en ; + :commonCode "4U" ; + :conversionFactor "1.259979 × 10⁻⁴ kg/s" ; + :numericConversionFactor "1.259979E-4"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "lb/h" . + +:poundPerInchOfLengthUnit + a :Unit ; + bamm:name "poundPerInchOfLengthUnit" ; + bamm:preferredName "pound per inch of length"@en ; + :commonCode "PO" ; + :conversionFactor "1.785797 × 10¹ kg/m" ; + :numericConversionFactor "17.85797"^^xsd:double ; + :quantityKind :linearDensity, :linearMass ; + :referenceUnit :kilogramPerMetre ; + :symbol "lb/in" . + +:poundPerPound + a :Unit ; + bamm:name "poundPerPound" ; + bamm:preferredName "pound per pound"@en ; + :commonCode "M91" ; + :conversionFactor "1.0" ; + :quantityKind :massRatio ; + :symbol "lb/lb" . + +:poundPerReam + a :Unit ; + bamm:name "poundPerReam" ; + bamm:preferredName "pound per ream"@en ; + :commonCode "RP" . + +:poundPerSquareFoot + a :Unit ; + bamm:name "poundPerSquareFoot" ; + bamm:preferredName "pound per square foot"@en ; + :commonCode "FP" ; + :conversionFactor "4.882428 kg/m²" ; + :numericConversionFactor "4.882428"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :kilogramPerSquareMetre ; + :symbol "lb/ft²" . + +:poundPerSquareInchAbsolute + a :Unit ; + bamm:name "poundPerSquareInchAbsolute" ; + bamm:preferredName "pound per square inch absolute"@en ; + :commonCode "80" ; + :conversionFactor "7.030696 × 10² kg/m²" ; + :numericConversionFactor "703.0696"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :kilogramPerSquareMetre ; + :symbol "lb/in²" . + +:poundPerSquareYard + a :Unit ; + bamm:name "poundPerSquareYard" ; + bamm:preferredName "pound per square yard"@en ; + :commonCode "N25" ; + :conversionFactor "5.424919 × 10⁻¹ kg/m²" ; + :numericConversionFactor "0.5424919"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :kilogramPerSquareMetre ; + :symbol "lb/yd²" . + +:poundPerYard + a :Unit ; + bamm:name "poundPerYard" ; + bamm:preferredName "pound per yard"@en ; + :commonCode "M84" ; + :conversionFactor "4.960546 × 10⁻¹ kg/m" ; + :numericConversionFactor "0.4960546"^^xsd:double ; + :quantityKind :linearDensity, :linearMass ; + :referenceUnit :kilogramPerMetre ; + :symbol "lb/yd" . + +:poundal + a :Unit ; + bamm:name "poundal" ; + bamm:preferredName "poundal"@en ; + :commonCode "M76" ; + :conversionFactor "1.382550 × 10⁻¹ N" ; + :numericConversionFactor "0.138255"^^xsd:double ; + :quantityKind :force, :weight ; + :referenceUnit :newton ; + :symbol "pdl" . + +:poundalFoot + a :Unit ; + bamm:name "poundalFoot" ; + bamm:preferredName "poundal foot"@en ; + :commonCode "M95" ; + :conversionFactor "4.214011 × 10⁻² N × m" ; + :numericConversionFactor "0.04214011"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :newtonMetre ; + :symbol "pdl·ft" . + +:poundalInch + a :Unit ; + bamm:name "poundalInch" ; + bamm:preferredName "poundal inch"@en ; + :commonCode "M96" ; + :conversionFactor "3.51167710⁻³ N × m" ; + :numericConversionFactor "0.003511677"^^xsd:double ; + :quantityKind :momentOfACouple, :momentOfForce, :torque ; + :referenceUnit :newtonMetre ; + :symbol "pdl·in" . + +:poundalPerInch + a :Unit ; + bamm:name "poundalPerInch" ; + bamm:preferredName "poundal per inch"@en ; + :commonCode "N32" ; + :conversionFactor "5.443110 N/m" ; + :numericConversionFactor "5.44311"^^xsd:double ; + :quantityKind :surfaceTension ; + :referenceUnit :newtonPerMetre ; + :symbol "pdl/in" . + +:poundalPerSquareFoot + a :Unit ; + bamm:name "poundalPerSquareFoot" ; + bamm:preferredName "poundal per square foot"@en ; + :commonCode "N21" ; + :conversionFactor "1.488164 Pa" ; + :numericConversionFactor "1.488164"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "pdl/ft²" . + +:poundalPerSquareInch + a :Unit ; + bamm:name "poundalPerSquareInch" ; + bamm:preferredName "poundal per square inch"@en ; + :commonCode "N26" ; + :conversionFactor "2.142957 × 10² Pa" ; + :numericConversionFactor "214.2957"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "pdl/in²" . + +:poundalSecondPerSquareFoot + a :Unit ; + bamm:name "poundalSecondPerSquareFoot" ; + bamm:preferredName "poundal second per square foot"@en ; + :commonCode "N34" ; + :conversionFactor "1.488164 Pa × s" ; + :numericConversionFactor "1.488164"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "(pdl/ft²)·s" . + +:poundalSecondPerSquareInch + a :Unit ; + bamm:name "poundalSecondPerSquareInch" ; + bamm:preferredName "poundal second per square inch"@en ; + :commonCode "N42" ; + :conversionFactor "2.142957 × 10² Pa × s" ; + :numericConversionFactor "214.2957"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "(pdl/in²)·s" . + +:printPoint + a :Unit ; + bamm:name "printPoint" ; + bamm:preferredName "print point"@en ; + :commonCode "N3" ; + :conversionFactor "0.0138 in (appro×)" . + +:proofGallon + a :Unit ; + bamm:name "proofGallon" ; + bamm:preferredName "proof gallon"@en ; + :commonCode "PGL" . + +:proofLitre + a :Unit ; + bamm:name "proofLitre" ; + bamm:preferredName "proof litre"@en ; + :commonCode "PFL" . + +:psiCubicInchPerSecond + a :Unit ; + bamm:name "psiCubicInchPerSecond" ; + bamm:preferredName "psi cubic inch per second"@en ; + :commonCode "K87" ; + :conversionFactor "0.112985 Pa × m³/s" ; + :numericConversionFactor "0.112985"^^xsd:double ; + :quantityKind :leakageRateOfGas ; + :referenceUnit :pascalCubicMetrePerSecond ; + :symbol "psi·in³/s" . + +:psiCubicMetrePerSecond + a :Unit ; + bamm:name "psiCubicMetrePerSecond" ; + bamm:preferredName "psi cubic metre per second"@en ; + :commonCode "K89" ; + :conversionFactor "6.894757 × 10³ Pa × m³/s" ; + :numericConversionFactor "6894.757"^^xsd:double ; + :quantityKind :leakageRateOfGas ; + :referenceUnit :pascalCubicMetrePerSecond ; + :symbol "psi·m³/s" . + +:psiCubicYardPerSecond + a :Unit ; + bamm:name "psiCubicYardPerSecond" ; + bamm:preferredName "psi cubic yard per second"@en ; + :commonCode "K90" ; + :conversionFactor "5.271420 × 10³ Pa × m³/s" ; + :numericConversionFactor "5271.42"^^xsd:double ; + :quantityKind :leakageRateOfGas ; + :referenceUnit :pascalCubicMetrePerSecond ; + :symbol "psi·yd³/s" . + +:psiLitrePerSecond + a :Unit ; + bamm:name "psiLitrePerSecond" ; + bamm:preferredName "psi litre per second"@en ; + :commonCode "K88" ; + :conversionFactor "6.894757 Pa × m³/s" ; + :numericConversionFactor "6.894757"^^xsd:double ; + :quantityKind :leakageRateOfGas ; + :referenceUnit :pascalCubicMetrePerSecond ; + :symbol "psi·l/s" . + +:psiPerInch + a :Unit ; + bamm:name "psiPerInch" ; + bamm:preferredName "psi per inch"@en ; + :commonCode "P86" ; + :conversionFactor "2.714471 × 10⁵ kg/(m² × s²)" ; + :quantityKind :hardnessIndex ; + :symbol "psi/in" . + +:psiPerPsi + a :Unit ; + bamm:name "psiPerPsi" ; + bamm:preferredName "psi per psi"@en ; + :commonCode "L52" ; + :conversionFactor "1.0" ; + :quantityKind :pressureRatio ; + :symbol "psi/psi" . + +:quad1015Btuit + a :Unit ; + bamm:name "quad1015Btuit" ; + bamm:preferredName "quad (1015 BtuIT)"@en ; + :commonCode "N70" ; + :conversionFactor "1.055056 × 10¹⁸ J" ; + :numericConversionFactor "1.055056E18"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "quad" . + +:quartUk + a :Unit ; + bamm:name "quartUk" ; + bamm:preferredName "quart (UK)"@en ; + :commonCode "QTI" ; + :conversionFactor "1.1365225 × 10⁻³ m³" ; + :numericConversionFactor "0.0011365225"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "qt (UK)" . + +:quartUkLiquidPerDay + a :Unit ; + bamm:name "quartUkLiquidPerDay" ; + bamm:preferredName "quart (UK liquid) per day"@en ; + :commonCode "K94" ; + :conversionFactor "1.315420 × 10⁻⁸ m³/s" ; + :numericConversionFactor "1.31542E-8"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "qt (UK liq.)/d" . + +:quartUkLiquidPerHour + a :Unit ; + bamm:name "quartUkLiquidPerHour" ; + bamm:preferredName "quart (UK liquid) per hour"@en ; + :commonCode "K95" ; + :conversionFactor "3.157008 × 10⁻⁷ m³/s" ; + :numericConversionFactor "3.157008E-7"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "qt (UK liq.)/h" . + +:quartUkLiquidPerMinute + a :Unit ; + bamm:name "quartUkLiquidPerMinute" ; + bamm:preferredName "quart (UK liquid) per minute"@en ; + :commonCode "K96" ; + :conversionFactor "1.894205 × 10⁻⁵ m³/s" ; + :numericConversionFactor "1.894205E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "qt (UK liq.)/min" . + +:quartUkLiquidPerSecond + a :Unit ; + bamm:name "quartUkLiquidPerSecond" ; + bamm:preferredName "quart (UK liquid) per second"@en ; + :commonCode "K97" ; + :conversionFactor "1.136523 × 10⁻³ m³/s" ; + :numericConversionFactor "0.001136523"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "qt (UK liq.)/s" . + +:quartUsLiquidPerDay + a :Unit ; + bamm:name "quartUsLiquidPerDay" ; + bamm:preferredName "quart (US liquid) per day"@en ; + :commonCode "K98" ; + :conversionFactor "1.095316 × 10⁻⁸ m³/s" ; + :numericConversionFactor "1.095316E-8"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "qt (US liq.)/d" . + +:quartUsLiquidPerHour + a :Unit ; + bamm:name "quartUsLiquidPerHour" ; + bamm:preferredName "quart (US liquid) per hour"@en ; + :commonCode "K99" ; + :conversionFactor "2.628758 × 10⁻⁷ m³/s" ; + :numericConversionFactor "2.628758E-7"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "qt (US liq.)/h" . + +:quartUsLiquidPerMinute + a :Unit ; + bamm:name "quartUsLiquidPerMinute" ; + bamm:preferredName "quart (US liquid) per minute"@en ; + :commonCode "L10" ; + :conversionFactor "1.577255 × 10⁻⁵ m³/s" ; + :numericConversionFactor "1.577255E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "qt (US liq.)/min" . + +:quartUsLiquidPerSecond + a :Unit ; + bamm:name "quartUsLiquidPerSecond" ; + bamm:preferredName "quart (US liquid) per second"@en ; + :commonCode "L11" ; + :conversionFactor "9.463529 × 10⁻⁴ m³/s" ; + :numericConversionFactor "9.463529E-4"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "qt (US liq.)/s" . + +:quarterOfAYear + a :Unit ; + bamm:name "quarterOfAYear" ; + bamm:preferredName "quarter (of a year)"@en ; + :commonCode "QAN" . + +:quarterUk + a :Unit ; + bamm:name "quarterUk" ; + bamm:preferredName "quarter (UK)"@en ; + :commonCode "QTR" ; + :conversionFactor "12.700 59 kg" ; + :numericConversionFactor "12.70059"^^xsd:double ; + :referenceUnit :kilogram ; + :symbol "Qr (UK)" . + +:quire + a :Unit ; + bamm:name "quire" ; + bamm:preferredName "quire"@en ; + :commonCode "QR" ; + :symbol "qr" . + +:rackUnit + a :Unit ; + bamm:name "rackUnit" ; + bamm:preferredName "rack unit"@en ; + :commonCode "H80" ; + :conversionFactor "4.445 × 10⁻² m" ; + :numericConversionFactor "0.04445"^^xsd:double ; + :referenceUnit :metre ; + :symbol "U or RU" . + +:rad + a :Unit ; + bamm:name "rad" ; + bamm:preferredName "rad"@en ; + :commonCode "C80" ; + :conversionFactor "10⁻² Gy" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :absorbedDose ; + :referenceUnit :gray ; + :symbol "rad" . + +:radian + a :Unit ; + bamm:name "radian" ; + bamm:preferredName "radian"@en ; + :commonCode "C81" ; + :conversionFactor "rad" ; + :quantityKind :angleOfOpticalRotation, :anglePlane, :braggAngle, :lossAngle, :phaseDifference, :phaseDisplacement ; + :symbol "rad" . + +:radianPerMetre + a :Unit ; + bamm:name "radianPerMetre" ; + bamm:preferredName "radian per metre"@en ; + :commonCode "C84" ; + :conversionFactor "rad/m" ; + :quantityKind :angularRepetency, :angularWaveNumber, :angularWavenumber, :debyeAngularRepetency, :debyeAngularWaveNumber ; + :symbol "rad/m" . + +:radianPerSecond + a :Unit ; + bamm:name "radianPerSecond" ; + bamm:preferredName "radian per second"@en ; + :commonCode "2A" ; + :conversionFactor "rad/s" ; + :quantityKind :angularFrequency, :angularVelocity, :circularFrequency, :cyclotronAngularFrequency, :debyeAngularFrequency, :nuclearPrecession, :pulsatance ; + :symbol "rad/s" . + +:radianPerSecondSquared + a :Unit ; + bamm:name "radianPerSecondSquared" ; + bamm:preferredName "radian per second squared"@en ; + :commonCode "2B" ; + :conversionFactor "rad/s²" ; + :quantityKind :angularAcceleration ; + :symbol "rad/s²" . + +:radianSquareMetrePerKilogram + a :Unit ; + bamm:name "radianSquareMetrePerKilogram" ; + bamm:preferredName "radian square metre per kilogram"@en ; + :commonCode "C83" ; + :conversionFactor "rad × m²/kg" ; + :quantityKind :massicOptical, :rotatoryPower, :specificOpticalRotatoryPower ; + :symbol "rad·m²/kg" . + +:radianSquareMetrePerMole + a :Unit ; + bamm:name "radianSquareMetrePerMole" ; + bamm:preferredName "radian square metre per mole"@en ; + :commonCode "C82" ; + :conversionFactor "rad × m²/mol" ; + :quantityKind :molarOpticalRotatoryPower ; + :symbol "rad·m²/mol" . + +:rate + a :Unit ; + bamm:name "rate" ; + bamm:preferredName "rate"@en ; + :commonCode "A9" . + +:ration + a :Unit ; + bamm:name "ration" ; + bamm:preferredName "ration"@en ; + :commonCode "13" . + +:ream + a :Unit ; + bamm:name "ream" ; + bamm:preferredName "ream"@en ; + :commonCode "RM" . + +:reciprocalAngstrom + a :Unit ; + bamm:name "reciprocalAngstrom" ; + bamm:preferredName "reciprocal angstrom"@en ; + :commonCode "C85" ; + :conversionFactor "10¹⁰ m⁻¹" ; + :numericConversionFactor "1.0E10"^^xsd:double ; + :quantityKind :fermiAngularRepetency, :fermiAngularWaveNumber ; + :referenceUnit :reciprocalMetre ; + :symbol "Å⁻¹" . + +:reciprocalBar + a :Unit ; + bamm:name "reciprocalBar" ; + bamm:preferredName "reciprocal bar"@en ; + :commonCode "F58" ; + :conversionFactor "bar⁻¹" ; + :quantityKind :bulkCompressibility, :compressibility ; + :symbol "1/bar" . + +:reciprocalCentimetre + a :Unit ; + bamm:name "reciprocalCentimetre" ; + bamm:preferredName "reciprocal centimetre"@en ; + :commonCode "E90" ; + :conversionFactor "10² m⁻¹" ; + :numericConversionFactor "100.0"^^xsd:double ; + :referenceUnit :reciprocalMetre ; + :symbol "cm⁻¹" . + +:reciprocalCubicCentimetre + a :Unit ; + bamm:name "reciprocalCubicCentimetre" ; + bamm:preferredName "reciprocal cubic centimetre"@en ; + :commonCode "H50" ; + :conversionFactor "10⁶ m⁻³" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :molecularConcentrationOfB, :numberDensityOfMoleculesOrParticles, :volumicNumberOfMoleculesOrParticles ; + :referenceUnit :reciprocalCubicMetre ; + :symbol "cm⁻³" . + +:reciprocalCubicFoot + a :Unit ; + bamm:name "reciprocalCubicFoot" ; + bamm:preferredName "reciprocal cubic foot"@en ; + :commonCode "K20" ; + :conversionFactor "35.31466 m⁻³" ; + :numericConversionFactor "35.31466"^^xsd:double ; + :quantityKind :molecularConcentrationOfB, :numberDensityOfMoleculesOrParticles, :volumicNumberOfMoleculesOrParticles ; + :referenceUnit :reciprocalCubicMetre ; + :symbol "1/ft³" . + +:reciprocalCubicInch + a :Unit ; + bamm:name "reciprocalCubicInch" ; + bamm:preferredName "reciprocal cubic inch"@en ; + :commonCode "K49" ; + :conversionFactor "6.1023759 × 10⁴ m⁻³" ; + :numericConversionFactor "61023.759"^^xsd:double ; + :quantityKind :molecularConcentrationOfB, :numberDensityOfMoleculesOrParticles, :volumicNumberOfMoleculesOrParticles ; + :referenceUnit :reciprocalCubicMetre ; + :symbol "1/in³" . + +:reciprocalCubicMetre + a :Unit ; + bamm:name "reciprocalCubicMetre" ; + bamm:preferredName "reciprocal cubic metre"@en ; + :commonCode "C86" ; + :conversionFactor "m⁻³" ; + :quantityKind :acceptorNumberDensity, :donorNumberDensity, :electronNumberDensity, :holeNumberDensity, :intrinsicNumberDensity, :ionDensity, :ionNumberDensity, :molecularConcentrationOfB, :neutronNumberDensity, :numberDensityOfMoleculesOrParticles, :volumicAcceptorNumber, :volumicDonorNumber, :volumicElectronNumber, :volumicHoleNumber, :volumicIntrinsisNumber, :volumicNumberOfMoleculesOrParticles ; + :symbol "m⁻³" . + +:reciprocalCubicMetrePerSecond + a :Unit ; + bamm:name "reciprocalCubicMetrePerSecond" ; + bamm:preferredName "reciprocal cubic metre per second"@en ; + :commonCode "C87" ; + :conversionFactor "m⁻³/s" ; + :quantityKind :slowingDownDensity ; + :symbol "m⁻³/s" . + +:reciprocalCubicMillimetre + a :Unit ; + bamm:name "reciprocalCubicMillimetre" ; + bamm:preferredName "reciprocal cubic millimetre"@en ; + :commonCode "L20" ; + :conversionFactor "10⁹ m⁻³" ; + :numericConversionFactor "1.0E9"^^xsd:double ; + :quantityKind :molecularConcentrationOfB, :numberDensityOfMoleculesOrParticles, :volumicNumberOfMoleculesOrParticles ; + :referenceUnit :reciprocalCubicMetre ; + :symbol "1/mm³" . + +:reciprocalCubicYard + a :Unit ; + bamm:name "reciprocalCubicYard" ; + bamm:preferredName "reciprocal cubic yard"@en ; + :commonCode "M10" ; + :conversionFactor "1.307951 m⁻³" ; + :numericConversionFactor "1.307951"^^xsd:double ; + :quantityKind :molecularConcentrationOfB, :numberDensityOfMoleculesOrParticles, :volumicNumberOfMoleculesOrParticles ; + :referenceUnit :reciprocalCubicMetre ; + :symbol "1/yd³" . + +:reciprocalDay + a :Unit ; + bamm:name "reciprocalDay" ; + bamm:preferredName "reciprocal day"@en ; + :commonCode "E91" ; + :conversionFactor "1.15741 × 10⁻⁵ s⁻¹" ; + :numericConversionFactor "1.15741E-5"^^xsd:double ; + :referenceUnit :reciprocalSecond ; + :symbol "d⁻¹" . + +:reciprocalDegreeFahrenheit + a :Unit ; + bamm:name "reciprocalDegreeFahrenheit" ; + bamm:preferredName "reciprocal degree Fahrenheit"@en ; + :commonCode "J26" ; + :conversionFactor "1.81/K" ; + :quantityKind :temperature ; + :symbol "1/°F" . + +:reciprocalElectronVoltPerCubicMetre + a :Unit ; + bamm:name "reciprocalElectronVoltPerCubicMetre" ; + bamm:preferredName "reciprocal electron volt per cubic metre"@en ; + :commonCode "C88" ; + :conversionFactor "6.24146 × 10¹⁸ J⁻¹/m³" ; + :numericConversionFactor "6.24146E18"^^xsd:double ; + :quantityKind :densityOfStates ; + :referenceUnit :reciprocalJoulePerCubicMetre ; + :symbol "eV⁻¹/m³" . + +:reciprocalHenry + a :Unit ; + bamm:name "reciprocalHenry" ; + bamm:preferredName "reciprocal henry"@en ; + :commonCode "C89" ; + :conversionFactor "H⁻¹" ; + :quantityKind :reluctance ; + :symbol "H⁻¹" . + +:reciprocalHour + a :Unit ; + bamm:name "reciprocalHour" ; + bamm:preferredName "reciprocal hour"@en ; + :commonCode "H10" ; + :conversionFactor "2.77778 × 10⁻⁴ s⁻¹" ; + :numericConversionFactor "2.77778E-4"^^xsd:double ; + :quantityKind :frequency ; + :referenceUnit :reciprocalSecond ; + :symbol "1/h" . + +:reciprocalInch + a :Unit ; + bamm:name "reciprocalInch" ; + bamm:preferredName "reciprocal inch"@en ; + :commonCode "Q24" ; + :conversionFactor "39.37008 m⁻¹" ; + :numericConversionFactor "39.37008"^^xsd:double ; + :referenceUnit :reciprocalMetre ; + :symbol "1/in" . + +:reciprocalJoule + a :Unit ; + bamm:name "reciprocalJoule" ; + bamm:preferredName "reciprocal joule"@en ; + :commonCode "N91" ; + :conversionFactor "1/J" ; + :quantityKind :coefficient, :performanceCharacteristic ; + :symbol "1/J" . + +:reciprocalJoulePerCubicMetre + a :Unit ; + bamm:name "reciprocalJoulePerCubicMetre" ; + bamm:preferredName "reciprocal joule per cubic metre"@en ; + :commonCode "C90" ; + :conversionFactor "J⁻¹/m³" ; + :quantityKind :densityOfStates ; + :symbol "J⁻¹/m³" . + +:reciprocalKelvinOrKelvinToThePowerMinusOne + a :Unit ; + bamm:name "reciprocalKelvinOrKelvinToThePowerMinusOne" ; + bamm:preferredName "reciprocal kelvin or kelvin to the power minus one"@en ; + :commonCode "C91" ; + :conversionFactor "K⁻¹" ; + :quantityKind :cubicExpansionCoefficient, :linearExpansionCoefficient, :relativePressureCoefficient ; + :symbol "K⁻¹" . + +:reciprocalKilovoltAmpereReciprocalHour + a :Unit ; + bamm:name "reciprocalKilovoltAmpereReciprocalHour" ; + bamm:preferredName "reciprocal kilovolt - ampere reciprocal hour"@en ; + :commonCode "M21" ; + :conversionFactor "2.777778 × 10⁻⁷ (V × A × s)⁻¹" ; + :quantityKind :coefficient, :performanceCharacteristic ; + :symbol "1/kVAh" . + +:reciprocalLitre + a :Unit ; + bamm:name "reciprocalLitre" ; + bamm:preferredName "reciprocal litre"@en ; + :commonCode "K63" ; + :conversionFactor "10³ m⁻³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :molecularConcentrationOfB, :numberDensityOfMoleculesOrParticles, :volumicNumberOfMoleculesOrParticles ; + :referenceUnit :reciprocalCubicMetre ; + :symbol "1/l" . + +:reciprocalMegakelvinOrMegakelvinToThePowerMinusOne + a :Unit ; + bamm:name "reciprocalMegakelvinOrMegakelvinToThePowerMinusOne" ; + bamm:preferredName "reciprocal megakelvin or megakelvin to the power minus one"@en ; + :commonCode "M20" ; + :conversionFactor "10⁻⁶ K⁻¹" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :cubicExpansionCoefficient, :linearExpansionCoefficient, :relativePressureCoefficient ; + :referenceUnit :reciprocalKelvinOrKelvinToThePowerMinusOne ; + :symbol "1/MK" . + +:reciprocalMetre + a :Unit ; + bamm:name "reciprocalMetre" ; + bamm:preferredName "reciprocal metre"@en ; + :commonCode "C92" ; + :conversionFactor "m⁻¹" ; + :quantityKind :angularReciprocalLatticeVector, :angularRepetency, :angularWaveNumber, :attenuationCoefficient, :curvature, :fundamentalReciprocalLatticeVector, :lensPower, :linearAbsorptionCoefficient, :linearAttenuationCoefficient, :linearExtinctionCoefficient, :linearIonizationByAParticle, :macroscopicCrossSection, :macroscopicTotalCrossSection, :phaseCoefficient, :propagationCoefficient, :repetency, :rydbergConstant, :totalIonizationByAParticle, :vergence, :volumicCrossSection, :volumicTotalCrossSection, :waveNumber, :wavenumber ; + :symbol "m⁻¹" . + +:reciprocalMetreSquaredReciprocalSecond + a :Unit ; + bamm:name "reciprocalMetreSquaredReciprocalSecond" ; + bamm:preferredName "reciprocal metre squared reciprocal second"@en ; + :commonCode "B81" ; + :conversionFactor "m⁻²/s" ; + :quantityKind :currentDensityOfParticles, :neutronFluenceRate, :neutronfluxDensity, :particalFluxDensity, :particleFluenceRate ; + :symbol "m⁻²/s" . + +:reciprocalMinute + a :Unit ; + bamm:name "reciprocalMinute" ; + bamm:preferredName "reciprocal minute"@en ; + :commonCode "C94" ; + :conversionFactor "1.666667 × 10⁻² s" ; + :numericConversionFactor "0.01666667"^^xsd:double ; + :quantityKind :rotationalFrequency ; + :referenceUnit :secondUnitOfTime ; + :symbol "min⁻¹" . + +:reciprocalMole + a :Unit ; + bamm:name "reciprocalMole" ; + bamm:preferredName "reciprocal mole"@en ; + :commonCode "C95" ; + :conversionFactor "mol⁻¹" ; + :quantityKind :avogadroConstant ; + :symbol "mol⁻¹" . + +:reciprocalMonth + a :Unit ; + bamm:name "reciprocalMonth" ; + bamm:preferredName "reciprocal month"@en ; + :commonCode "H11" ; + :conversionFactor "3.80257 × 10⁻⁷ s⁻¹" ; + :numericConversionFactor "3.80257E-7"^^xsd:double ; + :quantityKind :frequency ; + :referenceUnit :reciprocalSecond ; + :symbol "1/mo" . + +:reciprocalPascalOrPascalToThePowerMinusOne + a :Unit ; + bamm:name "reciprocalPascalOrPascalToThePowerMinusOne" ; + bamm:preferredName "reciprocal pascal or pascal to the power minus one"@en ; + :commonCode "C96" ; + :conversionFactor "Pa⁻¹" ; + :quantityKind :bulkCompressibility, :compressibility, :isentropicCompressibility, :isothermalCompressibility ; + :symbol "Pa⁻¹" . + +:reciprocalPsi + a :Unit ; + bamm:name "reciprocalPsi" ; + bamm:preferredName "reciprocal psi"@en ; + :commonCode "K93" ; + :conversionFactor "1.450377 × 10⁻⁴ Pa⁻¹" ; + :numericConversionFactor "1.450377E-4"^^xsd:double ; + :quantityKind :amountOfSubstance, :concentrationOfB, :density, :massConcentrationOfB, :massDensity, :volumicMass ; + :referenceUnit :reciprocalPascalOrPascalToThePowerMinusOne ; + :symbol "1/psi" . + +:reciprocalRadian + a :Unit ; + bamm:name "reciprocalRadian" ; + bamm:preferredName "reciprocal radian"@en ; + :commonCode "P97" ; + :conversionFactor "1/rad" ; + :symbol "1/rad" . + +:reciprocalSecond + a :Unit ; + bamm:name "reciprocalSecond" ; + bamm:preferredName "reciprocal second"@en ; + :commonCode "C97" ; + :conversionFactor "s⁻¹" ; + :quantityKind :angularFrequency, :circularFrequency, :dampingCoefficient, :debyeAngularFrequency, :decayConstant, :disintegrationConstant, :larmorAngularFrequency, :photonFlux, :pulsatance, :rotationalFrequency ; + :symbol "s⁻¹" . + +:reciprocalSecondPerMetreSquared + a :Unit ; + bamm:name "reciprocalSecondPerMetreSquared" ; + bamm:preferredName "reciprocal second per metre squared"@en ; + :commonCode "C99" ; + :conversionFactor "s⁻¹/m²" ; + :quantityKind :irradiance, :photonExitance ; + :symbol "s⁻¹/m²" . + +:reciprocalSecondPerSteradian + a :Unit ; + bamm:name "reciprocalSecondPerSteradian" ; + bamm:preferredName "reciprocal second per steradian"@en ; + :commonCode "D1" ; + :conversionFactor "s⁻¹/sr" ; + :quantityKind :photonIntensity ; + :symbol "s⁻¹/sr" . + +:reciprocalSecondPerSteradianMetreSquared + a :Unit ; + bamm:name "reciprocalSecondPerSteradianMetreSquared" ; + bamm:preferredName "reciprocal second per steradian metre squared"@en ; + :commonCode "D2" ; + :conversionFactor "s⁻¹/(sr × m²)" ; + :quantityKind :photonLuminance, :photonRadiance ; + :symbol "s⁻¹/(sr·m²)" . + +:reciprocalSquareInch + a :Unit ; + bamm:name "reciprocalSquareInch" ; + bamm:preferredName "reciprocal square inch"@en ; + :commonCode "P78" ; + :conversionFactor "1.550003 × 10³ m⁻²" ; + :numericConversionFactor "1550.003"^^xsd:double ; + :quantityKind :particleFluence ; + :referenceUnit :reciprocalSquareMetre ; + :symbol "1/in²" . + +:reciprocalSquareMetre + a :Unit ; + bamm:name "reciprocalSquareMetre" ; + bamm:preferredName "reciprocal square metre"@en ; + :commonCode "C93" ; + :conversionFactor "m⁻²" ; + :quantityKind :particleFluence, :photonExposure ; + :symbol "m⁻²" . + +:reciprocalVolt + a :Unit ; + bamm:name "reciprocalVolt" ; + bamm:preferredName "reciprocal volt"@en ; + :commonCode "P96" ; + :conversionFactor "m⁻² × kg⁻¹ × s³ × A" ; + :symbol "1/V" . + +:reciprocalVoltAmpereReciprocalSecond + a :Unit ; + bamm:name "reciprocalVoltAmpereReciprocalSecond" ; + bamm:preferredName "reciprocal volt - ampere reciprocal second"@en ; + :commonCode "M30" ; + :conversionFactor "(V × A × s)⁻¹" ; + :quantityKind :coefficient, :performanceCharacteristic ; + :symbol "1/(V·A·s)" . + +:reciprocalWeek + a :Unit ; + bamm:name "reciprocalWeek" ; + bamm:preferredName "reciprocal week"@en ; + :commonCode "H85" ; + :conversionFactor "1.647989452868 × 10⁻⁶ s⁻¹" ; + :numericConversionFactor "1.647989452868E-6"^^xsd:double ; + :quantityKind :frequency ; + :referenceUnit :reciprocalSecond ; + :symbol "1/wk" . + +:reciprocalYear + a :Unit ; + bamm:name "reciprocalYear" ; + bamm:preferredName "reciprocal year"@en ; + :commonCode "H09" ; + :conversionFactor "3.16881 × 10⁻⁸ s⁻¹" ; + :numericConversionFactor "3.16881E-8"^^xsd:double ; + :quantityKind :frequency ; + :referenceUnit :reciprocalSecond ; + :symbol "1/y" . + +:rem + a :Unit ; + bamm:name "rem" ; + bamm:preferredName "rem"@en ; + :commonCode "D91" ; + :conversionFactor "10⁻² Sv" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :doseEquivalent ; + :referenceUnit :sievert ; + :symbol "rem" . + +:remPerSecond + a :Unit ; + bamm:name "remPerSecond" ; + bamm:preferredName "rem per second"@en ; + :commonCode "P69" ; + :conversionFactor "10⁻² Sv/s" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "rem/s" . + +:revenueTonMile + a :Unit ; + bamm:name "revenueTonMile" ; + bamm:preferredName "revenue ton mile"@en ; + :commonCode "RT" . + +:revolution + a :Unit ; + bamm:name "revolution" ; + bamm:preferredName "revolution"@en ; + :commonCode "M44" ; + :conversionFactor "6.283185 rad" ; + :numericConversionFactor "6.283185"^^xsd:double ; + :quantityKind :anglePlane ; + :referenceUnit :rad ; + :symbol "rev" . + +:revolutionPerMinute + a :Unit ; + bamm:name "revolutionPerMinute" ; + bamm:preferredName "revolution per minute"@en ; + :commonCode "M46" ; + :conversionFactor "0.1047198 rad/s" ; + :numericConversionFactor "0.1047198"^^xsd:double ; + :quantityKind :angularVelocity ; + :referenceUnit :radianPerSecond ; + :symbol "r/min" . + +:revolutionsPerMinute + a :Unit ; + bamm:name "revolutionsPerMinute" ; + bamm:preferredName "revolutions per minute"@en ; + :commonCode "RPM" ; + :conversionFactor "1.67 × 10⁻²/s" ; + :quantityKind :rotationalFrequency ; + :symbol "r/min" . + +:revolutionsPerSecond + a :Unit ; + bamm:name "revolutionsPerSecond" ; + bamm:preferredName "revolutions per second"@en ; + :commonCode "RPS" ; + :conversionFactor "1/s" ; + :quantityKind :rotationalFrequency ; + :symbol "r/s" . + +:rhe + a :Unit ; + bamm:name "rhe" ; + bamm:preferredName "rhe"@en ; + :commonCode "P88" ; + :conversionFactor "10 m × kg⁻¹ × s" ; + :symbol "rhe" . + +:rodUnitOfDistance + a :Unit ; + bamm:name "rodUnitOfDistance" ; + bamm:preferredName "rod [unit of distance]"@en ; + :commonCode "F49" ; + :conversionFactor "5.029210 m" ; + :numericConversionFactor "5.02921"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "rd (US)" . + +:roentgen + a :Unit ; + bamm:name "roentgen" ; + bamm:preferredName "roentgen"@en ; + :commonCode "2C" ; + :conversionFactor "2.58 × 10⁻⁴ C/kg" ; + :numericConversionFactor "2.58E-4"^^xsd:double ; + :quantityKind :exposure ; + :referenceUnit :coulombPerKilogram ; + :symbol "R" . + +:roentgenPerSecond + a :Unit ; + bamm:name "roentgenPerSecond" ; + bamm:preferredName "roentgen per second"@en ; + :commonCode "D6" ; + :conversionFactor "2.58 × 10⁻⁴ C/(kg × s)" ; + :numericConversionFactor "2.58E-4"^^xsd:double ; + :quantityKind :exposureRate ; + :referenceUnit :coulombPerKilogramSecond ; + :symbol "R/s" . + +:room + a :Unit ; + bamm:name "room" ; + bamm:preferredName "room"@en ; + :commonCode "ROM" . + +:round + a :Unit ; + bamm:name "round" ; + bamm:preferredName "round"@en ; + :commonCode "D65" . + +:runFoot + a :Unit ; + bamm:name "runFoot" ; + bamm:preferredName "run foot"@en ; + :commonCode "E52" . + +:runningOrOperatingHour + a :Unit ; + bamm:name "runningOrOperatingHour" ; + bamm:preferredName "running or operating hour"@en ; + :commonCode "RH" . + +:score + a :Unit ; + bamm:name "score" ; + bamm:preferredName "score"@en ; + :commonCode "SCO" ; + :conversionFactor "20" . + +:scruple + a :Unit ; + bamm:name "scruple" ; + bamm:preferredName "scruple"@en ; + :commonCode "SCR" ; + :conversionFactor "1.295982 g" ; + :numericConversionFactor "1.295982"^^xsd:double ; + :referenceUnit :gram . + +:secondPerCubicMetre + a :Unit ; + bamm:name "secondPerCubicMetre" ; + bamm:preferredName "second per cubic metre"@en ; + :commonCode "D93" ; + :conversionFactor "s/m³" ; + :quantityKind :volumicDose ; + :symbol "s/m³" . + +:secondPerCubicMetreRadian + a :Unit ; + bamm:name "secondPerCubicMetreRadian" ; + bamm:preferredName "second per cubic metre radian"@en ; + :commonCode "D94" ; + :conversionFactor "s/(rad × m³)" ; + :quantityKind :spectralConcentrationOfVibrationalModesInTermsOfAngularFrequency ; + :symbol "s/(rad·m³)" . + +:secondPerKilogramm + a :Unit ; + bamm:name "secondPerKilogramm" ; + bamm:preferredName "second per kilogramm"@en ; + :commonCode "Q20" ; + :conversionFactor "kg⁻¹ × s" ; + :symbol "s/kg" . + +:secondPerRadianCubicMetre + a :Unit ; + bamm:name "secondPerRadianCubicMetre" ; + bamm:preferredName "second per radian cubic metre"@en ; + :commonCode "Q22" ; + :conversionFactor "m⁻³ × s × rad⁻¹" ; + :symbol "1/(Hz·rad·m³)" . + +:secondUnitOfAngle + a :Unit ; + bamm:name "secondUnitOfAngle" ; + bamm:preferredName "second [unit of angle]"@en ; + :commonCode "D62" ; + :conversionFactor "4.848137 × 10⁻⁶ rad" ; + :numericConversionFactor "4.848137E-6"^^xsd:double ; + :quantityKind :anglePlane ; + :referenceUnit :rad ; + :symbol '"' . + +:secondUnitOfTime + a :Unit ; + bamm:name "secondUnitOfTime" ; + bamm:preferredName "second [unit of time]"@en ; + :commonCode "SEC" ; + :conversionFactor "s" ; + :quantityKind :carrierLifeTime, :halfLife, :meanLife, :period, :periodicTime, :reactorTimeConstant, :relaxationTime, :reverberationTime, :time, :timeConstant ; + :symbol "s" . + +:segment + a :Unit ; + bamm:name "segment" ; + bamm:preferredName "segment"@en ; + :commonCode "SG" . + +:serviceUnit + a :Unit ; + bamm:name "serviceUnit" ; + bamm:preferredName "service unit"@en ; + :commonCode "E48" . + +:set + a :Unit ; + bamm:name "set" ; + bamm:preferredName "set"@en ; + :commonCode "SET" . + +:shake + a :Unit ; + bamm:name "shake" ; + bamm:preferredName "shake"@en ; + :commonCode "M56" ; + :conversionFactor "10⁻⁸ s" ; + :numericConversionFactor "1.0E-8"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "shake" . + +:shannon + a :Unit ; + bamm:name "shannon" ; + bamm:preferredName "shannon"@en ; + :commonCode "Q14" ; + :symbol "Sh" . + +:shannonPerSecond + a :Unit ; + bamm:name "shannonPerSecond" ; + bamm:preferredName "shannon per second"@en ; + :commonCode "Q17" ; + :conversionFactor "Sh/s" ; + :symbol "Sh/s" . + +:shares + a :Unit ; + bamm:name "shares" ; + bamm:preferredName "shares"@en ; + :commonCode "E21" . + +:shipment + a :Unit ; + bamm:name "shipment" ; + bamm:preferredName "shipment"@en ; + :commonCode "SX" . + +:shot + a :Unit ; + bamm:name "shot" ; + bamm:preferredName "shot"@en ; + :commonCode "14" . + +:siderealYear + a :Unit ; + bamm:name "siderealYear" ; + bamm:preferredName "sidereal year"@en ; + :commonCode "L96" ; + :conversionFactor "3.155815 × 10⁷ s" ; + :numericConversionFactor "3.155815E7"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "y (sidereal)" . + +:siemens + a :Unit ; + bamm:name "siemens" ; + bamm:preferredName "siemens"@en ; + :commonCode "SIE" ; + :conversionFactor "A/V" ; + :quantityKind :admittance, :complexAdmittance, :conductanceForAlternatingCurrent, :conductanceForDirectCurrent, :modulusOfAdmittance ; + :symbol "S" . + +:siemensPerCentimetre + a :Unit ; + bamm:name "siemensPerCentimetre" ; + bamm:preferredName "siemens per centimetre"@en ; + :commonCode "H43" ; + :conversionFactor "10² S/m" ; + :numericConversionFactor "100.0"^^xsd:double ; + :quantityKind :conductivity ; + :referenceUnit :siemensPerMetre ; + :symbol "S/cm" . + +:siemensPerMetre + a :Unit ; + bamm:name "siemensPerMetre" ; + bamm:preferredName "siemens per metre"@en ; + :commonCode "D10" ; + :conversionFactor "S/m" ; + :quantityKind :conductivity, :electrolyticConductivity ; + :symbol "S/m" . + +:siemensSquareMetrePerMole + a :Unit ; + bamm:name "siemensSquareMetrePerMole" ; + bamm:preferredName "siemens square metre per mole"@en ; + :commonCode "D12" ; + :conversionFactor "S × m²/mol" ; + :quantityKind :molarConductivity ; + :symbol "S·m²/mol" . + +:sievert + a :Unit ; + bamm:name "sievert" ; + bamm:preferredName "sievert"@en ; + :commonCode "D13" ; + :conversionFactor "m²/s²" ; + :quantityKind :doseEquivalent ; + :symbol "Sv" . + +:sievertPerHour + a :Unit ; + bamm:name "sievertPerHour" ; + bamm:preferredName "sievert per hour"@en ; + :commonCode "P70" ; + :conversionFactor "2.77778 × 10⁻⁴ Sv/s" ; + :numericConversionFactor "2.77778E-4"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "Sv/h" . + +:sievertPerMinute + a :Unit ; + bamm:name "sievertPerMinute" ; + bamm:preferredName "sievert per minute"@en ; + :commonCode "P74" ; + :conversionFactor "0.016666 Sv/s" ; + :numericConversionFactor "0.016666"^^xsd:double ; + :quantityKind :equivalenceDoseOutput ; + :referenceUnit :sievertPerSecond ; + :symbol "Sv/min" . + +:sievertPerSecond + a :Unit ; + bamm:name "sievertPerSecond" ; + bamm:preferredName "sievert per second"@en ; + :commonCode "P65" ; + :conversionFactor "Sv/s" ; + :quantityKind :equivalenceDoseOutput ; + :symbol "Sv/s" . + +:sitas + a :Unit ; + bamm:name "sitas" ; + bamm:preferredName "sitas"@en ; + :commonCode "56" . + +:skein + a :Unit ; + bamm:name "skein" ; + bamm:preferredName "skein"@en ; + :commonCode "SW" . + +:slug + a :Unit ; + bamm:name "slug" ; + bamm:preferredName "slug"@en ; + :commonCode "F13" ; + :conversionFactor "1.459390 × 10¹ kg" ; + :numericConversionFactor "14.5939"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "slug" . + +:slugPerCubicFoot + a :Unit ; + bamm:name "slugPerCubicFoot" ; + bamm:preferredName "slug per cubic foot"@en ; + :commonCode "L65" ; + :conversionFactor "5.153788 × 10² kg/m³" ; + :numericConversionFactor "515.3788"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "slug/ft³" . + +:slugPerDay + a :Unit ; + bamm:name "slugPerDay" ; + bamm:preferredName "slug per day"@en ; + :commonCode "L63" ; + :conversionFactor "1.689109 × 10⁻⁴ kg/s" ; + :numericConversionFactor "1.689109E-4"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "slug/d" . + +:slugPerFootSecond + a :Unit ; + bamm:name "slugPerFootSecond" ; + bamm:preferredName "slug per foot second"@en ; + :commonCode "L64" ; + :conversionFactor "47.88026 Pa × s" ; + :numericConversionFactor "47.88026"^^xsd:double ; + :quantityKind :viscosityDynamicViscosity ; + :referenceUnit :pascalSecond ; + :symbol "slug/(ft·s)" . + +:slugPerHour + a :Unit ; + bamm:name "slugPerHour" ; + bamm:preferredName "slug per hour"@en ; + :commonCode "L66" ; + :conversionFactor "4.053861 × 10⁻³ kg/s" ; + :numericConversionFactor "0.004053861"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "slug/h" . + +:slugPerMinute + a :Unit ; + bamm:name "slugPerMinute" ; + bamm:preferredName "slug per minute"@en ; + :commonCode "L67" ; + :conversionFactor "0.2432317 kg/s" ; + :numericConversionFactor "0.2432317"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "slug/min" . + +:slugPerSecond + a :Unit ; + bamm:name "slugPerSecond" ; + bamm:preferredName "slug per second"@en ; + :commonCode "L68" ; + :conversionFactor "14.59390 kg/s" ; + :numericConversionFactor "14.5939"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "slug/s" . + +:sone + a :Unit ; + bamm:name "sone" ; + bamm:preferredName "sone"@en ; + :commonCode "D15" ; + :quantityKind :loudness . + +:square + a :Unit ; + bamm:name "square" ; + bamm:preferredName "square"@en ; + :commonCode "SQ" . + +:squareCentimetre + a :Unit ; + bamm:name "squareCentimetre" ; + bamm:preferredName "square centimetre"@en ; + :commonCode "CMK" ; + :conversionFactor "10⁻⁴ m²" ; + :numericConversionFactor "1.0E-4"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "cm²" . + +:squareCentimetrePerErg + a :Unit ; + bamm:name "squareCentimetrePerErg" ; + bamm:preferredName "square centimetre per erg"@en ; + :commonCode "D16" ; + :conversionFactor "10³ m²/J" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :spectralCrossSection ; + :referenceUnit :squareMetrePerJoule ; + :symbol "cm²/erg" . + +:squareCentimetrePerGram + a :Unit ; + bamm:name "squareCentimetrePerGram" ; + bamm:preferredName "square centimetre per gram"@en ; + :commonCode "H15" ; + :conversionFactor "10⁻¹ kg⁻¹ × m²" ; + :quantityKind :massicVolume, :specificVolume ; + :symbol "cm²/g" . + +:squareCentimetrePerSecond + a :Unit ; + bamm:name "squareCentimetrePerSecond" ; + bamm:preferredName "square centimetre per second"@en ; + :commonCode "M81" ; + :conversionFactor "10⁻⁴ m²/s" ; + :numericConversionFactor "1.0E-4"^^xsd:double ; + :quantityKind :kinematicViscosity ; + :referenceUnit :squareMetrePerSecond ; + :symbol "cm²/s" . + +:squareCentimetrePerSteradianErg + a :Unit ; + bamm:name "squareCentimetrePerSteradianErg" ; + bamm:preferredName "square centimetre per steradian erg"@en ; + :commonCode "D17" ; + :conversionFactor "10³ m²/(sr × J)" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :spectralAngularCrossSection ; + :referenceUnit :squareMetrePerSteradianJoule ; + :symbol "cm²/(sr·erg)" . + +:squareDecametre + a :Unit ; + bamm:name "squareDecametre" ; + bamm:preferredName "square decametre"@en ; + :commonCode "H16" ; + :conversionFactor "10² m²" ; + :numericConversionFactor "100.0"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "dam²" . + +:squareDecimetre + a :Unit ; + bamm:name "squareDecimetre" ; + bamm:preferredName "square decimetre"@en ; + :commonCode "DMK" ; + :conversionFactor "10⁻² m²" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "dm²" . + +:squareFoot + a :Unit ; + bamm:name "squareFoot" ; + bamm:preferredName "square foot"@en ; + :commonCode "FTK" ; + :conversionFactor "9.290304 × 10⁻² m²" ; + :numericConversionFactor "0.09290304"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "ft²" . + +:squareFootPerHour + a :Unit ; + bamm:name "squareFootPerHour" ; + bamm:preferredName "square foot per hour"@en ; + :commonCode "M79" ; + :conversionFactor "2.58064 × 10⁻⁵ m²/s" ; + :numericConversionFactor "2.58064E-5"^^xsd:double ; + :quantityKind :kinematicViscosity ; + :referenceUnit :squareMetrePerSecond ; + :symbol "ft²/h" . + +:squareFootPerSecond + a :Unit ; + bamm:name "squareFootPerSecond" ; + bamm:preferredName "square foot per second"@en ; + :commonCode "S3" ; + :conversionFactor "0.09290304 m²/s" ; + :numericConversionFactor "0.09290304"^^xsd:double ; + :quantityKind :kinematicViscosity, :thermalDiffusivity ; + :referenceUnit :squareMetrePerSecond ; + :symbol "ft²/s" . + +:squareHectometre + a :Unit ; + bamm:name "squareHectometre" ; + bamm:preferredName "square hectometre"@en ; + :commonCode "H18" ; + :conversionFactor "10⁴ m²" ; + :numericConversionFactor "10000.0"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "hm²" . + +:squareInch + a :Unit ; + bamm:name "squareInch" ; + bamm:preferredName "square inch"@en ; + :commonCode "INK" ; + :conversionFactor "6.4516 × 10⁻⁴ m²" ; + :numericConversionFactor "6.4516E-4"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "in²" . + +:squareInchPerSecond + a :Unit ; + bamm:name "squareInchPerSecond" ; + bamm:preferredName "square inch per second"@en ; + :commonCode "G08" ; + :conversionFactor "6.4516 × 10⁻⁴ m² × s⁻¹" ; + :quantityKind :kinematicViscosity ; + :symbol "in²/s" . + +:squareKilometre + a :Unit ; + bamm:name "squareKilometre" ; + bamm:preferredName "square kilometre"@en ; + :commonCode "KMK" ; + :conversionFactor "10⁶ m²" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "km²" . + +:squareMetre + a :Unit ; + bamm:name "squareMetre" ; + bamm:preferredName "square metre"@en ; + :commonCode "MTK" ; + :conversionFactor "m²" ; + :quantityKind :area, :atomicAttenuationCoefficient, :crossSection, :diffusionArea, :equivalentAbsorptionAreaOfASurfaceOrObject, :migrationArea, :nuclearQuadrupoleMoment, :slowingDownArea ; + :symbol "m²" . + +:squareMetreHourDegreeCelsiusPerKilocalorieInternationalTable + a :Unit ; + bamm:name "squareMetreHourDegreeCelsiusPerKilocalorieInternationalTable" ; + bamm:preferredName "square metre hour degree Celsius per kilocalorie (international table)"@en ; + :commonCode "L14" ; + :conversionFactor "0.8598452 m² × s × K/J" ; + :quantityKind :coefficientOfThermalInsulation, :thermalInsulance ; + :symbol "m²·h·°C/kcal" . + +:squareMetreKelvinPerWatt + a :Unit ; + bamm:name "squareMetreKelvinPerWatt" ; + bamm:preferredName "square metre kelvin per watt"@en ; + :commonCode "D19" ; + :conversionFactor "m² × K/W" ; + :quantityKind :coefficientOfThermalInsulation, :thermalInsulance ; + :symbol "m²·K/W" . + +:squareMetrePerJoule + a :Unit ; + bamm:name "squareMetrePerJoule" ; + bamm:preferredName "square metre per joule"@en ; + :commonCode "D20" ; + :conversionFactor "m²/J" ; + :quantityKind :spectralCrossSection ; + :symbol "m²/J" . + +:squareMetrePerKilogram + a :Unit ; + bamm:name "squareMetrePerKilogram" ; + bamm:preferredName "square metre per kilogram"@en ; + :commonCode "D21" ; + :conversionFactor "m²/kg" ; + :quantityKind :massAttenuationCoefficient, :massEnergyTransferCoefficient ; + :symbol "m²/kg" . + +:squareMetrePerLitre + a :Unit ; + bamm:name "squareMetrePerLitre" ; + bamm:preferredName "square metre per litre"@en ; + :commonCode "E31" ; + :symbol "m²/l" . + +:squareMetrePerMole + a :Unit ; + bamm:name "squareMetrePerMole" ; + bamm:preferredName "square metre per mole"@en ; + :commonCode "D22" ; + :conversionFactor "m²/mol" ; + :quantityKind :molarAbsorptionCoefficient, :molarAttenuationCoefficient ; + :symbol "m²/mol" . + +:squareMetrePerNewton + a :Unit ; + bamm:name "squareMetrePerNewton" ; + bamm:preferredName "square metre per newton"@en ; + :commonCode "H59" ; + :conversionFactor "m × kg⁻¹ × s²" ; + :quantityKind :area ; + :symbol "m²/N" . + +:squareMetrePerSecond + a :Unit ; + bamm:name "squareMetrePerSecond" ; + bamm:preferredName "square metre per second"@en ; + :commonCode "S4" ; + :conversionFactor "m²/s" ; + :quantityKind :diffusionCoefficient, :diffusionCoefficientForNeutronNumberDensity, :kinematicViscosity, :thermalDiffusionCoefficient, :thermalDiffusivity ; + :symbol "m²/s" . + +:squareMetrePerSecondBar + a :Unit ; + bamm:name "squareMetrePerSecondBar" ; + bamm:preferredName "square metre per second bar"@en ; + :commonCode "G41" ; + :conversionFactor "10⁻⁵ kg⁻¹ × m³ × s" ; + :quantityKind :kinematicViscosity ; + :symbol "m²/(s·bar)" . + +:squareMetrePerSecondKelvin + a :Unit ; + bamm:name "squareMetrePerSecondKelvin" ; + bamm:preferredName "square metre per second kelvin"@en ; + :commonCode "G09" ; + :conversionFactor "m² × s⁻¹ × K⁻¹" ; + :quantityKind :kinematicViscosity ; + :symbol "m²/(s·K)" . + +:squareMetrePerSecondPascal + a :Unit ; + bamm:name "squareMetrePerSecondPascal" ; + bamm:preferredName "square metre per second pascal"@en ; + :commonCode "M82" ; + :conversionFactor "kg⁻¹ × m³ × s" ; + :quantityKind :kinematicViscosity ; + :symbol "(m²/s)/Pa" . + +:squareMetrePerSteradian + a :Unit ; + bamm:name "squareMetrePerSteradian" ; + bamm:preferredName "square metre per steradian"@en ; + :commonCode "D24" ; + :conversionFactor "m²/sr" ; + :quantityKind :angularCrossSection ; + :symbol "m²/sr" . + +:squareMetrePerSteradianJoule + a :Unit ; + bamm:name "squareMetrePerSteradianJoule" ; + bamm:preferredName "square metre per steradian joule"@en ; + :commonCode "D25" ; + :conversionFactor "m²/(sr × J)" ; + :quantityKind :spectralAngularCrossSection ; + :symbol "m²/(sr·J)" . + +:squareMetrePerVoltSecond + a :Unit ; + bamm:name "squareMetrePerVoltSecond" ; + bamm:preferredName "square metre per volt second"@en ; + :commonCode "D26" ; + :conversionFactor "m²/(V × s)" ; + :quantityKind :mobility ; + :symbol "m²/(V·s)" . + +:squareMicrometreSquareMicron + a :Unit ; + bamm:name "squareMicrometreSquareMicron" ; + bamm:preferredName "square micrometre (square micron)"@en ; + :commonCode "H30" ; + :conversionFactor "10⁻¹² m²" ; + :numericConversionFactor "1.0E-12"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "µm²" . + +:squareMileBasedOnUsSurveyFoot + a :Unit ; + bamm:name "squareMileBasedOnUsSurveyFoot" ; + bamm:preferredName "square mile (based on U.S. survey foot)"@en ; + :commonCode "M48" ; + :conversionFactor "2.589998 × 10⁶ m²" ; + :numericConversionFactor "2589998.0"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "mi² (US survey)" . + +:squareMileStatuteMile + a :Unit ; + bamm:name "squareMileStatuteMile" ; + bamm:preferredName "square mile (statute mile)"@en ; + :commonCode "MIK" ; + :conversionFactor "2.589988 km²" ; + :numericConversionFactor "2.589988"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareKilometre ; + :symbol "mi²" . + +:squareMillimetre + a :Unit ; + bamm:name "squareMillimetre" ; + bamm:preferredName "square millimetre"@en ; + :commonCode "MMK" ; + :conversionFactor "10⁻⁶ m²" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "mm²" . + +:squareRoofing + a :Unit ; + bamm:name "squareRoofing" ; + bamm:preferredName "square, roofing"@en ; + :commonCode "SQR" . + +:squareYard + a :Unit ; + bamm:name "squareYard" ; + bamm:preferredName "square yard"@en ; + :commonCode "YDK" ; + :conversionFactor "8.361274 × 10⁻¹ m²" ; + :numericConversionFactor "0.8361274"^^xsd:double ; + :quantityKind :area ; + :referenceUnit :squareMetre ; + :symbol "yd²" . + +:standard + a :Unit ; + bamm:name "standard" ; + bamm:preferredName "standard"@en ; + :commonCode "WSD" ; + :conversionFactor "4.672 m³" ; + :numericConversionFactor "4.672"^^xsd:double ; + :referenceUnit :cubicMetre ; + :symbol "std" . + +:standardAccelerationOfFreeFall + a :Unit ; + bamm:name "standardAccelerationOfFreeFall" ; + bamm:preferredName "standard acceleration of free fall"@en ; + :commonCode "K40" ; + :conversionFactor "9.80665 m/s²" ; + :numericConversionFactor "9.80665"^^xsd:double ; + :quantityKind :acceleration, :accelerationDueToGravity, :accelerationOfFreeFall ; + :referenceUnit :metrePerSecondSquared ; + :symbol "gn" . + +:standardAtmosphere + a :Unit ; + bamm:name "standardAtmosphere" ; + bamm:preferredName "standard atmosphere"@en ; + :commonCode "ATM" ; + :conversionFactor "101325 Pa" ; + :numericConversionFactor "101325.0"^^xsd:double ; + :quantityKind :bulkModulus, :modulusOfCompression, :modulusOfElasticity, :modulusOfRigidity, :normalStress, :pressure, :shearModulus, :shearStress ; + :referenceUnit :pascal ; + :symbol "atm" . + +:standardAtmospherePerMetre + a :Unit ; + bamm:name "standardAtmospherePerMetre" ; + bamm:preferredName "standard atmosphere per metre"@en ; + :commonCode "P83" ; + :conversionFactor "1.01325 × 10⁵ kg/(m² × s²)" ; + :quantityKind :hardnessIndex ; + :symbol "Atm/m" . + +:standardKilolitre + a :Unit ; + bamm:name "standardKilolitre" ; + bamm:preferredName "standard kilolitre"@en ; + :commonCode "DMO" . + +:standardLitre + a :Unit ; + bamm:name "standardLitre" ; + bamm:preferredName "standard litre"@en ; + :commonCode "STL" . + +:steradian + a :Unit ; + bamm:name "steradian" ; + bamm:preferredName "steradian"@en ; + :commonCode "D27" ; + :conversionFactor "sr" ; + :quantityKind :solidAngle ; + :symbol "sr" . + +:stere + a :Unit ; + bamm:name "stere" ; + bamm:preferredName "stere"@en ; + :commonCode "G26" ; + :conversionFactor "m³" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "st" . + +:stick + a :Unit ; + bamm:name "stick" ; + bamm:preferredName "stick"@en ; + :commonCode "STC" . + +:stickCigarette + a :Unit ; + bamm:name "stickCigarette" ; + bamm:preferredName "stick, cigarette"@en ; + :commonCode "STK" . + +:stickMilitary + a :Unit ; + bamm:name "stickMilitary" ; + bamm:preferredName "stick, military"@en ; + :commonCode "15" . + +:stilb + a :Unit ; + bamm:name "stilb" ; + bamm:preferredName "stilb"@en ; + :commonCode "P31" ; + :conversionFactor "10⁴ cd/m²" ; + :numericConversionFactor "10000.0"^^xsd:double ; + :quantityKind :luminance ; + :referenceUnit :candelaPerSquareMetre ; + :symbol "sb" . + +:stokes + a :Unit ; + bamm:name "stokes" ; + bamm:preferredName "stokes"@en ; + :commonCode "91" ; + :conversionFactor "10⁻⁴ m²/s" ; + :numericConversionFactor "1.0E-4"^^xsd:double ; + :quantityKind :kinematicViscosity ; + :referenceUnit :squareMetrePerSecond ; + :symbol "St" . + +:stokesPerBar + a :Unit ; + bamm:name "stokesPerBar" ; + bamm:preferredName "stokes per bar"@en ; + :commonCode "G46" ; + :conversionFactor "10⁻⁹ kg⁻¹ × m³ × s" ; + :quantityKind :kinematicViscosity ; + :symbol "St/bar" . + +:stokesPerKelvin + a :Unit ; + bamm:name "stokesPerKelvin" ; + bamm:preferredName "stokes per kelvin"@en ; + :commonCode "G10" ; + :conversionFactor "10⁻⁴ m² × s⁻¹ × K⁻¹" ; + :quantityKind :kinematicViscosity ; + :symbol "St/K" . + +:stokesPerPascal + a :Unit ; + bamm:name "stokesPerPascal" ; + bamm:preferredName "stokes per pascal"@en ; + :commonCode "M80" ; + :conversionFactor "10⁻⁴ kg⁻¹ × m³ × s" ; + :quantityKind :kinematicViscosity ; + :symbol "St/Pa" . + +:stoneUk + a :Unit ; + bamm:name "stoneUk" ; + bamm:preferredName "stone (UK)"@en ; + :commonCode "STI" ; + :conversionFactor "6.350293 kg" ; + :numericConversionFactor "6.350293"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "st" . + +:strand + a :Unit ; + bamm:name "strand" ; + bamm:preferredName "strand"@en ; + :commonCode "E30" . + +:straw + a :Unit ; + bamm:name "straw" ; + bamm:preferredName "straw"@en ; + :commonCode "STW" . + +:strip + a :Unit ; + bamm:name "strip" ; + bamm:preferredName "strip"@en ; + :commonCode "SR" . + +:syringe + a :Unit ; + bamm:name "syringe" ; + bamm:preferredName "syringe"@en ; + :commonCode "SYR" . + +:tablespoonUs + a :Unit ; + bamm:name "tablespoonUs" ; + bamm:preferredName "tablespoon (US)"@en ; + :commonCode "G24" ; + :conversionFactor "1.478676 × 10⁻⁵ m³" ; + :numericConversionFactor "1.478676E-5"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "tablespoon (US)" . + +:tablet + a :Unit ; + bamm:name "tablet" ; + bamm:preferredName "tablet"@en ; + :commonCode "U2" . + +:teaspoonUs + a :Unit ; + bamm:name "teaspoonUs" ; + bamm:preferredName "teaspoon (US)"@en ; + :commonCode "G25" ; + :conversionFactor "4.928922 × 10⁻⁶ m³" ; + :numericConversionFactor "4.928922E-6"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "teaspoon (US)" . + +:tebibitPerCubicMetre + a :Unit ; + bamm:name "tebibitPerCubicMetre" ; + bamm:preferredName "tebibit per cubic metre"@en ; + :commonCode "E86" ; + :symbol "Tibit/m³" . + +:tebibitPerMetre + a :Unit ; + bamm:name "tebibitPerMetre" ; + bamm:preferredName "tebibit per metre"@en ; + :commonCode "E85" ; + :symbol "Tibit/m" . + +:tebibitPerSquareMetre + a :Unit ; + bamm:name "tebibitPerSquareMetre" ; + bamm:preferredName "tebibit per square metre"@en ; + :commonCode "E87" ; + :symbol "Tibit/m²" . + +:tebibyte + a :Unit ; + bamm:name "tebibyte" ; + bamm:preferredName "Tebibyte"@en ; + :commonCode "E61" ; + :conversionFactor "2⁴⁰ B" ; + :numericConversionFactor "1099511627776.0"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "TiB" . + +:technicalAtmospherePerMetre + a :Unit ; + bamm:name "technicalAtmospherePerMetre" ; + bamm:preferredName "technical atmosphere per metre"@en ; + :commonCode "P84" ; + :conversionFactor "9.80665 × 10⁴ kg/(m² × s²)" ; + :quantityKind :hardnessIndex ; + :symbol "at/m" . + +:telecommunicationLineInService + a :Unit ; + bamm:name "telecommunicationLineInService" ; + bamm:preferredName "telecommunication line in service"@en ; + :commonCode "T0" . + +:telecommunicationLineInServiceAverage + a :Unit ; + bamm:name "telecommunicationLineInServiceAverage" ; + bamm:preferredName "telecommunication line in service average"@en ; + :commonCode "UB" . + +:telecommunicationPort + a :Unit ; + bamm:name "telecommunicationPort" ; + bamm:preferredName "telecommunication port"@en ; + :commonCode "UC" . + +:tenDay + a :Unit ; + bamm:name "tenDay" ; + bamm:preferredName "ten day"@en ; + :commonCode "DAD" . + +:tenPack + a :Unit ; + bamm:name "tenPack" ; + bamm:preferredName "ten pack"@en ; + :commonCode "TP" . + +:tenPair + a :Unit ; + bamm:name "tenPair" ; + bamm:preferredName "ten pair"@en ; + :commonCode "TPR" . + +:tenSet + a :Unit ; + bamm:name "tenSet" ; + bamm:preferredName "ten set"@en ; + :commonCode "TST" . + +:tenThousandSticks + a :Unit ; + bamm:name "tenThousandSticks" ; + bamm:preferredName "ten thousand sticks"@en ; + :commonCode "TTS" . + +:terabit + a :Unit ; + bamm:name "terabit" ; + bamm:preferredName "terabit"@en ; + :commonCode "E83" ; + :symbol "Tbit" . + +:terabitPerSecond + a :Unit ; + bamm:name "terabitPerSecond" ; + bamm:preferredName "terabit per second"@en ; + :commonCode "E84" ; + :symbol "Tbit/s" . + +:terabyte + a :Unit ; + bamm:name "terabyte" ; + bamm:preferredName "terabyte"@en ; + :commonCode "E35" ; + :conversionFactor "10¹² B" ; + :numericConversionFactor "1.0E12"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "TB" . + +:terahertz + a :Unit ; + bamm:name "terahertz" ; + bamm:preferredName "terahertz"@en ; + :commonCode "D29" ; + :conversionFactor "10¹² Hz" ; + :numericConversionFactor "1.0E12"^^xsd:double ; + :quantityKind :frequency ; + :referenceUnit :hertz ; + :symbol "THz" . + +:terajoule + a :Unit ; + bamm:name "terajoule" ; + bamm:preferredName "terajoule"@en ; + :commonCode "D30" ; + :conversionFactor "10¹² J" ; + :numericConversionFactor "1.0E12"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "TJ" . + +:teraohm + a :Unit ; + bamm:name "teraohm" ; + bamm:preferredName "teraohm"@en ; + :commonCode "H44" ; + :conversionFactor "10¹² Ω" ; + :numericConversionFactor "1.0E12"^^xsd:double ; + :quantityKind :complexImpedances, :impedance, :modulusOfImpedance, :reactance, :resistanceToAlternatingCurrent, :resistanceToDirectCurrent ; + :referenceUnit :ohm ; + :symbol "TΩ" . + +:terawatt + a :Unit ; + bamm:name "terawatt" ; + bamm:preferredName "terawatt"@en ; + :commonCode "D31" ; + :conversionFactor "10¹² W" ; + :numericConversionFactor "1.0E12"^^xsd:double ; + :quantityKind :activePower, :powerForDirectCurrent ; + :referenceUnit :watt ; + :symbol "TW" . + +:terawattHour + a :Unit ; + bamm:name "terawattHour" ; + bamm:preferredName "terawatt hour"@en ; + :commonCode "D32" ; + :conversionFactor "3.6 × 10¹⁵ J" ; + :numericConversionFactor "3.6E15"^^xsd:double ; + :quantityKind :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "TW·h" . + +:tesla + a :Unit ; + bamm:name "tesla" ; + bamm:preferredName "tesla"@en ; + :commonCode "D33" ; + :conversionFactor "T" ; + :quantityKind :lowerCriticalMagneticFluxDensity, :magneticFluxDensity, :magneticInduction, :magneticPolarization, :thermodynamicCriticalMagneticFluxDensity, :upperCriticalMagneticFluxDensity ; + :symbol "T" . + +:test + a :Unit ; + bamm:name "test" ; + bamm:preferredName "test"@en ; + :commonCode "E53" . + +:teu + a :Unit ; + bamm:name "teu" ; + bamm:preferredName "TEU"@en ; + :commonCode "E22" . + +:tex + a :Unit ; + bamm:name "tex" ; + bamm:preferredName "tex"@en ; + :commonCode "D34" ; + :conversionFactor "10⁻⁶ kg/m" ; + :numericConversionFactor "1.0E-6"^^xsd:double ; + :referenceUnit :kilogramPerMetre ; + :symbol "tex (g/km)" . + +:theoreticalPound + a :Unit ; + bamm:name "theoreticalPound" ; + bamm:preferredName "theoretical pound"@en ; + :commonCode "24" . + +:theoreticalTon + a :Unit ; + bamm:name "theoreticalTon" ; + bamm:preferredName "theoretical ton"@en ; + :commonCode "27" . + +:thermEc + a :Unit ; + bamm:name "thermEc" ; + bamm:preferredName "therm (EC)"@en ; + :commonCode "N71" ; + :conversionFactor "1.05506 × 10⁸ J" ; + :numericConversionFactor "1.05506E8"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "thm (EC)" . + +:thermUs + a :Unit ; + bamm:name "thermUs" ; + bamm:preferredName "therm (U.S.)"@en ; + :commonCode "N72" ; + :conversionFactor "1.054804 × 10⁸ J" ; + :numericConversionFactor "1.054804E8"^^xsd:double ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :referenceUnit :joule ; + :symbol "thm (US)" . + +:thirtyDayMonth + a :Unit ; + bamm:name "thirtyDayMonth" ; + bamm:preferredName "30-day month"@en ; + :commonCode "M36" ; + :conversionFactor "2.592000 × 10⁶ s" ; + :numericConversionFactor "2592000.0"^^xsd:double ; + :referenceUnit :secondUnitOfTime ; + :symbol "mo (30 days)" . + +:thousand + a :Unit ; + bamm:name "thousand" ; + bamm:preferredName "thousand"@en ; + :commonCode "MIL" ; + :conversionFactor "10³" . + +:thousandBoardFoot + a :Unit ; + bamm:name "thousandBoardFoot" ; + bamm:preferredName "thousand board foot"@en ; + :commonCode "MBF" . + +:thousandCubicFoot + a :Unit ; + bamm:name "thousandCubicFoot" ; + bamm:preferredName "thousand cubic foot"@en ; + :commonCode "FC" ; + :symbol "kft³" . + +:thousandCubicMetre + a :Unit ; + bamm:name "thousandCubicMetre" ; + bamm:preferredName "thousand cubic metre"@en ; + :commonCode "R9" ; + :conversionFactor "10³m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :referenceUnit :cubicMetre . + +:thousandCubicMetrePerDay + a :Unit ; + bamm:name "thousandCubicMetrePerDay" ; + bamm:preferredName "thousand cubic metre per day"@en ; + :commonCode "TQD" ; + :conversionFactor "1.15741 × 10⁻² m³/s" ; + :numericConversionFactor "0.0115741"^^xsd:double ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "km³/d" . + +:thousandPiece + a :Unit ; + bamm:name "thousandPiece" ; + bamm:preferredName "thousand piece"@en ; + :commonCode "T3" . + +:thousandSquareInch + a :Unit ; + bamm:name "thousandSquareInch" ; + bamm:preferredName "thousand square inch"@en ; + :commonCode "TI" . + +:thousandStandardBrickEquivalent + a :Unit ; + bamm:name "thousandStandardBrickEquivalent" ; + bamm:preferredName "thousand standard brick equivalent"@en ; + :commonCode "MBE" . + +:tonAssay + a :Unit ; + bamm:name "tonAssay" ; + bamm:preferredName "ton, assay"@en ; + :commonCode "M85" ; + :conversionFactor "2.916667 × 10⁻² kg" ; + :numericConversionFactor "0.02916667"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram . + +:tonForceUsShort + a :Unit ; + bamm:name "tonForceUsShort" ; + bamm:preferredName "ton-force (US short)"@en ; + :commonCode "L94" ; + :conversionFactor "8.896443 × 10³ N" ; + :numericConversionFactor "8896.443"^^xsd:double ; + :quantityKind :force, :weight ; + :referenceUnit :newton ; + :symbol "ton.sh-force" . + +:tonLongPerDay + a :Unit ; + bamm:name "tonLongPerDay" ; + bamm:preferredName "ton long per day"@en ; + :commonCode "L85" ; + :conversionFactor "1.175980 × 10⁻² kg/s" ; + :numericConversionFactor "0.0117598"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "ton (UK)/d" . + +:tonRegister + a :Unit ; + bamm:name "tonRegister" ; + bamm:preferredName "ton, register"@en ; + :commonCode "M70" ; + :conversionFactor "2.831685 m³" ; + :numericConversionFactor "2.831685"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "RT" . + +:tonShortPerDay + a :Unit ; + bamm:name "tonShortPerDay" ; + bamm:preferredName "ton short per day"@en ; + :commonCode "L88" ; + :conversionFactor "1.049982 × 10⁻² kg/s" ; + :numericConversionFactor "0.01049982"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "ton (US)/d" . + +:tonShortPerDegreeFahrenheit + a :Unit ; + bamm:name "tonShortPerDegreeFahrenheit" ; + bamm:preferredName "ton short per degree Fahrenheit"@en ; + :commonCode "L87" ; + :conversionFactor "1.632932 × 10³ kg/K" ; + :numericConversionFactor "1632.932"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogramPerKelvin ; + :symbol "ton (US)/°F" . + +:tonShortPerHourDegreeFahrenheit + a :Unit ; + bamm:name "tonShortPerHourDegreeFahrenheit" ; + bamm:preferredName "ton short per hour degree Fahrenheit"@en ; + :commonCode "L89" ; + :conversionFactor "0.4535922 kg/s × K" ; + :quantityKind :massFlowRate ; + :symbol "ton (US)/(h·°F)" . + +:tonShortPerHourPsi + a :Unit ; + bamm:name "tonShortPerHourPsi" ; + bamm:preferredName "ton short per hour psi"@en ; + :commonCode "L90" ; + :conversionFactor "3.654889 × 10⁻⁵ (kg/s)/Pa" ; + :numericConversionFactor "3.654889E-5"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecondPascal ; + :symbol "(ton (US)/h)/psi" . + +:tonShortPerPsi + a :Unit ; + bamm:name "tonShortPerPsi" ; + bamm:preferredName "ton short per psi"@en ; + :commonCode "L91" ; + :conversionFactor "0.131576" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "ton (US)/psi" . + +:tonUkLongPerCubicYard + a :Unit ; + bamm:name "tonUkLongPerCubicYard" ; + bamm:preferredName "ton (UK long) per cubic yard"@en ; + :commonCode "L92" ; + :conversionFactor "1.328939 × 10³ kg/m³" ; + :numericConversionFactor "1328.939"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "ton.l/yd³ (UK)" . + +:tonUkOrLongTonUs + a :Unit ; + bamm:name "tonUkOrLongTonUs" ; + bamm:preferredName "ton (UK) or long ton (US)"@en ; + :commonCode "LTN" ; + :conversionFactor "1.016047 × 10³ kg" ; + :numericConversionFactor "1016.047"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "ton (UK)" . + +:tonUkShipping + a :Unit ; + bamm:name "tonUkShipping" ; + bamm:preferredName "ton (UK shipping)"@en ; + :commonCode "L84" ; + :conversionFactor "1.1893 m³" ; + :numericConversionFactor "1.1893"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "British shipping ton" . + +:tonUsOrShortTonUkorus + a :Unit ; + bamm:name "tonUsOrShortTonUkorus" ; + bamm:preferredName "ton (US) or short ton (UK/US)"@en ; + :commonCode "STN" ; + :conversionFactor "0.9071847 × 10³ kg" ; + :numericConversionFactor "907.1847"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "ton (US)" . + +:tonUsPerHour + a :Unit ; + bamm:name "tonUsPerHour" ; + bamm:preferredName "ton (US) per hour"@en ; + :commonCode "4W" ; + :conversionFactor "2.519958 × 10⁻¹ kg/s" ; + :numericConversionFactor "0.2519958"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "ton (US) /h" . + +:tonUsShipping + a :Unit ; + bamm:name "tonUsShipping" ; + bamm:preferredName "ton (US shipping)"@en ; + :commonCode "L86" ; + :conversionFactor "1.1326 m³" ; + :numericConversionFactor "1.1326"^^xsd:double ; + :quantityKind :volume ; + :referenceUnit :cubicMetre ; + :symbol "(US) shipping ton" . + +:tonUsShortPerCubicYard + a :Unit ; + bamm:name "tonUsShortPerCubicYard" ; + bamm:preferredName "ton (US short) per cubic yard"@en ; + :commonCode "L93" ; + :conversionFactor "1.186553 × 10³ kg/m³" ; + :numericConversionFactor "1186.553"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "ton.s/yd³ (US)" . + +:tonneKilometre + a :Unit ; + bamm:name "tonneKilometre" ; + bamm:preferredName "tonne kilometre"@en ; + :commonCode "TKM" ; + :conversionFactor "10⁶ kg × m" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :referenceUnit :kilogramMetre ; + :symbol "t·km" . + +:tonneMetricTon + a :Unit ; + bamm:name "tonneMetricTon" ; + bamm:preferredName "tonne (metric ton)"@en ; + :commonCode "TNE" ; + :conversionFactor "10³ kg" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "t" . + +:tonnePerBar + a :Unit ; + bamm:name "tonnePerBar" ; + bamm:preferredName "tonne per bar"@en ; + :commonCode "L70" ; + :conversionFactor "10⁻² kg/Pa" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerPascal ; + :symbol "t/bar" . + +:tonnePerCubicMetre + a :Unit ; + bamm:name "tonnePerCubicMetre" ; + bamm:preferredName "tonne per cubic metre"@en ; + :commonCode "D41" ; + :conversionFactor "10³ kg/m³" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetre ; + :symbol "t/m³" . + +:tonnePerCubicMetreBar + a :Unit ; + bamm:name "tonnePerCubicMetreBar" ; + bamm:preferredName "tonne per cubic metre bar"@en ; + :commonCode "L77" ; + :conversionFactor "10⁻² (kg/m³)/Pa" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :density, :massDensity, :volumicMass ; + :referenceUnit :kilogramPerCubicMetrePascal ; + :symbol "(t/m³)/bar" . + +:tonnePerCubicMetreKelvin + a :Unit ; + bamm:name "tonnePerCubicMetreKelvin" ; + bamm:preferredName "tonne per cubic metre kelvin"@en ; + :commonCode "L76" ; + :conversionFactor "10³ (kg/m³)/K" ; + :quantityKind :density, :massDensity, :volumicMass ; + :symbol "(t/m³)/K" . + +:tonnePerDay + a :Unit ; + bamm:name "tonnePerDay" ; + bamm:preferredName "tonne per day"@en ; + :commonCode "L71" ; + :conversionFactor "1.15741 × 10⁻² kg/s" ; + :numericConversionFactor "0.0115741"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "t/d" . + +:tonnePerDayBar + a :Unit ; + bamm:name "tonnePerDayBar" ; + bamm:preferredName "tonne per day bar"@en ; + :commonCode "L73" ; + :conversionFactor "1.15741 × 10⁻⁷ (kg/s)/Pa" ; + :numericConversionFactor "1.15741E-7"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecondPascal ; + :symbol "(t/d)/bar" . + +:tonnePerDayKelvin + a :Unit ; + bamm:name "tonnePerDayKelvin" ; + bamm:preferredName "tonne per day kelvin"@en ; + :commonCode "L72" ; + :conversionFactor "1.15741 × 10⁻² (kg/s)/K" ; + :quantityKind :massFlowRate ; + :symbol "(t/d)/K" . + +:tonnePerHour + a :Unit ; + bamm:name "tonnePerHour" ; + bamm:preferredName "tonne per hour"@en ; + :commonCode "E18" ; + :conversionFactor "2.77778 × 10⁻¹ kg/s" ; + :numericConversionFactor "0.277778"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "t/h" . + +:tonnePerHourBar + a :Unit ; + bamm:name "tonnePerHourBar" ; + bamm:preferredName "tonne per hour bar"@en ; + :commonCode "L75" ; + :conversionFactor "2.77778 × 10⁻⁶ (kg/s)/Pa" ; + :numericConversionFactor "2.77778E-6"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecondPascal ; + :symbol "(t/h)/bar" . + +:tonnePerHourKelvin + a :Unit ; + bamm:name "tonnePerHourKelvin" ; + bamm:preferredName "tonne per hour kelvin"@en ; + :commonCode "L74" ; + :conversionFactor "2.77778 × 10⁻¹ (kg/s)/K" ; + :quantityKind :massFlowRate ; + :symbol "(t/h)/K" . + +:tonnePerKelvin + a :Unit ; + bamm:name "tonnePerKelvin" ; + bamm:preferredName "tonne per kelvin"@en ; + :commonCode "L69" ; + :conversionFactor "10³ kg/K" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogramPerKelvin ; + :symbol "t/K" . + +:tonnePerMinute + a :Unit ; + bamm:name "tonnePerMinute" ; + bamm:preferredName "tonne per minute"@en ; + :commonCode "L78" ; + :conversionFactor "16.6667 kg/s" ; + :numericConversionFactor "16.6667"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "t/min" . + +:tonnePerMinuteBar + a :Unit ; + bamm:name "tonnePerMinuteBar" ; + bamm:preferredName "tonne per minute bar"@en ; + :commonCode "L80" ; + :conversionFactor "1.66667 × 10⁻⁴ (kg/s)/Pa" ; + :numericConversionFactor "1.66667E-4"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecondPascal ; + :symbol "(t/min)/bar" . + +:tonnePerMinuteKelvin + a :Unit ; + bamm:name "tonnePerMinuteKelvin" ; + bamm:preferredName "tonne per minute kelvin"@en ; + :commonCode "L79" ; + :conversionFactor "16.6667 (kg/s)/K" ; + :quantityKind :massFlowRate ; + :symbol "(t/min)/K" . + +:tonnePerMonth + a :Unit ; + bamm:name "tonnePerMonth" ; + bamm:preferredName "tonne per month"@en ; + :commonCode "M88" ; + :conversionFactor "3.80257053768 × 10⁻⁴ kg/s" ; + :numericConversionFactor "3.80257053768E-4"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "t/mo" . + +:tonnePerSecond + a :Unit ; + bamm:name "tonnePerSecond" ; + bamm:preferredName "tonne per second"@en ; + :commonCode "L81" ; + :conversionFactor "10³ kg/s" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "t/s" . + +:tonnePerSecondBar + a :Unit ; + bamm:name "tonnePerSecondBar" ; + bamm:preferredName "tonne per second bar"@en ; + :commonCode "L83" ; + :conversionFactor "10⁻² (kg/s)/Pa" ; + :numericConversionFactor "0.01"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecondPascal ; + :symbol "(t/s)/bar" . + +:tonnePerSecondKelvin + a :Unit ; + bamm:name "tonnePerSecondKelvin" ; + bamm:preferredName "tonne per second kelvin"@en ; + :commonCode "L82" ; + :conversionFactor "10³ (kg/s)/K" ; + :quantityKind :massFlowRate ; + :symbol "(t/s)/K" . + +:tonnePerYear + a :Unit ; + bamm:name "tonnePerYear" ; + bamm:preferredName "tonne per year"@en ; + :commonCode "M89" ; + :conversionFactor "3.168808781 × 10⁻⁵ kg/s" ; + :numericConversionFactor "3.168808781E-5"^^xsd:double ; + :quantityKind :massFlowRate ; + :referenceUnit :kilogramPerSecond ; + :symbol "t/y" . + +:torrPerMetre + a :Unit ; + bamm:name "torrPerMetre" ; + bamm:preferredName "torr per metre"@en ; + :commonCode "P85" ; + :conversionFactor "1.333224 × 10² kg/(m² × s²)" ; + :quantityKind :hardnessIndex ; + :symbol "Torr/m" . + +:totalAcidNumber + a :Unit ; + bamm:name "totalAcidNumber" ; + bamm:preferredName "total acid number"@en ; + :commonCode "TAN" ; + :conversionFactor "mg KOH/g" ; + :symbol "TAN" . + +:treatment + a :Unit ; + bamm:name "treatment" ; + bamm:preferredName "treatment"@en ; + :commonCode "U1" . + +:trillionEur + a :Unit ; + bamm:name "trillionEur" ; + bamm:preferredName "trillion (EUR)"@en ; + :commonCode "TRL" ; + :conversionFactor "10¹⁸" . + +:trip + a :Unit ; + bamm:name "trip" ; + bamm:preferredName "trip"@en ; + :commonCode "E54" . + +:tropicalYear + a :Unit ; + bamm:name "tropicalYear" ; + bamm:preferredName "tropical year"@en ; + :commonCode "D42" ; + :conversionFactor "3.155692 5 × 10⁷ s" ; + :numericConversionFactor "3.1556925E7"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "y (tropical)" . + +:troyOunceOrApothecaryOunce + a :Unit ; + bamm:name "troyOunceOrApothecaryOunce" ; + bamm:preferredName "troy ounce or apothecary ounce"@en ; + :commonCode "APZ" ; + :conversionFactor "3.110348 × 10⁻³ kg" ; + :numericConversionFactor "0.003110348"^^xsd:double ; + :quantityKind :mass ; + :referenceUnit :kilogram ; + :symbol "tr oz" . + +:troyPoundUs + a :Unit ; + bamm:name "troyPoundUs" ; + bamm:preferredName "troy pound (US)"@en ; + :commonCode "LBT" ; + :conversionFactor "373.2417 g" ; + :numericConversionFactor "373.2417"^^xsd:double ; + :referenceUnit :gram . + +:twentyFootContainer + a :Unit ; + bamm:name "twentyFootContainer" ; + bamm:preferredName "twenty foot container"@en ; + :commonCode "20" . + +:tyre + a :Unit ; + bamm:name "tyre" ; + bamm:preferredName "tyre"@en ; + :commonCode "E23" . + +:unifiedAtomicMassUnit + a :Unit ; + bamm:name "unifiedAtomicMassUnit" ; + bamm:preferredName "unified atomic mass unit"@en ; + :commonCode "D43" ; + :conversionFactor "1.660 538 782 × 10⁻²⁷ kg" ; + :numericConversionFactor "1.660538782E-27"^^xsd:double ; + :quantityKind :massDefect, :massOfAtomOfANuclideX, :massOfMolecule, :nuclidicMass, :unifiedAtomicMassConstant ; + :referenceUnit :kilogram ; + :symbol "u" . + +:unitPole + a :Unit ; + bamm:name "unitPole" ; + bamm:preferredName "unit pole"@en ; + :commonCode "P53" ; + :conversionFactor "1.256637 × 10⁻⁷ Wb" ; + :numericConversionFactor "1.256637E-7"^^xsd:double ; + :quantityKind :magneticFluxQuantum ; + :referenceUnit :weber ; + :symbol "unit pole" . + +:usGallonPerMinute + a :Unit ; + bamm:name "usGallonPerMinute" ; + bamm:preferredName "US gallon per minute"@en ; + :commonCode "G2" ; + :conversionFactor "6.309020 × 10⁻⁵ m³/s" ; + :numericConversionFactor "6.30902E-5"^^xsd:double ; + :quantityKind :volumeFlowRate ; + :referenceUnit :cubicMetrePerSecond ; + :symbol "gal (US) /min" . + +:use + a :Unit ; + bamm:name "use" ; + bamm:preferredName "use"@en ; + :commonCode "E55" . + +:var + a :Unit ; + bamm:name "var" ; + bamm:preferredName "var"@en ; + :commonCode "D44" ; + :conversionFactor "V × A" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :reactivePower ; + :referenceUnit :voltAmpere ; + :symbol "var" . + +:volt + a :Unit ; + bamm:name "volt" ; + bamm:preferredName "volt"@en ; + :commonCode "VLT" ; + :conversionFactor "V" ; + :quantityKind :electricPotential, :electromotiveForce, :peltierCoefficientForSubstancesAAndB, :potentialDifference, :tension, :thermoelectromotiveForceBetweenSubstancesAAndB, :voltage ; + :symbol "V" . + +:voltAc + a :Unit ; + bamm:name "voltAc" ; + bamm:preferredName "volt AC"@en ; + :commonCode "2G" ; + :conversionFactor "V" ; + :symbol "V" . + +:voltAmpere + a :Unit ; + bamm:name "voltAmpere" ; + bamm:preferredName "volt - ampere"@en ; + :commonCode "D46" ; + :conversionFactor "W" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :apparentPower ; + :referenceUnit :watt ; + :symbol "V·A" . + +:voltAmperePerKilogram + a :Unit ; + bamm:name "voltAmperePerKilogram" ; + bamm:preferredName "volt - ampere per kilogram"@en ; + :commonCode "VA" ; + :conversionFactor "V × A / kg" ; + :symbol "V·A / kg" . + +:voltDc + a :Unit ; + bamm:name "voltDc" ; + bamm:preferredName "volt DC"@en ; + :commonCode "2H" ; + :conversionFactor "V" ; + :symbol "V" . + +:voltPerBar + a :Unit ; + bamm:name "voltPerBar" ; + bamm:preferredName "volt per bar"@en ; + :commonCode "G60" ; + :conversionFactor "10⁻⁵ m³ × s⁻¹ × A⁻¹" ; + :quantityKind :electricFieldStrength ; + :symbol "V/bar" . + +:voltPerCentimetre + a :Unit ; + bamm:name "voltPerCentimetre" ; + bamm:preferredName "volt per centimetre"@en ; + :commonCode "D47" ; + :conversionFactor "V/m × 10²" ; + :quantityKind :electricFieldStrength ; + :symbol "V/cm" . + +:voltPerInch + a :Unit ; + bamm:name "voltPerInch" ; + bamm:preferredName "volt per inch"@en ; + :commonCode "H23" ; + :conversionFactor "3.937007874 × 10¹ m × kg × s⁻³ × A⁻¹" ; + :quantityKind :electricFieldStrength ; + :symbol "V/in" . + +:voltPerKelvin + a :Unit ; + bamm:name "voltPerKelvin" ; + bamm:preferredName "volt per kelvin"@en ; + :commonCode "D48" ; + :conversionFactor "V/K" ; + :quantityKind :seebeckCoefficientForSubstancesAAndB ; + :symbol "V/K" . + +:voltPerLitreMinute + a :Unit ; + bamm:name "voltPerLitreMinute" ; + bamm:preferredName "volt per litre minute"@en ; + :commonCode "F87" ; + :conversionFactor "1.66667 × 10¹ kg × m⁻¹ × s⁻⁴ × A⁻¹" ; + :quantityKind :electricFieldStrength ; + :symbol "V/(l·min)" . + +:voltPerMetre + a :Unit ; + bamm:name "voltPerMetre" ; + bamm:preferredName "volt per metre"@en ; + :commonCode "D50" ; + :conversionFactor "V/m" ; + :quantityKind :electricFieldStrength ; + :symbol "V/m" . + +:voltPerMicrosecond + a :Unit ; + bamm:name "voltPerMicrosecond" ; + bamm:preferredName "volt per microsecond"@en ; + :commonCode "H24" ; + :conversionFactor "10⁶ V/s" ; + :numericConversionFactor "1000000.0"^^xsd:double ; + :quantityKind :electricFieldStrength ; + :referenceUnit :voltPerSecond ; + :symbol "V/µs" . + +:voltPerMillimetre + a :Unit ; + bamm:name "voltPerMillimetre" ; + bamm:preferredName "volt per millimetre"@en ; + :commonCode "D51" ; + :conversionFactor "10³ V/m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :electricFieldStrength ; + :referenceUnit :voltPerMetre ; + :symbol "V/mm" . + +:voltPerPascal + a :Unit ; + bamm:name "voltPerPascal" ; + bamm:preferredName "volt per pascal"@en ; + :commonCode "N98" ; + :conversionFactor "m³ × s⁻¹ × A⁻¹" ; + :quantityKind :electricFieldStrength ; + :symbol "V/Pa" . + +:voltPerSecond + a :Unit ; + bamm:name "voltPerSecond" ; + bamm:preferredName "volt per second"@en ; + :commonCode "H46" ; + :conversionFactor "m² × kg × s⁻⁴ × A⁻¹" ; + :quantityKind :electricFieldStrength ; + :symbol "V/s" . + +:voltSecondPerMetre + a :Unit ; + bamm:name "voltSecondPerMetre" ; + bamm:preferredName "volt second per metre"@en ; + :commonCode "H45" ; + :conversionFactor "m × kg × s⁻² × A⁻¹" ; + :quantityKind :electricFieldStrength ; + :symbol "V·s/m" . + +:voltSquareInchPerPoundForce + a :Unit ; + bamm:name "voltSquareInchPerPoundForce" ; + bamm:preferredName "volt square inch per pound-force"@en ; + :commonCode "H22" ; + :conversionFactor "1.4503774398 × 10⁻⁴ m³ × s⁻¹ × A⁻¹" ; + :quantityKind :electricFieldStrength ; + :symbol "V/(lbf/in²)" . + +:voltSquaredPerKelvinSquared + a :Unit ; + bamm:name "voltSquaredPerKelvinSquared" ; + bamm:preferredName "volt squared per kelvin squared"@en ; + :commonCode "D45" ; + :conversionFactor "V²/K²" ; + :quantityKind :electricFieldStrength ; + :symbol "V²/K²" . + +:waterHorsePower + a :Unit ; + bamm:name "waterHorsePower" ; + bamm:preferredName "water horse power"@en ; + :commonCode "F80" ; + :conversionFactor "7.46043 × 10² W" ; + :numericConversionFactor "746.043"^^xsd:double ; + :quantityKind :power ; + :referenceUnit :watt . + +:watt + a :Unit ; + bamm:name "watt" ; + bamm:preferredName "watt"@en ; + :commonCode "WTT" ; + :conversionFactor "W" ; + :quantityKind :activePower, :heatFlowRate, :power, :powerForDirectCurrent, :radiantEnergyflux, :radiantPower, :soundPower ; + :symbol "W" . + +:wattHour + a :Unit ; + bamm:name "wattHour" ; + bamm:preferredName "watt hour"@en ; + :commonCode "WHR" ; + :conversionFactor "3.6 × 10³ J" ; + :numericConversionFactor "3600.0"^^xsd:double ; + :quantityKind :activeEnergy, :energy, :kineticEnergy, :potentialEnergy, :work ; + :referenceUnit :joule ; + :symbol "W·h" . + +:wattPerCubicMetre + a :Unit ; + bamm:name "wattPerCubicMetre" ; + bamm:preferredName "watt per cubic metre"@en ; + :commonCode "H47" ; + :conversionFactor "m⁻¹ × kg × s⁻³" ; + :quantityKind :firstRadiationConstant, :fluenceRate, :irradiance, :radiantEnergy, :radiantExitance ; + :symbol "W/m³" . + +:wattPerKelvin + a :Unit ; + bamm:name "wattPerKelvin" ; + bamm:preferredName "watt per kelvin"@en ; + :commonCode "D52" ; + :conversionFactor "W/K" ; + :quantityKind :thermalConductance ; + :symbol "W/K" . + +:wattPerKilogram + a :Unit ; + bamm:name "wattPerKilogram" ; + bamm:preferredName "watt per kilogram"@en ; + :commonCode "WA" ; + :conversionFactor "1 W/kg" ; + :symbol "W/kg" . + +:wattPerMetre + a :Unit ; + bamm:name "wattPerMetre" ; + bamm:preferredName "watt per metre"@en ; + :commonCode "H74" ; + :conversionFactor "W m⁻¹" ; + :quantityKind :firstRadiationConstant, :fluenceRate, :irradiance, :radiantEnergy, :radiantExitance ; + :symbol "W/m" . + +:wattPerMetreDegreeCelsius + a :Unit ; + bamm:name "wattPerMetreDegreeCelsius" ; + bamm:preferredName "watt per metre degree Celsius"@en ; + :commonCode "N80" ; + :conversionFactor "W/(m × K)" ; + :numericConversionFactor "1.0"^^xsd:double ; + :quantityKind :thermalConductivity ; + :referenceUnit :wattPerMetreKelvin ; + :symbol "W/(m·°C)" . + +:wattPerMetreKelvin + a :Unit ; + bamm:name "wattPerMetreKelvin" ; + bamm:preferredName "watt per metre kelvin"@en ; + :commonCode "D53" ; + :conversionFactor "W/(m × K)" ; + :quantityKind :thermalConductivity ; + :symbol "W/(m·K)" . + +:wattPerSquareCentimetre + a :Unit ; + bamm:name "wattPerSquareCentimetre" ; + bamm:preferredName "watt per square centimetre"@en ; + :commonCode "N48" ; + :conversionFactor "10⁴ W/m²" ; + :numericConversionFactor "10000.0"^^xsd:double ; + :quantityKind :densityOfHeatFlowRate ; + :referenceUnit :wattPerSquareMetre ; + :symbol "W/cm²" . + +:wattPerSquareInch + a :Unit ; + bamm:name "wattPerSquareInch" ; + bamm:preferredName "watt per square inch"@en ; + :commonCode "N49" ; + :conversionFactor "1.550003 × 10³ W/m²" ; + :numericConversionFactor "1550.003"^^xsd:double ; + :quantityKind :densityOfHeatFlowRate ; + :referenceUnit :wattPerSquareMetre ; + :symbol "W/in²" . + +:wattPerSquareMetre + a :Unit ; + bamm:name "wattPerSquareMetre" ; + bamm:preferredName "watt per square metre"@en ; + :commonCode "D54" ; + :conversionFactor "W/m²" ; + :quantityKind :densityOfHeatFlowRate, :energyFluenceRate, :energyFluxDensity, :firstRadiationConstant, :fluenceRate, :irradiance, :poyntingVector, :radiantEnergy, :radiantExitance, :soundIntensity ; + :symbol "W/m²" . + +:wattPerSquareMetreKelvin + a :Unit ; + bamm:name "wattPerSquareMetreKelvin" ; + bamm:preferredName "watt per square metre kelvin"@en ; + :commonCode "D55" ; + :conversionFactor "W/(m² × K)" ; + :quantityKind :coefficientOfHeatTransfer ; + :symbol "W/(m²·K)" . + +:wattPerSquareMetreKelvinToTheFourthPower + a :Unit ; + bamm:name "wattPerSquareMetreKelvinToTheFourthPower" ; + bamm:preferredName "watt per square metre kelvin to the fourth power"@en ; + :commonCode "D56" ; + :conversionFactor "W/(m² × K⁴)" ; + :quantityKind :stefanBoltzmannConstant ; + :symbol "W/(m²·K⁴)" . + +:wattPerSteradian + a :Unit ; + bamm:name "wattPerSteradian" ; + bamm:preferredName "watt per steradian"@en ; + :commonCode "D57" ; + :conversionFactor "W/sr" ; + :quantityKind :radiantIntensity ; + :symbol "W/sr" . + +:wattPerSteradianSquareMetre + a :Unit ; + bamm:name "wattPerSteradianSquareMetre" ; + bamm:preferredName "watt per steradian square metre"@en ; + :commonCode "D58" ; + :conversionFactor "W/(sr × m²)" ; + :quantityKind :radiance ; + :symbol "W/(sr·m²)" . + +:wattSecond + a :Unit ; + bamm:name "wattSecond" ; + bamm:preferredName "watt second"@en ; + :commonCode "J55" ; + :conversionFactor "W × s" ; + :quantityKind :energy, :enthalpy, :heat, :helmholtzFreeEnergy, :helmholtzFunction, :quantityOfHeat, :thermodynamicEnergy ; + :symbol "W·s" . + +:wattSquareMetre + a :Unit ; + bamm:name "wattSquareMetre" ; + bamm:preferredName "watt square metre"@en ; + :commonCode "Q21" ; + :conversionFactor "m⁴ × kg × s⁻³" ; + :symbol "W·m²" . + +:weber + a :Unit ; + bamm:name "weber" ; + bamm:preferredName "weber"@en ; + :commonCode "WEB" ; + :conversionFactor "Wb" ; + :quantityKind :magneticFlux, :magneticFluxQuantum ; + :symbol "Wb" . + +:weberMetre + a :Unit ; + bamm:name "weberMetre" ; + bamm:preferredName "weber metre"@en ; + :commonCode "P50" ; + :conversionFactor "m³ × kg × s⁻² × A⁻¹" ; + :quantityKind :magneticDipoleMoment ; + :symbol "Wb·m" . + +:weberPerMetre + a :Unit ; + bamm:name "weberPerMetre" ; + bamm:preferredName "weber per metre"@en ; + :commonCode "D59" ; + :conversionFactor "Wb/m" ; + :quantityKind :magneticVectorPotential ; + :symbol "Wb/m" . + +:weberPerMillimetre + a :Unit ; + bamm:name "weberPerMillimetre" ; + bamm:preferredName "weber per millimetre"@en ; + :commonCode "D60" ; + :conversionFactor "10³ Wb/m" ; + :numericConversionFactor "1000.0"^^xsd:double ; + :quantityKind :magneticVectorPotential ; + :referenceUnit :weberPerMetre ; + :symbol "Wb/mm" . + +:weberToThePowerMinusOne + a :Unit ; + bamm:name "weberToThePowerMinusOne" ; + bamm:preferredName "weber to the power minus one"@en ; + :commonCode "Q23" ; + :conversionFactor "m⁻² × kg⁻¹ × s² × A" ; + :symbol "1/Wb" . + +:week + a :Unit ; + bamm:name "week" ; + bamm:preferredName "week"@en ; + :commonCode "WEE" ; + :conversionFactor "6.048 × 10⁵ s" ; + :numericConversionFactor "604800.0"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "wk" . + +:well + a :Unit ; + bamm:name "well" ; + bamm:preferredName "well"@en ; + :commonCode "E56" . + +:wetKilo + a :Unit ; + bamm:name "wetKilo" ; + bamm:preferredName "wet kilo"@en ; + :commonCode "W2" . + +:wetPound + a :Unit ; + bamm:name "wetPound" ; + bamm:preferredName "wet pound"@en ; + :commonCode "WB" . + +:wetTon + a :Unit ; + bamm:name "wetTon" ; + bamm:preferredName "wet ton"@en ; + :commonCode "WE" . + +:wineGallon + a :Unit ; + bamm:name "wineGallon" ; + bamm:preferredName "wine gallon"@en ; + :commonCode "WG" . + +:workingDay + a :Unit ; + bamm:name "workingDay" ; + bamm:preferredName "working day"@en ; + :commonCode "E49" . + +:workingMonth + a :Unit ; + bamm:name "workingMonth" ; + bamm:preferredName "working month"@en ; + :commonCode "WM" . + +:yard + a :Unit ; + bamm:name "yard" ; + bamm:preferredName "yard"@en ; + :commonCode "YRD" ; + :conversionFactor "0.9144 m" ; + :numericConversionFactor "0.9144"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metre ; + :symbol "yd" . + +:yardPerDegreeFahrenheit + a :Unit ; + bamm:name "yardPerDegreeFahrenheit" ; + bamm:preferredName "yard per degree Fahrenheit"@en ; + :commonCode "L98" ; + :conversionFactor "1.64592 m/K" ; + :numericConversionFactor "1.64592"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metrePerKelvin ; + :symbol "yd/°F" . + +:yardPerHour + a :Unit ; + bamm:name "yardPerHour" ; + bamm:preferredName "yard per hour"@en ; + :commonCode "M66" ; + :conversionFactor "2.54 × 10⁻⁴ m/s" ; + :numericConversionFactor "2.54E-4"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "yd/h" . + +:yardPerMinute + a :Unit ; + bamm:name "yardPerMinute" ; + bamm:preferredName "yard per minute"@en ; + :commonCode "M65" ; + :conversionFactor "1.524 × 10⁻² m/s" ; + :numericConversionFactor "0.01524"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "yd/min" . + +:yardPerPsi + a :Unit ; + bamm:name "yardPerPsi" ; + bamm:preferredName "yard per psi"@en ; + :commonCode "L99" ; + :conversionFactor "1.326225 × 10⁻⁴ m/Pa" ; + :numericConversionFactor "1.326225E-4"^^xsd:double ; + :quantityKind :breadth, :cartesianCoordinates, :diameter, :distance, :height, :length, :lengthOfPath, :radius, :radiusOfCurvature, :thickness ; + :referenceUnit :metrePerPascal ; + :symbol "yd/psi" . + +:yardPerSecond + a :Unit ; + bamm:name "yardPerSecond" ; + bamm:preferredName "yard per second"@en ; + :commonCode "M64" ; + :conversionFactor "9.144 × 10⁻¹ m/s" ; + :numericConversionFactor "0.9144"^^xsd:double ; + :quantityKind :groupVelocity, :phaseVelocity, :velocity ; + :referenceUnit :metrePerSecond ; + :symbol "yd/s" . + +:yardPerSecondSquared + a :Unit ; + bamm:name "yardPerSecondSquared" ; + bamm:preferredName "yard per second squared"@en ; + :commonCode "M40" ; + :conversionFactor "9.144 × 10⁻¹ m/s²" ; + :numericConversionFactor "0.9144"^^xsd:double ; + :quantityKind :acceleration, :accelerationDueToGravity, :accelerationOfFreeFall ; + :referenceUnit :metrePerSecondSquared ; + :symbol "yd/s²" . + +:year + a :Unit ; + bamm:name "year" ; + bamm:preferredName "year"@en ; + :commonCode "ANN" ; + :conversionFactor "3.15576 × 10⁷ s" ; + :numericConversionFactor "3.15576E7"^^xsd:double ; + :quantityKind :time ; + :referenceUnit :secondUnitOfTime ; + :symbol "y" . + +:yobibyte + a :Unit ; + bamm:name "yobibyte" ; + bamm:preferredName "Yobibyte"@en ; + :conversionFactor "2⁸⁰ B" ; + :numericConversionFactor "1208925819614629174706176.0"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "YiB" . + +:yottabyte + a :Unit ; + bamm:name "yottabyte" ; + bamm:preferredName "Yottabyte"@en ; + :conversionFactor "10²⁴ B" ; + :numericConversionFactor "1.0E24"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "YB" . + +:zebibyte + a :Unit ; + bamm:name "zebibyte" ; + bamm:preferredName "Zebibyte"@en ; + :conversionFactor "2⁷⁰ B" ; + :numericConversionFactor "1180591620717411303424.0"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "ZiB" . + +:zettabyte + a :Unit ; + bamm:name "zettabyte" ; + bamm:preferredName "Zettabyte"@en ; + :conversionFactor "10²¹ B" ; + :numericConversionFactor "1.0E21"^^xsd:double ; + :quantityKind :informationEntropy ; + :referenceUnit :byte ; + :symbol "ZB" . + +:zone + a :Unit ; + bamm:name "zone" ; + bamm:preferredName "zone"@en ; + :commonCode "E57" . + diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/AbstractShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/AbstractShapeTest.java new file mode 100644 index 00000000..fd8b839e --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/AbstractShapeTest.java @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.StringWriter; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Stream; + +import org.apache.jena.rdf.model.Model; + +import io.openmanufacturing.sds.validation.ModelLoader; +import io.openmanufacturing.sds.validation.SemanticError; +import io.openmanufacturing.sds.validation.ValidationReport; +import io.openmanufacturing.sds.validation.Validator; + +public abstract class AbstractShapeTest { + final static String TEST_NAMESPACE = "io.openmanufacturing.test"; + final static String TEST_NAMESPACE_VERSION = "1.0.0"; + final static Validator validator = new Validator(); + private final Map metaModel = new HashMap<>(); + + protected Model getMetaModel( final KnownVersion version ) { + if ( metaModel.get( version ) != null ) { + return metaModel.get( version ); + } + final Model result = loadMetaModelDefinitions( version ); + metaModel.put( version, result ); + return result; + } + + protected static Stream allVersions() { + return KnownVersion.getVersions().stream().dropWhile( KnownVersion.BAMM_1_0_0::isNewerThan ); + } + + protected static Stream versionsUpToIncluding( final KnownVersion version ) { + return allVersions().takeWhile( v -> version.isNewerThan( v ) || v.equals( version ) ); + } + + protected static Stream versionsAsOf( final KnownVersion version ) { + return allVersions().dropWhile( version::isNewerThan ); + } + + protected static Stream versionsAsOf1_0_0() { + return versionsAsOf( KnownVersion.BAMM_1_0_0 ); + } + + final String VIOLATION_URN = "http://www.w3.org/ns/shacl#Violation"; + final String WARNING_URN = "http://www.w3.org/ns/shacl#Warning"; + + final String TEST_NAMESPACE_PREFIX = "urn:bamm:io.openmanufacturing.test:1.0.0#"; + + final String MESSAGE_MISSING_REQUIRED_PROPERTY = "Property needs to have at least 1 values, but found 0"; + final String MESSAGE_EMPTY_PROPERTY = "Value has less than 1 characters"; + final String MESSAGE_LANG_NOT_UNIQUE = "Language \\\"en\\\" used more than once"; + final String MESSAGE_INVALID_LANG_STRING = "Value must be a valid literal of type langString"; + final String MESSAGE_DUPLICATE_PROPERTY = "Property may only have 1 value, but found 2"; + final String MESSAGE_MISSING_DATATYPE = "The datatype is not defined on the Characteristic instance (see focusNode)."; + final String MESSAGE_INVALID_ENTRY_ASPECT_PROPERTY_LIST = "Each element in the Aspect's properties list must be either a Property or a blank node referring to a Property and defining bamm:optional \\\"true\\\"^^xsd:boolean and/or bamm:payloadName."; + final String MESSAGE_INVALID_ENTRY_ENTITY_PROPERTY_LIST = "Each element in the Entity's properties list must be either a Property or a blank node referring to a Property and defining either bamm:optional \\\"true\\\"^^xsd:boolean and/or bamm:payloadName or bamm:notInPayload \\\"true\\\"^^xsd:boolean."; + final String MESSAGE_INVALID_ENTITY_PROPERTY_DEFINITION = "A Property of an Entity may not be defined with both bamm:optional \\\"true\\\"^^xsd:boolean and bamm:notInPayload \\\"true\\\"^^xsd:boolean."; + final String MESSAGE_INVALID_ENTITY_PROPERTY_PAYLOAD_NAME = "A Property of an Entity may not be defined with both bamm:payloadName and bamm:notInPayload \\\"true\\\"^^xsd:boolean."; + final String MESSAGE_ENTITY_NOT_USED_IN_ENUMERATION = "A Property of an Entity may only be defined with bamm:notInPayload \\\"true\\\"^^xsd:boolean when the Entity, or one of its parent Entities, is used as the data type of an Enumeration."; + final String MESSAGE_INVALID_ENTITY_WITH_SINGLE_PROPERTY = "An Entity defining a Property with bamm:notInPayload \\\"true\\\"^^xsd:boolean must define at least one more Property."; + final String MESSAGE_INVALID_QUANTITY_KIND = "Unit of Duration must have quantity kind time"; + final String MESSAGE_VALUE_NOT_OF_DATATYPE = "One of the values is not of the specified data type."; + final String MESSAGE_NO_OPERATION = "Value must be an instance of bamm:Operation"; + final String MESSAGE_VALUE_IS_NO_PROPERTY = "Value must be an instance of bamm:Property"; + final String MESSAGE_NO_ADDITIONAL_PROPERTIES = "Entity refining another Entity may not declare additional Properties."; + final String MESSAGE_IS_NO_UNIT = "Value is not an instance or subclass of unit:Unit"; + final String MESSAGE_INVALID_ENCODING = "Value must be one of [bamm:US-ASCII bamm:ISO-8859-1 bamm:UTF-8 bamm:UTF-16 bamm:UTF-16BE bamm:UTF-16LE]"; + final String MESSAGE_RANGE_NEEDS_MIN_MAX = "The RangeConstraint must have at least one minValue or maxValue."; + final String MESSAGE_LENGTH_CONSTRAINT_DATA_TYPE = "The LengthConstraint is not applicable to the base Characteristic's data type."; + final String MESSAGE_LENGTH_CONSTRAINT_MIN_MAX = "The maxValue must be greater or equal than the minValue."; + final String MESSAGE_INVALID_REGULAR_EXPRESSION = "The RegularExpressionConstraint's value is no valid regular expression."; + final String MESSAGE_INVALID_DECONSTRUCTION_RULE = "The StructuredValue's deconstructionRule is no valid regular expression."; + final String MESSAGE_REGULAR_EXPRESSION_CONSTRAINT_DATA_TYPE = "The RegularExpressionConstraint is not applicable to the base Characteristic's data type."; + final String MESSAGE_VALUE_DOES_NOT_HAVE_NODE_KIND_IRI = "Value does not have node kind IRI"; + final String MESSAGE_VALUE_MUST_BE_CHARACTERISTIC = "Value must be an instance of bamm:Characteristic"; + final String MESSAGE_EQUAL_CHARACTERISTICS = "The Characteristic referenced by the bamm-c:left and bamm-c:right attributes of the Either Characteristic (see focus node) may not be equivalent."; + final String MESSAGE_MORE_THAN_ZERO_VALUES = "Property may only have 0 values, but found 1"; + final String MESSAGE_INVALID_LOWER_BOUND_DEFINITION_VALUE = "Value must be exactly one of [bamm-c:AT_LEAST, bamm-c:GREATER_THAN]"; + final String MESSAGE_INVALID_UPPER_BOUND_DEFINITION_VALUE = "Value must be exactly one of [bamm-c:LESS_THAN, bamm-c:AT_MOST]"; + final String MESSAGE_INVALID_STRUCTURED_VALUE_ELEMENTS = "StructuredValue's elements may only be Properties or string literals"; + final String MESSAGE_EMPTY_STRUCTURED_VALUE_ELEMENTS = "StructuredValue's elements may not be empty"; + final String MESSAGE_STRUCTURED_VALUE_DATA_TYPE = "StructuredValue's dataType must have a string-like value space"; + final String MESSAGE_INVALID_DECONSTRUCTION = "Deconstruction rule did not match Properties in elements"; + final String MESSAGE_INVALID_MATCHING_GROUPS = "Number of matching capture groups (2) in deconstructionRule does not match number of Properties in elements (1)"; + final String MESSAGE_INVALID_MATCHING_GROUPS2 = "Number of matching capture groups (1) in deconstructionRule does not match number of Properties in elements (0)"; + final String MESSAGE_NON_MATCHING_GROUPS = "Given Property exampleValue (prop1) does not match group 1 from deconstructionRule (prop1x)"; + final String MESSAGE_ELEMENTS_MUST_CONTAIN_PROPERTIES = "StructuredValue's elements must contain at least one Property"; + final String MESSAGE_ELEMENTS_MUST_HAVE_SCALAR_TYPE = "Properties referred to in StructuredValue's elements must have a Characteristic with a scalar dataType"; + final String MESSAGE_ELEMENTS_HAVE_INVALID_CHARACTERISTIC = "This Characteristic may not be used with Properties that appear as elements in a StructuredValue"; + final String MESSAGE_INSTANCE_MISSING_REQUIRED_PROPERTY = "The Entity instance is missing a required Property."; + final String MESSAGE_INSTANCE_INVALID_VALUE_TYPE = "The type of the value of the Property of the Entity instance does not match the Property definition."; + final String MESSAGE_IDENTICAL_INSTANCES = "Values for Properties of Entity instances should be unique."; + final String MESSAGE_INSTANCE_UNKNOWN_PROPERTY = "The Entity instance has an attribute that is not a Property defined in the Entity"; + final String MESSAGE_FIXED_POINT_INVALID_DATA_TYPE = "The Fixed Point Constraint may only be used with Characteristics whose data type is xsd:decimal."; + final String MESSAGE_DATA_TYPE_NOT_POSITIVE_INTEGER = "Value must be a valid literal of type positiveInteger"; + final String MESSAGE_INSTANCE_INVALID_TYPE_FOR_LIST_PROPERTY = "The value for a list Property of the Entity instance is not defined as a list."; + final String MESSAGE_INSTANCE_INVALID_TYPE_CONTAINED_IN_LIST = "The value for a list Property of the Entity instance contains an entry with an invalid data type."; + final String MESSAGE_COLLECTION_WITHOUT_DATA_TYPE = "A Collection must be defined with either a bamm:dataType or a bamm-c:elementCharacteristic (see focusNode)."; + final String MESSAGE_DATA_TYPE_NOT_STRING = "Value must be a valid literal of type string"; + final String MESSAGE_RECURSIVE_PROPERTY = "A cycle in the Aspect Model was detected"; + + Model loadMetaModelDefinitions( final KnownVersion version ) { + return ModelLoader.createModel( List.of( + "bamm/meta-model/" + version.toVersionString() + "/aspect-meta-model-definitions.ttl", + "bamm/meta-model/" + version.toVersionString() + "/type-conversions.ttl", + "bamm/characteristic/" + version.toVersionString() + "/characteristic-definitions.ttl", + "bamm/characteristic/" + version.toVersionString() + "/characteristic-instances.ttl", + "bamm/entity/" + version.toVersionString() + "/TimeSeriesEntity.ttl", + "bamm/unit/" + version.toVersionString() + "/units.ttl", + "bamm/entity/" + version.toVersionString() + "/ThreeDimensionalPosition.ttl" + ) ); + } + + protected void checkValidity( final String path, final String ttlDefinition, final KnownVersion testedVersion ) { + final ValidationReport validationReport = validator + .apply( loadModel( path, ttlDefinition, testedVersion ), testedVersion ); + if ( !validationReport.conforms() ) { + System.out.println( validationReport ); + } + assertThat( validationReport.conforms() ).isTrue(); + assertThat( validationReport.getValidationErrors() ).isEmpty(); + } + + protected SemanticError getSingleSemanticValidationError( final String path, + final String ttlDefinition, final KnownVersion testedVersion ) { + final ValidationReport validationReport = validator + .apply( loadModel( path, ttlDefinition, testedVersion ), testedVersion ); + assertThat( validationReport.conforms() ).isFalse(); + return validationReport.getValidationErrors().iterator().next(); + } + + protected void expectSemanticValidationErrors( final String path, final String ttlDefinition, + final KnownVersion testedVersion, + final SemanticError... errors ) { + final int numberOfValidationResults = errors.length; + final ValidationReport validationReport = validator + .apply( loadModel( path, ttlDefinition, testedVersion ), testedVersion ); + assertThat( validationReport.conforms() ).isFalse(); + assertThat( validationReport.getValidationErrors() ).hasSize( numberOfValidationResults ); + assertThat( validationReport.getValidationErrors() ).contains( errors ); + } + + protected Model loadModel( final String path, final String ttlDefinition, final KnownVersion knownVersion ) { + final Model model = ModelLoader.createModel( String + .format( "%s/%s/%s/%s/%s.ttl", knownVersion.toString().toLowerCase(), path, TEST_NAMESPACE, + TEST_NAMESPACE_VERSION, ttlDefinition ) ); + model.add( getMetaModel( knownVersion ) ); + return model; + } + + static String modelToString( final Model model ) { + final StringWriter stringWriter = new StringWriter(); + model.write( stringWriter, "TURTLE" ); + return stringWriter.toString(); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/AspectShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/AspectShapeTest.java new file mode 100644 index 00000000..eb025f7f --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/AspectShapeTest.java @@ -0,0 +1,168 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class AspectShapeTest extends AbstractShapeTest { + private final String ENTITY_NODE = TEST_NAMESPACE_PREFIX + "Entity"; + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "aspect-shape", "TestAspect", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredPropertiesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestAspectMissingRequiredAspectProperties"; + + final SemanticError resultForName = new SemanticError( MESSAGE_MISSING_REQUIRED_PROPERTY, + focusNode, bammUrns.nameUrn, VIOLATION_URN, "" ); + final SemanticError resultForOperations = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.operationsUrn, VIOLATION_URN, "" ); + final SemanticError resultForProperties = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.propertiesUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "aspect-shape", "TestAspectMissingRequiredAspectProperties", + metaModelVersion, resultForName, resultForOperations, resultForProperties ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEmptyPropertiesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestAspectWithEmptyProperties"; + + final SemanticError resultForName = new SemanticError( MESSAGE_EMPTY_PROPERTY, + focusNode, bammUrns.nameUrn, VIOLATION_URN, "" ); + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_EMPTY_PROPERTY, + focusNode, bammUrns.preferredNameUrn, VIOLATION_URN, "@en" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_EMPTY_PROPERTY, + focusNode, bammUrns.descriptionUrn, VIOLATION_URN, "@en" ); + expectSemanticValidationErrors( "aspect-shape", "TestAspectWithEmptyProperties", + metaModelVersion, + resultForName, + resultForPreferredName, + resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLanguageStringNotUniqueExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestAspectNonUniqueLangStrings"; + + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + focusNode, bammUrns.preferredNameUrn, VIOLATION_URN, "" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + focusNode, bammUrns.descriptionUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "aspect-shape", "TestAspectNonUniqueLangStrings", metaModelVersion, + resultForPreferredName, + resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidLanguageStringExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestAspectWithInvalidLangStrings"; + + final SemanticError resultForPreferredName = new SemanticError( + MESSAGE_INVALID_LANG_STRING, focusNode, bammUrns.preferredNameUrn, VIOLATION_URN, "Test Aspect" ); + final SemanticError resultForDescription = new SemanticError( + MESSAGE_INVALID_LANG_STRING, focusNode, bammUrns.descriptionUrn, VIOLATION_URN, + "Test Aspect Description" ); + expectSemanticValidationErrors( "aspect-shape", "TestAspectWithInvalidLangStrings", metaModelVersion, + resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testPropertyListContainsInvalidElementsExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "aspect-shape", "TestAspectWithInvalidProperties", metaModelVersion ); + assertThat( result.getResultMessage() ) + .satisfies( s -> assertThat( s ).isEqualTo( MESSAGE_INVALID_ENTRY_ASPECT_PROPERTY_LIST ) ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isEqualTo( ENTITY_NODE ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testOperationListContainsInvalidElementsExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "aspect-shape", "TestAspectWithInvalidOperations", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_NO_OPERATION ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isEqualTo( ENTITY_NODE ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testAspectWithOptionalPropertyExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "aspect-shape", "TestAspectWithOptionalProperty", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testAspectWithInvalidOptionalPropertyExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "aspect-shape", "TestAspectWithInvalidOptionalProperty", metaModelVersion ); + assertThat( result.getResultMessage() ) + .satisfies( s -> assertThat( s ).isEqualTo( MESSAGE_INVALID_ENTRY_ASPECT_PROPERTY_LIST ) ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isNotEmpty(); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testAspectWithMissingOptionalPropertyExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "aspect-shape", "TestAspectWithMissingOptionalProperty", metaModelVersion ); + assertThat( result.getResultMessage() ) + .satisfies( s -> assertThat( s ).isEqualTo( MESSAGE_INVALID_ENTRY_ASPECT_PROPERTY_LIST ) ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isNotEmpty(); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testAspectWithInvalidNotInPayloadPropertyExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "aspect-shape", "TestAspectWithInvalidNotInPayloadProperty", metaModelVersion ); + assertThat( result.getResultMessage() ) + .satisfies( s -> assertThat( s ).isEqualTo( MESSAGE_INVALID_ENTRY_ASPECT_PROPERTY_LIST ) ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isNotEmpty(); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testAspectWithPropertyWithPayloadNameExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "aspect-shape", "TestAspectWithPropertyWithPayloadName", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testAspectWithOptionalPropertyWithPayloadNameExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "aspect-shape", "TestAspectWithOptionalPropertyWithPayloadName", metaModelVersion ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/BammUrns.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/BammUrns.java new file mode 100644 index 00000000..f8360c11 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/BammUrns.java @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +public class BammUrns { + final String nameUrn; + final String preferredNameUrn; + final String descriptionUrn; + final String propertiesUrn; + final String operationsUrn; + final String datatypeUrn; + final String characteristicUrn; + final String baseCharacteristicUrn; + final String listTypeUrn; + final String exampleValueUrn; + final String valueUrn; + final String inputUrn; + final String seeUrn; + final String leftUrn; + final String rightUrn; + final String defaultValueUrn; + final String allowDuplicatesUrn; + final String orderedUrn; + final String unitUrn; + final String minValueUrn; + final String maxValueUrn; + final String valuesUrn; + final String languageCodeUrn; + final String localeCodeUrn; + final String lowerBoundDefinition; + final String upperBoundDefinition; + final String deconstructionRule; + final String elements; + final String list; + final String structuredValue; + final String scale; + final String integer; + + BammUrns( final KnownVersion testedBammVersion ) { + final String META_META_MODEL_URN = "urn:bamm:io.openmanufacturing:meta-meta-model:%s#"; + final String META_MODEL_URN = "urn:bamm:io.openmanufacturing:meta-model:%s#"; + final String CHARACTERISTICS_URN = "urn:bamm:io.openmanufacturing:characteristic:%s#"; + + listTypeUrn = String.format( META_META_MODEL_URN + "listType", testedBammVersion.toVersionString() ); + allowDuplicatesUrn = String + .format( META_META_MODEL_URN + "allowDuplicates", testedBammVersion.toVersionString() ); + orderedUrn = String.format( META_META_MODEL_URN + "ordered", testedBammVersion.toVersionString() ); + + nameUrn = String.format( META_MODEL_URN + "name", testedBammVersion.toVersionString() ); + preferredNameUrn = String.format( META_MODEL_URN + "preferredName", testedBammVersion.toVersionString() ); + descriptionUrn = String.format( META_MODEL_URN + "description", testedBammVersion.toVersionString() ); + propertiesUrn = String.format( META_MODEL_URN + "properties", testedBammVersion.toVersionString() ); + operationsUrn = String.format( META_MODEL_URN + "operations", testedBammVersion.toVersionString() ); + datatypeUrn = String.format( META_MODEL_URN + "dataType", testedBammVersion.toVersionString() ); + characteristicUrn = String.format( META_MODEL_URN + "characteristic", testedBammVersion.toVersionString() ); + exampleValueUrn = String.format( META_MODEL_URN + "exampleValue", testedBammVersion.toVersionString() ); + valueUrn = String.format( META_MODEL_URN + "value", testedBammVersion.toVersionString() ); + inputUrn = String.format( META_MODEL_URN + "input", testedBammVersion.toVersionString() ); + seeUrn = String.format( META_MODEL_URN + "see", testedBammVersion.toVersionString() ); + leftUrn = String.format( CHARACTERISTICS_URN + "left", testedBammVersion.toVersionString() ); + rightUrn = String.format( CHARACTERISTICS_URN + "right", testedBammVersion.toVersionString() ); + + defaultValueUrn = String.format( CHARACTERISTICS_URN + "defaultValue", testedBammVersion.toVersionString() ); + unitUrn = String.format( CHARACTERISTICS_URN + "unit", testedBammVersion.toVersionString() ); + minValueUrn = String.format( CHARACTERISTICS_URN + "minValue", testedBammVersion.toVersionString() ); + maxValueUrn = String.format( CHARACTERISTICS_URN + "maxValue", testedBammVersion.toVersionString() ); + valuesUrn = String.format( CHARACTERISTICS_URN + "values", testedBammVersion.toVersionString() ); + lowerBoundDefinition = String + .format( CHARACTERISTICS_URN + "lowerBoundDefinition", testedBammVersion.toVersionString() ); + upperBoundDefinition = String + .format( CHARACTERISTICS_URN + "upperBoundDefinition", testedBammVersion.toVersionString() ); + deconstructionRule = String + .format( CHARACTERISTICS_URN + "deconstructionRule", testedBammVersion.toVersionString() ); + elements = String.format( CHARACTERISTICS_URN + "elements", testedBammVersion.toVersionString() ); + list = String.format( CHARACTERISTICS_URN + "List", testedBammVersion.toVersionString() ); + structuredValue = String.format( CHARACTERISTICS_URN + "StructuredValue", testedBammVersion.toVersionString() ); + scale = String.format( CHARACTERISTICS_URN + "scale", testedBammVersion.toVersionString() ); + integer = String.format( CHARACTERISTICS_URN + "integer", testedBammVersion.toVersionString() ); + languageCodeUrn = String.format( CHARACTERISTICS_URN + "languageCode", testedBammVersion.toVersionString() ); + localeCodeUrn = String.format( CHARACTERISTICS_URN + "localeCode", testedBammVersion.toVersionString() ); + baseCharacteristicUrn = String + .format( CHARACTERISTICS_URN + "baseCharacteristic", testedBammVersion.toVersionString() ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/CharacteristicShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/CharacteristicShapeTest.java new file mode 100644 index 00000000..f97a1574 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/CharacteristicShapeTest.java @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class CharacteristicShapeTest extends AbstractShapeTest { + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicInstanceValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "characteristic-shape", "TestCharacteristicInstance", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicSubClassValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "characteristic-shape", "TestCharacteristicSubClass", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicInstanceMissingRequiredPropertiesExpectFailure2( + final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String instanceName = "TestCharacteristicInstanceMissingRequiredProperties"; + final String instanceId = TEST_NAMESPACE_PREFIX + instanceName; + final SemanticError resultForDataType = new SemanticError( MESSAGE_MISSING_DATATYPE, + instanceId, bammUrns.datatypeUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "characteristic-shape", instanceName, metaModelVersion, resultForDataType ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicInstanceNotRequiredToSetDataTypeExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "characteristic-shape", "TestCharacteristicInstanceNotRequiredToSetDataType", + metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicInstanceEmptyPropertiesExpectFailure2( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String instanceName = "TestCharacteristicInstanceWithEmptyProperties"; + final String instanceUri = TEST_NAMESPACE_PREFIX + instanceName; + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_EMPTY_PROPERTY, + instanceUri, bammUrns.preferredNameUrn, VIOLATION_URN, "@en" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_EMPTY_PROPERTY, + instanceUri, bammUrns.descriptionUrn, VIOLATION_URN, "@en" ); + expectSemanticValidationErrors( "characteristic-shape", instanceName, + metaModelVersion, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicWithGDay( final KnownVersion metaModelVersion ) { + checkValidity( "characteristic-shape", "TestCharacteristicInstanceWithGDay", + metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicInstanceInvalidLanguageStringsExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String instanceName = "TestCharacteristicInstanceWithInvalidLangStrings"; + final String instanceId = TEST_NAMESPACE_PREFIX + instanceName; + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_INVALID_LANG_STRING, instanceId, + bammUrns.preferredNameUrn, VIOLATION_URN, "Test Characteristic Instance" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_INVALID_LANG_STRING, instanceId, + bammUrns.descriptionUrn, VIOLATION_URN, "Test Characteristic Instance" ); + expectSemanticValidationErrors( "characteristic-shape", instanceName, + metaModelVersion, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicInstanceLanguageStringNotUniqueExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String instanceName = "TestCharacteristicInstanceNonUniqueLangStrings"; + final String instanceId = TEST_NAMESPACE_PREFIX + instanceName; + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + instanceId, bammUrns.preferredNameUrn, VIOLATION_URN, "" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + instanceId, bammUrns.descriptionUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "characteristic-shape", instanceName, + metaModelVersion, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicSubClassLanguageStringNotUniqueExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String className = "TestCharacteristicSubClassNonUniqueLangStrings"; + final String classId = TEST_NAMESPACE_PREFIX + className; + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + classId, bammUrns.preferredNameUrn, VIOLATION_URN, "" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + classId, bammUrns.descriptionUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "characteristic-shape", className, + metaModelVersion, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicInstanceMultipleDataTypesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String instanceName = "TestCharacteristicInstanceWithMultipleDataTypes"; + final String instanceId = TEST_NAMESPACE_PREFIX + instanceName; + final SemanticError resultForDataType = new SemanticError( + MESSAGE_DUPLICATE_PROPERTY, instanceId, bammUrns.datatypeUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "characteristic-shape", instanceName, metaModelVersion, resultForDataType ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicSubClassMultipleDataTypesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String className = "TestCharacteristicSubClassWithMultipleDataTypes"; + final String classId = TEST_NAMESPACE_PREFIX + className; + final SemanticError resultForDataType = new SemanticError( MESSAGE_DUPLICATE_PROPERTY, + classId, bammUrns.datatypeUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "characteristic-shape", className, metaModelVersion, resultForDataType ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicInstanceDefinesDisallowedDataType( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String instanceName = "TestCharacteristicInstanceWithDisallowedDataType"; + final String instanceId = TEST_NAMESPACE_PREFIX + instanceName; + final SemanticError resultForDataType = new SemanticError( + "The dataType (see value) that is used as dataType on the Characteristic (see focusNode) is neither an allowed xsd or rdf type, nor a type that is defined as rdfs:Class.", + instanceId, bammUrns.datatypeUrn, VIOLATION_URN, + "http://www.w3.org/2001/XMLSchema#maxExclusive" ); + expectSemanticValidationErrors( "characteristic-shape", instanceName, metaModelVersion, resultForDataType ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/CollectionInstanceShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/CollectionInstanceShapeTest.java new file mode 100644 index 00000000..edf34ac2 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/CollectionInstanceShapeTest.java @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class CollectionInstanceShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCollectionCharacteristicWithElementCharacteristicExpectSuccess( + final KnownVersion metaModelVersion ) { + checkValidity( "collection-instance-shape", "TestCollectionWithElementCharacteristic", + metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCollectionCharacteristicWithDataTypeExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "collection-instance-shape", "TestCollectionWithDataType", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCollectionCharacteristicWithoutDataTypeOrElementCharacteristicExpectFailure( + final KnownVersion metaModelVersion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "TestCollectionWithoutDataTypeAndElementCharacteristic"; + final SemanticError result = getSingleSemanticValidationError( + "collection-instance-shape", "TestCollectionWithoutDataTypeAndElementCharacteristic", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_COLLECTION_WITHOUT_DATA_TYPE ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getFocusNode() ).isEqualTo( focusNode ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCollectionCharacteristicWithInvalidElementCharacteristic( final KnownVersion metaModelversion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "TestCollectionWithInvalidElementCharacteristic"; + final SemanticError result = getSingleSemanticValidationError( + "collection-instance-shape", "TestCollectionWithInvalidElementCharacteristic", metaModelversion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_COLLECTION_WITHOUT_DATA_TYPE ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getFocusNode() ).isEqualTo( focusNode ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCollectionCharacteristicWithMultipleElementCharacteristics( final KnownVersion metaModelVersion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "TestCollectionWithMultipleElementCharacteristics"; + final SemanticError result = getSingleSemanticValidationError( + "collection-instance-shape", "TestCollectionWithMultipleElementCharacteristics", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_DUPLICATE_PROPERTY ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getFocusNode() ).isEqualTo( focusNode ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void TestCollectionWithInvalidCollectionFailure( final KnownVersion metaModelVersion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "TestCollectionWithInvalidCharacteristic"; + final SemanticError result = getSingleSemanticValidationError( "collection-instance-shape", + "TestCollectionWithInvalidCharacteristic", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_COLLECTION_WITHOUT_DATA_TYPE ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getFocusNode() ).isEqualTo( focusNode ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCollectionWithAnonymousCharacteristicSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "collection-instance-shape", "TestCollectionWithAnonymousElement", metaModelVersion ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/CollectionShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/CollectionShapeTest.java new file mode 100644 index 00000000..b7ae1af5 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/CollectionShapeTest.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +public class CollectionShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testOrderedAndAllowDuplicatesNotRequiredExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "collection-shape", "TestCollectionWithoutOrderedAndAllowDuplicates", metaModelVersion ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/ConstraintShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/ConstraintShapeTest.java new file mode 100644 index 00000000..5696bacb --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/ConstraintShapeTest.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class ConstraintShapeTest extends AbstractShapeTest { + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testConstraintValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "constraint-shape", "TestConstraint", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEmptyPropertiesExpectFailure2( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String constraintName = "TestConstraintWithEmptyProperties"; + final String constraintId = TEST_NAMESPACE_PREFIX + constraintName; + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_EMPTY_PROPERTY, + constraintId, bammUrns.preferredNameUrn, VIOLATION_URN, "@en" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_EMPTY_PROPERTY, + constraintId, bammUrns.descriptionUrn, VIOLATION_URN, "@en" ); + expectSemanticValidationErrors( "constraint-shape", constraintName, + metaModelVersion, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLanguageStringNotUniqueExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String constraintName = "TestConstraintNonUniqueLangStrings"; + final String constraintId = TEST_NAMESPACE_PREFIX + constraintName; + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + constraintId, bammUrns.preferredNameUrn, VIOLATION_URN, "" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + constraintId, bammUrns.descriptionUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "constraint-shape", constraintName, metaModelVersion, resultForPreferredName, + resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidLanguageStringsExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String constraintName = "TestConstraintWithInvalidLangStrings"; + final String constraintId = TEST_NAMESPACE_PREFIX + constraintName; + final SemanticError resultForPreferredName = new SemanticError( + MESSAGE_INVALID_LANG_STRING, constraintId, bammUrns.preferredNameUrn, VIOLATION_URN, "Test Constraint" ); + final SemanticError resultForDescription = new SemanticError( + MESSAGE_INVALID_LANG_STRING, constraintId, bammUrns.descriptionUrn, VIOLATION_URN, "TestConstraint" ); + expectSemanticValidationErrors( "constraint-shape", constraintName, + metaModelVersion, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testConstraintDefinesDataTypeExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String constraintName = "TestConstraintWithDataType"; + final String constraintId = TEST_NAMESPACE_PREFIX + constraintName; + final SemanticError resultForDataType = new SemanticError( MESSAGE_MORE_THAN_ZERO_VALUES, constraintId, + bammUrns.datatypeUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "constraint-shape", constraintName, metaModelVersion, resultForDataType ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/DurationShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/DurationShapeTest.java new file mode 100644 index 00000000..ab5c6287 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/DurationShapeTest.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class DurationShapeTest extends AbstractShapeTest { + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testDurationValidationExpectSuccess( final KnownVersion metaModelVersions ) { + checkValidity( "duration-shape", "TestDuration", metaModelVersions ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testDurationWithInvalidQuantityKind( final KnownVersion metaModelVersions ) { + final BammUrns bammUrns = new BammUrns( metaModelVersions ); + final UnitUrns unitUrns = new UnitUrns( "unit", metaModelVersions ); + + final String durationName = "TestDurationWithInvalidUnit"; + final String durationId = TEST_NAMESPACE_PREFIX + durationName; + final SemanticError invalidQuantityKind = new SemanticError( + MESSAGE_INVALID_QUANTITY_KIND, durationId, bammUrns.unitUrn, VIOLATION_URN, unitUrns.voltUrn ); + expectSemanticValidationErrors( "duration-shape", durationName, + metaModelVersions, invalidQuantityKind ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EitherShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EitherShapeTest.java new file mode 100644 index 00000000..1f65dedb --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EitherShapeTest.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class EitherShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEitherShapeExpectSuccess( final KnownVersion metaModelVersions ) { + checkValidity( "either-shape", "TestEither", metaModelVersions ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingPropertiesExpectFailure2( final KnownVersion metaModelVersions ) { + final BammUrns bammUrns = new BammUrns( metaModelVersions ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEitherMissingRequiredProperties"; + + final SemanticError resultForLeft = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.leftUrn, VIOLATION_URN, "" ); + final SemanticError resultForRight = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.rightUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "either-shape", "TestEitherMissingRequiredProperties", + metaModelVersions, resultForLeft, resultForRight ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testValueForLeftAttributeIsNotACharacteristicExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEitherLeftAttributeNotACharacteristic"; + + final SemanticError resultForLeft = new SemanticError( + MESSAGE_VALUE_MUST_BE_CHARACTERISTIC, focusNode, bammUrns.leftUrn, VIOLATION_URN, + TEST_NAMESPACE_PREFIX + "LeftType" ); + expectSemanticValidationErrors( "either-shape", "TestEitherLeftAttributeNotACharacteristic", + metaModelVersion, resultForLeft ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testValueForRightAttributeIsNotACharacteristicExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEitherRightAttributeNotACharacteristic"; + + final SemanticError resultForRight = new SemanticError( + MESSAGE_VALUE_MUST_BE_CHARACTERISTIC, focusNode, bammUrns.rightUrn, VIOLATION_URN, + TEST_NAMESPACE_PREFIX + "RightType" ); + expectSemanticValidationErrors( "either-shape", "TestEitherRightAttributeNotACharacteristic", + metaModelVersion, resultForRight ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testSameCharacteristicForLeftAndRightExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEitherSameCharacteristicForLeftAndRight"; + + final SemanticError result = new SemanticError( + MESSAGE_EQUAL_CHARACTERISTICS, focusNode, bammUrns.leftUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "either-shape", "TestEitherSameCharacteristicForLeftAndRight", + metaModelVersion, result ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEitherDefinesDataTypeExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEitherDefinesDataType"; + + final SemanticError result = new SemanticError( + MESSAGE_MORE_THAN_ZERO_VALUES, focusNode, bammUrns.datatypeUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "either-shape", "TestEitherDefinesDataType", + metaModelVersion, result ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EncodingConstraintShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EncodingConstraintShapeTest.java new file mode 100644 index 00000000..cbcb8cdd --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EncodingConstraintShapeTest.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class EncodingConstraintShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testConstraintValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "encoding-constraint-shape", "TestEncodingConstraint", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidEncodingExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestInvalidEncodingConstraint"; + + final SemanticError resultForName = new SemanticError( MESSAGE_INVALID_ENCODING, + focusNode, bammUrns.valueUrn, VIOLATION_URN, "UTF-8" ); + expectSemanticValidationErrors( "encoding-constraint-shape", "TestInvalidEncodingConstraint", + metaModelVersion, resultForName ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EntityInstancesHaveOnlyKnownPropertiesShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EntityInstancesHaveOnlyKnownPropertiesShapeTest.java new file mode 100644 index 00000000..2126677f --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EntityInstancesHaveOnlyKnownPropertiesShapeTest.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class EntityInstancesHaveOnlyKnownPropertiesShapeTest extends AbstractShapeTest { + private final String FOCUS_NODE = TEST_NAMESPACE_PREFIX + "Instance"; + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testAdditionalUnknownPropertyExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError resultForName = new SemanticError( + MESSAGE_INSTANCE_UNKNOWN_PROPERTY, FOCUS_NODE, "", WARNING_URN, TEST_NAMESPACE_PREFIX + "intProperty" ); + expectSemanticValidationErrors( "entities-have-only-known-properties-shape", + "TestEntityInstanceWithUnknownProperties", + metaModelVersion, resultForName ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EntityShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EntityShapeTest.java new file mode 100644 index 00000000..3b828e4b --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EntityShapeTest.java @@ -0,0 +1,221 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class EntityShapeTest extends AbstractShapeTest { + private final String SECOND_TEST_ENTITY = TEST_NAMESPACE_PREFIX + "SecondTestEntity"; + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "entity-shape", "TestEntity", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityValidationWithRefinedEntityExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "entity-shape", "RefinedTestEntity", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredPropertiesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEntityMissingRequiredProperties"; + + final SemanticError resultForName = new SemanticError( MESSAGE_MISSING_REQUIRED_PROPERTY, + focusNode, bammUrns.nameUrn, VIOLATION_URN, "" ); + final SemanticError resultForProperties = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.propertiesUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "entity-shape", "TestEntityMissingRequiredProperties", metaModelVersion, + resultForName, resultForProperties ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEmptyPropertiesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEntityWithEmptyProperties"; + + final SemanticError resultForName = new SemanticError( MESSAGE_EMPTY_PROPERTY, + focusNode, bammUrns.nameUrn, VIOLATION_URN, "" ); + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_EMPTY_PROPERTY, + focusNode, bammUrns.preferredNameUrn, VIOLATION_URN, "@en" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_EMPTY_PROPERTY, + focusNode, bammUrns.descriptionUrn, VIOLATION_URN, "@en" ); + expectSemanticValidationErrors( "entity-shape", "TestEntityWithEmptyProperties", + metaModelVersion, resultForName, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLanguageStringNotUniqueExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEntityNonUniqueLangStrings"; + + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + focusNode, bammUrns.preferredNameUrn, VIOLATION_URN, "" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + focusNode, bammUrns.descriptionUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "entity-shape", "TestEntityNonUniqueLangStrings", metaModelVersion, + resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidLanguageStringsExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEntityWithInvalidLangStrings"; + + final SemanticError resultForPreferredName = new SemanticError( + MESSAGE_INVALID_LANG_STRING, focusNode, bammUrns.preferredNameUrn, VIOLATION_URN, "Test Entity" ); + final SemanticError resultForDescription = new SemanticError( + MESSAGE_INVALID_LANG_STRING, focusNode, bammUrns.descriptionUrn, VIOLATION_URN, "A test Entity" ); + expectSemanticValidationErrors( "entity-shape", "TestEntityWithInvalidLangStrings", metaModelVersion, + resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testPropertyListContainsInvalidElementsExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "entity-shape", "TestEntityWithInvalidProperties", metaModelVersion ); + assertThat( result.getResultMessage() ) + .satisfies( s -> assertThat( s ).isEqualTo( MESSAGE_INVALID_ENTRY_ENTITY_PROPERTY_LIST ) ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isEqualTo( SECOND_TEST_ENTITY ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityRefiningEntityDeclaresAdditionalPropertiesExpectFailure( + final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "entity-shape", "TestEntityRefiningEntityDeclaresAdditionalProperties", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_NO_ADDITIONAL_PROPERTIES ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isEqualTo( "" ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithOptionalPropertyExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "entity-shape", "TestEntityWithOptionalProperty", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithInvalidOptionalPropertyExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "entity-shape", "TestEntityWithInvalidOptionalProperty", metaModelVersion ); + assertThat( result.getResultMessage() ) + .satisfies( s -> assertThat( s ).isEqualTo( MESSAGE_INVALID_ENTRY_ENTITY_PROPERTY_LIST ) ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isNotEmpty(); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithMissingOptionalPropertyExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "entity-shape", "TestEntityWithMissingOptionalProperty", metaModelVersion ); + assertThat( result.getResultMessage() ) + .satisfies( s -> assertThat( s ).isEqualTo( MESSAGE_INVALID_ENTRY_ENTITY_PROPERTY_LIST ) ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isNotEmpty(); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithNotInPayloadPropertyExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "entity-shape", "TestEntityWithNotInPayloadProperty", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithNotInPayloadAndOptionalPropertyExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "entity-shape", "TestEntityWithNotInPayloadAndOptionalProperty", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_INVALID_ENTITY_PROPERTY_DEFINITION ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isEqualTo( "" ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithInvalidNotInPayloadPropertyExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "entity-shape", "TestEntityWithInvalidNotInPayloadProperty", metaModelVersion ); + assertThat( result.getResultMessage() ) + .satisfies( s -> assertThat( s ).isEqualTo( MESSAGE_INVALID_ENTRY_ENTITY_PROPERTY_LIST ) ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isNotEmpty(); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithOnlyNotInPayloadPropertyExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "entity-shape", "TestEntityWithSingleNotInPayloadProperty", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_INVALID_ENTITY_WITH_SINGLE_PROPERTY ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isEqualTo( "" ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithNotInPayloadPropertyNotUsedInEnumerationExpectFailure( + final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "entity-shape", "TestEntityWithNotInPayloadPropertyWithoutEnumeration", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_ENTITY_NOT_USED_IN_ENUMERATION ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isNotEmpty(); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testNestedEntityWithNotInPayloadPropertyExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "entity-shape", "NestedEntityWithNotInPayloadProperty", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithPropertyAndPayloadNameExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "entity-shape", "TestEntityWithPropertyAndPayloadName", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithOptionalPropertyAndPayloadNameExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "entity-shape", "TestEntityWithOptionalPropertyAndPayloadName", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithNotInPayloadPropertyAndPayloadNameExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "entity-shape", "TestEntityWithNotInPayloadPropertyAndPayloadName", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_INVALID_ENTITY_PROPERTY_PAYLOAD_NAME ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isEqualTo( "" ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EnumerationShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EnumerationShapeTest.java new file mode 100644 index 00000000..27c8a34d --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EnumerationShapeTest.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class EnumerationShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEnumerationValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "enumeration-shape", "TestEnumeration", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredPropertiesExpectFailure2( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEnumerationMissingRequiredProperties"; + + final SemanticError resultForDataType = new SemanticError( MESSAGE_MISSING_DATATYPE, + focusNode, bammUrns.datatypeUrn, VIOLATION_URN, "" ); + final SemanticError resultForValues = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.valuesUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "enumeration-shape", "TestEnumerationMissingRequiredProperties", + metaModelVersion, resultForDataType, resultForValues ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testValueIsNotOfDefinedDataTypeExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEnumerationValueIsNotOfDefinedDataType"; + + final SemanticError resultForName = new SemanticError( MESSAGE_VALUE_NOT_OF_DATATYPE, + focusNode, bammUrns.valuesUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "enumeration-shape", "TestEnumerationValueIsNotOfDefinedDataType", + metaModelVersion, resultForName ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testValueIsNotOfTypePropertyExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEnumerationValueIsNotOfTypeProperty"; + + final SemanticError resultForName = new SemanticError( MESSAGE_VALUE_NOT_OF_DATATYPE, + focusNode, bammUrns.valuesUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "enumeration-shape", "TestEnumerationValueIsNotOfTypeProperty", + metaModelVersion, resultForName ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testValueIsNotALiteralTypeExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestEnumerationValueIsNotALiteralType"; + + final SemanticError resultForName = new SemanticError( + "DataType is a literal type but one of the values is defined as bamm:Property.", focusNode, + bammUrns.valuesUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "enumeration-shape", "TestEnumerationValueIsNotALiteralType", + metaModelVersion, resultForName ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EventShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EventShapeTest.java new file mode 100644 index 00000000..84cb9e63 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/EventShapeTest.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class EventShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testAspectWithEventExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "event-shape", "AspectWithEvent", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testAspectWithEventMissingParametersExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "event-shape", "AspectWithEventMissingParameters", metaModelVersion ); + assertThat( result.getResultMessage() ) + .satisfies( s -> assertThat( s ).isEqualTo( MESSAGE_MISSING_REQUIRED_PROPERTY ) ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testAspectWithEventWithInvalidParametersExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "event-shape", "AspectWithEventWithInvalidParameters", metaModelVersion ); + assertThat( result.getResultMessage() ) + .satisfies( s -> assertThat( s ).isEqualTo( MESSAGE_VALUE_IS_NO_PROPERTY ) ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isNotEmpty(); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/FixedPointConstraintShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/FixedPointConstraintShapeTest.java new file mode 100644 index 00000000..71a18d4c --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/FixedPointConstraintShapeTest.java @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class FixedPointConstraintShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testFixedPointValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "fixed-point-constraint-shape", "TestFixedPoint", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredPropertiesExpectFailure2( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestFixedPointMissingRequiredProperties"; + + final SemanticError resultForScale = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.scale, VIOLATION_URN, "" ); + final SemanticError resultForInteger = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.integer, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "fixed-point-constraint-shape", "TestFixedPointMissingRequiredProperties", + metaModelVersion, resultForScale, resultForInteger ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testFixedPointValidationWithInvalidDataTypeExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestFixedPointWithInvalidDataType"; + + final SemanticError resultForScale = new SemanticError( + MESSAGE_FIXED_POINT_INVALID_DATA_TYPE, focusNode, bammUrns.scale, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "fixed-point-constraint-shape", "TestFixedPointWithInvalidDataType", + metaModelVersion, resultForScale ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testFixedPointValidationInCharacteristicChainWithInvalidDataTypeExpectFailure( + final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestFixedPointChainedWithInvalidDataType"; + + final SemanticError resultForScale = new SemanticError( + MESSAGE_FIXED_POINT_INVALID_DATA_TYPE, focusNode, bammUrns.scale, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "fixed-point-constraint-shape", "TestFixedPointChainedWithInvalidDataType", + metaModelVersion, resultForScale ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testFixedPointValidationWithInvalidAttributeDataType( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestFixedPointWithInvalidAttributeDataType"; + + final SemanticError resultForScale = new SemanticError( + MESSAGE_DATA_TYPE_NOT_POSITIVE_INTEGER, focusNode, bammUrns.scale, VIOLATION_URN, + "5^^http://www.w3.org/2001/XMLSchema#int" ); + + final SemanticError resultForInteger = new SemanticError( + MESSAGE_DATA_TYPE_NOT_POSITIVE_INTEGER, focusNode, bammUrns.integer, VIOLATION_URN, + "10^^http://www.w3.org/2001/XMLSchema#nonNegativeInteger" ); + + expectSemanticValidationErrors( "fixed-point-constraint-shape", + "TestFixedPointWithInvalidAttributeDataType", + metaModelVersion, resultForScale, resultForInteger ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/LanguageConstraintShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/LanguageConstraintShapeTest.java new file mode 100644 index 00000000..95ae565e --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/LanguageConstraintShapeTest.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class LanguageConstraintShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testPropertyValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "language-constraint-shape", "TestLanguageConstraint", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredProperties2( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestLanguageConstraintMissingRequiredProperties"; + + final SemanticError resultForLanguageCode = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.languageCodeUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "language-constraint-shape", + "TestLanguageConstraintMissingRequiredProperties", + metaModelVersion, resultForLanguageCode ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMultipleLanguageCodeProperties( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestLanguageConstraintMultipleLanguageCodeProperties"; + + final SemanticError result = new SemanticError( MESSAGE_DUPLICATE_PROPERTY, focusNode, + bammUrns.languageCodeUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( + "language-constraint-shape", "TestLanguageConstraintMultipleLanguageCodeProperties", + metaModelVersion, result ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/LengthConstraintShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/LengthConstraintShapeTest.java new file mode 100644 index 00000000..8bce91f2 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/LengthConstraintShapeTest.java @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.apache.jena.vocabulary.XSD; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class LengthConstraintShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLengthConstraintValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "length-constraint-shape", "TestLengthConstraint", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLengthConstraintValidationWithOnlyMinValueExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "length-constraint-shape", "TestLengthConstraintWithOnlyMinValue", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLengthConstraintValidationWithOnlyMaxValueExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "length-constraint-shape", "TestLengthConstraintWithOnlyMaxValue", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLengthConstraintValidationWithDateTimeExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "length-constraint-shape", "TestLengthConstraintWithDateTime", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLengthConstraintValidationWithCollectionExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "length-constraint-shape", "TestLengthConstraintWithCollection", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLengthConstraintValidationWithInvalidTypeExpectFailure( final KnownVersion metaModelVersion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "TestLengthConstraintWithInvalidType"; + + final SemanticError resultForDataType = new SemanticError( + MESSAGE_LENGTH_CONSTRAINT_DATA_TYPE, focusNode, "", VIOLATION_URN, XSD.xboolean.getURI() ); + expectSemanticValidationErrors( "length-constraint-shape", "TestLengthConstraintWithInvalidType", + metaModelVersion, resultForDataType ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLengthConstraintValidationWithInvalidMinMaxExpectFailure( final KnownVersion metaModelVersion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "TestLengthConstraintWithInvalidMinMax"; + + final SemanticError resultForDataType = new SemanticError( + MESSAGE_LENGTH_CONSTRAINT_MIN_MAX, focusNode, "", VIOLATION_URN, "minValue: 2 maxValue: 1" ); + expectSemanticValidationErrors( "length-constraint-shape", "TestLengthConstraintWithInvalidMinMax", + metaModelVersion, resultForDataType ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/ListShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/ListShapeTest.java new file mode 100644 index 00000000..8b02b73f --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/ListShapeTest.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Collection; +import java.util.List; +import java.util.Objects; + +import org.apache.jena.ext.com.google.common.collect.ImmutableList; +import org.apache.jena.rdf.model.Model; +import org.apache.jena.rdf.model.ResourceFactory; +import org.apache.jena.rdf.model.Statement; +import org.apache.jena.util.iterator.ExtendedIterator; +import org.apache.jena.vocabulary.RDF; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import org.topbraid.shacl.vocabulary.SH; + +public class ListShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testListTypeIsAPropertyOrOperationExpectSuccess( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final Model shapesModel = validator.loadShapes( metaModelVersion ); + final Model definitionsModel = loadMetaModelDefinitions( metaModelVersion ); + final List shapes = ImmutableList + .copyOf( shapesModel.listStatements( null, RDF.type, SH.NodeShape ) ); + shapes.stream().map( Statement::getSubject ) + .map( shapeResource -> shapeResource.listProperties( SH.property ).toList() ) + .flatMap( Collection::stream ) + .map( propertyStatement -> propertyStatement.getObject().asResource() ) + .map( propertyResource -> propertyResource + .getProperty( ResourceFactory.createProperty( bammUrns.listTypeUrn ) ) ) + .filter( Objects::nonNull ) + .map( Statement::getObject ) + .forEach( rdfNode -> assertThat( definitionsModel.containsResource( rdfNode ) ).isTrue() ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testListShapeWithMultipleListTypesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final Model shapesModel = validator.loadShapes( metaModelVersion ); + final List shapes = ImmutableList + .copyOf( shapesModel.listStatements( null, RDF.type, SH.NodeShape ) ); + shapes.stream().map( Statement::getSubject ) + .map( shapeResource -> shapeResource.listProperties( SH.property ).toList() ) + .flatMap( Collection::stream ) + .map( propertyStatement -> propertyStatement.getObject().asResource() ) + .map( propertyResource -> propertyResource + .listProperties( ResourceFactory.createProperty( bammUrns.listTypeUrn ) ) ) + .map( ExtendedIterator::toList ) + .map( List::size ) + .forEach( integer -> assertThat( integer ).isBetween( 0, 1 ) ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/LocaleConstraintShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/LocaleConstraintShapeTest.java new file mode 100644 index 00000000..3d718d9b --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/LocaleConstraintShapeTest.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class LocaleConstraintShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testPropertyValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "locale-constraint-shape", "TestLocaleConstraint", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredProperties2( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestLocaleConstraintMissingRequiredProperties"; + + final SemanticError resultForLocaleCode = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.localeCodeUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "locale-constraint-shape", + "TestLocaleConstraintMissingRequiredProperties", metaModelVersion, resultForLocaleCode ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMultipleLocaleCodeProperties( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestLocaleConstraintMultipleLocaleCodeProperties"; + + final SemanticError result = new SemanticError( MESSAGE_DUPLICATE_PROPERTY, focusNode, + bammUrns.localeCodeUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( + "locale-constraint-shape", "TestLocaleConstraintMultipleLocaleCodeProperties", + metaModelVersion, result ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/MeasurementShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/MeasurementShapeTest.java new file mode 100644 index 00000000..b2769fab --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/MeasurementShapeTest.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class MeasurementShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "measurement-shape", "TestMeasurement", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredPropertiesExpectFailure2( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestMeasurementMissingRequiredProperties"; + + final SemanticError resultForDataType = new SemanticError( MESSAGE_MISSING_DATATYPE, + focusNode, bammUrns.datatypeUrn, VIOLATION_URN, "" ); + final SemanticError resultForUnit = new SemanticError( MESSAGE_MISSING_REQUIRED_PROPERTY, + focusNode, bammUrns.unitUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "measurement-shape", "TestMeasurementMissingRequiredProperties", + metaModelVersion, resultForDataType, resultForUnit ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidUnitExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestMeasurementWithInvalidUnit"; + + final SemanticError error = new SemanticError( MESSAGE_IS_NO_UNIT, focusNode, + bammUrns.unitUrn, VIOLATION_URN, TEST_NAMESPACE_PREFIX + "Entity" ); + expectSemanticValidationErrors( "measurement-shape", "TestMeasurementWithInvalidUnit", + metaModelVersion, error ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/OperationShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/OperationShapeTest.java new file mode 100644 index 00000000..84ce080d --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/OperationShapeTest.java @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class OperationShapeTest extends AbstractShapeTest { + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testOperationValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "operation-shape", "TestOperation", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredPropertiesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String operationName = "TestOperationMissingRequiredProperties"; + final String operationId = TEST_NAMESPACE_PREFIX + operationName; + final SemanticError resultForName = new SemanticError( MESSAGE_MISSING_REQUIRED_PROPERTY, + operationId, bammUrns.nameUrn, VIOLATION_URN, "" ); + final SemanticError resultForInput = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, operationId, bammUrns.inputUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "operation-shape", operationName, + metaModelVersion, resultForName, resultForInput ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEmptyPropertiesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String aspectName = "TestOperationWithEmptyProperties"; + final String operationName = "TestOperation"; + final String operationId = TEST_NAMESPACE_PREFIX + operationName; + final SemanticError resultForName = new SemanticError( MESSAGE_EMPTY_PROPERTY, + operationId, bammUrns.nameUrn, VIOLATION_URN, "" ); + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_EMPTY_PROPERTY, + operationId, bammUrns.preferredNameUrn, VIOLATION_URN, "@en" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_EMPTY_PROPERTY, + operationId, bammUrns.descriptionUrn, VIOLATION_URN, "@en" ); + expectSemanticValidationErrors( "operation-shape", aspectName, + metaModelVersion, resultForName, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLanguageStringNotUniqueExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String aspectName = "TestOperationNonUniqueLangStrings"; + final String operationName = "TestOperation"; + final String operationId = TEST_NAMESPACE_PREFIX + operationName; + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + operationId, bammUrns.preferredNameUrn, VIOLATION_URN, "" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + operationId, bammUrns.descriptionUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "operation-shape", aspectName, + metaModelVersion, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidLanguageStringsExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final String aspectName = "TestOperationWithInvalidLangStrings"; + final String operationName = "TestOperation"; + final String operationId = TEST_NAMESPACE_PREFIX + operationName; + final SemanticError resultForPreferredName = new SemanticError( + MESSAGE_INVALID_LANG_STRING, operationId, bammUrns.preferredNameUrn, VIOLATION_URN, "Test Operation" ); + final SemanticError resultForDescription = new SemanticError( + MESSAGE_INVALID_LANG_STRING, operationId, bammUrns.descriptionUrn, VIOLATION_URN, "Test Operation." ); + expectSemanticValidationErrors( "operation-shape", aspectName, + metaModelVersion, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInputListContainsInvalidElementsExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "operation-shape", "TestOperationWithInvalidInput", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_VALUE_IS_NO_PROPERTY ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isEqualTo( TEST_NAMESPACE_PREFIX + "input" ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testOutputListContainsInvalidElementsExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "operation-shape", "TestOperationWithInvalidOutput", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_VALUE_IS_NO_PROPERTY ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isEqualTo( TEST_NAMESPACE_PREFIX + "output" ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/PayloadNameShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/PayloadNameShapeTest.java new file mode 100644 index 00000000..8f1c853e --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/PayloadNameShapeTest.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class PayloadNameShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testPayloadNameIsNotOfTypeStringExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "payload-name-shape", "PayloadNameNotOfTypeString", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_DATA_TYPE_NOT_STRING ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/PropertyShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/PropertyShapeTest.java new file mode 100644 index 00000000..36d63656 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/PropertyShapeTest.java @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class PropertyShapeTest extends AbstractShapeTest { + private final String FOCUS_NODE = TEST_NAMESPACE_PREFIX + "testProperty"; + private final String PROPERTY_TO_BE_REFINED_URN = TEST_NAMESPACE_PREFIX + "propertyToBeRefined"; + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testPropertyValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "property-shape", "TestProperty", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredPropertiesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final SemanticError resultForName = new SemanticError( MESSAGE_MISSING_REQUIRED_PROPERTY, + FOCUS_NODE, bammUrns.nameUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "property-shape", "TestPropertyMissingRequiredProperties", + metaModelVersion, resultForName ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testRecursivePropertyExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final SemanticError resultForName = new SemanticError( MESSAGE_RECURSIVE_PROPERTY, + FOCUS_NODE, bammUrns.characteristicUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "property-shape", "TestPropertyRecursiveProperty", + metaModelVersion, resultForName ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testRecursivePropertyWithOptionalExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "property-shape", "TestPropertyWithRecursivePropertyWithOptional", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEmptyPropertiesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final SemanticError resultForName = new SemanticError( MESSAGE_EMPTY_PROPERTY, + FOCUS_NODE, bammUrns.nameUrn, VIOLATION_URN, "" ); + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_EMPTY_PROPERTY, + FOCUS_NODE, bammUrns.preferredNameUrn, VIOLATION_URN, "@en" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_EMPTY_PROPERTY, + FOCUS_NODE, bammUrns.descriptionUrn, VIOLATION_URN, "@en" ); + expectSemanticValidationErrors( "property-shape", "TestPropertyWithEmptyProperties", + metaModelVersion, resultForName, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testLanguageStringNotUniqueExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final SemanticError resultForPreferredName = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + FOCUS_NODE, bammUrns.preferredNameUrn, VIOLATION_URN, "" ); + final SemanticError resultForDescription = new SemanticError( MESSAGE_LANG_NOT_UNIQUE, + FOCUS_NODE, bammUrns.descriptionUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "property-shape", "TestPropertyNonUniqueLangStrings", + metaModelVersion, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidLanguageStringsExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final SemanticError resultForPreferredName = new SemanticError( + MESSAGE_INVALID_LANG_STRING, FOCUS_NODE, bammUrns.preferredNameUrn, VIOLATION_URN, "Test Property" ); + final SemanticError resultForDescription = new SemanticError( + MESSAGE_INVALID_LANG_STRING, FOCUS_NODE, bammUrns.descriptionUrn, VIOLATION_URN, + "A property with a list of numeric values." ); + expectSemanticValidationErrors( "property-shape", "TestPropertyWithInvalidLangStrings", + metaModelVersion, resultForPreferredName, resultForDescription ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMultipleExampleValuesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final SemanticError resultForExampleValue = new SemanticError( + MESSAGE_DUPLICATE_PROPERTY, TEST_NAMESPACE_PREFIX + "numericList", bammUrns.exampleValueUrn, + VIOLATION_URN, + "" ); + expectSemanticValidationErrors( "property-shape", "TestPropertyWithMultipleExampleValues", + metaModelVersion, resultForExampleValue ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testExampleValueOnPropertyWithUndefinedCharacteristicExpectFailure( + final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final SemanticError resultForExampleValue = new SemanticError( + "An example value may not be set on a Property which does not have a Characteristic", + PROPERTY_TO_BE_REFINED_URN, bammUrns.exampleValueUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "property-shape", "TestPropertyWithExampleValueWithoutCharacteristic", + metaModelVersion, resultForExampleValue ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testRefinePropertyWithoutCharacteristicExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "property-shape", "TestPropertyRefiningPropertyWithoutCharacteristic", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testRefinePropertyWithCharacteristicExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final SemanticError result = new SemanticError( + "A Property with a Characteristic may not be refined.", + PROPERTY_TO_BE_REFINED_URN, bammUrns.characteristicUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "property-shape", "TestPropertyRefiningPropertyWithCharacteristic", + metaModelVersion, result ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testUnrefinedPropertyWithoutCharacteristicExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + + final SemanticError result = new SemanticError( + "A Property without a Characteristic has not been refined.", + FOCUS_NODE, bammUrns.characteristicUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "property-shape", "TestPropertyWithoutCharacteristicUnrefined", + metaModelVersion, result ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/QuantifiableShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/QuantifiableShapeTest.java new file mode 100644 index 00000000..d9d37e8b --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/QuantifiableShapeTest.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class QuantifiableShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testQuantifiableWithUnitValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "quantifiable-shape", "TestQuantifiable", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testQuantifiableWithoutUnitPropertyExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "quantifiable-shape", "TestQuantifiableWithoutUnitProperty", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingPropertiesExpectFailure2( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestQuantifiableWithMissingProperties"; + + final SemanticError resultForDataType = new SemanticError( MESSAGE_MISSING_DATATYPE, + focusNode, bammUrns.datatypeUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "quantifiable-shape", "TestQuantifiableWithMissingProperties", + metaModelVersion, resultForDataType ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidUnitExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestQuantifiableWithInvalidUnit"; + + final SemanticError error = new SemanticError( MESSAGE_IS_NO_UNIT, focusNode, + bammUrns.unitUrn, VIOLATION_URN, TEST_NAMESPACE_PREFIX + "Entity" ); + expectSemanticValidationErrors( "quantifiable-shape", "TestQuantifiableWithInvalidUnit", + metaModelVersion, error ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/RangeShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/RangeShapeTest.java new file mode 100644 index 00000000..f3c491e2 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/RangeShapeTest.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class RangeShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testRangeValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "range-shape", "TestRange", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredPropertiesExpectFailure2( final KnownVersion metaModelVersion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "TestRangeMissingRequiredProperties"; + + final SemanticError resultForMinAndMax = new SemanticError( MESSAGE_RANGE_NEEDS_MIN_MAX, + focusNode, "", VIOLATION_URN, focusNode ); + expectSemanticValidationErrors( "range-shape", "TestRangeMissingRequiredProperties", + metaModelVersion, resultForMinAndMax ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidDataTypeForMinAndMaxValue( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestRangeWithInvalidMinAndMaxValueDataType"; + + final SemanticError resultForMinValue = new SemanticError( + "The data type of the min value for the Range Constraint (see focus node) is not the data type defined in the base Characteristic.", + focusNode, bammUrns.minValueUrn, VIOLATION_URN, "" ); + final SemanticError resultForMaxValue = new SemanticError( + "The data type of the max value for the Range Constraint (see focus node) is not the data type defined in the base Characteristic.", + focusNode, bammUrns.maxValueUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "range-shape", "TestRangeWithInvalidMinAndMaxValueDataType", + metaModelVersion, resultForMinValue, resultForMaxValue ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidValueForLowerBoundDefinition( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String minimum = String + .format( bammUrns.minValueUrn.replace( "minValue", "MINIMUM" ), metaModelVersion.toVersionString() ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestRangeWithInvalidLowerBoundDefinition"; + + final SemanticError invalidLowerBoundDefinitionValue = new SemanticError( + MESSAGE_INVALID_LOWER_BOUND_DEFINITION_VALUE, focusNode, bammUrns.lowerBoundDefinition, VIOLATION_URN, + minimum ); + expectSemanticValidationErrors( "range-shape", "TestRangeWithInvalidLowerBoundDefinition", + metaModelVersion, invalidLowerBoundDefinitionValue ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidValueForUpperBoundDefinition( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String maximum = String + .format( bammUrns.maxValueUrn.replace( "maxValue", "MAXIMUM" ), metaModelVersion.toVersionString() ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestRangeWithInvalidUpperBoundDefinition"; + + final SemanticError invalidUpperBoundDefinitionValue = new SemanticError( + MESSAGE_INVALID_UPPER_BOUND_DEFINITION_VALUE, focusNode, bammUrns.upperBoundDefinition, VIOLATION_URN, + maximum ); + expectSemanticValidationErrors( "range-shape", "TestRangeWithInvalidUpperBoundDefinition", + metaModelVersion, invalidUpperBoundDefinitionValue ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMultipleBoundDefinitions( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestRangeWithMultipleBoundDefinitions"; + + final SemanticError resultForUpperBoundDefinition = new SemanticError( + MESSAGE_INVALID_UPPER_BOUND_DEFINITION_VALUE, focusNode, bammUrns.upperBoundDefinition, VIOLATION_URN, + "" ); + final SemanticError resultForLowerBoundDefinition = new SemanticError( + MESSAGE_INVALID_LOWER_BOUND_DEFINITION_VALUE, focusNode, bammUrns.lowerBoundDefinition, VIOLATION_URN, + "" ); + expectSemanticValidationErrors( "range-shape", "TestRangeWithMultipleBoundDefinitions", + metaModelVersion, resultForUpperBoundDefinition, resultForLowerBoundDefinition ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/RegularExpressionConstraintShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/RegularExpressionConstraintShapeTest.java new file mode 100644 index 00000000..0aa3dcf5 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/RegularExpressionConstraintShapeTest.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.apache.jena.vocabulary.XSD; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class RegularExpressionConstraintShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testRegularExpressionConstraintValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "regular-expression-constraint-shape", "TestRegularExpressionConstraint", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testRegularExpressionConstraintValidationWithInvalidReqularExpressionExpectFailure( + final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestRegularExpressionConstraintWithInvalidRegularExpression"; + + final SemanticError resultForRegularExpression = new SemanticError( + MESSAGE_INVALID_REGULAR_EXPRESSION, focusNode, bammUrns.valueUrn, VIOLATION_URN, "(" ); + expectSemanticValidationErrors( "regular-expression-constraint-shape", + "TestRegularExpressionConstraintWithInvalidRegularExpression", + metaModelVersion, resultForRegularExpression ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testRegularExpressionConstraintValidationWithInvalidTypeExpectFailure( + final KnownVersion metaModelVersion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "TestRegularExpressionConstraintWithInvalidType"; + + final SemanticError resultForDataType = new SemanticError( + MESSAGE_REGULAR_EXPRESSION_CONSTRAINT_DATA_TYPE, focusNode, "", VIOLATION_URN, XSD.xboolean.getURI() ); + expectSemanticValidationErrors( + "regular-expression-constraint-shape", "TestRegularExpressionConstraintWithInvalidType", + metaModelVersion, resultForDataType ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/SeeShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/SeeShapeTest.java new file mode 100644 index 00000000..a69a8bf5 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/SeeShapeTest.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class SeeShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testSeePropertyValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "see-shape", "TestSeeProperty", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testSeePropertyDoesNotHaveNodeKindIriExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String aspectName = "TestSeePropertyDoesNotHaveNodeKindIri"; + final String focusNode = TEST_NAMESPACE_PREFIX + aspectName; + final SemanticError resultForSee = new SemanticError( + MESSAGE_VALUE_DOES_NOT_HAVE_NODE_KIND_IRI, focusNode, bammUrns.seeUrn, VIOLATION_URN, + "http://open-manufacturing.org/" ); + expectSemanticValidationErrors( "see-shape", aspectName, metaModelVersion, resultForSee ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/SingleEntityShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/SingleEntityShapeTest.java new file mode 100644 index 00000000..fe18fc7f --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/SingleEntityShapeTest.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class SingleEntityShapeTest extends AbstractShapeTest { + + private final String MESSAGE_INCORRECT_DATATYPE = "The dataType (see value) that is used as dataType on the Characteristic (see focusNode) is not a bamm:Entity."; + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testCharacteristicInstanceWithEntityDataTypeValidationExpectSuccess( + final KnownVersion metaModelVersion ) { + checkValidity( "single-entity-shape", "TestSingleEntityWithEntityDataType", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testSingleEntityWithXsdDataTypeExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestSingleEntityWithXSDDataType"; + + final SemanticError resultForDataType = new SemanticError( MESSAGE_INCORRECT_DATATYPE, + focusNode, bammUrns.datatypeUrn, VIOLATION_URN, + "http://www.w3.org/2001/XMLSchema#integer" ); + expectSemanticValidationErrors( "single-entity-shape", "TestSingleEntityWithXSDDataType", + metaModelVersion, resultForDataType ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/StateShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/StateShapeTest.java new file mode 100644 index 00000000..3716e95e --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/StateShapeTest.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class StateShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testStateValidationExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "state-shape", "TestState", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredPropertiesExpectFailure2( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStateMissingRequiredProperties"; + + final SemanticError resultForDataType = new SemanticError( MESSAGE_MISSING_DATATYPE, + focusNode, bammUrns.datatypeUrn, VIOLATION_URN, "" ); + final SemanticError resultForValues = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.valuesUrn, VIOLATION_URN, "" ); + final SemanticError resultForDefaultValue = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.defaultValueUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "state-shape", "TestStateMissingRequiredProperties", + metaModelVersion, resultForDataType, resultForValues, resultForDefaultValue ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testDefaultValueNotContainedInValuesExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStateDefaultValueNotInValues"; + + final SemanticError resultForDefaultValue = new SemanticError( + "Values does not contain the default value.", + focusNode, bammUrns.defaultValueUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "state-shape", "TestStateDefaultValueNotInValues", + metaModelVersion, resultForDefaultValue ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/StructuredValueShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/StructuredValueShapeTest.java new file mode 100644 index 00000000..0abf2b7a --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/StructuredValueShapeTest.java @@ -0,0 +1,187 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.apache.jena.vocabulary.XSD; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class StructuredValueShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testValidStructuredValueExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "structured-value-shape", "TestStructuredValue", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredPropertiesExpectFailure2( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStructuredValueMissingRequiredProperties"; + + final SemanticError resultForDeconstructionRule = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.deconstructionRule, VIOLATION_URN, "" ); + final SemanticError resultForElements = new SemanticError( + MESSAGE_MISSING_REQUIRED_PROPERTY, focusNode, bammUrns.elements, VIOLATION_URN, "" ); + final SemanticError resultForDatatype = new SemanticError( + MESSAGE_MISSING_DATATYPE, focusNode, bammUrns.datatypeUrn, VIOLATION_URN, "" ); + expectSemanticValidationErrors( "structured-value-shape", "TestStructuredValueMissingRequiredProperties", + metaModelVersion, resultForDeconstructionRule, resultForElements, resultForDatatype ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testStructuredValueValidationWithInvalidRegularExpressionExpectFailure( + final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStructuredValueWithInvalidRegularExpression"; + + final SemanticError resultForRegularExpression = new SemanticError( + MESSAGE_INVALID_DECONSTRUCTION_RULE, focusNode, bammUrns.deconstructionRule, VIOLATION_URN, "((((" ); + expectSemanticValidationErrors( "structured-value-shape", + "TestStructuredValueWithInvalidRegularExpression", + metaModelVersion, resultForRegularExpression ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testElementsContainInvalidElementsExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError result = getSingleSemanticValidationError( + "structured-value-shape", "TestStructuredValueWithInvalidElements", metaModelVersion ); + assertThat( result.getResultMessage() ).isEqualTo( MESSAGE_INVALID_STRUCTURED_VALUE_ELEMENTS ); + assertThat( result.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( result.getValue() ).isEqualTo( "42" ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEmptyElementsExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStructuredValueWithEmptyElements"; + + final SemanticError resultForElements = new SemanticError( + MESSAGE_EMPTY_STRUCTURED_VALUE_ELEMENTS, focusNode, bammUrns.elements, VIOLATION_URN, focusNode ); + final SemanticError resultForGroups = new SemanticError( + MESSAGE_INVALID_MATCHING_GROUPS2, focusNode, "", VIOLATION_URN, "" ); + expectSemanticValidationErrors( "structured-value-shape", "TestStructuredValueWithEmptyElements", + metaModelVersion, resultForElements, resultForGroups ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testStructuredValueWithInvalidTypeExpectFailure( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStructuredValueWithInvalidDatatype"; + + final SemanticError resultForDataType = new SemanticError( + MESSAGE_STRUCTURED_VALUE_DATA_TYPE, focusNode, bammUrns.datatypeUrn, VIOLATION_URN, + XSD.xboolean.getURI() ); + expectSemanticValidationErrors( + "structured-value-shape", "TestStructuredValueWithInvalidDatatype", + metaModelVersion, resultForDataType ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidDeconstructionExpectFailure( final KnownVersion metaModelVersion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStructuredValueWithInvalidDeconstruction"; + + final SemanticError resultForElements = new SemanticError( + MESSAGE_INVALID_DECONSTRUCTION, focusNode, "", VIOLATION_URN, "" ); + expectSemanticValidationErrors( "structured-value-shape", "TestStructuredValueWithInvalidDeconstruction", + metaModelVersion, resultForElements ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidMatchingGroupsExpectFailure( final KnownVersion metaModelVersion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStructuredValueWithInvalidMatchingGroups"; + + final SemanticError resultForElements = new SemanticError( + MESSAGE_INVALID_MATCHING_GROUPS, focusNode, "", VIOLATION_URN, "" ); + expectSemanticValidationErrors( "structured-value-shape", "TestStructuredValueWithInvalidMatchingGroups", + metaModelVersion, resultForElements ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testNonMatchingGroupsExpectFailure( final KnownVersion metaModelVersion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStructuredValueWithNonMatchingGroups"; + + final SemanticError resultForElements = new SemanticError( + MESSAGE_NON_MATCHING_GROUPS, focusNode, "", VIOLATION_URN, "" ); + expectSemanticValidationErrors( "structured-value-shape", "TestStructuredValueWithNonMatchingGroups", + metaModelVersion, resultForElements ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testElementsContainsNoProperty( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStructuredValueElementsWithoutProperties"; + + final SemanticError resultForElements = new SemanticError( + MESSAGE_ELEMENTS_MUST_CONTAIN_PROPERTIES, focusNode, bammUrns.elements, VIOLATION_URN, "foo" ); + expectSemanticValidationErrors( "structured-value-shape", "TestStructuredValueElementsWithoutProperties", + metaModelVersion, resultForElements ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testElementsWithNonScalarDatatype( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStructuredValueElementsWithNonScalarDatatype"; + + final SemanticError resultForElements = new SemanticError( + MESSAGE_ELEMENTS_MUST_HAVE_SCALAR_TYPE, focusNode, bammUrns.elements, VIOLATION_URN, + TEST_NAMESPACE_PREFIX + "prop" ); + expectSemanticValidationErrors( "structured-value-shape", + "TestStructuredValueElementsWithNonScalarDatatype", + metaModelVersion, resultForElements ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testElementsWithListCharacteristic( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = TEST_NAMESPACE_PREFIX + "TestStructuredValueElementsWithListCharacteristic"; + + final SemanticError resultForElements = new SemanticError( + MESSAGE_ELEMENTS_HAVE_INVALID_CHARACTERISTIC, focusNode, bammUrns.elements, VIOLATION_URN, + bammUrns.list ); + expectSemanticValidationErrors( "structured-value-shape", + "TestStructuredValueElementsWithListCharacteristic", + metaModelVersion, resultForElements ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testElementsWithStructuredValueCharacteristic( final KnownVersion metaModelVersion ) { + final BammUrns bammUrns = new BammUrns( metaModelVersion ); + final String focusNode = + TEST_NAMESPACE_PREFIX + "TestStructuredValueElementsWithStructuredValueCharacteristic"; + + final SemanticError resultForElements = new SemanticError( + MESSAGE_ELEMENTS_HAVE_INVALID_CHARACTERISTIC, focusNode, bammUrns.elements, VIOLATION_URN, + bammUrns.structuredValue ); + expectSemanticValidationErrors( "structured-value-shape", + "TestStructuredValueElementsWithStructuredValueCharacteristic", + metaModelVersion, resultForElements ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/UniqueEntityInstancesShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/UniqueEntityInstancesShapeTest.java new file mode 100644 index 00000000..f52ba909 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/UniqueEntityInstancesShapeTest.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class UniqueEntityInstancesShapeTest extends AbstractShapeTest { + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testIdenticalInstancesExpectFailure( final KnownVersion metaModelVersion ) { + final String focusNode = TEST_NAMESPACE_PREFIX + "Instance"; + final SemanticError resultForName = new SemanticError( MESSAGE_IDENTICAL_INSTANCES, + focusNode, "", WARNING_URN, focusNode + "2" ); + expectSemanticValidationErrors( "unique-entity-instance-shape", + "TestEntityInstanceIdenticalInstances", + metaModelVersion, resultForName ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInstancesWithSomeIdenticalValuesExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "unique-entity-instance-shape", "TestEntityInstanceSomeIdenticalValues", metaModelVersion ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/UnitUrns.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/UnitUrns.java new file mode 100644 index 00000000..141b56cc --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/UnitUrns.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +public class UnitUrns { + + private final String UNITS_URN = "urn:bamm:io.openmanufacturing:%s:%s#"; + + String voltUrn; + + UnitUrns( final String elementType, final KnownVersion testedBammVersion ) { + voltUrn = String.format( UNITS_URN + "volt", elementType, testedBammVersion.toVersionString() ); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/aspectmetamodel/ValidEntityInstancesShapeTest.java b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/ValidEntityInstancesShapeTest.java new file mode 100644 index 00000000..906267dd --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/aspectmetamodel/ValidEntityInstancesShapeTest.java @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.aspectmetamodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import io.openmanufacturing.sds.validation.SemanticError; + +public class ValidEntityInstancesShapeTest extends AbstractShapeTest { + private final String FOCUS_NODE = TEST_NAMESPACE_PREFIX + "Instance"; + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityInstanceExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "valid-entity-instance-shape", "TestEntityInstance", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingRequiredPropertyExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError resultForMissingProperty = new SemanticError( + MESSAGE_INSTANCE_MISSING_REQUIRED_PROPERTY, FOCUS_NODE, "", VIOLATION_URN, + TEST_NAMESPACE_PREFIX + "intProperty" ); + expectSemanticValidationErrors( "valid-entity-instance-shape", + "TestEntityInstanceMissingRequiredProperties", + metaModelVersion, resultForMissingProperty ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingOptionalPropertyExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "valid-entity-instance-shape", "TestEntityInstanceMissingOptionalProperties", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testInvalidValueTypeExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError resultInvalidValueType = new SemanticError( + MESSAGE_INSTANCE_INVALID_VALUE_TYPE, + FOCUS_NODE, TEST_NAMESPACE_PREFIX + "intProperty", VIOLATION_URN, "bar" ); + expectSemanticValidationErrors( "valid-entity-instance-shape", + "TestEntityInstanceInvalidValueType", + metaModelVersion, resultInvalidValueType ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testMissingNotInPayloadPropertyExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError validationError = getSingleSemanticValidationError( + "valid-entity-instance-shape", + "TestEntityInstanceMissingNotInPayloadProperties", + metaModelVersion ); + + assertThat( validationError.getResultMessage() ).isEqualTo( MESSAGE_INSTANCE_MISSING_REQUIRED_PROPERTY ); + assertThat( validationError.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( validationError.getValue() ).isNotEmpty(); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityInstanceWithListExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "valid-entity-instance-shape", "TestEntityWithListInstance", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithListInstanceWithoutListExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError validationError = getSingleSemanticValidationError( + "valid-entity-instance-shape", + "TestEntityWithListInstanceWithoutList", + metaModelVersion ); + + assertThat( validationError.getResultMessage() ).isEqualTo( MESSAGE_INSTANCE_INVALID_TYPE_FOR_LIST_PROPERTY ); + assertThat( validationError.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( validationError.getValue() ).isNotEmpty(); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithListInstanceInvalidTypeInListExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError validationError = getSingleSemanticValidationError( + "valid-entity-instance-shape", + "TestEntityWithListInstanceInvalidTypeInList", + metaModelVersion ); + + assertThat( validationError.getResultMessage() ).isEqualTo( MESSAGE_INSTANCE_INVALID_TYPE_CONTAINED_IN_LIST ); + assertThat( validationError.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( validationError.getValue() ).isNotEmpty(); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityInstanceWithEntityListExpectSuccess( final KnownVersion metaModelVersion ) { + checkValidity( "valid-entity-instance-shape", "TestEntityWithEntityListInstance", metaModelVersion ); + } + + @ParameterizedTest + @MethodSource( value = "allVersions" ) + public void testEntityWithEntityListInstanceInvalidTypeInListExpectFailure( final KnownVersion metaModelVersion ) { + final SemanticError validationError = getSingleSemanticValidationError( + "valid-entity-instance-shape", + "TestEntityWithEntityListInstanceInvalidTypeInList", + metaModelVersion ); + + assertThat( validationError.getResultMessage() ).isEqualTo( MESSAGE_INSTANCE_INVALID_TYPE_CONTAINED_IN_LIST ); + assertThat( validationError.getResultSeverity() ).isEqualTo( VIOLATION_URN ); + assertThat( validationError.getValue() ).isNotEmpty(); + } +} diff --git a/src/test/java/io/openmanufacturing/sds/validation/ModelLoader.java b/src/test/java/io/openmanufacturing/sds/validation/ModelLoader.java new file mode 100644 index 00000000..83331f25 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/validation/ModelLoader.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.validation; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.List; + +import org.apache.jena.rdf.model.Model; +import org.apache.jena.rdf.model.ModelFactory; +import org.apache.jena.riot.RDFLanguages; + +/** + * Utilities to load RDF/Turtle files + */ +public class ModelLoader { + public static Model createModel( final String resourcePath ) { + final URL resourceUrl = ModelLoader.class.getClassLoader().getResource( resourcePath ); + return resourceUrl != null ? createModel( resourceUrl ) : ModelFactory.createDefaultModel(); + } + + public static Model createModel( final URL input ) { + try { + return createModel( input.openStream() ); + } catch ( final IOException exception ) { + throw new RuntimeException( exception ); + } + } + + public static Model createModel( final InputStream inputStream ) { + final Model streamModel = ModelFactory.createDefaultModel(); + streamModel.read( inputStream, "", RDFLanguages.TURTLE.getName() ); + return streamModel; + } + + public static Model createModel( final List resourcePaths ) { + final Model model = ModelFactory.createDefaultModel(); + resourcePaths.stream().map( ModelLoader::createModel ).forEach( model::add ); + return model; + } +} diff --git a/src/test/java/io/openmanufacturing/sds/validation/SemanticError.java b/src/test/java/io/openmanufacturing/sds/validation/SemanticError.java new file mode 100644 index 00000000..ddcfe654 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/validation/SemanticError.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.validation; + +import java.util.Objects; + +/** + * Represents a validation result as described by the + * SHACL specification. + */ +public class SemanticError { + String resultMessage; + String focusNode; + String resultPath; + String resultSeverity; + String value; + + public SemanticError( final String resultMessage, final String focusNode, final String resultPath, + final String resultSeverity, + final String value ) { + this.resultMessage = resultMessage; + this.focusNode = focusNode; + this.resultPath = resultPath; + this.resultSeverity = resultSeverity; + this.value = value; + } + + @Override + public String toString() { + return String.format( "resultMessage: %s\n" + + "focusNode: %s\n" + + "resultPath: %s\n" + + "resultSeverity: %s\n" + + "value: %s\n", + resultMessage, focusNode, resultPath, resultSeverity, value ); + } + + @Override + public boolean equals( final Object o ) { + if ( this == o ) { + return true; + } + if ( o == null || getClass() != o.getClass() ) { + return false; + } + final SemanticError that = (SemanticError) o; + return Objects.equals( resultMessage, that.resultMessage ) && Objects + .equals( focusNode, that.focusNode ) && Objects.equals( resultPath, that.resultPath ) + && Objects.equals( resultSeverity, that.resultSeverity ) && Objects + .equals( value, that.value ); + } + + @Override + public int hashCode() { + return Objects.hash( resultMessage, focusNode, resultPath, resultSeverity, value ); + } + + public String getResultMessage() { + return resultMessage; + } + + public String getFocusNode() { + return focusNode; + } + + public String getResultPath() { + return resultPath; + } + + public String getResultSeverity() { + return resultSeverity; + } + + public String getValue() { + return value; + } +} diff --git a/src/test/java/io/openmanufacturing/sds/validation/ValidationReport.java b/src/test/java/io/openmanufacturing/sds/validation/ValidationReport.java new file mode 100644 index 00000000..a64f976a --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/validation/ValidationReport.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.validation; + +import java.util.Collection; +import java.util.Collections; +import java.util.stream.Collectors; + +/** + * Represents the result of a SHACL validation + */ +public abstract class ValidationReport { + private ValidationReport() { + } + + /** + * Represents a succeeded validation + */ + public static class ValidReport extends ValidationReport { + @Override + public boolean conforms() { + return true; + } + + @Override + public String toString() { + return "Validation report: Input model is valid"; + } + + @Override + public Collection getValidationErrors() { + return Collections.emptyList(); + } + } + + /** + * Represents a failed validation + */ + public static class InvalidReport extends ValidationReport { + private final Collection validationErrors; + + InvalidReport( final Collection errors ) { + this.validationErrors = errors; + } + + @Override + public boolean conforms() { + return false; + } + + @Override + public Collection getValidationErrors() { + return validationErrors; + } + + @Override + public String toString() { + return "Validation report: Validation failed: \n" + + validationErrors.stream().map( SemanticError::toString ).collect( Collectors.joining( "\n" ) ); + } + } + + /** + * Determines if the validation was successful. + * + * @return true, if the validation was successful, false if there are validation results + */ + public abstract boolean conforms(); + + /** + * Returns an {@link Collection} containing the validation errors, if {@link #conforms()} returns true, otherwise an + * empty {@link Collection} is returned. + * + * @return an {@link Collection} containing the collection of validation errors + */ + public abstract Collection getValidationErrors(); +} diff --git a/src/test/java/io/openmanufacturing/sds/validation/Validator.java b/src/test/java/io/openmanufacturing/sds/validation/Validator.java new file mode 100644 index 00000000..05a2f370 --- /dev/null +++ b/src/test/java/io/openmanufacturing/sds/validation/Validator.java @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH + * + * See the AUTHORS file(s) distributed with this work for additional + * information regarding authorship. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + */ + +package io.openmanufacturing.sds.validation; + +import java.net.URL; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.function.BiFunction; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import org.apache.jena.datatypes.xsd.XSDDatatype; +import org.apache.jena.rdf.model.Model; +import org.apache.jena.rdf.model.NodeIterator; +import org.apache.jena.rdf.model.Property; +import org.apache.jena.rdf.model.RDFNode; +import org.apache.jena.rdf.model.Resource; +import org.apache.jena.rdf.model.ResourceFactory; +import org.apache.jena.rdf.model.Statement; +import org.topbraid.shacl.validation.ValidationUtil; +import org.topbraid.shacl.vocabulary.SH; + +import io.openmanufacturing.sds.aspectmetamodel.KnownVersion; +import io.vavr.Tuple2; + +public class Validator implements BiFunction { + private final Map shapesModel = new HashMap<>(); + + protected Model getShapesModel( final KnownVersion version ) { + if ( shapesModel.get( version ) != null ) { + return shapesModel.get( version ); + } + final Model result = loadShapes( version ); + shapesModel.put( version, result ); + return result; + } + + @Override + public ValidationReport apply( final Model model, final KnownVersion version ) { + final Resource report = ValidationUtil.validateModel( model, getShapesModel( version ), true ); + + if ( report.getProperty( SH.conforms ).getObject().asLiteral().getBoolean() ) { + return new ValidationReport.ValidReport(); + } + + return new ValidationReport.InvalidReport( buildSemanticValidationErrors( report ) ); + } + + private String getValidationResultField( final Resource validationResultResource, final Property property ) { + return Optional.ofNullable( validationResultResource.getProperty( property ) ) + .map( Statement::getObject ) + .map( RDFNode::toString ) + .orElse( "" ); + } + + private Collection buildSemanticValidationErrors( final Resource report ) { + final Collection semanticValidationErrors = new ArrayList<>(); + for ( final NodeIterator it = report.getModel().listObjectsOfProperty( report, SH.result ); it.hasNext(); ) { + final Resource validationResultResource = it.next().asResource(); + final String resultMessage = getValidationResultField( validationResultResource, SH.resultMessage ); + final String focusNode = getValidationResultField( validationResultResource, SH.focusNode ); + final String resultPath = getValidationResultField( validationResultResource, SH.resultPath ); + final String resultSeverity = getValidationResultField( validationResultResource, SH.resultSeverity ); + final String value = getValidationResultField( validationResultResource, SH.value ); + semanticValidationErrors + .add( new SemanticError( resultMessage, focusNode, resultPath, resultSeverity, value ) ); + } + return semanticValidationErrors; + } + + public Model loadShapes( final KnownVersion version ) { + final Model shapesModel = ModelLoader.createModel( List.of( + "bamm/meta-model/" + version.toVersionString() + "/prefix-declarations.ttl", + "bamm/meta-model/" + version.toVersionString() + "/aspect-meta-model-shapes.ttl", + "bamm/meta-model/" + version.toVersionString() + "/type-conversions.ttl", + "bamm/characteristic/" + version.toVersionString() + "/characteristic-shapes.ttl" + ) ); + final Set> changeSet = determineBammUrlsToReplace( shapesModel ); + changeSet.forEach( urlReplacement -> { + shapesModel.remove( urlReplacement._1() ); + shapesModel.add( urlReplacement._2() ); + } ); + + return shapesModel; + } + + /** + * Determines all statements that refer to a bamm:// URL and their replacements where the bamm:// URL has + * been replaced with a URL that is resolvable in the current context (e.g. to the class path or via HTTP). + * + * @param model the input model + * @return the tuples of the original statement to replace and the replacement statement + */ + private Set> determineBammUrlsToReplace( final Model model ) { + return model.listStatements( null, SH.jsLibraryURL, (RDFNode) null ).toList().stream() + .filter( statement -> statement.getObject().isLiteral() ) + .filter( statement -> statement.getObject().asLiteral().getString().startsWith( "bamm://" ) ) + .flatMap( statement -> rewriteBammUrl( statement.getObject().asLiteral().getString() ) + .stream() + .map( newUrl -> + ResourceFactory.createStatement( statement.getSubject(), statement.getPredicate(), + ResourceFactory.createTypedLiteral( newUrl, XSDDatatype.XSDanyURI ) ) ) + .map( newStatement -> new Tuple2<>( statement, newStatement ) ) ) + .collect( Collectors.toSet() ); + } + + /** + * URLs inside meta model shapes, in particular those used with sh:jsLibraryURL, are given as bamm:// URLs + * in order to decouple them from the way they are resolved (i.e. currently to a file in the class path, but + * in the future this could be resolved using the URL of a suitable service). This method takes a bamm:// URL + * and rewrites it to the respective URL of the object on the class path. + * + * @param bammUrl the bamm URL in the format bamm://PART/VERSION/FILENAME + * @return The corresponding class path URL to resolve the meta model resource + */ + private Optional rewriteBammUrl( final String bammUrl ) { + final Matcher matcher = Pattern.compile( "^bamm://([\\p{Alpha}-]*)/(\\d+\\.\\d+\\.\\d+)/(.*)$" ) + .matcher( bammUrl ); + if ( matcher.find() ) { + return KnownVersion.fromVersionString( matcher.group( 2 ) ).flatMap( metaModelVersion -> { + final String spec = String + .format( "bamm/%s/%s/%s", matcher.group( 1 ), metaModelVersion.toVersionString(), + matcher.group( 3 ) ); + final URL resource = Validator.class.getClassLoader().getResource( spec ); + return Optional.ofNullable( resource ).map( URL::toString ); + } ); + } + return Optional.empty(); + } +} diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspect.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspect.ttl new file mode 100644 index 00000000..306d4650 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspect.ttl @@ -0,0 +1,107 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspect a bamm:Aspect ; + bamm:name "TestAspect" ; + bamm:preferredName "Test Aspect"@en ; + bamm:preferredName "Test Aspekt"@de ; + bamm:properties ( :stringProperty :integerProperty :entityProperty ) ; + bamm:operations ( ) . + +:stringProperty a bamm:Property ; + bamm:name "stringProperty" ; + bamm:preferredName "String Property"@en ; + bamm:preferredName "String Wert"@de ; + bamm:description "A property with a text value."@en ; + bamm:description "Eine Property mit einem textuellen Wert."@de ; + bamm:characteristic bamm-c:Text . + +:integerProperty a bamm:Property ; + bamm:name "integerProperty" ; + bamm:preferredName "Integer Property"@en ; + bamm:preferredName "Numerischer Wert"@de ; + bamm:description "A property with a numeric value."@en ; + bamm:description "Eine Property mit einem numerischen Wert."@de ; + bamm:characteristic :TestTrait . + +:TestTrait a bamm-c:Trait ; + bamm:name "TestTrait" ; + bamm-c:baseCharacteristic :IntegerCharacteristic ; + bamm-c:constraint :TestRangeConstraint . + +:entityProperty a bamm:Property ; + bamm:name "entityProperty" ; + bamm:preferredName "Entity Property"@en ; + bamm:preferredName "Komplexer Wert"@de ; + bamm:description "A property with a complex value."@en ; + bamm:description "Eine Property mit einem komplexem Wert."@de ; + bamm:characteristic :EntityCharacteristic . + +:TestRangeConstraint a bamm-c:RangeConstraint ; + bamm:name "TestRangeConstraint" ; + bamm:preferredName "Test Range Constraint"@en ; + bamm:preferredName "Test Range Constraint"@de ; + bamm:description "Restricts a numeric value to values between 0 and 100."@en ; + bamm:description "Beschränkt einen numerischen Wert auf Werte zwischen 0 und 100."@de ; + bamm-c:minValue "0"^^xsd:integer ; + bamm-c:maxValue "100"^^xsd:integer . + +:IntegerCharacteristic a bamm:Characteristic ; + bamm:name "IntegerCharacteristic" ; + bamm:preferredName "Integer Characteristic"@en ; + bamm:preferredName "Numerische Charakteristik"@de ; + bamm:description "Positive Numbers"@en ; + bamm:description "Positive Zahlen"@de ; + bamm:dataType xsd:integer . + +:EntityCharacteristic a bamm:Characteristic ; + bamm:name "EntityCharacteristic" ; + bamm:preferredName "Entity Characteristic"@en ; + bamm:preferredName "Entität Charakteristik"@de ; + bamm:description "Complex Values"@en ; + bamm:description "Komplexe Werte"@de ; + bamm:dataType :TestEntity . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:preferredName "Test Entity"@en ; + bamm:preferredName "Test Entität"@de ; + bamm:properties ( :entityList :integerList ). + +:entityList a bamm:Property ; + bamm:name "entityList" ; + bamm:preferredName "Entity List"@en ; + bamm:preferredName "Entitätliste"@de ; + bamm:description "A property with a list of complex value."@en ; + bamm:description "Eine Property mit einer Liste mit komplexen Werten."@de ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "EntityList" ; + bamm:dataType :TestEntity + ] . + +:integerList a bamm:Property ; + bamm:name "integerList" ; + bamm:preferredName "Integer List"@en ; + bamm:preferredName "Numerische Liste"@de ; + bamm:description "A property with a list of numeric value."@en ; + bamm:description "Eine Property mit einer Liste mit numerischen Werten."@de ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "NumericList" ; + bamm:dataType xsd:integer + ] . diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectMissingRequiredAspectProperties.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectMissingRequiredAspectProperties.ttl new file mode 100644 index 00000000..762c1bb4 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectMissingRequiredAspectProperties.ttl @@ -0,0 +1,18 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectMissingRequiredAspectProperties a bamm:Aspect . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectNonUniqueLangStrings.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectNonUniqueLangStrings.ttl new file mode 100644 index 00000000..523fe12f --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectNonUniqueLangStrings.ttl @@ -0,0 +1,25 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectNonUniqueLangStrings a bamm:Aspect ; + bamm:name "TestAspectNonUniqueLangStrings" ; + bamm:preferredName "Test Aspect"@en ; + bamm:preferredName "Test Aspekt"@en ; + bamm:description "Test Aspect Description"@en ; + bamm:description "Test Aspekt Beschreibung"@en ; + bamm:properties ( ) ; + bamm:operations ( ) . diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithEmptyProperties.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithEmptyProperties.ttl new file mode 100644 index 00000000..02b451d3 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithEmptyProperties.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectWithEmptyProperties a bamm:Aspect ; + bamm:name "" ; + bamm:preferredName ""@en ; + bamm:description ""@en ; + bamm:properties ( ) ; + bamm:operations ( ) . diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidLangStrings.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidLangStrings.ttl new file mode 100644 index 00000000..b137efce --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidLangStrings.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectWithInvalidLangStrings a bamm:Aspect ; + bamm:name "TestAspectWithInvalidLangStrings" ; + bamm:preferredName "Test Aspect" ; + bamm:description "Test Aspect Description" ; + bamm:properties ( ) ; + bamm:operations ( ) . diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidNotInPayloadProperty.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidNotInPayloadProperty.ttl new file mode 100644 index 00000000..e272159c --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidNotInPayloadProperty.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectWithInvalidNotInPayloadProperty a bamm:Aspect ; + bamm:name "TestAspectWithInvalidNotInPayloadProperty" ; + bamm:preferredName "Test Aspect"@en ; + bamm:description "Test Aspect"@en ; + bamm:properties ( [ bamm:property :testProperty; bamm:notInPayload true ] ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidOperations.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidOperations.ttl new file mode 100644 index 00000000..60bcbd7a --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidOperations.ttl @@ -0,0 +1,27 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectWithInvalidOperations a bamm:Aspect ; + bamm:name "TestAspectWithInvalidOperations" ; + bamm:preferredName "Test Aspect"@en ; + bamm:preferredName "Test Aspekt"@de ; + bamm:properties ( ) ; + bamm:operations ( :Entity ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( ) . diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidOptionalProperty.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidOptionalProperty.ttl new file mode 100644 index 00000000..54db2706 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidOptionalProperty.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectWithInvalidOptionalProperty a bamm:Aspect ; + bamm:name "TestAspectWithOptionalProperty" ; + bamm:preferredName "Test Aspect"@en ; + bamm:description "Test Aspect"@en ; + bamm:properties ( [ bamm:property :testProperty; bamm:optional false ] ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidProperties.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidProperties.ttl new file mode 100644 index 00000000..e28ecc7e --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithInvalidProperties.ttl @@ -0,0 +1,27 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectWithInvalidProperties a bamm:Aspect ; + bamm:name "TestAspectWithInvalidProperties" ; + bamm:preferredName "Test Aspect"@en ; + bamm:preferredName "Test Aspekt"@de ; + bamm:properties ( :Entity ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( ) . diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithMissingOptionalProperty.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithMissingOptionalProperty.ttl new file mode 100644 index 00000000..d96f0170 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithMissingOptionalProperty.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectWithMissingOptionalProperty a bamm:Aspect ; + bamm:name "TestAspectWithMissingOptionalProperty" ; + bamm:preferredName "Test Aspect"@en ; + bamm:description "Test Aspect"@en ; + bamm:properties ( [ bamm:optional true ] ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithOptionalProperty.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithOptionalProperty.ttl new file mode 100644 index 00000000..5d8ea17e --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithOptionalProperty.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectWithOptionalProperty a bamm:Aspect ; + bamm:name "TestAspectWithOptionalProperty" ; + bamm:preferredName "Test Aspect"@en ; + bamm:description "Test Aspect"@en ; + bamm:properties ( [ bamm:property :testProperty; bamm:optional true ] ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithOptionalPropertyWithPayloadName.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithOptionalPropertyWithPayloadName.ttl new file mode 100644 index 00000000..3ea742d4 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithOptionalPropertyWithPayloadName.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectWithOptionalPropertyWithPayloadName a bamm:Aspect ; + bamm:name "TestAspectWithOptionalPropertyWithPayloadName" ; + bamm:preferredName "Test Aspect"@en ; + bamm:description "Test Aspect"@en ; + bamm:properties ( [ bamm:property :testProperty; bamm:optional true ; bamm:payloadName "temp" ] ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithPropertyWithPayloadName.ttl b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithPropertyWithPayloadName.ttl new file mode 100644 index 00000000..ca3429ba --- /dev/null +++ b/src/test/resources/bamm_1_0_0/aspect-shape/io.openmanufacturing.test/1.0.0/TestAspectWithPropertyWithPayloadName.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspectWithPropertyWithPayloadName a bamm:Aspect ; + bamm:name "TestAspectWithOptionalProperty" ; + bamm:preferredName "Test Aspect"@en ; + bamm:description "Test Aspect"@en ; + bamm:properties ( [ bamm:property :testProperty; bamm:payloadName "temp" ] ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstance.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstance.ttl new file mode 100644 index 00000000..4181b6d8 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstance.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestCharacteristicInstance a bamm:Characteristic ; + bamm:name "TestCharacteristicInstance" ; + bamm:preferredName "Test Characteristic Instance"@en ; + bamm:description "Test Characteristic Instance"@en ; + bamm:dataType xsd:float . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceMissingRequiredProperties.ttl new file mode 100644 index 00000000..530a1391 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceMissingRequiredProperties.ttl @@ -0,0 +1,16 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . + +:TestCharacteristicInstanceMissingRequiredProperties a bamm:Characteristic . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceNonUniqueLangStrings.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceNonUniqueLangStrings.ttl new file mode 100644 index 00000000..73cf0955 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceNonUniqueLangStrings.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestCharacteristicInstanceNonUniqueLangStrings a bamm:Characteristic ; + bamm:name "TestCharacteristicInstanceNonUniqueLangStrings" ; + bamm:preferredName "Test Characteristic Instance"@en ; + bamm:preferredName "Test Charakteristik Instanz"@en ; + bamm:description "Test Characteristic Instance"@en ; + bamm:description "Test Charakteristik Instanz"@en ; + bamm:dataType xsd:float . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceNotRequiredToSetDataType.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceNotRequiredToSetDataType.ttl new file mode 100644 index 00000000..15caca0a --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceNotRequiredToSetDataType.ttl @@ -0,0 +1,27 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix rdfs: . +@prefix xsd: . + +:TestCharacteristicInstanceNotRequiredToSetDataType a :CharacteristicWithDataType ; + bamm:name "TestCharacteristicInstanceNotRequiredToSetDataType" ; + bamm:preferredName "Test Characteristic Instance"@en ; + bamm:description "Test Characteristic Instance"@en . + +:CharacteristicWithDataType rdfs:subClassOf bamm:Characteristic ; + bamm:name "CharacteristicWithDataType" ; + bamm:preferredName "Test Characteristic Instance"@en ; + bamm:description "Test Characteristic Instance"@en ; + bamm:dataType xsd:double . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithDisallowedDataType.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithDisallowedDataType.ttl new file mode 100644 index 00000000..191a282c --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithDisallowedDataType.ttl @@ -0,0 +1,19 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestCharacteristicInstanceWithDisallowedDataType a bamm:Characteristic ; + bamm:name "TestCharacteristicInstanceWithDisallowedDataType" ; + bamm:dataType xsd:maxExclusive . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithEmptyProperties.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithEmptyProperties.ttl new file mode 100644 index 00000000..ce7b1b03 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithEmptyProperties.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestCharacteristicInstanceWithEmptyProperties a bamm:Characteristic ; + bamm:name "" ; + bamm:preferredName ""@en ; + bamm:description ""@en ; + bamm:dataType xsd:float . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithGDay.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithGDay.ttl new file mode 100644 index 00000000..9cdcf5b5 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithGDay.ttl @@ -0,0 +1,9 @@ +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestCharacteristicInstance a bamm:Characteristic ; + bamm:name "TestCharacteristicInstance" ; + bamm:preferredName "Test Characteristic Instance"@en ; + bamm:description "Test Characteristic Instance"@en ; + bamm:dataType xsd:gDay . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithInvalidLangStrings.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithInvalidLangStrings.ttl new file mode 100644 index 00000000..51327a09 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithInvalidLangStrings.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestCharacteristicInstanceWithInvalidLangStrings a bamm:Characteristic ; + bamm:name "TestCharacteristicInstanceWithInvalidLangStrings" ; + bamm:preferredName "Test Characteristic Instance" ; + bamm:description "Test Characteristic Instance" ; + bamm:dataType xsd:float . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithMultipleDataTypes.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithMultipleDataTypes.ttl new file mode 100644 index 00000000..b43a18ac --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicInstanceWithMultipleDataTypes.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestCharacteristicInstanceWithMultipleDataTypes a bamm:Characteristic ; + bamm:name "TestCharacteristicInstanceWithMultipleDataTypes" ; + bamm:preferredName "Test Characteristic Instance"@en ; + bamm:description "Test Characteristic Instance"@en ; + bamm:dataType xsd:float ; + bamm:dataType xsd:double . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClass.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClass.ttl new file mode 100644 index 00000000..7284803b --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClass.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . +@prefix rdfs: . + +:TestCharacteristicSubClass rdfs:subClassOf bamm:Characteristic ; + bamm:name "TestCharacteristicSubClass" ; + bamm:preferredName "Test Characteristic SubClass"@en ; + bamm:description "Test Characteristic SubClass"@en ; + bamm:dataType xsd:float . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassMissingRequiredProperties.ttl new file mode 100644 index 00000000..daf49078 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassMissingRequiredProperties.ttl @@ -0,0 +1,17 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix rdfs: . + +:TestCharacteristicSubClassMissingRequiredProperties rdfs:subClassOf bamm:Characteristic . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassNonUniqueLangStrings.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassNonUniqueLangStrings.ttl new file mode 100644 index 00000000..d0192c45 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassNonUniqueLangStrings.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestCharacteristicSubClassNonUniqueLangStrings a bamm:Characteristic ; + bamm:name "TestCharacteristicSubClassNonUniqueLangStrings" ; + bamm:preferredName "Test Characteristic SubClass"@en ; + bamm:preferredName "Test Charakteristik Unterklasse"@en ; + bamm:description "Test Characteristic SubClass"@en ; + bamm:description "Test Charakteristik Unterklasse"@en ; + bamm:dataType xsd:float . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithDisallowedDataType.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithDisallowedDataType.ttl new file mode 100644 index 00000000..05c33d92 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithDisallowedDataType.ttl @@ -0,0 +1,20 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . +@prefix rdfs: . + +:TestCharacteristicSubClassWithDisallowedDataType rdfs:subClassOf bamm:Characteristic ; + bamm:name "TestCharacteristicSubClassWithDisallowedDataType" ; + bamm:dataType xsd:maxExclusive . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithEmptyProperties.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithEmptyProperties.ttl new file mode 100644 index 00000000..ad5cb314 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithEmptyProperties.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . +@prefix rdfs: . + +:TestCharacteristicSubClassWithEmptyProperties rdfs:subClassOf bamm:Characteristic ; + bamm:name "" ; + bamm:preferredName ""@en ; + bamm:description ""@en ; + bamm:dataType xsd:float . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithInvalidLangStrings.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithInvalidLangStrings.ttl new file mode 100644 index 00000000..1161045f --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithInvalidLangStrings.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . +@prefix rdfs: . + +:TestCharacteristicSubClassWithInvalidLangStrings rdfs:subClassOf bamm:Characteristic ; + bamm:name "TestCharacteristicSubClassWithInvalidLangStrings" ; + bamm:preferredName "Test Characteristic SubClass" ; + bamm:description "Test Characteristic SubClass" ; + bamm:dataType xsd:float . diff --git a/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithMultipleDataTypes.ttl b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithMultipleDataTypes.ttl new file mode 100644 index 00000000..c1400eb2 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/characteristic-shape/io.openmanufacturing.test/1.0.0/TestCharacteristicSubClassWithMultipleDataTypes.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . +@prefix rdfs: . + +:TestCharacteristicSubClassWithMultipleDataTypes rdfs:subClassOf bamm:Characteristic ; + bamm:name "TestCharacteristicSubClassWithMultipleDataTypes" ; + bamm:dataType xsd:float ; + bamm:dataType xsd:double . diff --git a/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithAnonymousElement.ttl b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithAnonymousElement.ttl new file mode 100644 index 00000000..91fb0db1 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithAnonymousElement.ttl @@ -0,0 +1,41 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix bamm: . +@prefix rdfs: . +@prefix bamm-c: . +@prefix : . + +:TestCollectionWithAnonymousElement a bamm:Aspect ; + bamm:name "TestCollectionWithAnonymousElement" ; + bamm:properties ( :testCollectionProperty ) ; + bamm:operations ( ) . + +:testCollectionProperty a bamm:Property ; + bamm:name "testCollectionProperty" ; + bamm:characteristic :TestCollection . + +:TestCollection a bamm-c:Collection ; + bamm:name "TestCollection" ; + bamm-c:elementCharacteristic [ + a bamm-c:SingleEntity ; + bamm:name "TestEntityElementCharacteristic" ; + bamm:dataType :TestEntity + ] . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:properties ( :entityProperty ) . + +:entityProperty a bamm:Property ; + bamm:name "entityProperty" ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithDataType.ttl b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithDataType.ttl new file mode 100644 index 00000000..48c808e8 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithDataType.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix rdfs: . +@prefix bamm-c: . +@prefix xsd: . + +:TestCollectionWithDataType a bamm-c:List ; + bamm:name "TestCollectionWithDataType" ; + bamm:dataType xsd:string . diff --git a/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithElementCharacteristic.ttl b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithElementCharacteristic.ttl new file mode 100644 index 00000000..d9b12ee9 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithElementCharacteristic.ttl @@ -0,0 +1,20 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix rdfs: . +@prefix bamm-c: . + +:TestCollectionWithElementCharacteristic a bamm-c:Collection ; + bamm:name "TestCollectionWithElementCharacteristic" ; + bamm-c:elementCharacteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithInvalidCharacteristic.ttl b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithInvalidCharacteristic.ttl new file mode 100644 index 00000000..40bbe400 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithInvalidCharacteristic.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix bamm: . +@prefix rdfs: . +@prefix bamm-c: . +@prefix : . + +:TestCollectionWithInvalidCharacteristic a bamm-c:Collection ; + bamm:name "TestCollectionWithInvalidCharacteristic" ; + bamm-c:elementCharacteristic :TestEntity . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:properties ( :entityProperty ) . + +:entityProperty a bamm:Property ; + bamm:name "entityProperty" ; + bamm:characteristic bamm-c:Text . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithInvalidElementCharacteristic.ttl b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithInvalidElementCharacteristic.ttl new file mode 100644 index 00000000..c127cc08 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithInvalidElementCharacteristic.ttl @@ -0,0 +1,20 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix rdfs: . +@prefix bamm-c: . + +:TestCollectionWithInvalidElementCharacteristic a bamm-c:Collection ; + bamm:name "TestCollectionWithInvalidElementCharacteristic" ; + bamm-c:elementCharacteristic "bamm-c:Text" . diff --git a/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithMultipleElementCharacteristics.ttl b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithMultipleElementCharacteristics.ttl new file mode 100644 index 00000000..ea6502e6 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithMultipleElementCharacteristics.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix rdfs: . +@prefix bamm-c: . + +:TestCollectionWithMultipleElementCharacteristics a bamm-c:Collection ; + bamm:name "TestCollectionWithMultipleElementCharacteristics" ; + bamm-c:elementCharacteristic bamm-c:Text ; + bamm-c:elementCharacteristic bamm-c:Boolean . diff --git a/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithoutDataTypeAndElementCharacteristic.ttl b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithoutDataTypeAndElementCharacteristic.ttl new file mode 100644 index 00000000..b67476d1 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/collection-instance-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithoutDataTypeAndElementCharacteristic.ttl @@ -0,0 +1,19 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix rdfs: . +@prefix bamm-c: . + +:TestCollectionWithoutDataTypeAndElementCharacteristic a bamm-c:Collection ; + bamm:name "TestCollectionWithoutDataTypeAndElementCharacteristic" . diff --git a/src/test/resources/bamm_1_0_0/collection-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithoutOrderedAndAllowDuplicates.ttl b/src/test/resources/bamm_1_0_0/collection-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithoutOrderedAndAllowDuplicates.ttl new file mode 100644 index 00000000..35e10e85 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/collection-shape/io.openmanufacturing.test/1.0.0/TestCollectionWithoutOrderedAndAllowDuplicates.ttl @@ -0,0 +1,19 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix rdfs: . +@prefix bamm-c: . + +:TestCollectionWithoutOrderedAndAllowDuplicates rdfs:subClassOf bamm-c:Collection ; + bamm:name "TestCollection" . diff --git a/src/test/resources/bamm_1_0_0/constrain-defines-usage-shape/io.openmanufacturing.test/1.0.0/DefinesUsedInModelElement.ttl b/src/test/resources/bamm_1_0_0/constrain-defines-usage-shape/io.openmanufacturing.test/1.0.0/DefinesUsedInModelElement.ttl new file mode 100644 index 00000000..c44c55e7 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/constrain-defines-usage-shape/io.openmanufacturing.test/1.0.0/DefinesUsedInModelElement.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix rdfs: . + +:DefinesUsedInModelElement a bamm:Aspect ; + bamm:name "DefinesUsedInModelElement" ; + bamm:defines :Characteristic ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Characteristic a rdfs:Class . diff --git a/src/test/resources/bamm_1_0_0/constrain-extends-usage-shape/io.openmanufacturing.test/1.0.0/ExtendsNotAList.ttl b/src/test/resources/bamm_1_0_0/constrain-extends-usage-shape/io.openmanufacturing.test/1.0.0/ExtendsNotAList.ttl new file mode 100644 index 00000000..f0a90da8 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/constrain-extends-usage-shape/io.openmanufacturing.test/1.0.0/ExtendsNotAList.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix bamm: . +@prefix sh: . + +bamm:TestShape + a sh:NodeShape ; + bamm:extends bamm:ExtendedShape . + +bamm:ExtendedShape + a sh:NodeShape . diff --git a/src/test/resources/bamm_1_0_0/constrain-extends-usage-shape/io.openmanufacturing.test/1.0.0/ExtendsUsedInModelElement.ttl b/src/test/resources/bamm_1_0_0/constrain-extends-usage-shape/io.openmanufacturing.test/1.0.0/ExtendsUsedInModelElement.ttl new file mode 100644 index 00000000..cba7a327 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/constrain-extends-usage-shape/io.openmanufacturing.test/1.0.0/ExtendsUsedInModelElement.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix rdfs: . + +:ExtendsUsedInModelElement a bamm:Aspect ; + bamm:name "ExtendsUsedInModelElement" ; + bamm:extends ( :Characteristic ) ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Characteristic a rdfs:Class. diff --git a/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraint.ttl b/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraint.ttl new file mode 100644 index 00000000..96b315d8 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraint.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestConstraint a bamm:Constraint ; + bamm:name "TestConstraint" ; + bamm:preferredName "Test Constraint"@en ; + bamm:description "TestConstraint"@en . diff --git a/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintNonUniqueLangStrings.ttl b/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintNonUniqueLangStrings.ttl new file mode 100644 index 00000000..74b72f20 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintNonUniqueLangStrings.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestConstraintNonUniqueLangStrings a bamm:Constraint ; + bamm:name "TestConstraintNonUniqueLangStrings" ; + bamm:preferredName "Test Constraint"@en ; + bamm:preferredName "Test Einschränkung"@en ; + bamm:description "TestConstraint"@en ; + bamm:description "Test Einschränkung"@en . diff --git a/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintWithDataType.ttl b/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintWithDataType.ttl new file mode 100644 index 00000000..51f0e59e --- /dev/null +++ b/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintWithDataType.ttl @@ -0,0 +1,20 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestConstraintWithDataType a bamm:Constraint ; + bamm:name "TestConstraintWithDataType" ; + bamm:dataType xsd:float . diff --git a/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintWithEmptyProperties.ttl b/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintWithEmptyProperties.ttl new file mode 100644 index 00000000..20bbd2b6 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintWithEmptyProperties.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestConstraintWithEmptyProperties a bamm:Constraint ; + bamm:name "" ; + bamm:preferredName ""@en ; + bamm:description ""@en . diff --git a/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintWithInvalidLangStrings.ttl b/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintWithInvalidLangStrings.ttl new file mode 100644 index 00000000..dc774a58 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/constraint-shape/io.openmanufacturing.test/1.0.0/TestConstraintWithInvalidLangStrings.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestConstraintWithInvalidLangStrings a bamm:Constraint ; + bamm:name "TestConstraintWithInvalidLangStrings" ; + bamm:preferredName "Test Constraint" ; + bamm:description "TestConstraint" . diff --git a/src/test/resources/bamm_1_0_0/duration-shape/io.openmanufacturing.test/1.0.0/TestDuration.ttl b/src/test/resources/bamm_1_0_0/duration-shape/io.openmanufacturing.test/1.0.0/TestDuration.ttl new file mode 100644 index 00000000..2ca96193 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/duration-shape/io.openmanufacturing.test/1.0.0/TestDuration.ttl @@ -0,0 +1,24 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestDuration a bamm-c:Duration ; + bamm:name "TestDuration" ; + bamm:preferredName "Test Duration"@en ; + bamm:description "Test Duration"@en ; + bamm:dataType xsd:int ; + bamm-c:unit unit:secondUnitOfTime . diff --git a/src/test/resources/bamm_1_0_0/duration-shape/io.openmanufacturing.test/1.0.0/TestDurationWithInvalidUnit.ttl b/src/test/resources/bamm_1_0_0/duration-shape/io.openmanufacturing.test/1.0.0/TestDurationWithInvalidUnit.ttl new file mode 100644 index 00000000..ef123cdb --- /dev/null +++ b/src/test/resources/bamm_1_0_0/duration-shape/io.openmanufacturing.test/1.0.0/TestDurationWithInvalidUnit.ttl @@ -0,0 +1,24 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestDurationWithInvalidUnit a bamm-c:Duration ; + bamm:name "TestDurationWithInvalidUnit" ; + bamm:preferredName "Test Duration"@en ; + bamm:description "Test Duration"@en ; + bamm:dataType xsd:int ; + bamm-c:unit unit:volt . diff --git a/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEither.ttl b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEither.ttl new file mode 100644 index 00000000..80a51540 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEither.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEither a bamm-c:Either ; + bamm:name "TestEither" ; + bamm-c:left :LeftType ; + bamm-c:right :RightType . + +:LeftType a bamm:Characteristic ; + bamm:name "LeftType" ; + bamm:dataType xsd:float . + +:RightType a bamm:Characteristic ; + bamm:name "RightType" ; + bamm:dataType xsd:string . diff --git a/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherDefinesDataType.ttl b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherDefinesDataType.ttl new file mode 100644 index 00000000..2eab1da4 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherDefinesDataType.ttl @@ -0,0 +1,30 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEitherDefinesDataType a bamm-c:Either ; + bamm:name "TestEitherDefinesDataType" ; + bamm-c:left :LeftType ; + bamm-c:right :RightType ; + bamm:dataType xsd:int . + +:LeftType a bamm:Characteristic ; + bamm:name "LeftType" ; + bamm:dataType xsd:float . + +:RightType a bamm:Characteristic ; + bamm:name "RightType" ; + bamm:dataType xsd:string . diff --git a/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherLeftAttributeNotACharacteristic.ttl b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherLeftAttributeNotACharacteristic.ttl new file mode 100644 index 00000000..81cd2556 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherLeftAttributeNotACharacteristic.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEitherLeftAttributeNotACharacteristic a bamm-c:Either ; + bamm:name "TestEitherLeftAttributeNotACharacteristic" ; + bamm-c:left :LeftType ; + bamm-c:right :RightType . + +:LeftType a bamm:Entity ; + bamm:name "LeftType" ; + bamm:properties () . + +:RightType a bamm:Characteristic ; + bamm:name "RightType" ; + bamm:dataType xsd:string . diff --git a/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherMissingRequiredProperties.ttl new file mode 100644 index 00000000..26fd66ae --- /dev/null +++ b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherMissingRequiredProperties.ttl @@ -0,0 +1,18 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEitherMissingRequiredProperties a bamm-c:Either . diff --git a/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherRightAttributeNotACharacteristic.ttl b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherRightAttributeNotACharacteristic.ttl new file mode 100644 index 00000000..1804e966 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherRightAttributeNotACharacteristic.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEitherRightAttributeNotACharacteristic a bamm-c:Either ; + bamm:name "TestEitherRightAttributeNotACharacteristic" ; + bamm-c:left :LeftType ; + bamm-c:right :RightType . + +:RightType a bamm:Entity ; + bamm:name "LeftType" ; + bamm:properties () . + +:LeftType a bamm:Characteristic ; + bamm:name "RightType" ; + bamm:dataType xsd:string . diff --git a/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherSameCharacteristicForLeftAndRight.ttl b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherSameCharacteristicForLeftAndRight.ttl new file mode 100644 index 00000000..255206fc --- /dev/null +++ b/src/test/resources/bamm_1_0_0/either-shape/io.openmanufacturing.test/1.0.0/TestEitherSameCharacteristicForLeftAndRight.ttl @@ -0,0 +1,25 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEitherSameCharacteristicForLeftAndRight a bamm-c:Either ; + bamm:name "TestEitherSameCharacteristicForLeftAndRight" ; + bamm-c:left :LeftType ; + bamm-c:right :LeftType . + +:LeftType a bamm:Characteristic ; + bamm:name "LeftType" ; + bamm:dataType xsd:float . diff --git a/src/test/resources/bamm_1_0_0/encoding-constraint-shape/io.openmanufacturing.test/1.0.0/TestEncodingConstraint.ttl b/src/test/resources/bamm_1_0_0/encoding-constraint-shape/io.openmanufacturing.test/1.0.0/TestEncodingConstraint.ttl new file mode 100644 index 00000000..8318bd45 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/encoding-constraint-shape/io.openmanufacturing.test/1.0.0/TestEncodingConstraint.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEncodingConstraint a bamm-c:EncodingConstraint ; + bamm:name "TestEncodingConstraint" ; + bamm:preferredName "Test Constraint"@en ; + bamm:description "TestConstraint"@en ; + bamm:value bamm:UTF-8 . diff --git a/src/test/resources/bamm_1_0_0/encoding-constraint-shape/io.openmanufacturing.test/1.0.0/TestInvalidEncodingConstraint.ttl b/src/test/resources/bamm_1_0_0/encoding-constraint-shape/io.openmanufacturing.test/1.0.0/TestInvalidEncodingConstraint.ttl new file mode 100644 index 00000000..fbd5d39f --- /dev/null +++ b/src/test/resources/bamm_1_0_0/encoding-constraint-shape/io.openmanufacturing.test/1.0.0/TestInvalidEncodingConstraint.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestInvalidEncodingConstraint a bamm-c:EncodingConstraint ; + bamm:name "TestInvalidEncodingConstraint" ; + bamm:preferredName "Test Constraint"@en ; + bamm:description "TestConstraint"@en ; + bamm:value "UTF-8" . diff --git a/src/test/resources/bamm_1_0_0/entities-have-only-known-properties-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceWithUnknownProperties.ttl b/src/test/resources/bamm_1_0_0/entities-have-only-known-properties-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceWithUnknownProperties.ttl new file mode 100644 index 00000000..1b0a80ce --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entities-have-only-known-properties-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceWithUnknownProperties.ttl @@ -0,0 +1,41 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityInstanceWithUnknownProperties a bamm:Aspect ; + bamm:name "TestEntityInstanceWithUnknownProperties" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( :stringProperty ) . + +:stringProperty a bamm:Property ; + bamm:name "stringProperty" ; + bamm:characteristic bamm-c:Text . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:integer . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :stringProperty "foo" ; + :intProperty 42 . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/NestedEntityWithNotInPayloadProperty.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/NestedEntityWithNotInPayloadProperty.ttl new file mode 100644 index 00000000..a9e10490 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/NestedEntityWithNotInPayloadProperty.ttl @@ -0,0 +1,68 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:NestedEntityWithNotInPayloadProperty a bamm:Aspect ; + bamm:name "NestedEntityWithNotInPayloadProperty" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:characteristic :TestEnumeration . + +:TestEnumeration a bamm-c:Enumeration ; + bamm:name "TestEnumeration" ; + bamm:dataType :TestEntity ; + bamm-c:values ( :TestEntityInstance ) . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:property :testPropertyTwo; bamm:notInPayload true ] + :testPropertyThree + [ bamm:property :testPropertyFour; bamm:notInPayload true ] ). + +:testPropertyTwo a bamm:Property ; + bamm:name "testPropertyTwo" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . + +:testPropertyThree a bamm:Property ; + bamm:name "testPropertyThree" ; + bamm:characteristic bamm-c:Text . + +:testPropertyFour a bamm:Property ; + bamm:name "testPropertyFour" ; + bamm:characteristic [ + a bamm-c:SingleEntity ; + bamm:name "NestedTestEntityCharacteristic" ; + bamm:dataType :NestedTestEntity + ] . + +:NestedTestEntity a bamm:Entity ; + bamm:name "NestedTestEntity" ; + bamm:properties ( [ bamm:property :testPropertyTwo; bamm:notInPayload true ] ) . + +:TestEntityInstance a :TestEntity ; + :testPropertyTwo "foo" ; + :testPropertyThree "bar" ; + :testPropertyFour :NestedTestEntityInstance . + +:NestedTestEntityInstance a :NestedTestEntity ; + :testPropertyTwo "baz" . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/RefinedTestEntity.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/RefinedTestEntity.ttl new file mode 100644 index 00000000..8f21e2b0 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/RefinedTestEntity.ttl @@ -0,0 +1,24 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix bamm-e: . + +:RefinedTestEntity bamm:refines bamm-e:TimeSeriesEntity ; + bamm:name "RefinedTestEntity" ; + bamm:properties ( :value ). + +:value bamm:refines bamm-e:value; + bamm:name "value" ; + bamm:characteristic bamm-c:Duration . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntity.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntity.ttl new file mode 100644 index 00000000..f4a9d668 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntity.ttl @@ -0,0 +1,52 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:preferredName "Test Entity"@en ; + bamm:preferredName "Test Entität"@de ; + bamm:description "A test Entity"@en ; + bamm:description "Eine test Entität"@de ; + bamm:properties ( :entityList :integerList ). + +:entityList a bamm:Property ; + bamm:name "entityList" ; + bamm:preferredName "Entity List"@en ; + bamm:preferredName "Entitätliste"@de ; + bamm:description "A property with a list of complex value."@en ; + bamm:description "Eine Property mit einer Liste mit komplexen Werten."@de ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "EntityList" ; + bamm:dataType :SecondTestEntity + ] . + +:integerList a bamm:Property ; + bamm:name "integerList" ; + bamm:preferredName "Integer List"@en ; + bamm:preferredName "Numerische Liste"@de ; + bamm:description "A property with a list of numeric value."@en ; + bamm:description "Eine Property mit einer Liste mit numerischen Werten."@de ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "NumericList" ; + bamm:dataType xsd:integer + ] . + +:SecondTestEntity a bamm:Entity ; + bamm:name "SecondTestEntity" ; + bamm:properties ( ) . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityMissingRequiredProperties.ttl new file mode 100644 index 00000000..04e42df0 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityMissingRequiredProperties.ttl @@ -0,0 +1,16 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . + +:TestEntityMissingRequiredProperties a bamm:Entity . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityNonUniqueLangStrings.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityNonUniqueLangStrings.ttl new file mode 100644 index 00000000..5e3617ff --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityNonUniqueLangStrings.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . + +:TestEntityNonUniqueLangStrings a bamm:Entity ; + bamm:name "TestEntityNonUniqueLangStrings" ; + bamm:preferredName "Test Entity"@en ; + bamm:preferredName "Test Entität"@en ; + bamm:description "A test Entity"@en ; + bamm:description "Eine test Entität"@en ; + bamm:properties ( ). diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityRefiningEntityDeclaresAdditionalProperties.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityRefiningEntityDeclaresAdditionalProperties.ttl new file mode 100644 index 00000000..e9780eed --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityRefiningEntityDeclaresAdditionalProperties.ttl @@ -0,0 +1,47 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntityRefiningEntityDeclaresAdditionalProperties bamm:refines :EntityToBeRefined ; + bamm:name "TestEntityRefiningEntityDeclaresAdditionalProperties" ; + bamm:properties ( :refinedValue :integerList ). + +:refinedValue bamm:refines :value; + bamm:name "refinedValue" ; + bamm:characteristic bamm-c:Duration . + +:integerList a bamm:Property ; + bamm:name "integerList" ; + bamm:preferredName "Integer List"@en ; + bamm:preferredName "Numerische Liste"@de ; + bamm:description "A property with a list of numeric value."@en ; + bamm:description "Eine Property mit einer Liste mit numerischen Werten."@de ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "NumericList" ; + bamm:dataType xsd:integer + ] . + +:EntityToBeRefined a bamm:Entity ; + bamm:name "EntityToBeRefined" ; + bamm:properties ( :timestamp :value ). + +:timestamp a bamm:Property ; + bamm:name "timestamp" ; + bamm:characteristic bamm-c:Timestamp . + +:value a bamm:Property ; + bamm:name "value" . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithEmptyProperties.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithEmptyProperties.ttl new file mode 100644 index 00000000..6fc49068 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithEmptyProperties.ttl @@ -0,0 +1,20 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . + +:TestEntityWithEmptyProperties a bamm:Entity ; + bamm:name "" ; + bamm:preferredName ""@en ; + bamm:description ""@en ; + bamm:properties ( ). diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidLangStrings.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidLangStrings.ttl new file mode 100644 index 00000000..f9f7f89c --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidLangStrings.ttl @@ -0,0 +1,20 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . + +:TestEntityWithInvalidLangStrings a bamm:Entity ; + bamm:name "TestEntityWithInvalidLangStrings" ; + bamm:preferredName "Test Entity" ; + bamm:description "A test Entity" ; + bamm:properties ( ). diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidNotInPayloadProperty.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidNotInPayloadProperty.ttl new file mode 100644 index 00000000..51d46002 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidNotInPayloadProperty.ttl @@ -0,0 +1,45 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntityWithInvalidNotInPayloadProperty a bamm:Aspect ; + bamm:name "TestEntityWithInvalidNotInPayloadProperty" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:characteristic :TestEnumeration . + +:TestEnumeration a bamm-c:Enumeration ; + bamm:name "TestEnumeration" ; + bamm:dataType :TestEntity ; + bamm-c:values ( :TestEntityInstance ) . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:property :testPropertyTwo; bamm:notInPayload false ] ). + +:testPropertyTwo a bamm:Property ; + bamm:name "testPropertyTwo" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . + +:TestEntityInstance a :TestEntity ; + :testPropertyTwo "foo" . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidOptionalProperty.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidOptionalProperty.ttl new file mode 100644 index 00000000..8cb4fefa --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidOptionalProperty.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntityWithInvalidOptionalProperty a bamm:Entity ; + bamm:name "TestEntityWithInvalidOptionalProperty" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:property :testProperty; bamm:optional false ] ). + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidProperties.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidProperties.ttl new file mode 100644 index 00000000..e25af24c --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithInvalidProperties.ttl @@ -0,0 +1,26 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . + +:TestEntityWithInvalidProperties a bamm:Entity ; + bamm:name "TestEntityWithInvalidProperties" ; + bamm:preferredName "Test Entity"@en ; + bamm:preferredName "Test Entität"@de ; + bamm:description "A test Entity"@en ; + bamm:description "Eine test Entität"@de ; + bamm:properties ( :SecondTestEntity ). + +:SecondTestEntity a bamm:Entity ; + bamm:name "SecondTestEntity" ; + bamm:properties ( ) . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithMissingOptionalProperty.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithMissingOptionalProperty.ttl new file mode 100644 index 00000000..02ff9fc1 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithMissingOptionalProperty.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntityWithMissingOptionalProperty a bamm:Entity ; + bamm:name "TestEntityWithMissingOptionalProperty" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:optional true ] ). + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadAndOptionalProperty.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadAndOptionalProperty.ttl new file mode 100644 index 00000000..c3251252 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadAndOptionalProperty.ttl @@ -0,0 +1,50 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntityWithNotInPayloadAndOptionalProperty a bamm:Aspect ; + bamm:name "TestEntityWithNotInPayloadAndOptionalProperty" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:characteristic :TestEnumeration . + +:TestEnumeration a bamm-c:Enumeration ; + bamm:name "TestEnumeration" ; + bamm:dataType :TestEntity ; + bamm-c:values ( :TestEntityInstance ) . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:property :testPropertyTwo; bamm:notInPayload true ; bamm:optional true ] :testPropertyThree ). + +:testPropertyTwo a bamm:Property ; + bamm:name "testPropertyTwo" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . + +:testPropertyThree a bamm:Property ; + bamm:name "testPropertyThree" ; + bamm:characteristic bamm-c:Text . + +:TestEntityInstance a :TestEntity ; + :testPropertyTwo "foo" ; + :testPropertyThree "bar" . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadProperty.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadProperty.ttl new file mode 100644 index 00000000..7d3bc529 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadProperty.ttl @@ -0,0 +1,50 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntityWithNotInPayloadProperty a bamm:Aspect ; + bamm:name "TestEntityWithNotInPayloadProperty" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:characteristic :TestEnumeration . + +:TestEnumeration a bamm-c:Enumeration ; + bamm:name "TestEnumeration" ; + bamm:dataType :TestEntity ; + bamm-c:values ( :TestEntityInstance ) . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:property :testPropertyTwo; bamm:notInPayload true ] :testPropertyThree ). + +:testPropertyTwo a bamm:Property ; + bamm:name "testPropertyTwo" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . + +:testPropertyThree a bamm:Property ; + bamm:name "testPropertyThree" ; + bamm:characteristic bamm-c:Text . + +:TestEntityInstance a :TestEntity ; + :testPropertyTwo "foo" ; + :testPropertyThree "bar" . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadPropertyAndPayloadName.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadPropertyAndPayloadName.ttl new file mode 100644 index 00000000..2fb09453 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadPropertyAndPayloadName.ttl @@ -0,0 +1,51 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestAspect a bamm:Aspect ; + bamm:name "TestAspect" ; + bamm:properties ( :testProperty ) ; + bamm:operations () . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:characteristic :TestEnumeration . + +:TestEnumeration a bamm-c:Enumeration ; + bamm:name "TestEnumeration" ; + bamm:dataType :TestEntity ; + bamm-c:values ( :TestEntityInstance ) . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:property :testPropertyTwo; bamm:notInPayload true ; bamm:payloadName "temp" ] + :testPropertyThree ). + +:testPropertyTwo a bamm:Property ; + bamm:name "testPropertyTwo" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . + +:testPropertyThree a bamm:Property ; + bamm:name "testPropertyThree" ; + bamm:characteristic bamm-c:Text . + +:TestEntityInstance a :TestEntity ; + :testPropertyTwo "foo" ; + :testPropertyThree "bar" . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadPropertyWithoutEnumeration.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadPropertyWithoutEnumeration.ttl new file mode 100644 index 00000000..869cf537 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithNotInPayloadPropertyWithoutEnumeration.ttl @@ -0,0 +1,36 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntityWithNotInPayloadPropertyWithoutEnumeration a bamm:Entity ; + bamm:name "TestEntityWithNotInPayloadPropertyWithoutEnumeration" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:property :testProperty; bamm:notInPayload true ] :testPropertyTwo ). + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . + +:testPropertyTwo a bamm:Property ; + bamm:name "testPropertyTwo" ; + bamm:characteristic bamm-c:Text . + +:TestEntityInstance a :TestEntityWithNotInPayloadPropertyWithoutEnumeration ; + :testProperty "foo" ; + :testPropertyTwo "bar" . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithOptionalProperty.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithOptionalProperty.ttl new file mode 100644 index 00000000..8711db2b --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithOptionalProperty.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntityWithOptionalProperty a bamm:Entity ; + bamm:name "TestEntityWithOptionalProperty" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:property :testProperty; bamm:optional true ] ). + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithOptionalPropertyAndPayloadName.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithOptionalPropertyAndPayloadName.ttl new file mode 100644 index 00000000..81ebe516 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithOptionalPropertyAndPayloadName.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntityWithOptionalPropertyAndPayloadName a bamm:Entity ; + bamm:name "TestEntityWithOptionalPropertyAndPayloadName" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:property :testProperty; bamm:optional ""^^xsd:boolean ; bamm:payloadName "temp" ] ). + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithPropertyAndPayloadName.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithPropertyAndPayloadName.ttl new file mode 100644 index 00000000..217b06e5 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithPropertyAndPayloadName.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntityWithPropertyAndPayloadName a bamm:Entity ; + bamm:name "TestEntityWithPropertyAndPayloadName" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:property :testProperty; bamm:payloadName "temp" ] ). + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithSingleNotInPayloadProperty.ttl b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithSingleNotInPayloadProperty.ttl new file mode 100644 index 00000000..c2982fd5 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/entity-shape/io.openmanufacturing.test/1.0.0/TestEntityWithSingleNotInPayloadProperty.ttl @@ -0,0 +1,45 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEntityWithSingleNotInPayloadProperty a bamm:Aspect ; + bamm:name "TestEntityWithSingleNotInPayloadProperty" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:characteristic :TestEnumeration . + +:TestEnumeration a bamm-c:Enumeration ; + bamm:name "TestEnumeration" ; + bamm:dataType :TestEntity ; + bamm-c:values ( :TestEntityInstance ) . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:preferredName "Test Entity"@en ; + bamm:description "A test Entity"@en ; + bamm:properties ( [ bamm:property :testPropertyTwo; bamm:notInPayload true ] ). + +:testPropertyTwo a bamm:Property ; + bamm:name "testPropertyTwo" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . + +:TestEntityInstance a :TestEntity ; + :testPropertyTwo "foo" . diff --git a/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumeration.ttl b/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumeration.ttl new file mode 100644 index 00000000..811b9c08 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumeration.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEnumeration a bamm-c:Enumeration ; + bamm:name "TestEnumeration" ; + bamm:dataType xsd:string ; + bamm-c:values ( "OK" "ERR" ). \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationMissingRequiredProperties.ttl new file mode 100644 index 00000000..9343816f --- /dev/null +++ b/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationMissingRequiredProperties.ttl @@ -0,0 +1,17 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . + +:TestEnumerationMissingRequiredProperties a bamm-c:Enumeration . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationValueIsNotALiteralType.ttl b/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationValueIsNotALiteralType.ttl new file mode 100644 index 00000000..84dedf96 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationValueIsNotALiteralType.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEnumerationValueIsNotALiteralType a bamm-c:Enumeration ; + bamm:name "TestEnumerationValueIsNotALiteralType" ; + bamm:dataType xsd:string ; + bamm-c:values ( "OK" :testProperty ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "NumericList" ; + bamm:dataType xsd:integer + ] . diff --git a/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationValueIsNotOfDefinedDataType.ttl b/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationValueIsNotOfDefinedDataType.ttl new file mode 100644 index 00000000..7988ff77 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationValueIsNotOfDefinedDataType.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEnumerationValueIsNotOfDefinedDataType a bamm-c:Enumeration ; + bamm:name "TestEnumerationValueIsNotOfDefinedDataType" ; + bamm:dataType xsd:string ; + bamm-c:values ( "OK" "1.0"^^xsd:double ). \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationValueIsNotOfTypeProperty.ttl b/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationValueIsNotOfTypeProperty.ttl new file mode 100644 index 00000000..f5be7b4c --- /dev/null +++ b/src/test/resources/bamm_1_0_0/enumeration-shape/io.openmanufacturing.test/1.0.0/TestEnumerationValueIsNotOfTypeProperty.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestEnumerationValueIsNotOfTypeProperty a bamm-c:Enumeration ; + bamm:name "TestEnumerationValueIsNotOfTypeProperty" ; + bamm:dataType bamm:Property ; + bamm-c:values ( "OK" :testProperty ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "NumericList" ; + bamm:dataType xsd:integer + ] . diff --git a/src/test/resources/bamm_1_0_0/event-shape/io.openmanufacturing.test/1.0.0/AspectWithEvent.ttl b/src/test/resources/bamm_1_0_0/event-shape/io.openmanufacturing.test/1.0.0/AspectWithEvent.ttl new file mode 100644 index 00000000..46936001 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/event-shape/io.openmanufacturing.test/1.0.0/AspectWithEvent.ttl @@ -0,0 +1,37 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix bamm-e: . +@prefix unit: . +@prefix xsd: . + +:AspectWithEvent a bamm:Aspect ; + bamm:name "AspectWithEvent" ; + bamm:preferredName "Aspect With Event"@en ; + bamm:description "An Aspect with an Event"@en ; + bamm:properties ( ) ; + bamm:operations ( ) ; + bamm:events ( :TextEvent ) . + +:TextEvent a bamm:Event ; + bamm:name "TextEvent" ; + bamm:preferredName "Text Event"@en ; + bamm:description "An event that contains a text string"@en ; + bamm:parameters ( :textParameter ) . + +:textParameter a bamm:Property ; + bamm:name "textParameter" ; + bamm:preferredName "Text Parameter"@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/event-shape/io.openmanufacturing.test/1.0.0/AspectWithEventMissingParameters.ttl b/src/test/resources/bamm_1_0_0/event-shape/io.openmanufacturing.test/1.0.0/AspectWithEventMissingParameters.ttl new file mode 100644 index 00000000..56be0895 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/event-shape/io.openmanufacturing.test/1.0.0/AspectWithEventMissingParameters.ttl @@ -0,0 +1,31 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix bamm-e: . +@prefix unit: . +@prefix xsd: . + +:AspectWithEventMissingParameters a bamm:Aspect ; + bamm:name "AspectWithEventMissingParameters" ; + bamm:preferredName "Aspect With Event"@en ; + bamm:description "An Aspect with an Event"@en ; + bamm:properties ( ) ; + bamm:operations ( ) ; + bamm:events ( :TextEvent ) . + +:TextEvent a bamm:Event ; + bamm:name "TextEvent" ; + bamm:preferredName "Text Event"@en ; + bamm:description "An event that contains a text string"@en . diff --git a/src/test/resources/bamm_1_0_0/event-shape/io.openmanufacturing.test/1.0.0/AspectWithEventWithInvalidParameters.ttl b/src/test/resources/bamm_1_0_0/event-shape/io.openmanufacturing.test/1.0.0/AspectWithEventWithInvalidParameters.ttl new file mode 100644 index 00000000..0340c472 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/event-shape/io.openmanufacturing.test/1.0.0/AspectWithEventWithInvalidParameters.ttl @@ -0,0 +1,32 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix bamm-e: . +@prefix unit: . +@prefix xsd: . + +:AspectWithEventWithInvalidParameters a bamm:Aspect ; + bamm:name "AspectWithEventWithInvalidParameters" ; + bamm:preferredName "Aspect With Event"@en ; + bamm:description "An Aspect with an Event"@en ; + bamm:properties ( ) ; + bamm:operations ( ) ; + bamm:events ( :TextEvent ) . + +:TextEvent a bamm:Event ; + bamm:name "TextEvent" ; + bamm:preferredName "Text Event"@en ; + bamm:description "An event that contains a text string"@en ; + bamm:parameters ( bamm-c:Text ) . diff --git a/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPoint.ttl b/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPoint.ttl new file mode 100644 index 00000000..1be10f1e --- /dev/null +++ b/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPoint.ttl @@ -0,0 +1,34 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestTrait a bamm-c:Trait ; + bamm:name "TestTrait" ; + bamm-c:constraint :TestFixedPoint ; + bamm-c:baseCharacteristic :Measurement . + +:TestFixedPoint a bamm-c:FixedPointConstraint ; + bamm:name "TestFixedPoint" ; + bamm:preferredName "Test Fixed Point"@en ; + bamm:description "TestFixedPoint"@en ; + bamm-c:scale "5"^^xsd:positiveInteger ; + bamm-c:integer "10"^^xsd:positiveInteger . + +:Measurement a bamm-c:Measurement ; + bamm:name "Measurement" ; + bamm:dataType xsd:decimal ; + bamm-c:unit unit:metrePerSecond . diff --git a/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointChainedWithInvalidDataType.ttl b/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointChainedWithInvalidDataType.ttl new file mode 100644 index 00000000..ee79670f --- /dev/null +++ b/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointChainedWithInvalidDataType.ttl @@ -0,0 +1,40 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestTrait a bamm-c:Trait ; + bamm:name "TestTrait" ; + bamm-c:constraint :TestFixedPointChainedWithInvalidDataType ; + bamm-c:constraint :Range ; + bamm-c:baseCharacteristic :Measurement . + +:TestFixedPointChainedWithInvalidDataType a bamm-c:FixedPointConstraint ; + bamm:name "TestFixedPointChainedWithInvalidDataType" ; + bamm:preferredName "Test Fixed Point"@en ; + bamm:description "TestFixedPoint"@en ; + bamm-c:scale "5"^^xsd:positiveInteger ; + bamm-c:integer "10"^^xsd:positiveInteger . + +:Range a bamm-c:RangeConstraint ; + bamm:name "TestRange" ; + bamm-c:minValue "2.3"^^xsd:float ; + bamm-c:maxValue "10.5"^^xsd:float . + +:Measurement a bamm-c:Measurement ; + bamm:name "Measurement" ; + bamm:dataType xsd:float ; + bamm-c:unit unit:metrePerSecond . diff --git a/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointMissingRequiredProperties.ttl new file mode 100644 index 00000000..557f2d95 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointMissingRequiredProperties.ttl @@ -0,0 +1,19 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestFixedPointMissingRequiredProperties a bamm-c:FixedPointConstraint . diff --git a/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointWithInvalidAttributeDataType.ttl b/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointWithInvalidAttributeDataType.ttl new file mode 100644 index 00000000..a8754679 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointWithInvalidAttributeDataType.ttl @@ -0,0 +1,34 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestTrait a bamm-c:Trait ; + bamm:name "TestTrait" ; + bamm-c:constraint :TestFixedPointWithInvalidAttributeDataType ; + bamm-c:baseCharacteristic :Measurement . + +:TestFixedPointWithInvalidAttributeDataType a bamm-c:FixedPointConstraint ; + bamm:name "TestFixedPointWithInvalidAttributeDataType" ; + bamm:preferredName "Test Fixed Point"@en ; + bamm:description "TestFixedPoint"@en ; + bamm-c:scale "5"^^xsd:int ; + bamm-c:integer "10"^^xsd:nonNegativeInteger . + +:Measurement a bamm-c:Measurement ; + bamm:name "Measurement" ; + bamm:dataType xsd:decimal ; + bamm-c:unit unit:metrePerSecond . diff --git a/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointWithInvalidDataType.ttl b/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointWithInvalidDataType.ttl new file mode 100644 index 00000000..56192555 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/fixed-point-constraint-shape/io.openmanufacturing.test/1.0.0/TestFixedPointWithInvalidDataType.ttl @@ -0,0 +1,34 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestTrait a bamm-c:Trait ; + bamm:name "TestTrait" ; + bamm-c:constraint :TestFixedPointWithInvalidDataType ; + bamm-c:baseCharacteristic :Measurement . + +:TestFixedPointWithInvalidDataType a bamm-c:FixedPointConstraint ; + bamm:name "TestFixedPointWithInvalidDataType" ; + bamm:preferredName "Test Fixed Point"@en ; + bamm:description "TestFixedPoint"@en ; + bamm-c:scale "5"^^xsd:positiveInteger ; + bamm-c:integer "10"^^xsd:positiveInteger . + +:Measurement a bamm-c:Measurement ; + bamm:name "Measurement" ; + bamm:dataType xsd:float ; + bamm-c:unit unit:metrePerSecond . diff --git a/src/test/resources/bamm_1_0_0/language-constraint-shape/io.openmanufacturing.test/1.0.0/TestLanguageConstraint.ttl b/src/test/resources/bamm_1_0_0/language-constraint-shape/io.openmanufacturing.test/1.0.0/TestLanguageConstraint.ttl new file mode 100644 index 00000000..eeb4cdb5 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/language-constraint-shape/io.openmanufacturing.test/1.0.0/TestLanguageConstraint.ttl @@ -0,0 +1,20 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestLanguageConstraint a bamm-c:LanguageConstraint ; + bamm:name "TestLanguageConstraint" ; + bamm-c:languageCode "de-DE" . diff --git a/src/test/resources/bamm_1_0_0/language-constraint-shape/io.openmanufacturing.test/1.0.0/TestLanguageConstraintMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/language-constraint-shape/io.openmanufacturing.test/1.0.0/TestLanguageConstraintMissingRequiredProperties.ttl new file mode 100644 index 00000000..e8bddb11 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/language-constraint-shape/io.openmanufacturing.test/1.0.0/TestLanguageConstraintMissingRequiredProperties.ttl @@ -0,0 +1,18 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestLanguageConstraintMissingRequiredProperties a bamm-c:LanguageConstraint . diff --git a/src/test/resources/bamm_1_0_0/language-constraint-shape/io.openmanufacturing.test/1.0.0/TestLanguageConstraintMultipleLanguageCodeProperties.ttl b/src/test/resources/bamm_1_0_0/language-constraint-shape/io.openmanufacturing.test/1.0.0/TestLanguageConstraintMultipleLanguageCodeProperties.ttl new file mode 100644 index 00000000..8464e836 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/language-constraint-shape/io.openmanufacturing.test/1.0.0/TestLanguageConstraintMultipleLanguageCodeProperties.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestLanguageConstraintMultipleLanguageCodeProperties a bamm-c:LanguageConstraint ; + bamm:name "TestLanguageConstraintMultipleLanguageCodeProperties" ; + bamm-c:languageCode "DE_de" ; + bamm-c:languageCode "EN_en" . diff --git a/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraint.ttl b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraint.ttl new file mode 100644 index 00000000..ae334a9e --- /dev/null +++ b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraint.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestLengthConstraint a bamm-c:LengthConstraint ; + bamm:name "TestLengthConstraint" ; + bamm:preferredName "Test Length Constraint"@en ; + bamm:description "Test Length Constraint"@en ; + bamm-c:minValue "5"^^xsd:nonNegativeInteger ; + bamm-c:maxValue "10"^^xsd:nonNegativeInteger . diff --git a/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithCollection.ttl b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithCollection.ttl new file mode 100644 index 00000000..03f38fed --- /dev/null +++ b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithCollection.ttl @@ -0,0 +1,32 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestTrait a bamm-c:Trait ; + bamm:name "TestTrait" ; + bamm-c:constraint :TestLengthConstraintWithCollection ; + bamm-c:baseCharacteristic [ + a bamm-c:List ; + bamm:name "IntList" ; + bamm:dataType xsd:int + ] . + +:TestLengthConstraintWithCollection a bamm-c:LengthConstraint ; + bamm:name "TestLengthConstraintWithCollection" ; + bamm:preferredName "Test Length Constraint"@en ; + bamm:description "Test Length Constraint"@en ; + bamm-c:minValue "5"^^xsd:nonNegativeInteger ; + bamm-c:maxValue "10"^^xsd:nonNegativeInteger . diff --git a/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithDateTime.ttl b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithDateTime.ttl new file mode 100644 index 00000000..44bf5123 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithDateTime.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestLengthConstraintWithDateTime a bamm-c:LengthConstraint ; + bamm:name "TestLengthConstraintWithDateTime" ; + bamm:preferredName "Test Length Constraint"@en ; + bamm:description "Test Length Constraint"@en ; + bamm-c:minValue "5"^^xsd:nonNegativeInteger ; + bamm-c:maxValue "10"^^xsd:nonNegativeInteger . diff --git a/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithInvalidMinMax.ttl b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithInvalidMinMax.ttl new file mode 100644 index 00000000..4a944d75 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithInvalidMinMax.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestLengthConstraintWithInvalidMinMax a bamm-c:LengthConstraint ; + bamm:name "TestLengthConstraintWithInvalidMinMax" ; + bamm:preferredName "Test Length Constraint"@en ; + bamm:description "Test Length Constraint"@en ; + bamm-c:minValue "2"^^xsd:nonNegativeInteger ; + bamm-c:maxValue "1"^^xsd:nonNegativeInteger . diff --git a/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithInvalidType.ttl b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithInvalidType.ttl new file mode 100644 index 00000000..191b57f2 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithInvalidType.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestTrait a bamm-c:Trait ; + bamm:name "TestTrait" ; + bamm-c:constraint :TestLengthConstraintWithInvalidType ; + bamm-c:baseCharacteristic bamm-c:Boolean . + +:TestLengthConstraintWithInvalidType a bamm-c:LengthConstraint ; + bamm:name "TestLengthConstraintWithInvalidType" ; + bamm:preferredName "Test Length Constraint"@en ; + bamm:description "Test Length Constraint"@en ; + bamm-c:minValue "5"^^xsd:nonNegativeInteger ; + bamm-c:maxValue "10"^^xsd:nonNegativeInteger . diff --git a/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithOnlyMaxValue.ttl b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithOnlyMaxValue.ttl new file mode 100644 index 00000000..4e679ec5 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithOnlyMaxValue.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestLengthConstraintWithOnlyMaxValue a bamm-c:LengthConstraint ; + bamm:name "TestLengthConstraintWithOnlyMaxValue" ; + bamm:preferredName "Test Length Constraint"@en ; + bamm:description "Test Length Constraint"@en ; + bamm-c:maxValue "10"^^xsd:nonNegativeInteger . diff --git a/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithOnlyMinValue.ttl b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithOnlyMinValue.ttl new file mode 100644 index 00000000..70c73b83 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/length-constraint-shape/io.openmanufacturing.test/1.0.0/TestLengthConstraintWithOnlyMinValue.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestLengthConstraintWithOnlyMinValue a bamm-c:LengthConstraint ; + bamm:name "TestLengthConstraintWithOnlyMinValue" ; + bamm:preferredName "Test Length Constraint"@en ; + bamm:description "Test Length Constraint"@en ; + bamm-c:minValue "5"^^xsd:nonNegativeInteger . diff --git a/src/test/resources/bamm_1_0_0/locale-constraint-shape/io.openmanufacturing.test/1.0.0/TestLocaleConstraint.ttl b/src/test/resources/bamm_1_0_0/locale-constraint-shape/io.openmanufacturing.test/1.0.0/TestLocaleConstraint.ttl new file mode 100644 index 00000000..4c722020 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/locale-constraint-shape/io.openmanufacturing.test/1.0.0/TestLocaleConstraint.ttl @@ -0,0 +1,20 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestLocaleConstraint a bamm-c:LocaleConstraint ; + bamm:name "TestLocaleConstraint" ; + bamm-c:localeCode "de-DE" . diff --git a/src/test/resources/bamm_1_0_0/locale-constraint-shape/io.openmanufacturing.test/1.0.0/TestLocaleConstraintMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/locale-constraint-shape/io.openmanufacturing.test/1.0.0/TestLocaleConstraintMissingRequiredProperties.ttl new file mode 100644 index 00000000..79471651 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/locale-constraint-shape/io.openmanufacturing.test/1.0.0/TestLocaleConstraintMissingRequiredProperties.ttl @@ -0,0 +1,18 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestLocaleConstraintMissingRequiredProperties a bamm-c:LocaleConstraint . diff --git a/src/test/resources/bamm_1_0_0/locale-constraint-shape/io.openmanufacturing.test/1.0.0/TestLocaleConstraintMultipleLocaleCodeProperties.ttl b/src/test/resources/bamm_1_0_0/locale-constraint-shape/io.openmanufacturing.test/1.0.0/TestLocaleConstraintMultipleLocaleCodeProperties.ttl new file mode 100644 index 00000000..8c5c9cb2 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/locale-constraint-shape/io.openmanufacturing.test/1.0.0/TestLocaleConstraintMultipleLocaleCodeProperties.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestLocaleConstraintMultipleLocaleCodeProperties a bamm-c:LocaleConstraint ; + bamm:name "TestLocaleConstraintMultipleLocaleCodeProperties" ; + bamm-c:localeCode "de" ; + bamm-c:localeCode "en" . diff --git a/src/test/resources/bamm_1_0_0/measurement-shape/io.openmanufacturing.test/1.0.0/TestMeasurement.ttl b/src/test/resources/bamm_1_0_0/measurement-shape/io.openmanufacturing.test/1.0.0/TestMeasurement.ttl new file mode 100644 index 00000000..d4eaf632 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/measurement-shape/io.openmanufacturing.test/1.0.0/TestMeasurement.ttl @@ -0,0 +1,24 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestMeasurement a bamm-c:Measurement ; + bamm:name "TestMeasurement" ; + bamm:preferredName "Test Measurement"@en ; + bamm:description "Test Measurement"@en ; + bamm:dataType xsd:float ; + bamm-c:unit unit:hertz . diff --git a/src/test/resources/bamm_1_0_0/measurement-shape/io.openmanufacturing.test/1.0.0/TestMeasurementMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/measurement-shape/io.openmanufacturing.test/1.0.0/TestMeasurementMissingRequiredProperties.ttl new file mode 100644 index 00000000..229d8b42 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/measurement-shape/io.openmanufacturing.test/1.0.0/TestMeasurementMissingRequiredProperties.ttl @@ -0,0 +1,19 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestMeasurementMissingRequiredProperties a bamm-c:Measurement . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/measurement-shape/io.openmanufacturing.test/1.0.0/TestMeasurementWithInvalidUnit.ttl b/src/test/resources/bamm_1_0_0/measurement-shape/io.openmanufacturing.test/1.0.0/TestMeasurementWithInvalidUnit.ttl new file mode 100644 index 00000000..0c18ee9c --- /dev/null +++ b/src/test/resources/bamm_1_0_0/measurement-shape/io.openmanufacturing.test/1.0.0/TestMeasurementWithInvalidUnit.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestMeasurementWithInvalidUnit a bamm-c:Measurement ; + bamm:name "TestMeasurementWithInvalidUnit" ; + bamm:preferredName "Test Measurement"@en ; + bamm:description "Test Measurement"@en ; + bamm:dataType xsd:float ; + bamm-c:unit :Entity . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( ) . diff --git a/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperation.ttl b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperation.ttl new file mode 100644 index 00000000..2269d863 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperation.ttl @@ -0,0 +1,35 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . + +:TestAspect a bamm:Aspect ; + bamm:name "TestAspect" ; + bamm:properties ( ) ; + bamm:operations ( :TestOperation ) . + +:TestOperation a bamm:Operation ; + bamm:name "TestOperation" ; + bamm:preferredName "Test Operation"@en ; + bamm:description "Test Operation."@en ; + bamm:input ( :input ) ; + bamm:output :output . + +:input a bamm:Property ; + bamm:name "input" ; + bamm:characteristic bamm-c:Text . + +:output a bamm:Property ; + bamm:name "output" ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationMissingRequiredProperties.ttl new file mode 100644 index 00000000..caafca02 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationMissingRequiredProperties.ttl @@ -0,0 +1,21 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . + +:TestAspect a bamm:Aspect ; + bamm:name "TestAspect" ; + bamm:properties ( ) ; + bamm:operations ( :TestOperationMissingRequiredProperties ) . + +:TestOperationMissingRequiredProperties a bamm:Operation . diff --git a/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationNonUniqueLangStrings.ttl b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationNonUniqueLangStrings.ttl new file mode 100644 index 00000000..a6d517d2 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationNonUniqueLangStrings.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . + +:TestOperationNonUniqueLangStrings a bamm:Aspect ; + bamm:name "TestOperationNonUniqueLangStrings" ; + bamm:properties ( ) ; + bamm:operations ( :TestOperation ) . + +:TestOperation a bamm:Operation ; + bamm:name "TestOperation" ; + bamm:preferredName "Test Operation"@en ; + bamm:preferredName "Test Funktion"@en ; + bamm:description "Test Operation."@en ; + bamm:description "Test Funktion."@en ; + bamm:input ( ) . diff --git a/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithEmptyProperties.ttl b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithEmptyProperties.ttl new file mode 100644 index 00000000..8ac23262 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithEmptyProperties.ttl @@ -0,0 +1,25 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . + +:TestOperationWithEmptyProperties a bamm:Aspect ; + bamm:name "TestOperationWithEmptyProperties" ; + bamm:properties ( ) ; + bamm:operations ( :TestOperation ) . + +:TestOperation a bamm:Operation ; + bamm:name "" ; + bamm:preferredName ""@en ; + bamm:description ""@en ; + bamm:input ( ) . diff --git a/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithInvalidInput.ttl b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithInvalidInput.ttl new file mode 100644 index 00000000..9741a949 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithInvalidInput.ttl @@ -0,0 +1,30 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . + +:TestOperationWithInvalidInput a bamm:Aspect ; + bamm:name "TestOperationWithInvalidInput" ; + bamm:properties ( ) ; + bamm:operations ( :TestOperation ) . + +:TestOperation a bamm:Operation ; + bamm:name "TestOperation" ; + bamm:preferredName "Test Operation"@en ; + bamm:description "Test Operation."@en ; + bamm:input ( :input ) . + +:input a bamm:Entity ; + bamm:name "input" ; + bamm:properties ( ) . diff --git a/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithInvalidLangStrings.ttl b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithInvalidLangStrings.ttl new file mode 100644 index 00000000..3b4de128 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithInvalidLangStrings.ttl @@ -0,0 +1,26 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . + +:TestOperationWithInvalidLangStrings a bamm:Aspect ; + bamm:name "TestOperationWithInvalidLangStrings" ; + bamm:properties ( ) ; + bamm:operations ( :TestOperation ) . + +:TestOperation a bamm:Operation ; + bamm:name "TestOperation" ; + bamm:preferredName "Test Operation" ; + bamm:description "Test Operation." ; + bamm:input ( ) . diff --git a/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithInvalidOutput.ttl b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithInvalidOutput.ttl new file mode 100644 index 00000000..d991b1f3 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/operation-shape/io.openmanufacturing.test/1.0.0/TestOperationWithInvalidOutput.ttl @@ -0,0 +1,31 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . + +:TestOperationWithInvalidOutput a bamm:Aspect ; + bamm:name "TestOperationWithInvalidOutput" ; + bamm:properties ( ) ; + bamm:operations ( :TestOperation ) . + +:TestOperation a bamm:Operation ; + bamm:name "TestOperation" ; + bamm:preferredName "Test Operation"@en ; + bamm:description "Test Operation."@en ; + bamm:input ( ) ; + bamm:output :output . + +:output a bamm:Entity ; + bamm:name "output" ; + bamm:properties ( ) . diff --git a/src/test/resources/bamm_1_0_0/payload-name-shape/io.openmanufacturing.test/1.0.0/PayloadNameNotOfTypeString.ttl b/src/test/resources/bamm_1_0_0/payload-name-shape/io.openmanufacturing.test/1.0.0/PayloadNameNotOfTypeString.ttl new file mode 100644 index 00000000..be9a770d --- /dev/null +++ b/src/test/resources/bamm_1_0_0/payload-name-shape/io.openmanufacturing.test/1.0.0/PayloadNameNotOfTypeString.ttl @@ -0,0 +1,29 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:PayloadNameNotOfTypeString a bamm:Aspect ; + bamm:name "PayloadNameNotOfTypeString" ; + bamm:preferredName "Test Aspect"@en ; + bamm:description "Test Aspect"@en ; + bamm:properties ( [ bamm:property :testProperty; bamm:payloadName "0"^^xsd:int ] ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:description "A property with a text value."@en ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestProperty.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestProperty.ttl new file mode 100644 index 00000000..49b9d6ef --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestProperty.ttl @@ -0,0 +1,36 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . + +:TestProperty a bamm:Aspect ; + bamm:name "TestProperty" ; + bamm:properties ( :entityList ) ; + bamm:operations ( ) . + +:entityList a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:preferredName "Test Property"@de ; + bamm:description "A test property."@en ; + bamm:description "Eine test Property."@de ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "EntityList" ; + bamm:dataType :TestEntity + ] . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:properties ( ). diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyMissingRequiredProperties.ttl new file mode 100644 index 00000000..50571849 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyMissingRequiredProperties.ttl @@ -0,0 +1,27 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestPropertyMissingRequiredProperties a bamm:Aspect ; + bamm:name "TestPropertyMissingRequiredProperties" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:characteristic [ + a bamm:Characteristic ; + bamm:name "TestCharacteristic" ; + bamm:dataType xsd:double + ] . diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyNonUniqueLangStrings.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyNonUniqueLangStrings.ttl new file mode 100644 index 00000000..8e77a251 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyNonUniqueLangStrings.ttl @@ -0,0 +1,33 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestPropertyNonUniqueLangStrings a bamm:Aspect ; + bamm:name "TestPropertyNonUniqueLangStrings" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property"@en ; + bamm:preferredName "Test Eigenschaft"@en ; + bamm:description "A property with a list of numeric values."@en ; + bamm:description "Eine Liste mit numerischen Werten."@en ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "NumberList" ; + bamm:dataType xsd:double + ] . diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyRecursiveProperty.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyRecursiveProperty.ttl new file mode 100644 index 00000000..05993971 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyRecursiveProperty.ttl @@ -0,0 +1,32 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . + +:TestPropertyRecursiveProperty a bamm:Aspect ; + bamm:name "TestPropertyRecursiveProperty" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:characteristic :testItemCharacteristic . + +:testItemCharacteristic a bamm-c:SingleEntity ; + bamm:name "testItemCharacteristic" ; + bamm:dataType :testEntity . + +:testEntity a bamm:Entity ; + bamm:name "testEntity" ; + bamm:properties ( :testProperty ) . diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyRefiningPropertyWithCharacteristic.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyRefiningPropertyWithCharacteristic.ttl new file mode 100644 index 00000000..ecc61e55 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyRefiningPropertyWithCharacteristic.ttl @@ -0,0 +1,36 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestPropertyRefiningPropertyWithCharacteristic a bamm:Aspect ; + bamm:name "TestPropertyRefiningPropertyWithCharacteristic" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty bamm:refines :propertyToBeRefined ; + bamm:name "testProperty" ; + bamm:characteristic [ + a bamm:Characteristic ; + bamm:name "TestCharacteristic" ; + bamm:dataType xsd:float + ] . + +:propertyToBeRefined a bamm:Property ; + bamm:name "propertyToBeRefined" ; + bamm:characteristic [ + a bamm:Characteristic ; + bamm:name "TestCharacteristic2" ; + bamm:dataType xsd:double + ] . diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyRefiningPropertyWithoutCharacteristic.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyRefiningPropertyWithoutCharacteristic.ttl new file mode 100644 index 00000000..a5992b79 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyRefiningPropertyWithoutCharacteristic.ttl @@ -0,0 +1,31 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestPropertyRefiningPropertyWithoutCharacteristic a bamm:Aspect ; + bamm:name "TestPropertyRefiningPropertyWithoutCharacteristic" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty bamm:refines :propertyToBeRefined ; + bamm:name "testProperty" ; + bamm:characteristic [ + a bamm:Characteristic ; + bamm:name "TestCharacteristic" ; + bamm:dataType xsd:float + ] . + +:propertyToBeRefined a bamm:Property ; + bamm:name "propertyToBeRefined" . diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithEmptyProperties.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithEmptyProperties.ttl new file mode 100644 index 00000000..7d362e30 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithEmptyProperties.ttl @@ -0,0 +1,31 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestPropertyWithEmptyProperties a bamm:Aspect ; + bamm:name "TestPropertyWithEmptyProperties" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "" ; + bamm:preferredName ""@en ; + bamm:description ""@en ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "NumberList" ; + bamm:dataType xsd:double + ] . diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithExampleValueWithoutCharacteristic.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithExampleValueWithoutCharacteristic.ttl new file mode 100644 index 00000000..72eb528e --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithExampleValueWithoutCharacteristic.ttl @@ -0,0 +1,32 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix xsd: . + +:TestPropertyWithExampleValueWithoutCharacteristic a bamm:Aspect ; + bamm:name "TestPropertyWithExampleValueWithoutCharacteristic" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty bamm:refines :propertyToBeRefined ; + bamm:name "testProperty" ; + bamm:characteristic [ + a bamm:Characteristic ; + bamm:name "TestCharacteristic" ; + bamm:dataType xsd:float + ] . + +:propertyToBeRefined a bamm:Property ; + bamm:name "propertyToBeRefined" ; + bamm:exampleValue "23"^^xsd:int . diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithInvalidLangStrings.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithInvalidLangStrings.ttl new file mode 100644 index 00000000..8b2a7b4f --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithInvalidLangStrings.ttl @@ -0,0 +1,31 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestPropertyWithInvalidLangStrings a bamm:Aspect ; + bamm:name "TestPropertyWithInvalidLangStrings" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:preferredName "Test Property" ; + bamm:description "A property with a list of numeric values." ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "NumberList" ; + bamm:dataType xsd:double + ] . diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithMultipleExampleValues.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithMultipleExampleValues.ttl new file mode 100644 index 00000000..ce6f2a30 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithMultipleExampleValues.ttl @@ -0,0 +1,31 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestPropertyWithMultipleExampleValues a bamm:Aspect ; + bamm:name "TestPropertyWithMultipleExampleValues" ; + bamm:properties ( :numericList ) ; + bamm:operations ( ) . + +:numericList a bamm:Property ; + bamm:name "numericList" ; + bamm:exampleValue "25.12"^^xsd:double ; + bamm:exampleValue "234.2"^^xsd:double ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "NumericList" ; + bamm:dataType xsd:double + ] . diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithRecursivePropertyWithOptional.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithRecursivePropertyWithOptional.ttl new file mode 100644 index 00000000..3ca388ef --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithRecursivePropertyWithOptional.ttl @@ -0,0 +1,36 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix xsd: . +@prefix bamm: . +@prefix unit: . +@prefix bamm-c: . +@prefix bamm-e: . +@prefix : . + +:TestPropertyWithRecursivePropertyWithOptional a bamm:Aspect ; + bamm:name "TestPropertyWithRecursivePropertyWithOptional" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ). + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:characteristic :testItemCharacteristic . + +:testItemCharacteristic a bamm-c:SingleEntity ; + bamm:name "testItemCharacteristic" ; + bamm:dataType :TestEntity . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:properties ( [ bamm:property :testProperty ; bamm:optional true ; ] ) . + diff --git a/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithoutCharacteristicUnrefined.ttl b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithoutCharacteristicUnrefined.ttl new file mode 100644 index 00000000..7a40dfa9 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/property-shape/io.openmanufacturing.test/1.0.0/TestPropertyWithoutCharacteristicUnrefined.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . + +:TestPropertyWithoutCharacteristicUnrefined a bamm:Aspect ; + bamm:name "TestPropertyWithoutCharacteristicUnrefined" ; + bamm:properties ( :testProperty ) ; + bamm:operations ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" . diff --git a/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiable.ttl b/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiable.ttl new file mode 100644 index 00000000..26b5a833 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiable.ttl @@ -0,0 +1,24 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestQuantifiable a bamm-c:Quantifiable ; + bamm:name "TestQuantifiable" ; + bamm:preferredName "Test Quantifiable"@en ; + bamm:description "Test Quantifiable"@en ; + bamm:dataType xsd:float ; + bamm-c:unit unit:hertz . diff --git a/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiableWithInvalidUnit.ttl b/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiableWithInvalidUnit.ttl new file mode 100644 index 00000000..b96b8891 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiableWithInvalidUnit.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestQuantifiableWithInvalidUnit a bamm-c:Quantifiable ; + bamm:name "TestQuantifiableWithInvalidUnit" ; + bamm:preferredName "Test Quantifiable"@en ; + bamm:description "Test Quantifiable"@en ; + bamm:dataType xsd:float ; + bamm-c:unit :Entity . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( ) . diff --git a/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiableWithMissingProperties.ttl b/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiableWithMissingProperties.ttl new file mode 100644 index 00000000..c4b041e7 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiableWithMissingProperties.ttl @@ -0,0 +1,19 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestQuantifiableWithMissingProperties a bamm-c:Quantifiable . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiableWithoutUnitProperty.ttl b/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiableWithoutUnitProperty.ttl new file mode 100644 index 00000000..e1b22838 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/quantifiable-shape/io.openmanufacturing.test/1.0.0/TestQuantifiableWithoutUnitProperty.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestQuantifiableWithoutUnitProperty a bamm-c:Quantifiable ; + bamm:name "TestQuantifiableWithoutUnitProperty" ; + bamm:preferredName "Test Quantifiable"@en ; + bamm:description "Test Quantifiable"@en ; + bamm:dataType xsd:float . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRange.ttl b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRange.ttl new file mode 100644 index 00000000..0f095b7d --- /dev/null +++ b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRange.ttl @@ -0,0 +1,24 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestRange a bamm-c:RangeConstraint ; + bamm:name "TestRange" ; + bamm:preferredName "Test Range"@en ; + bamm:description "Test Range"@en ; + bamm-c:minValue "2.3"^^xsd:float ; + bamm-c:maxValue "10.5"^^xsd:float . diff --git a/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeMissingRequiredProperties.ttl new file mode 100644 index 00000000..701d46e4 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeMissingRequiredProperties.ttl @@ -0,0 +1,17 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . + +:TestRangeMissingRequiredProperties a bamm-c:RangeConstraint . diff --git a/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithInvalidLowerBoundDefinition.ttl b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithInvalidLowerBoundDefinition.ttl new file mode 100644 index 00000000..4495d581 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithInvalidLowerBoundDefinition.ttl @@ -0,0 +1,26 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestRangeWithInvalidLowerBoundDefinition a bamm-c:RangeConstraint ; + bamm:name "TestRangeWithInvalidLowerBoundDefinition" ; + bamm:preferredName "Test Range"@en ; + bamm:description "Test Range"@en ; + bamm-c:minValue "2.3"^^xsd:float ; + bamm-c:lowerBoundDefinition bamm-c:MINIMUM ; + bamm-c:maxValue "10.5"^^xsd:float ; + bamm-c:upperBoundDefinition bamm-c:AT_MOST . diff --git a/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithInvalidMinAndMaxValueDataType.ttl b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithInvalidMinAndMaxValueDataType.ttl new file mode 100644 index 00000000..59760b3a --- /dev/null +++ b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithInvalidMinAndMaxValueDataType.ttl @@ -0,0 +1,34 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestTrait a bamm-c:Trait ; + bamm:name "TestTrait" ; + bamm-c:constraint :TestRangeWithInvalidMinAndMaxValueDataType ; + bamm-c:baseCharacteristic :Measurement . + +:TestRangeWithInvalidMinAndMaxValueDataType a bamm-c:RangeConstraint ; + bamm:name "TestRangeWithInvalidMinAndMaxValueDataType" ; + bamm:preferredName "Test Range"@en ; + bamm:description "Test Range"@en ; + bamm-c:minValue "-2000"^^xsd:long ; + bamm-c:maxValue "2000"^^xsd:long . + +:Measurement a bamm-c:Measurement ; + bamm:name "Measurement" ; + bamm:dataType xsd:float ; + bamm-c:unit unit:metrePerSecond . diff --git a/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithInvalidUpperBoundDefinition.ttl b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithInvalidUpperBoundDefinition.ttl new file mode 100644 index 00000000..433e7bd5 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithInvalidUpperBoundDefinition.ttl @@ -0,0 +1,26 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestRangeWithInvalidUpperBoundDefinition a bamm-c:RangeConstraint ; + bamm:name "TestRangeWithInvalidUpperBoundDefinition" ; + bamm:preferredName "Test Range"@en ; + bamm:description "Test Range"@en ; + bamm-c:minValue "2.3"^^xsd:float ; + bamm-c:lowerBoundDefinition bamm-c:AT_LEAST ; + bamm-c:maxValue "10.5"^^xsd:float ; + bamm-c:upperBoundDefinition bamm-c:MAXIMUM . diff --git a/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithMultipleBoundDefinitions.ttl b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithMultipleBoundDefinitions.ttl new file mode 100644 index 00000000..e1f6b021 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/range-shape/io.openmanufacturing.test/1.0.0/TestRangeWithMultipleBoundDefinitions.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . +@prefix unit: . + +:TestRangeWithMultipleBoundDefinitions a bamm-c:RangeConstraint ; + bamm:name "TestRangeWithMultipleBoundDefinitions" ; + bamm:preferredName "Test Range"@en ; + bamm:description "Test Range"@en ; + bamm-c:minValue "2.3"^^xsd:float ; + bamm-c:lowerBoundDefinition bamm-c:AT_LEAST ; + bamm-c:lowerBoundDefinition bamm-c:GREATER_THAN ; + bamm-c:maxValue "10.5"^^xsd:float ; + bamm-c:upperBoundDefinition bamm-c:AT_MOST ; + bamm-c:upperBoundDefinition bamm-c:LESS_THAN . diff --git a/src/test/resources/bamm_1_0_0/regular-expression-constraint-shape/io.openmanufacturing.test/1.0.0/TestRegularExpressionConstraint.ttl b/src/test/resources/bamm_1_0_0/regular-expression-constraint-shape/io.openmanufacturing.test/1.0.0/TestRegularExpressionConstraint.ttl new file mode 100644 index 00000000..7aa56de4 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/regular-expression-constraint-shape/io.openmanufacturing.test/1.0.0/TestRegularExpressionConstraint.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestRegularExpressionConstraint a bamm-c:RegularExpressionConstraint ; + bamm:name "TestRegularExpressionConstraint" ; + bamm:preferredName "Test Regular Expression Constraint"@en ; + bamm:description "Test Regular Expression Constraint"@en ; + bamm:value "X" . diff --git a/src/test/resources/bamm_1_0_0/regular-expression-constraint-shape/io.openmanufacturing.test/1.0.0/TestRegularExpressionConstraintWithInvalidRegularExpression.ttl b/src/test/resources/bamm_1_0_0/regular-expression-constraint-shape/io.openmanufacturing.test/1.0.0/TestRegularExpressionConstraintWithInvalidRegularExpression.ttl new file mode 100644 index 00000000..694415c5 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/regular-expression-constraint-shape/io.openmanufacturing.test/1.0.0/TestRegularExpressionConstraintWithInvalidRegularExpression.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestRegularExpressionConstraintWithInvalidRegularExpression a bamm-c:RegularExpressionConstraint ; + bamm:name "TestRegularExpressionConstraintWithInvalidRegularExpression" ; + bamm:preferredName "Test Regular Expression Constraint"@en ; + bamm:description "Test Regular Expression Constraint"@en ; + bamm:value "(" . diff --git a/src/test/resources/bamm_1_0_0/regular-expression-constraint-shape/io.openmanufacturing.test/1.0.0/TestRegularExpressionConstraintWithInvalidType.ttl b/src/test/resources/bamm_1_0_0/regular-expression-constraint-shape/io.openmanufacturing.test/1.0.0/TestRegularExpressionConstraintWithInvalidType.ttl new file mode 100644 index 00000000..8be97ecf --- /dev/null +++ b/src/test/resources/bamm_1_0_0/regular-expression-constraint-shape/io.openmanufacturing.test/1.0.0/TestRegularExpressionConstraintWithInvalidType.ttl @@ -0,0 +1,27 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestTrait a bamm-c:Trait ; + bamm:name "TestTrait" ; + bamm-c:constraint :TestRegularExpressionConstraintWithInvalidType ; + bamm-c:baseCharacteristic bamm-c:Boolean . + +:TestRegularExpressionConstraintWithInvalidType a bamm-c:RegularExpressionConstraint ; + bamm:name "TestRegularExpressionConstraintWithInvalidType" ; + bamm:preferredName "Test Regular Expression Constraint"@en ; + bamm:description "Test Regular Expression Constraint"@en ; + bamm:value "X" . diff --git a/src/test/resources/bamm_1_0_0/see-shape/io.openmanufacturing.test/1.0.0/TestSeeProperty.ttl b/src/test/resources/bamm_1_0_0/see-shape/io.openmanufacturing.test/1.0.0/TestSeeProperty.ttl new file mode 100644 index 00000000..1de3a1ed --- /dev/null +++ b/src/test/resources/bamm_1_0_0/see-shape/io.openmanufacturing.test/1.0.0/TestSeeProperty.ttl @@ -0,0 +1,42 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestSeeProperty a bamm:Aspect ; + bamm:name "TestSeeProperty" ; + bamm:see ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:TestCharacteristicInstance a bamm:Characteristic ; + bamm:name "TestCharacteristicInstance" ; + bamm:see ; + bamm:dataType xsd:float . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:see ; + bamm:properties ( ). + +:TestOperation a bamm:Operation ; + bamm:name "TestOperation" ; + bamm:see ; + bamm:input ( ) . + +:testProperty a bamm:Property ; + bamm:name "testProperty" ; + bamm:see ; + bamm:characteristic :TestCharacteristicInstance . diff --git a/src/test/resources/bamm_1_0_0/see-shape/io.openmanufacturing.test/1.0.0/TestSeePropertyDoesNotHaveNodeKindIri.ttl b/src/test/resources/bamm_1_0_0/see-shape/io.openmanufacturing.test/1.0.0/TestSeePropertyDoesNotHaveNodeKindIri.ttl new file mode 100644 index 00000000..2f97d82a --- /dev/null +++ b/src/test/resources/bamm_1_0_0/see-shape/io.openmanufacturing.test/1.0.0/TestSeePropertyDoesNotHaveNodeKindIri.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestSeePropertyDoesNotHaveNodeKindIri a bamm:Aspect ; + bamm:name "TestAspect" ; + bamm:see "http://open-manufacturing.org/"^^xsd:string ; + bamm:properties ( ) ; + bamm:operations ( ) . diff --git a/src/test/resources/bamm_1_0_0/single-entity-shape/io.openmanufacturing.test/1.0.0/TestSingleEntityWithEntityDataType.ttl b/src/test/resources/bamm_1_0_0/single-entity-shape/io.openmanufacturing.test/1.0.0/TestSingleEntityWithEntityDataType.ttl new file mode 100644 index 00000000..b355671d --- /dev/null +++ b/src/test/resources/bamm_1_0_0/single-entity-shape/io.openmanufacturing.test/1.0.0/TestSingleEntityWithEntityDataType.ttl @@ -0,0 +1,54 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestSingleEntityWithEntityDataType a bamm-c:SingleEntity ; + bamm:name "TestSingleEntityWithEntityDataType" ; + bamm:preferredName "Test Single Entity"@en ; + bamm:description "Test Single Entity"@en ; + bamm:dataType :TestEntity . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:preferredName "Test Entity"@en ; + bamm:preferredName "Test Entität"@de ; + bamm:description "A test Entity"@en ; + bamm:description "Eine test Entität"@de ; + bamm:properties ( :entityList :integerList ). + +:entityList a bamm:Property ; + bamm:name "entityList" ; + bamm:preferredName "Entity List"@en ; + bamm:preferredName "Entitätliste"@de ; + bamm:description "A property with a list of complex value."@en ; + bamm:description "Eine Property mit einer Liste mit komplexen Werten."@de ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "EntityList" ; + bamm:dataType :TestEntity + ] . + +:integerList a bamm:Property ; + bamm:name "integerList" ; + bamm:preferredName "Integer List"@en ; + bamm:preferredName "Numerische Liste"@de ; + bamm:description "A property with a list of numeric value."@en ; + bamm:description "Eine Property mit einer Liste mit numerischen Werten."@de ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "NumericList" ; + bamm:dataType xsd:integer + ] . diff --git a/src/test/resources/bamm_1_0_0/single-entity-shape/io.openmanufacturing.test/1.0.0/TestSingleEntityWithXSDDataType.ttl b/src/test/resources/bamm_1_0_0/single-entity-shape/io.openmanufacturing.test/1.0.0/TestSingleEntityWithXSDDataType.ttl new file mode 100644 index 00000000..4a417052 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/single-entity-shape/io.openmanufacturing.test/1.0.0/TestSingleEntityWithXSDDataType.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestSingleEntityWithXSDDataType a bamm-c:SingleEntity ; + bamm:name "TestSingleEntityWithXSDDataType" ; + bamm:preferredName "Test Single Entity"@en ; + bamm:description "Test Single Entity"@en ; + bamm:dataType xsd:integer . diff --git a/src/test/resources/bamm_1_0_0/state-shape/io.openmanufacturing.test/1.0.0/TestState.ttl b/src/test/resources/bamm_1_0_0/state-shape/io.openmanufacturing.test/1.0.0/TestState.ttl new file mode 100644 index 00000000..f1b5e533 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/state-shape/io.openmanufacturing.test/1.0.0/TestState.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestState a bamm-c:State ; + bamm:name "TestState" ; + bamm:dataType xsd:string ; + bamm-c:defaultValue "OK" ; + bamm-c:values ( "OK" "ERR" ) . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/state-shape/io.openmanufacturing.test/1.0.0/TestStateDefaultValueNotInValues.ttl b/src/test/resources/bamm_1_0_0/state-shape/io.openmanufacturing.test/1.0.0/TestStateDefaultValueNotInValues.ttl new file mode 100644 index 00000000..f1dc1aaa --- /dev/null +++ b/src/test/resources/bamm_1_0_0/state-shape/io.openmanufacturing.test/1.0.0/TestStateDefaultValueNotInValues.ttl @@ -0,0 +1,22 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix xsd: . + +:TestStateDefaultValueNotInValues a bamm-c:State ; + bamm:name "TestStateDefaultValueNotInValues" ; + bamm:dataType xsd:string ; + bamm-c:defaultValue "WARN" ; + bamm-c:values ( "OK" "ERR" ) . diff --git a/src/test/resources/bamm_1_0_0/state-shape/io.openmanufacturing.test/1.0.0/TestStateMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/state-shape/io.openmanufacturing.test/1.0.0/TestStateMissingRequiredProperties.ttl new file mode 100644 index 00000000..522fed95 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/state-shape/io.openmanufacturing.test/1.0.0/TestStateMissingRequiredProperties.ttl @@ -0,0 +1,17 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . + +:TestStateMissingRequiredProperties a bamm-c:State . \ No newline at end of file diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValue.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValue.ttl new file mode 100644 index 00000000..1ba0fd68 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValue.ttl @@ -0,0 +1,27 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValue a bamm-c:StructuredValue ; + bamm:name "TestStructuredValue" ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule "(.*)" ; + bamm-c:elements ( :prop ) . + +:prop a bamm:Property ; + bamm:name "prop" ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithListCharacteristic.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithListCharacteristic.ttl new file mode 100644 index 00000000..d374bc10 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithListCharacteristic.ttl @@ -0,0 +1,31 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueElementsWithListCharacteristic a bamm-c:StructuredValue ; + bamm:name "TestStructuredValueElementsWithListCharacteristic" ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule "(.*)" ; + bamm-c:elements ( :prop ) . + +:prop a bamm:Property ; + bamm:name "prop" ; + bamm:characteristic :TestList . + +:TestList a bamm-c:List ; + bamm:name "TestList" ; + bamm:dataType xsd:string . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithNonScalarDatatype.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithNonScalarDatatype.ttl new file mode 100644 index 00000000..9a28470d --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithNonScalarDatatype.ttl @@ -0,0 +1,34 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueElementsWithNonScalarDatatype a bamm-c:StructuredValue ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule "(.*)" ; + bamm-c:elements ( :prop ) . + +:prop a bamm:Property ; + bamm:name "prop" ; + bamm:characteristic :EntityCharacteristic . + +:EntityCharacteristic a bamm-c:SingleEntity ; + bamm:name "EntityCharacteristic" ; + bamm:dataType :TestEntity . + +:TestEntity a bamm:Entity ; + bamm:name "TestEntity" ; + bamm:properties ( ) . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithStructuredValueCharacteristic.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithStructuredValueCharacteristic.ttl new file mode 100644 index 00000000..a4ab5ecf --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithStructuredValueCharacteristic.ttl @@ -0,0 +1,37 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueElementsWithStructuredValueCharacteristic a bamm-c:StructuredValue ; + bamm:name "TestStructuredValueElementsWithStructuredValueCharacteristic" ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule "(.*)" ; + bamm-c:elements ( :prop ) . + +:prop a bamm:Property ; + bamm:name "prop" ; + bamm:characteristic :AnotherStructuredValue . + +:AnotherStructuredValue a bamm-c:StructuredValue ; + bamm:name "AnotherStructuredValue" ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule "(.*)" ; + bamm-c:elements ( :anotherProp ) . + +:anotherProp a bamm:Property ; + bamm:name "anotherProp" ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithoutProperties.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithoutProperties.ttl new file mode 100644 index 00000000..241c2c61 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueElementsWithoutProperties.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueElementsWithoutProperties a bamm-c:StructuredValue ; + bamm:name "TestStructuredValueElementsWithoutProperties" ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule ".*" ; + bamm-c:elements ( "foo" ) . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueMissingRequiredProperties.ttl new file mode 100644 index 00000000..a561a34e --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueMissingRequiredProperties.ttl @@ -0,0 +1,19 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueMissingRequiredProperties a bamm-c:StructuredValue . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithEmptyElements.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithEmptyElements.ttl new file mode 100644 index 00000000..ea79723e --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithEmptyElements.ttl @@ -0,0 +1,23 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueWithEmptyElements a bamm-c:StructuredValue ; + bamm:name "TestStructuredValueWithEmptyElements" ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule "(.*)" ; + bamm-c:elements ( ) . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidDatatype.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidDatatype.ttl new file mode 100644 index 00000000..6283f34a --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidDatatype.ttl @@ -0,0 +1,27 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueWithInvalidDatatype a bamm-c:StructuredValue ; + bamm:name "TestStructuredValueWithInvalidDatatype" ; + bamm:dataType xsd:boolean ; + bamm-c:deconstructionRule "(.*)" ; + bamm-c:elements ( :prop ) . + +:prop a bamm:Property ; + bamm:name "prop" ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidDeconstruction.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidDeconstruction.ttl new file mode 100644 index 00000000..858ad7db --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidDeconstruction.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueWithInvalidDeconstruction a bamm-c:StructuredValue ; + bamm:name "TestStructuredValueWithInvalidDeconstruction" ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule "(asdf)" ; + bamm-c:elements ( :prop ) . + +:prop a bamm:Property ; + bamm:name "prop" ; + bamm:exampleValue "prop" ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidElements.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidElements.ttl new file mode 100644 index 00000000..9d5252a3 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidElements.ttl @@ -0,0 +1,27 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueWithInvalidElements a bamm-c:StructuredValue ; + bamm:name "TestStructuredValueWithInvalidElements" ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule "(.*)" ; + bamm-c:elements ( :prop 42 ) . + +:prop a bamm:Property ; + bamm:name "prop" ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidMatchingGroups.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidMatchingGroups.ttl new file mode 100644 index 00000000..0a1cd684 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidMatchingGroups.ttl @@ -0,0 +1,28 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueWithInvalidMatchingGroups a bamm-c:StructuredValue ; + bamm:name "TestStructuredValueWithInvalidMatchingGroups" ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule "(.*)(.*)" ; + bamm-c:elements ( :prop ) . + +:prop a bamm:Property ; + bamm:name "prop" ; + bamm:exampleValue "prop" ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidRegularExpression.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidRegularExpression.ttl new file mode 100644 index 00000000..03ff7575 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithInvalidRegularExpression.ttl @@ -0,0 +1,27 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueWithInvalidRegularExpression a bamm-c:StructuredValue ; + bamm:name "TestStructuredValueWithInvalidRegularExpression" ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule "((((" ; + bamm-c:elements ( :prop ) . + +:prop a bamm:Property ; + bamm:name "prop" ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithNonMatchingGroups.ttl b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithNonMatchingGroups.ttl new file mode 100644 index 00000000..c946ad11 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/structured-value-shape/io.openmanufacturing.test/1.0.0/TestStructuredValueWithNonMatchingGroups.ttl @@ -0,0 +1,33 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm: . +@prefix bamm-c: . +@prefix unit: . +@prefix xsd: . + +:TestStructuredValueWithNonMatchingGroups a bamm-c:StructuredValue ; + bamm:name "TestStructuredValueWithNonMatchingGroups" ; + bamm:dataType xsd:string ; + bamm-c:deconstructionRule "(prop1x)xx(prop.)" ; + bamm-c:elements ( :prop1 "xxx" :prop2 ) . + +:prop1 a bamm:Property ; + bamm:name "prop1" ; + bamm:exampleValue "prop1" ; + bamm:characteristic bamm-c:Text . + +:prop2 a bamm:Property ; + bamm:name "prop2" ; + bamm:exampleValue "prop2" ; + bamm:characteristic bamm-c:Text . diff --git a/src/test/resources/bamm_1_0_0/unique-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceIdenticalInstances.ttl b/src/test/resources/bamm_1_0_0/unique-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceIdenticalInstances.ttl new file mode 100644 index 00000000..2c564161 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/unique-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceIdenticalInstances.ttl @@ -0,0 +1,45 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityInstanceIdenticalInstances a bamm:Aspect ; + bamm:name "TestEntityInstanceIdenticalInstances" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( :intProperty :stringProperty ) . + +:stringProperty a bamm:Property ; + bamm:name "stringProperty" ; + bamm:characteristic bamm-c:Text . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:integer . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :stringProperty "foo" ; + :intProperty 42 . + +:Instance2 a :Entity ; + :stringProperty "foo" ; + :intProperty 42 . diff --git a/src/test/resources/bamm_1_0_0/unique-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceSomeIdenticalValues.ttl b/src/test/resources/bamm_1_0_0/unique-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceSomeIdenticalValues.ttl new file mode 100644 index 00000000..9645ea18 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/unique-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceSomeIdenticalValues.ttl @@ -0,0 +1,45 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityInstanceSomeIdenticalValues a bamm:Aspect ; + bamm:name "TestEntityInstanceSomeIdenticalValues" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( :intProperty :stringProperty ) . + +:stringProperty a bamm:Property ; + bamm:name "stringProperty" ; + bamm:characteristic bamm-c:Text . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:integer . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :stringProperty "foo" ; + :intProperty 42 . + +:Instance2 a :Entity ; + :stringProperty "foo" ; + :intProperty 23 . diff --git a/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstance.ttl b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstance.ttl new file mode 100644 index 00000000..2838436d --- /dev/null +++ b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstance.ttl @@ -0,0 +1,41 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityInstance a bamm:Aspect ; + bamm:name "TestEntityInstance" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( :intProperty :stringProperty ) . + +:stringProperty a bamm:Property ; + bamm:name "stringProperty" ; + bamm:characteristic bamm-c:Text . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:integer . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :stringProperty "foo" ; + :intProperty 42 . diff --git a/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceInvalidValueType.ttl b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceInvalidValueType.ttl new file mode 100644 index 00000000..376d2be5 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceInvalidValueType.ttl @@ -0,0 +1,41 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityInstanceInvalidValueType a bamm:Aspect ; + bamm:name "TestEntityInstanceInvalidValueType" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( :intProperty :stringProperty ) . + +:stringProperty a bamm:Property ; + bamm:name "stringProperty" ; + bamm:characteristic bamm-c:Text . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:int . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :stringProperty "foo" ; + :intProperty "bar" . diff --git a/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceMissingNotInPayloadProperties.ttl b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceMissingNotInPayloadProperties.ttl new file mode 100644 index 00000000..ec2f5eb3 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceMissingNotInPayloadProperties.ttl @@ -0,0 +1,45 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityInstanceMissingNotInPayloadProperties a bamm:Aspect ; + bamm:name "TestEntityInstanceMissingNotInPayloadProperties" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:TestEnumeration a bamm-c:Enumeration ; + bamm:name "TestEnumeration" ; + bamm:dataType :Entity ; + bamm-c:values ( :Instance ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( [ bamm:property :intProperty; bamm:notInPayload true ] :stringProperty ) . + +:stringProperty a bamm:Property ; + bamm:name "stringProperty" ; + bamm:characteristic bamm-c:Text . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:integer . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :stringProperty "foo" . diff --git a/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceMissingOptionalProperties.ttl b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceMissingOptionalProperties.ttl new file mode 100644 index 00000000..ed2d301e --- /dev/null +++ b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceMissingOptionalProperties.ttl @@ -0,0 +1,40 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityInstanceMissingOptionalProperties a bamm:Aspect ; + bamm:name "TestEntityInstanceMissingOptionalProperties" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( [ bamm:property :intProperty; bamm:optional true ] :stringProperty ) . + +:stringProperty a bamm:Property ; + bamm:name "stringProperty" ; + bamm:characteristic bamm-c:Text . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:integer . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :stringProperty "foo" . diff --git a/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceMissingRequiredProperties.ttl b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceMissingRequiredProperties.ttl new file mode 100644 index 00000000..8c43df9b --- /dev/null +++ b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityInstanceMissingRequiredProperties.ttl @@ -0,0 +1,40 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityInstanceMissingRequiredProperties a bamm:Aspect ; + bamm:name "TestEntityInstanceMissingRequiredProperties" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( :intProperty :stringProperty ) . + +:stringProperty a bamm:Property ; + bamm:name "stringProperty" ; + bamm:characteristic bamm-c:Text . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:int . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :stringProperty "foo" . diff --git a/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithEntityListInstance.ttl b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithEntityListInstance.ttl new file mode 100644 index 00000000..6b3dbc5a --- /dev/null +++ b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithEntityListInstance.ttl @@ -0,0 +1,55 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityWithEntityListInstance a bamm:Aspect ; + bamm:name "TestEntityWithEntityListInstance" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( :intProperty :entityListProperty ) . + +:entityListProperty a bamm:Property ; + bamm:name "entityListProperty" ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "EntityList" ; + bamm:dataType :ListEntity + ] . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:integer . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :entityListProperty ( :ListEntityInstanceOne :ListEntityInstanceTwo ) ; + :intProperty 42 . + +:ListEntity a bamm:Entity ; + bamm:name "ListEntity" ; + bamm:properties ( :intProperty ) . + +:ListEntityInstanceOne a :ListEntity ; + :intProperty 34 . + +:ListEntityInstanceTwo a :ListEntity ; + :intProperty 56 . diff --git a/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithEntityListInstanceInvalidTypeInList.ttl b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithEntityListInstanceInvalidTypeInList.ttl new file mode 100644 index 00000000..fea5a92b --- /dev/null +++ b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithEntityListInstanceInvalidTypeInList.ttl @@ -0,0 +1,62 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityWithEntityListInstanceInvalidTypeInList a bamm:Aspect ; + bamm:name "TestEntityWithEntityListInstanceInvalidTypeInList" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( :intProperty :entityListProperty ) . + +:entityListProperty a bamm:Property ; + bamm:name "entityListProperty" ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "EntityList" ; + bamm:dataType :ListEntity + ] . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:integer . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :entityListProperty ( :ListEntityInstanceOne :AnotherListEntityInstance :ListEntityInstanceTwo ) ; + :intProperty 42 . + +:ListEntity a bamm:Entity ; + bamm:name "ListEntity" ; + bamm:properties ( :intProperty ) . + +:ListEntityInstanceOne a :ListEntity ; + :intProperty 34 . + +:ListEntityInstanceTwo a :ListEntity ; + :intProperty 56 . + +:AnotherListEntity a bamm:Entity ; + bamm:name "AnotherListEntity" ; + bamm:properties ( :intProperty ) . + +:AnotherListEntityInstance a :AnotherListEntity ; + :intProperty 89 . diff --git a/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithListInstance.ttl b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithListInstance.ttl new file mode 100644 index 00000000..f3c05fb6 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithListInstance.ttl @@ -0,0 +1,45 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityWithListInstance a bamm:Aspect ; + bamm:name "TestEntityWithListInstance" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( :intProperty :stringListProperty ) . + +:stringListProperty a bamm:Property ; + bamm:name "stringListProperty" ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "StringList" ; + bamm:dataType xsd:string + ] . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:integer . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :stringListProperty ( "foo" "bar" "baz" ) ; + :intProperty 42 . diff --git a/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithListInstanceInvalidTypeInList.ttl b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithListInstanceInvalidTypeInList.ttl new file mode 100644 index 00000000..6699214e --- /dev/null +++ b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithListInstanceInvalidTypeInList.ttl @@ -0,0 +1,45 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityWithListInstanceInvalidTypeInList a bamm:Aspect ; + bamm:name "TestEntityWithListInstanceInvalidTypeInList" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( :intProperty :intListProperty ) . + +:intListProperty a bamm:Property ; + bamm:name "intListProperty" ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "IntegerList" ; + bamm:dataType xsd:integer + ] . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:integer . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :intListProperty ( "1"^^xsd:integer "2" "3"^^xsd:integer ) ; + :intProperty 42 . diff --git a/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithListInstanceWithoutList.ttl b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithListInstanceWithoutList.ttl new file mode 100644 index 00000000..fe1a67d0 --- /dev/null +++ b/src/test/resources/bamm_1_0_0/valid-entity-instance-shape/io.openmanufacturing.test/1.0.0/TestEntityWithListInstanceWithoutList.ttl @@ -0,0 +1,45 @@ +# +# Copyright (c) 2021 Robert Bosch Manufacturing Solutions GmbH +# +# See the AUTHORS file(s) distributed with this work for additional +# information regarding authorship. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +@prefix : . +@prefix bamm-c: . +@prefix bamm: . +@prefix xsd: . + +:TestEntityWithListInstanceWithoutList a bamm:Aspect ; + bamm:name "TestEntityWithListInstanceWithoutList" ; + bamm:properties ( ) ; + bamm:operations ( ) . + +:Entity a bamm:Entity ; + bamm:name "Entity" ; + bamm:properties ( :intProperty :stringListProperty ) . + +:stringListProperty a bamm:Property ; + bamm:name "stringListProperty" ; + bamm:characteristic [ + a bamm-c:List ; + bamm:name "StringList" ; + bamm:dataType xsd:string + ] . + +:CustomCharacteristic a bamm:Characteristic ; + bamm:name "CustomCharacteristic" ; + bamm:dataType xsd:integer . + +:intProperty a bamm:Property ; + bamm:name "intProperty" ; + bamm:characteristic :CustomCharacteristic . + +:Instance a :Entity ; + :stringListProperty "foo" ; + :intProperty 42 .