modspec 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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 +67 -57
@@ -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.