modspec 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/.rubocop_todo.yml +118 -0
  4. data/Gemfile +4 -2
  5. data/README.adoc +508 -17
  6. data/lib/modspec/conformance_class.rb +39 -10
  7. data/lib/modspec/conformance_test.rb +40 -13
  8. data/lib/modspec/identifier.rb +5 -3
  9. data/lib/modspec/normative_statement.rb +49 -14
  10. data/lib/modspec/normative_statements_class.rb +39 -12
  11. data/lib/modspec/suite.rb +242 -5
  12. data/lib/modspec/version.rb +1 -1
  13. data/lib/modspec.rb +14 -4
  14. data/modspec.gemspec +8 -14
  15. data/spec/conformance_class.liquid +98 -0
  16. data/spec/fixtures/advanced-cc.yaml +52 -0
  17. data/spec/fixtures/advanced-json-cc.yaml +24 -0
  18. data/spec/fixtures/advanced-json-rc.yaml +16 -0
  19. data/spec/fixtures/advanced-rc.yaml +43 -0
  20. data/spec/fixtures/basic-quaternion-cc.yaml +44 -0
  21. data/spec/fixtures/basic-quaternion-json-cc.yaml +24 -0
  22. data/spec/fixtures/basic-quaternion-json-rc.yaml +17 -0
  23. data/spec/fixtures/basic-quaternion-json-strict-cc.yaml +22 -0
  24. data/spec/fixtures/basic-quaternion-json-strict-rc.yaml +19 -0
  25. data/spec/fixtures/basic-quaternion-rc.yaml +34 -0
  26. data/spec/fixtures/basic-ypr-cc.yaml +39 -0
  27. data/spec/fixtures/basic-ypr-json-cc.yaml +23 -0
  28. data/spec/fixtures/basic-ypr-json-rc.yaml +21 -0
  29. data/spec/fixtures/basic-ypr-rc.yaml +32 -0
  30. data/spec/fixtures/chain-cc.yaml +50 -0
  31. data/spec/fixtures/chain-json-cc.yaml +24 -0
  32. data/spec/fixtures/chain-json-rc.yaml +20 -0
  33. data/spec/fixtures/chain-rc.yaml +36 -0
  34. data/spec/fixtures/frame-spec-cc.yaml +43 -0
  35. data/spec/fixtures/frame-spec-rc.yaml +27 -0
  36. data/spec/fixtures/global-cc.yaml +38 -0
  37. data/spec/fixtures/global-rc.yaml +23 -0
  38. data/spec/fixtures/graph-cc.yaml +48 -0
  39. data/spec/fixtures/graph-json-cc.yaml +24 -0
  40. data/spec/fixtures/graph-json-rc.yaml +20 -0
  41. data/spec/fixtures/graph-rc.yaml +38 -0
  42. data/spec/fixtures/series-irregular-cc.yaml +58 -0
  43. data/spec/fixtures/series-irregular-json-cc.yaml +24 -0
  44. data/spec/fixtures/series-irregular-json-rc.yaml +20 -0
  45. data/spec/fixtures/series-irregular-rc.yaml +41 -0
  46. data/spec/fixtures/series-regular-cc.yaml +63 -0
  47. data/spec/fixtures/series-regular-json-cc.yaml +24 -0
  48. data/spec/fixtures/series-regular-json-rc.yaml +20 -0
  49. data/spec/fixtures/series-regular-rc.yaml +46 -0
  50. data/spec/fixtures/stream-cc.yaml +49 -0
  51. data/spec/fixtures/stream-json-cc.yaml +48 -0
  52. data/spec/fixtures/stream-json-rc.yaml +32 -0
  53. data/spec/fixtures/stream-rc.yaml +36 -0
  54. data/spec/fixtures/tangent-point-cc.yaml +43 -0
  55. data/spec/fixtures/tangent-point-rc.yaml +38 -0
  56. data/spec/fixtures/time-cc.yaml +32 -0
  57. data/spec/fixtures/time-rc.yaml +20 -0
  58. data/spec/modspec/conformance_class_spec.rb +154 -0
  59. data/spec/modspec/conformance_test_spec.rb +76 -0
  60. data/spec/modspec/normative_statement_spec.rb +81 -0
  61. data/spec/modspec/normative_statements_class_spec.rb +61 -0
  62. data/spec/modspec/suite_spec.rb +109 -0
  63. data/spec/modspec_spec.rb +25 -0
  64. data/spec/requirements_class.liquid +93 -0
  65. data/spec/spec_helper.rb +16 -0
  66. metadata +71 -61
@@ -0,0 +1,98 @@
1
+ {% assign count = 0 %}
2
+ {% for scope in group.scopes %}
3
+ {% assign count = count | plus: 1 %}
4
+ [[cc-{{prefix}}-{{count}}]]
5
+ .{{scope.name}}
6
+ [conformance_class]
7
+ ====
8
+ [%metadata]
9
+ identifier:: {{scope.identifier}}
10
+ description::
11
+ +
12
+ --
13
+ {{scope.description}}
14
+ --
15
+
16
+ target:: {{scope.target}}
17
+
18
+ {% for depend in {{scope.dependencies}} %}
19
+ inherit:: {{depend}}
20
+ {% endfor %}
21
+
22
+ {% for test in {{scope.tests}} %}
23
+ conformance-test:: {{test.identifier}}
24
+ {% endfor %}
25
+
26
+ {% if {{scope.guidance}} %}
27
+ guidance::
28
+ +
29
+ --
30
+ {% for rec in {{scope.guidance}} %}
31
+ * {{rec}}
32
+ {% endfor %}
33
+ --
34
+ {% endif %}
35
+
36
+ {% if {{scope.clause}} %}
37
+ Clause::
38
+ +
39
+ --
40
+ {{scope.clause}}
41
+ --
42
+ {% endif %}
43
+ ====
44
+
45
+ {% for test in {{scope.tests}} %}
46
+ {% if {{test.name}} %}
47
+ .{{test.name}}
48
+ {% endif %}
49
+ [conformance_test]
50
+ ====
51
+ [%metadata]
52
+ identifier:: {{test.identifier}}
53
+ description::
54
+ +
55
+ --
56
+ {{test.description}}
57
+ --
58
+
59
+ {% for target in {{test.targets}} %}
60
+ target:: {{target}}
61
+
62
+ {% endfor %}
63
+
64
+ {% for depend in {{test.dependencies}} %}
65
+ inherit:: {{depend}}
66
+ {% endfor %}
67
+
68
+ {% if {{test.guidance}} %}
69
+ guidance::
70
+ +
71
+ --
72
+ {% for rec in {{test.guidance}} %}
73
+ * {{rec}}
74
+ {% endfor %}
75
+ --
76
+ {% endif %}
77
+
78
+
79
+ {% if {{test.purpose}} %}
80
+ test-purpose:: {{test.purpose}}
81
+ {% endif %}
82
+
83
+ {% if {{test.method}} %}
84
+ test-method::
85
+ +
86
+ --
87
+ {{test.method}}
88
+ --
89
+ {% endif %}
90
+
91
+ {% if {{test.type}} %}
92
+ Test type:: {{test.type}}
93
+ {% endif %}
94
+ ====
95
+
96
+ {% endfor %}
97
+
98
+ {% endfor %}
@@ -0,0 +1,52 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: Basic-YPR logical model SDU conformance
4
+ identifier: /conf/advanced
5
+ target:
6
+ - /req/advanced
7
+ classification: "Target Type: SDU"
8
+ description: |
9
+ To confirm that an implementation of the Advanced GeoPose conforms to
10
+ the Logical Model.
11
+ dependencies:
12
+ - /conf/global
13
+ - /conf/frame-spec
14
+ - /conf/time
15
+
16
+ tests:
17
+ - name: Verify expression of valid time as GeoPose_Instant
18
+ identifier: /conf/advanced/valid-time
19
+ targets:
20
+ - /req/advanced/valid-time
21
+ dependencies:
22
+ - /conf/time/instant
23
+ description: |
24
+ To confirm the correct properties of a GeoPose_Instant.
25
+ purpose: |
26
+ Confirm that the `Advanced.validTime` attribute is represented by a
27
+ `GeoPose_Instant` object.
28
+ method: Inspection
29
+
30
+ - name: Verify expression of outer frame
31
+ identifier: /conf/advanced/frame-spec
32
+ targets:
33
+ - /req/advanced/frame-spec
34
+ description: |
35
+ To confirm that an implementation of an Advanced SDU contains an explicit
36
+ frame specification in frameSpecification using the `ExplicitFrameSpec`
37
+ object.
38
+ purpose: |
39
+ Verify that this requirement is satisfied.
40
+ method: Inspection
41
+
42
+ - name: Verify expression of inner frame
43
+ identifier: /conf/advanced/quaternion
44
+ targets:
45
+ - /req/advanced/quaternion
46
+ description: |
47
+ To confirm that the unit quaternion consists of four representations of
48
+ real number values and that the square root of the sum of the squares of
49
+ those numbers is approximately 1.
50
+ purpose: |
51
+ To confirm the correct properties of a quaternion.
52
+ method: Inspection
@@ -0,0 +1,24 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: JSON encoding of Advanced SDU
4
+ identifier: /conf/advanced-encoding-json
5
+ target:
6
+ - /req/advanced-encoding-json
7
+ classification: "Target Type: JSON SDU"
8
+ description: |
9
+ Confirm that a JSON-encoded Advanced GeoPose conforms to the
10
+ relevant elements of the Logical Model and a corresponding JSON-Schema
11
+ document.
12
+
13
+ tests:
14
+ - name: Verify conformance via JSON schema
15
+ identifier: /conf/advanced-encoding-json/definition
16
+ targets:
17
+ - /req/advanced-encoding-json/definition
18
+ description: |
19
+ To confirm that a Advanced GeoPose in JSON validates against the JSON schema.
20
+ purpose: |
21
+ Verify that data validates against the corresponding JSON schema.
22
+ method: |
23
+ Validate the JSON data against the Advanced JSON-Schema 2019-9 definition
24
+ (<<advanced_geopose_json_schema>>).
@@ -0,0 +1,16 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: JSON encoding of Advanced SDU
4
+ identifier: /req/advanced-encoding-json
5
+ description: |
6
+ Requirements for the JSON encoding of a Advanced SDU.
7
+ implements:
8
+ - /req/advanced
9
+
10
+ normative_statements:
11
+
12
+ - name: Specification as JSON schema
13
+ identifier: /req/advanced-encoding-json/definition
14
+ statement: |
15
+ A JSON-encoded Advanced GeoPose SHALL conform to the
16
+ Advanced JSON-Schema 2019-9 definition (<<advanced_geopose_json_schema>>).
@@ -0,0 +1,43 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: Advanced logical model SDU
4
+ identifier: /req/advanced
5
+ description: |
6
+ The Advanced Target has a more general structure than Basic-YPR and
7
+ Basic-Quaternion, supporting flexible specification of Outer Frame and a
8
+ Valid Time.
9
+
10
+ dependencies:
11
+ - /req/global
12
+ - /req/frame-spec
13
+ - /req/time
14
+ normative_statements:
15
+
16
+ - name: Expression of valid time as GeoPose_Instant
17
+ identifier: /req/advanced/valid-time
18
+ dependencies:
19
+ - /req/time/instant
20
+
21
+ statement: |
22
+ The `Advanced.validTime` attribute shall be represented by a
23
+ `GeoPose_Instant` object.
24
+
25
+ - name: Expression of outer frame
26
+ identifier: /req/advanced/frame-spec
27
+ dependencies:
28
+ - /req/frame-spec
29
+ statement: |
30
+ The `Advanced.frameSpecification` attribute shall represent an explicit
31
+ frame specification with the `ExplicitFrameSpec` object.
32
+
33
+ - name: Expression of inner frame
34
+ identifier: /req/advanced/quaternion
35
+ statement: |
36
+ The `Advanced.quaternion` attribute shall contain a quaternion expressed
37
+ using the UnitQuaternion datatype value expressed as four real numbers,
38
+ representing four quaternion components w, x, y, z, in that sequential
39
+ order. The sum of the squares of the individual components SHALL be as
40
+ close to 1.0 as the real number representation allows. The quaternion
41
+ SHALL be applied to an initial reference frame oriented East-North-Up
42
+ (ENU) coordinate system where the coordinate axes East, North, and Up
43
+ correspond to the axes X, Y, Z.
@@ -0,0 +1,44 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: Basic-Quaternion logical model SDU conformance
4
+ identifier: /conf/basic-quaternion
5
+ target:
6
+ - /req/basic-quaternion
7
+ classification: "Target Type: SDU"
8
+ description: Conformance with Basic-Quaternion logical model SDU
9
+ dependencies:
10
+ - /conf/global
11
+ - /conf/tangent-point
12
+
13
+ tests:
14
+ - name: Verify expression of outer frame
15
+ identifier: /conf/basic-quaternion/position
16
+ targets:
17
+ - /req/basic-quaternion/position
18
+ description: |
19
+ To confirm that a Basic-Quaternion GeoPose contains an Outer Frame
20
+ specified by an implicit WGS-84 CRS and an implicit EPSG 4461-CS (LTP-ENU)
21
+ coordinate system and explicit parameters defining the tangent point.
22
+ purpose: |
23
+ Verify that this requirement is satisfied.
24
+ method: Inspection
25
+
26
+ - name: Verify expression of inner frame
27
+ identifier: /conf/basic-quaternion/quaternion
28
+ targets:
29
+ - /req/basic-quaternion/quaternion
30
+ description: |
31
+ To confirm that a Basic-Quaternion GeoPose contains an Inner Frame is a
32
+ rotation-only transformation using a unit quaternion, which is an instance
33
+ of a GeoPose Logical Model quaternion data type value that is expressed as
34
+ four real numbers, representing four quaternion components w, x, y, z, in
35
+ that sequential order.
36
+
37
+ The sum of the squares of the individual components is as close to 1.0 as
38
+ the real number representation allows. The quaternion is applied to an
39
+ initial reference frame oriented East-North-Up (ENU) coordinate system
40
+ where the coordinate axes East, North, and Up correspond to the axes X, Y,
41
+ Z.
42
+ purpose: |
43
+ Verify that this requirement is satisfied.
44
+ method: Inspection
@@ -0,0 +1,24 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: Permissive JSON encoding of Basic-Quaternion SDU
4
+ identifier: /conf/basic-quaternion-encoding-json
5
+ target:
6
+ - /req/basic-quaternion-encoding-json
7
+ classification: "Target Type: JSON SDU"
8
+ description: |
9
+ Confirm that a JSON-encoded Basic-Quaternion GeoPose conforms to the
10
+ relevant elements of the Logical Model and a corresponding JSON-Schema
11
+ document.
12
+
13
+ tests:
14
+ - name: Verify conformance via JSON schema
15
+ identifier: /conf/basic-quaternion-encoding-json/definition
16
+ targets:
17
+ - /req/basic-quaternion-encoding-json/definition
18
+ description: |
19
+ To confirm that a Basic-Quaternion GeoPose in JSON validates against the JSON schema.
20
+ purpose: |
21
+ Verify that data validates against the corresponding JSON schema.
22
+ method: |
23
+ Validate the JSON data against the Basic-Quaternion JSON Schema 2019-9 definition
24
+ (<<basic_quaternion_permissive_json_schema>>).
@@ -0,0 +1,17 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: Permissive JSON encoding of Basic-Quaternion SDU
4
+ identifier: /req/basic-quaternion-encoding-json
5
+ description: |
6
+ Requirements for the JSON encoding of a Basic-Quaternion SDU.
7
+ implements:
8
+ - /req/basic-quaternion
9
+
10
+ normative_statements:
11
+
12
+ - name: Specification as JSON schema
13
+ identifier: /req/basic-quaternion-encoding-json/definition
14
+ statement: |
15
+ A JSON-encoded Basic-Quaternion GeoPose SHALL conform to the
16
+ Basic-Quaternion JSON-Schema 2019-9 definition
17
+ (<<basic_quaternion_permissive_json_schema>>).
@@ -0,0 +1,22 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: Strict JSON encoding of Basic-Quaternion SDU
4
+ identifier: /conf/basic-quaternion-encoding-json-strict
5
+ target:
6
+ - /req/basic-quaternion-encoding-json-strict
7
+ classification: "Target Type: JSON SDU"
8
+ description: Conformance with the strict JSON encoding of Basic-Quaternion SDU
9
+
10
+ tests:
11
+ - name: Verify conformance via JSON schema
12
+ identifier: /conf/basic-quaternion-encoding-json-strict/definition
13
+ targets:
14
+ - /req/basic-quaternion-encoding-json-strict/definition
15
+ description: |
16
+ To confirm that a Basic-Quaternion GeoPose in strict JSON encoding
17
+ validates against the JSON schema.
18
+ purpose: |
19
+ Verify that data validates against the corresponding JSON schema.
20
+ method: |
21
+ Validate the JSON data against the strict Basic-Quaternion JSON-Schema 2019-9 definition
22
+ (<<basic_quaternion_strict_json_schema>>).
@@ -0,0 +1,19 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: Strict JSON encoding of Basic-Quaternion SDU
4
+ identifier: /req/basic-quaternion-encoding-json-strict
5
+ description: |
6
+ Requirements for the JSON encoding of a Basic-Quaternion SDU in strict mode.
7
+ The strict encoding does not allow specification of JSON elements outside of
8
+ the schema.
9
+ implements:
10
+ - /req/basic-quaternion
11
+
12
+ normative_statements:
13
+
14
+ - name: Specification as JSON schema
15
+ identifier: /req/basic-quaternion-encoding-json-strict/definition
16
+ statement: |
17
+ A JSON-encoded Basic-Quaternion GeoPose SHALL conform to the
18
+ strict Basic-Quaternion JSON-Schema 2019-9 definition
19
+ (<<basic_quaternion_strict_json_schema>>).
@@ -0,0 +1,34 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: Basic-Quaternion logical model SDU
4
+ identifier: /req/basic-quaternion
5
+ description: |
6
+ The Basic-Quaternion Target has a simple structure with no options. Position
7
+ is specified as a point in an LTP-ENU frame and rotation is specified as a
8
+ unit quaternion.
9
+
10
+ dependencies:
11
+ - /req/global
12
+ - /req/tangent-point
13
+ normative_statements:
14
+
15
+ - name: Expression of outer frame
16
+ identifier: /req/basic-quaternion/position
17
+ statement: |
18
+ The `Basic_Quaternion.position` attribute shall represent the outer frame,
19
+ specified by an implicit WGS-84 CRS and an implicit EPSG 4461-CS (LTP-ENU)
20
+ coordinate system and explicit parameters to define the tangent point.
21
+
22
+ - name: Expression of inner frame
23
+ identifier: /req/basic-quaternion/quaternion
24
+ statement: |
25
+ The `Basic_Quaternion.quaternion` attribute shall represent the inner
26
+ frame, which shall be a rotation-only transformation using a unit
27
+ quaternion. The uniq quaternion shall be represented as an instance of a
28
+ GeoPose Logical Model quaternion data type, expressed as four real
29
+ numbers, representing four quaternion components w, x, y, z, in that
30
+ sequential order. The sum of the squares of the individual components
31
+ shall be as close to 1.0 as the real number representation allows. The
32
+ quaternion shall be applied to an initial reference frame oriented
33
+ East-North-Up (ENU) coordinate system where the coordinate axes East,
34
+ North, and Up correspond to the axes X, Y, Z.
@@ -0,0 +1,39 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: Basic-YPR logical model SDU conformance
4
+ identifier: /conf/basic-ypr
5
+ target:
6
+ - /req/basic-ypr
7
+ classification: "Target Type: SDU"
8
+ description: Conformance with Basic-YPR logical model SDU
9
+ dependencies:
10
+ - /conf/global
11
+ - /conf/tangent-point
12
+
13
+ tests:
14
+ - name: Verify expression of outer frame
15
+ identifier: /conf/basic-ypr/position
16
+ targets:
17
+ - /req/basic-ypr/position
18
+ description: |
19
+ To confirm that an implementation of a Basic-YPR consists of an Outer
20
+ Frame specified by an implicit WGS-84 CRS and an implicit EPSG 4461-CS
21
+ (LTP-ENU) coordinate system and explicit parameters to define the tangent
22
+ point.
23
+ purpose: |
24
+ Verify that this requirement is satisfied.
25
+ method: Inspection
26
+
27
+ - name: Verify expression of inner frame
28
+ identifier: /conf/basic-ypr/angles
29
+ targets:
30
+ - /req/basic-ypr/angles
31
+ description: |
32
+ To confirm that the Inner Frame is expressed as a rotation-only
33
+ transformation using Yaw, Pitch, and Roll angles. To confirm that GeoPose
34
+ YPR angles are expressed as three consecutive rotations about the local
35
+ axes Z, Y, and X, in that order, corresponding to the conventional Yaw,
36
+ Pitch, and Roll angles and that the unit of measure is the degree.
37
+ purpose: |
38
+ Verify that this requirement is satisfied.
39
+ method: Inspection
@@ -0,0 +1,23 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: JSON encoding of Basic-YPR SDU
4
+ identifier: /conf/basic-ypr-encoding-json
5
+ target:
6
+ - /req/basic-ypr-encoding-json
7
+ classification: "Target Type: JSON SDU"
8
+ description: |
9
+ Confirm that a JSON-encoded Basic-YPR GeoPose conforms to the relevant
10
+ elements of the Logical Model and a corresponding JSON-Schema document.
11
+
12
+ tests:
13
+ - name: Verify conformance via JSON schema
14
+ identifier: /conf/basic-ypr-encoding-json/definition
15
+ targets:
16
+ - /req/basic-ypr-encoding-json/definition
17
+ description: |
18
+ To confirm that a Basic-YPR GeoPose in JSON validates against the JSON schema.
19
+ purpose: |
20
+ Verify that data validates against the corresponding JSON schema.
21
+ method: |
22
+ Validate the JSON data against the Basic-YPR JSON Schema 2019-9 definition
23
+ (<<basic_ypr_json_schema>>).
@@ -0,0 +1,21 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: JSON encoding of Basic-YPR SDU
4
+ identifier: /req/basic-ypr-encoding-json
5
+ description: |
6
+ Requirements for the JSON encoding of a Basic-YPR SDU.
7
+ implements:
8
+ - /req/basic-ypr
9
+
10
+ normative_statements:
11
+
12
+ - name: Specification as JSON schema
13
+ identifier: /req/basic-ypr-encoding-json/definition
14
+ statement: |
15
+ A JSON-encoded Basic-YPR GeoPose SHALL conform to the Basic-YPR
16
+ JSON-Schema 2019-9 definition (<<basic_ypr_json_schema>>).
17
+
18
+ guidance:
19
+ - |
20
+ This JSON encoding is extensible because the JSON-Schema
21
+ "additionalProperties" property is set to the default value of *true*.
@@ -0,0 +1,32 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: Basic-YPR logical model SDU
4
+ identifier: /req/basic-ypr
5
+ description: |
6
+ The Basic-YPR Target has a simple structure with no options. Position is
7
+ specified as a point in an LTP-ENU frame and rotation is specified by yaw,
8
+ pitch, and roll angles specified in decimal degrees.
9
+ dependencies:
10
+ - /req/global
11
+ - /req/tangent-point
12
+ normative_statements:
13
+
14
+ - name: Expression of outer frame
15
+ identifier: /req/basic-ypr/position
16
+ statement: |
17
+ The `Basic_YPR.position` attribute shall represent the outer frame,
18
+ specified by an implicit WGS-84 CRS and an implicit EPSG 4461-CS (LTP-ENU)
19
+ coordinate system and explicit parameters to define the tangent point.
20
+
21
+ - name: Expression of inner frame
22
+ identifier: /req/basic-ypr/angles
23
+ statement: |
24
+ The `Basic_YPR.angles` attribute shall represent the inner frame,
25
+ which is a rotation-only transformation with Yaw, Pitch, and Roll (YPR)
26
+ angles, which expressed as three consecutive rotations of a
27
+ reference frame oriented East-North-Up (ENU)
28
+ coordinate system (where the coordinate axes East, North, and Up
29
+ correspond to the axes X, Y, Z) about the local (rotated) axes z, y, and
30
+ x, applied in that order, corresponding to the conventional Yaw, Pitch,
31
+ and Roll angles. The unit of measure SHALL be the degree and the angles
32
+ represented as signed real number values.
@@ -0,0 +1,50 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: Chain logical model SDU conformance
4
+ identifier: /conf/chain
5
+ target:
6
+ - /req/chain
7
+ classification: "Target Type: SDU"
8
+ description: To confirm that an implementation of the GeoPose Chain conforms to the Logical Model.
9
+ dependencies:
10
+ - /conf/global
11
+ - /conf/frame-spec
12
+ - /conf/time
13
+
14
+ tests:
15
+ - name: Verify expression of valid time as GeoPose_Instant
16
+ identifier: /conf/chain/valid-time
17
+ targets:
18
+ - /req/chain/valid-time
19
+ dependencies:
20
+ - /conf/time/instant
21
+ description: |
22
+ To confirm the correct properties of a GeoPose_Instant.
23
+ purpose: |
24
+ Confirm that the `Chain.validTime` attribute is represented by a
25
+ `GeoPose_Instant` object.
26
+ method: Inspection
27
+
28
+ - name: Verify specification of initial frame
29
+ identifier: /conf/chain/initial-frame
30
+ targets:
31
+ - /req/chain/initial-frame
32
+ description: |
33
+ To confirm that an implementation of an Chain SDU contains an initial
34
+ frame under `Chain.outerFrame`.
35
+ purpose: |
36
+ Verify that this requirement is satisfied.
37
+ method: Inspection
38
+
39
+ - name: Verify chain of frame specifications
40
+ identifier: /conf/chain/frame-chain
41
+ targets:
42
+ - /req/chain/frame-chain
43
+ description: |
44
+ To confirm that each index value in `Chain.frameChain` is a distinct
45
+ integer value between 0 and one less than the number of elements in the
46
+ frameChain property.
47
+ purpose: |
48
+ To confirm that an implementation of Chain Index conforms to the Logical Model.
49
+ method: Inspection
50
+
@@ -0,0 +1,24 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: JSON encoding of Chain SDU
4
+ identifier: /conf/chain-encoding-json
5
+ target:
6
+ - /req/chain-encoding-json
7
+ classification: "Target Type: JSON SDU"
8
+ description: |
9
+ Confirm that a JSON-encoded GeoPose Chain conforms to the
10
+ relevant elements of the Logical Model and a corresponding JSON-Schema
11
+ document.
12
+
13
+ tests:
14
+ - name: Verify conformance via JSON schema
15
+ identifier: /conf/chain-encoding-json/definition
16
+ targets:
17
+ - /req/chain-encoding-json/definition
18
+ description: |
19
+ To confirm that a GeoPose Chain in JSON validates against the JSON schema.
20
+ purpose: |
21
+ Verify that data validates against the corresponding JSON schema.
22
+ method: |
23
+ Validate the JSON data against the GeoPose Chain JSON-Schema 2019-9
24
+ definition (<<chain_json_schema>>).
@@ -0,0 +1,20 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: JSON encoding of Chain SDU
4
+ identifier: /req/chain-encoding-json
5
+ description: |
6
+ Requirements for the JSON encoding of a Chain SDU.
7
+ implements:
8
+ - /req/chain
9
+
10
+ normative_statements:
11
+
12
+ - name: Specification as JSON schema
13
+ identifier: /req/chain-encoding-json/definition
14
+ statement: |
15
+ A JSON-encoded GeoPose Chain SHALL conform to the GeoPose Chain
16
+ JSON-Schema 2019-9 definition (<<chain_json_schema>>).
17
+ guidance:
18
+ - |
19
+ This JSON encoding is extensible because the JSON-Schema
20
+ "additionalProperties" property is set to the default value of *true*.
@@ -0,0 +1,36 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: Chain logical model SDU
4
+ identifier: /req/chain
5
+ description: |
6
+ The Chain Target supports relationships between a linear sequence of pose
7
+ relationships. The first frame in the sequence must be an Outer Frame.
8
+
9
+ dependencies:
10
+ - /req/global
11
+ - /req/frame-spec
12
+ - /req/time
13
+
14
+ normative_statements:
15
+
16
+ - name: Expression of valid time as GeoPose_Instant
17
+ identifier: /req/chain/valid-time
18
+ dependencies:
19
+ - /req/time/instant
20
+ statement: |
21
+ The `Chain.validTime` attribute shall be represented by a
22
+ `GeoPose_Instant` object.
23
+
24
+ - name: Specification of initial frame
25
+ identifier: /req/chain/initial-frame
26
+ statement: |
27
+ The `Chain.outerFrame` attribute shall represent the first frame in the
28
+ sequence with the `ExplicitFrameSpec` object.
29
+
30
+ - name: Chain of frame specifications
31
+ identifier: /req/chain/frame-chain
32
+ statement: |
33
+ The `Chain.frameChain` attribute shall represent a list of explicit
34
+ frame specifications with an array of `ExplicitFrameSpec` objects.
35
+ Each index value shall be a distinct integer value between 0 and one less
36
+ than the number of elements in the frameChain property.