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,43 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: Frame specification requirements
4
+ identifier: /conf/frame-spec
5
+ target:
6
+ - /req/frame-spec
7
+ classification: "Target Type: SDU"
8
+ description: Conformance with frame specification requirements
9
+
10
+ tests:
11
+ - name: Verify frame specification authority uniquely specifies source of reference frame specification
12
+ identifier: /conf/frame-spec/authority
13
+ targets:
14
+ - /req/frame-spec/authority
15
+ description: |
16
+ To confirm the correct properties of a Frame Specification Authority.
17
+ purpose: |
18
+ To confirm that a FrameSpecification.authority attribute contains a string
19
+ uniquely specifying a source of reference frame specifications.
20
+ method: Inspection
21
+
22
+ - name: Frame specification ID uniquely defines frame within authority
23
+ identifier: /conf/frame-spec/id
24
+ targets:
25
+ - /req/frame-spec/id
26
+ description: |
27
+ To confirm the correct properties of a Frame Specification ID.
28
+ purpose: |
29
+ To confirm that a FrameSpecification.id attribute contains a string
30
+ uniquely specifying the identity of a reference frame specification as
31
+ defined by that authority.
32
+ method: Inspection
33
+
34
+ - name: Frame specification parameter contains all parameters needed
35
+ identifier: /conf/frame-spec/parameters
36
+ targets:
37
+ - /req/frame-spec/parameters
38
+ description: |
39
+ To confirm the correct properties of Frame Specification Parameters.
40
+ purpose: |
41
+ To confirm that a FrameSpecification.parameters attribute contains contain
42
+ all parameters needed for the corresponding authority and ID.
43
+ method: Inspection
@@ -0,0 +1,27 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: Frame specification requirements
4
+ identifier: /req/frame-spec
5
+ description: |
6
+ Common frame specification requirements for SDUs that include frames.
7
+ normative_statements:
8
+
9
+ - name: Frame specification authority uniquely specifies source of reference frame specification
10
+ identifier: /req/frame-spec/authority
11
+ statement: |
12
+ The FrameSpecification.authority attribute SHALL contain a string uniquely
13
+ specifying a source of reference frame specifications.
14
+
15
+ - name: Frame specification ID uniquely defines frame within authority
16
+ identifier: /req/frame-spec/id
17
+ statement: |
18
+ The FrameSpecification.ID attribute SHALL be a string uniquely defining a
19
+ frame within the authority.
20
+
21
+ - name: Frame specification parameter contains all parameters needed
22
+ identifier: /req/frame-spec/parameters
23
+ statement: |
24
+ The FrameSpecification.parameter attribute SHALL contain all parameters
25
+ needed for the corresponding authority and ID.
26
+ guidance:
27
+ - The definition of these parameters is outside the scope of GeoPose.
@@ -0,0 +1,38 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: Global SDU conformance
4
+ identifier: /conf/global
5
+ target:
6
+ - /req/global
7
+ classification: "Target Type: SDU"
8
+ description: Conformance with global SDU requirements
9
+
10
+ tests:
11
+ - name: Verify individual standardization targets are independent
12
+ identifier: /conf/global/target-independence
13
+ targets:
14
+ - /req/global/target-independence
15
+ purpose: Verify standardization targets are independent.
16
+ method: Inspection
17
+
18
+ - name: Verify implementation conforms to the logical model
19
+ identifier: /conf/global/logical-model
20
+ targets:
21
+ - /req/global/logical-model
22
+ description: |
23
+ Implementations of concrete data conforming to this standard SHALL
24
+ conform to all dependent or inherited classes, attributes, and
25
+ associations, multiplicities, and data types in the Logical Model.
26
+ purpose: Verify implementation conforms to the logical model.
27
+ method: Inspection
28
+
29
+ - name: Verify SDU conforms to the "Structural Data Unit - SDU" stereotype
30
+ identifier: /conf/global/sdu
31
+ targets:
32
+ - /req/global/sdu
33
+ description: |
34
+ Implementations using encoded SDUs SHALL conform to the logical
35
+ description of the Logical Model elements with the "Structural Data Unit
36
+ - SDU" stereotype.
37
+ purpose: Verify SDU conforms to the "Structural Data Unit - SDU" stereotype.
38
+ method: Inspection
@@ -0,0 +1,23 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: Global SDU requirements
4
+ identifier: /req/global
5
+ description: Global requirements apply to all SDUs and Standardization Targets.
6
+ normative_statements:
7
+ - name: Individual standardization targets are independent
8
+ identifier: /req/global/target-independence
9
+ statement: |
10
+ There shall be no dependency between or among the individual
11
+ Standardization Targets.
12
+ - name: Implementation conforms to the logical model
13
+ identifier: /req/global/logical-model
14
+ statement: |
15
+ Implementations of concrete data conforming to this standard SHALL
16
+ conform to all dependent or inherited classes, attributes, and
17
+ associations, multiplicities, and data types in the Logical Model.
18
+ - name: SDU conforms to the "Structural Data Unit - SDU" stereotype
19
+ identifier: /req/global/sdu
20
+ statement: |
21
+ Implementations using encoded SDUs SHALL conform to the logical
22
+ description of the Logical Model elements with the
23
+ "Structural Data Unit - SDU" stereotype.
@@ -0,0 +1,48 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: Graph logical model SDU conformance
4
+ identifier: /conf/graph
5
+ target:
6
+ - /req/graph
7
+ classification: "Target Type: SDU"
8
+ description: To confirm that an implementation of the GeoPose Graph conforms to the Logical Model.
9
+ dependencies:
10
+ - /conf/global
11
+ - /conf/frame-spec
12
+
13
+ tests:
14
+ - name: Verify expression of valid time as GeoPose_Instant
15
+ identifier: /conf/graph/valid-time
16
+ targets:
17
+ - /req/graph/valid-time
18
+ dependencies:
19
+ - /conf/time/instant
20
+ description: |
21
+ To confirm the correct properties of a GeoPose_Instant.
22
+ purpose: |
23
+ Confirm that the `Graph.validTime` attribute is represented by a
24
+ `GeoPose_Instant` object.
25
+ method: Inspection
26
+
27
+ - name: Verify list of frame specifications
28
+ identifier: /conf/graph/frame-list
29
+ targets:
30
+ - /req/graph/frame-list
31
+ description: |
32
+ To confirm that an implementation of an Graph SDU contains a list of
33
+ explicit frame specifications as `ExplicitFrameSpec` objects.
34
+ purpose: |
35
+ Verify that this requirement is satisfied.
36
+ method: Inspection
37
+
38
+ - name: Verify transforms for frame specification list
39
+ identifier: /conf/graph/transform-list
40
+ targets:
41
+ - /req/graph/transform-list
42
+ description: |
43
+ To confirm that each index value in a FrameListTransformPair is a distinct
44
+ integer value between 0 and one less than the number of elements in the
45
+ frameList property.
46
+ purpose: |
47
+ To confirm that an implementation of Graph Index conforms to the Logical Model.
48
+ method: Inspection
@@ -0,0 +1,24 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: JSON encoding of Graph SDU
4
+ identifier: /conf/graph-encoding-json
5
+ target:
6
+ - /req/graph-encoding-json
7
+ classification: "Target Type: JSON SDU"
8
+ description: |
9
+ Confirm that a JSON-encoded GeoPose Graph 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/graph-encoding-json/definition
16
+ targets:
17
+ - /req/graph-encoding-json/definition
18
+ description: |
19
+ To confirm that a GeoPose Graph 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 Graph JSON-Schema 2019-9
24
+ definition (<<graph_json_schema>>).
@@ -0,0 +1,20 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: JSON encoding of Graph SDU
4
+ identifier: /req/graph-encoding-json
5
+ description: |
6
+ Requirements for the JSON encoding of a Graph SDU.
7
+ implements:
8
+ - /req/graph
9
+
10
+ normative_statements:
11
+
12
+ - name: Specification as JSON schema
13
+ identifier: /req/graph-encoding-json/definition
14
+ statement: |
15
+ A JSON-encoded GeoPose Graph SHALL conform to the GeoPose Chain
16
+ JSON-Schema 2019-9 definition (<<graph_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,38 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: Graph logical model SDU
4
+ identifier: /req/graph
5
+ description: |
6
+ The Graph Target supports a network of object relative poses. The graph is a
7
+ directed acyclic graph, each node must either be an Extrinsic Frame or
8
+ reachable from an Extrinsic Frame.
9
+
10
+ dependencies:
11
+ - /req/global
12
+ - /req/frame-spec
13
+ - /req/time
14
+
15
+ normative_statements:
16
+
17
+ - name: Expression of valid time as GeoPose_Instant
18
+ identifier: /req/graph/valid-time
19
+ dependencies:
20
+ - /req/time/instant
21
+ statement: |
22
+ The `Graph.validTime` attribute shall be represented by a
23
+ `GeoPose_Instant` object.
24
+
25
+ - name: List of frame specifications
26
+ identifier: /req/graph/frame-list
27
+ statement: |
28
+ The `Graph.frameList` attribute shall represent a list of explicit
29
+ frame specifications with an array of `ExplicitFrameSpec` objects.
30
+
31
+ - name: Transforms for frame specification list
32
+ identifier: /req/graph/transform-list
33
+ statement: |
34
+ The `Graph.transformList` attribute shall have a value of type
35
+ `FrameTransformIndexPair`.
36
+ Each index value in a `FrameListTransformPair` SHALL be a distinct integer
37
+ value between 0 and one less than the number of elements in the
38
+ `frameList` property.
@@ -0,0 +1,58 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: Irregular_Series logical model SDU conformance
4
+ identifier: /conf/series-irregular
5
+ target:
6
+ - /req/series-irregular
7
+ classification: "Target Type: SDU"
8
+ description: To confirm that components of a Irregular_Series conform to the Logical Model.
9
+ dependencies:
10
+ - /conf/global
11
+ - /conf/frame-spec
12
+ - /conf/time
13
+
14
+ tests:
15
+
16
+ - name: Verify expression of inner frames and time series
17
+ identifier: /conf/series-irregular/inner-frame-and-time
18
+ targets:
19
+ - /req/series-irregular/inner-frame-and-time
20
+ dependencies:
21
+ - /conf/time/instant
22
+ description: |
23
+ Confirm that the `Irregular_Series.innerFrameAndTime` attribute is
24
+ implemented as an array of `FrameAndTimeElement` objects, each of which is
25
+ a pair of `ExplicitFrameSpec` and `GeoPoseInstant` objects.
26
+ purpose: |
27
+ To confirm that the `innerFrameAndTime` attribute values are implemented
28
+ in accordance with the Logical Model.
29
+
30
+ - name: Verify expression of outer frame
31
+ identifier: /conf/series-irregular/outer-frame
32
+ targets:
33
+ - /req/series-irregular/outer-frame
34
+ purpose: |
35
+ The `Irregular_Series.outerFrame` attribute shall represent the first
36
+ frame in the series expressed by the `innerFrameAndTime` attribute.
37
+
38
+ - name: Verify expression of series header
39
+ identifier: /conf/series-irregular/header
40
+ targets:
41
+ - /req/series-irregular/header
42
+ description: |
43
+ Verify that the `Irregular_Series.header` attribute is implemented as an
44
+ instance of SeriesHeader.
45
+ purpose: |
46
+ To confirm that the implementation of Series Header conforms to the
47
+ Logical Model.
48
+
49
+ - name: Verify expression of series trailer
50
+ identifier: /conf/series-irregular/trailer
51
+ targets:
52
+ - /req/series-irregular/trailer
53
+ description: |
54
+ Verify that the `Irregular_Series.trailer` attribute is implemented as an
55
+ instance of SeriesTrailer.
56
+ purpose: |
57
+ To confirm that the implementation of SeriesTrailer conforms to the
58
+ Logical Model.
@@ -0,0 +1,24 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: JSON encoding of Irregular Series SDU
4
+ identifier: /conf/series-irregular-encoding-json
5
+ target:
6
+ - /req/series-irregular-encoding-json
7
+ classification: "Target Type: JSON SDU"
8
+ description: |
9
+ Confirm that a JSON-encoded GeoPose Irregular Series 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/series-irregular-encoding-json/definition
16
+ targets:
17
+ - /req/series-irregular-encoding-json/definition
18
+ description: |
19
+ To confirm that a GeoPose Irregular Series 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 Irregular Series JSON-Schema 2019-9
24
+ definition (<<irregular_series_json_schema>>).
@@ -0,0 +1,20 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: JSON encoding of Irregular Series SDU
4
+ identifier: /req/series-irregular-encoding-json
5
+ description: |
6
+ Requirements for the JSON encoding of a Irregular Series SDU.
7
+ implements:
8
+ - /req/series-irregular
9
+
10
+ normative_statements:
11
+
12
+ - name: Specification as JSON schema
13
+ identifier: /req/series-irregular-encoding-json/definition
14
+ statement: |
15
+ A JSON-encoded GeoPose Irregular Series SHALL conform to the GeoPose Chain
16
+ JSON-Schema 2019-9 definition (<<irregular_series_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,41 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: Irregular_Series logical model SDU
4
+ identifier: /req/series-irregular
5
+ description: |
6
+ The Irregular_Series Target represents the time evolution of a single
7
+ GeoPose, with a variable time duration between successive inner frames.
8
+
9
+ dependencies:
10
+ - /req/global
11
+ - /req/frame-spec
12
+ - /req/time
13
+
14
+ normative_statements:
15
+
16
+ - name: Expression of inner frames and time series
17
+ identifier: /req/series-irregular/inner-frame-and-time
18
+ dependencies:
19
+ - /req/time/instant
20
+ statement: |
21
+ The `Irregular_Series.innerFrameAndTime` attribute SHALL be implemented as
22
+ an array of `FrameAndTimeElement` objects, each of which is a pair of
23
+ `ExplicitFrameSpec` and `GeoPoseInstant` objects.
24
+
25
+ - name: Expression of outer frame
26
+ identifier: /req/series-irregular/outer-frame
27
+ statement: |
28
+ The `Irregular_Series.outerFrame` attribute shall represent the first
29
+ frame in the series expressed by the `innerFrameAndTime` attribute.
30
+
31
+ - name: Expression of series header
32
+ identifier: /req/series-irregular/header
33
+ statement: |
34
+ The `Irregular_Series.header` attribute shall be implemented as an instance
35
+ of SeriesHeader.
36
+
37
+ - name: Expression of series trailer
38
+ identifier: /req/series-irregular/trailer
39
+ statement: |
40
+ The `Irregular_Series.trailer` attribute shall be implemented as an instance
41
+ of SeriesTrailer.
@@ -0,0 +1,63 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: Regular_Series logical model SDU conformance
4
+ identifier: /conf/series-regular
5
+ target:
6
+ - /req/series-regular
7
+ classification: "Target Type: SDU"
8
+ description: To confirm that components of a Regular Series conform to the Logical Model.
9
+ dependencies:
10
+ - /conf/global
11
+ - /conf/frame-spec
12
+ - /conf/time
13
+
14
+ tests:
15
+
16
+ - name: Verify expression of duration as GeoPose_Duration
17
+ identifier: /conf/series-regular/duration
18
+ targets:
19
+ - /req/series-regular/duration
20
+ dependencies:
21
+ - /conf/time/duration
22
+ description: |
23
+ To confirm that the `Regular_Series.interPoseDuration` attribute is
24
+ represented by an instance of the `GeoPose_Duration` object.
25
+ purpose: To confirm the correct properties of a GeoPose Duration.
26
+
27
+ - name: Verify expression of outer frame
28
+ identifier: /conf/series-regular/outer-frame
29
+ targets:
30
+ - /req/series-regular/outer-frame
31
+ purpose: |
32
+ The `Regular_Series.outerFrame` attribute shall represent the first frame
33
+ in the series with the `ExplicitFrameSpec` object.
34
+
35
+ - name: Verify expression of inner frames
36
+ identifier: /conf/series-regular/inner-frame-series
37
+ targets:
38
+ - /req/series-regular/inner-frame-series
39
+ purpose: |
40
+ The `Regular_Series.innerFrameSeries` attribute shall represent the
41
+ succession of inner frames as an array of `ExplicitFrameSpec` objects.
42
+
43
+ - name: Verify expression of series header
44
+ identifier: /conf/series-regular/header
45
+ targets:
46
+ - /req/series-regular/header
47
+ description: |
48
+ Verify that the `Regular_Series.header` attribute is implemented as an
49
+ instance of SeriesHeader.
50
+ purpose: |
51
+ To confirm that the implementation of Series Header conforms to the
52
+ Logical Model.
53
+
54
+ - name: Verify expression of series trailer
55
+ identifier: /conf/series-regular/trailer
56
+ targets:
57
+ - /req/series-regular/trailer
58
+ description: |
59
+ Verify that the `Regular_Series.trailer` attribute is implemented as an
60
+ instance of SeriesTrailer.
61
+ purpose: |
62
+ To confirm that the implementation of SeriesTrailer conforms to the
63
+ Logical Model.
@@ -0,0 +1,24 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: JSON encoding of Regular Series SDU
4
+ identifier: /conf/series-regular-encoding-json
5
+ target:
6
+ - /req/series-regular-encoding-json
7
+ classification: "Target Type: JSON SDU"
8
+ description: |
9
+ Confirm that a JSON-encoded GeoPose Regular Series 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/series-regular-encoding-json/definition
16
+ targets:
17
+ - /req/series-regular-encoding-json/definition
18
+ description: |
19
+ To confirm that a GeoPose Regular Series 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 Regular Series JSON-Schema 2019-9
24
+ definition (<<regular_series_json_schema>>).
@@ -0,0 +1,20 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: JSON encoding of Regular Series SDU
4
+ identifier: /req/series-regular-encoding-json
5
+ description: |
6
+ Requirements for the JSON encoding of a Regular Series SDU.
7
+ implements:
8
+ - /req/series-regular
9
+
10
+ normative_statements:
11
+
12
+ - name: Specification as JSON schema
13
+ identifier: /req/series-regular-encoding-json/definition
14
+ statement: |
15
+ A JSON-encoded GeoPose Regular Series SHALL conform to the GeoPose Chain
16
+ JSON-Schema 2019-9 definition (<<regular_series_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,46 @@
1
+ ---
2
+ normative_statements_classes:
3
+ - name: Regular_Series logical model SDU
4
+ identifier: /req/series-regular
5
+ description: |
6
+ The Regular_Series Target represents the time evolution of a single GeoPose,
7
+ with a constant time duration between successive inner frames.
8
+
9
+ dependencies:
10
+ - /req/global
11
+ - /req/frame-spec
12
+ - /req/time
13
+
14
+ normative_statements:
15
+
16
+ - name: Expression of duration as GeoPose_Duration
17
+ identifier: /req/series-regular/duration
18
+ dependencies:
19
+ - /req/time/duration
20
+ statement: |
21
+ The `Regular_Series.interPoseDuration` attribute shall be represented by
22
+ an instance of the `GeoPose_Duration` object.
23
+
24
+ - name: Expression of outer frame
25
+ identifier: /req/series-regular/outer-frame
26
+ statement: |
27
+ The `Regular_Series.outerFrame` attribute shall represent the first frame
28
+ in the series with the `ExplicitFrameSpec` object.
29
+
30
+ - name: Expression of inner frames
31
+ identifier: /req/series-regular/inner-frame-series
32
+ statement: |
33
+ The `Regular_Series.innerFrameSeries` attribute shall represent the
34
+ succession of inner frames as an array of `ExplicitFrameSpec` objects.
35
+
36
+ - name: Expression of series header
37
+ identifier: /req/series-regular/header
38
+ statement: |
39
+ The `Regular_Series.header` attribute shall be implemented as an instance
40
+ of SeriesHeader.
41
+
42
+ - name: Expression of series trailer
43
+ identifier: /req/series-regular/trailer
44
+ statement: |
45
+ The `Regular_Series.trailer` attribute shall be implemented as an instance
46
+ of SeriesTrailer.
@@ -0,0 +1,49 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: StreamHeader and StreamElement logical model SDUs conformance
4
+ identifier: /conf/stream
5
+ target:
6
+ - /req/stream
7
+ classification: "Target Type: SDU"
8
+ description: To confirm that an implementation of the GeoPose Stream SDUs conforms to the Logical Model.
9
+ dependencies:
10
+ - /conf/global
11
+ - /conf/frame-spec
12
+
13
+ tests:
14
+
15
+ - name: Verify outer frame in StreamHeader
16
+ identifier: /conf/stream/header-initial-frame
17
+ targets:
18
+ - /req/stream/header-initial-frame
19
+ description: |
20
+ To confirm the correct specification of the `StreamHeader.outerFrame`.
21
+ purpose: |
22
+ To confirm the initial frame is specified as an instance of the
23
+ `ExplicitFrameSpec` object.
24
+ method: Inspection
25
+
26
+ - name: Verify transition model in StreamHeader
27
+ identifier: /conf/stream/header-transition-model
28
+ targets:
29
+ - /req/stream/header-transition-model
30
+ description: |
31
+ To confirm the correct specification of the `StreamHeader.transitionModel`.
32
+ purpose: |
33
+ To confirm the `transitionModel` is specified as an instance of the
34
+ `TransitionModel` enumeration.
35
+ method: Inspection
36
+
37
+ - name: Verify stream elements in StreamElement
38
+ identifier: /conf/stream/element
39
+ targets:
40
+ - /req/stream/element
41
+ dependencies:
42
+ - /conf/time/instant
43
+ description: |
44
+ To confirm the correct specification of the `StreamElement`.
45
+ purpose: |
46
+ To confirm the StreamElement is implemented as an array of
47
+ `FrameAndTimeElement` objects, each of which is a pair of
48
+ `ExplicitFrameSpec` and `GeoPoseInstant` objects.
49
+ method: Inspection
@@ -0,0 +1,48 @@
1
+ ---
2
+ conformance_classes:
3
+ - name: JSON encoding of Stream SDUs
4
+ identifier: /conf/stream-encoding-json
5
+ target:
6
+ - /req/stream-encoding-json
7
+ classification: "Target Type: JSON SDU"
8
+ description: |
9
+ Confirm that a JSON-encoded GeoPose Stream conforms to the
10
+ relevant elements of the Logical Model and a corresponding JSON-Schema
11
+ document.
12
+
13
+ tests:
14
+ - name: Verify Stream Element conformance to JSON schema
15
+ identifier: /conf/stream-encoding-json/element
16
+ targets:
17
+ - /req/stream-encoding-json/element
18
+ description: |
19
+ To confirm that a GeoPose Stream Element in JSON validates against the JSON schema.
20
+ purpose: |
21
+ Verify JSON data conforms to the JSON schema.
22
+ method: |
23
+ Validate the JSON data against the GeoPose Stream Element
24
+ JSON-Schema 2019-9 definition (<<streamelement_json_schema>>).
25
+
26
+ - name: Verify Stream Header conformance to JSON schema
27
+ identifier: /conf/stream-encoding-json/header
28
+ targets:
29
+ - /req/stream-encoding-json/header
30
+ description: |
31
+ To confirm that a GeoPose Stream Header in JSON validates against the JSON schema.
32
+ purpose: |
33
+ Verify JSON data conforms to the JSON schema.
34
+ method: |
35
+ Validate the JSON data against the GeoPose Stream Header
36
+ JSON-Schema 2019-9 definition (<<streamheader_json_schema>>).
37
+
38
+ - name: Verify Stream Record conformance to JSON schema
39
+ identifier: /conf/stream-encoding-json/record
40
+ targets:
41
+ - /req/stream-encoding-json/record
42
+ description: |
43
+ To confirm that a GeoPose Stream Record in JSON validates against the JSON schema.
44
+ purpose: |
45
+ Verify JSON data conforms to the JSON schema.
46
+ method: |
47
+ Validate the JSON data against the GeoPose Stream Record
48
+ JSON-Schema 2019-9 definition (<<streamrecord_json_schema>>).