ogc-gml 1.1.0 → 1.2.0

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 (305) hide show
  1. checksums.yaml +4 -4
  2. data/CLAUDE.md +139 -0
  3. data/Gemfile +0 -1
  4. data/README.adoc +4 -4
  5. data/lib/ogc/gml/abstract_continuous_coverage.rb +0 -2
  6. data/lib/ogc/gml/abstract_coordinate_operation.rb +0 -4
  7. data/lib/ogc/gml/abstract_coordinate_system.rb +0 -7
  8. data/lib/ogc/gml/abstract_coverage.rb +0 -5
  9. data/lib/ogc/gml/abstract_crs.rb +0 -6
  10. data/lib/ogc/gml/abstract_curve.rb +0 -1
  11. data/lib/ogc/gml/abstract_datum.rb +0 -6
  12. data/lib/ogc/gml/abstract_feature.rb +0 -8
  13. data/lib/ogc/gml/abstract_feature_collection.rb +0 -5
  14. data/lib/ogc/gml/abstract_general_conversion.rb +0 -7
  15. data/lib/ogc/gml/abstract_general_derived_crs.rb +0 -2
  16. data/lib/ogc/gml/abstract_general_operation_parameter.rb +0 -1
  17. data/lib/ogc/gml/abstract_general_operation_parameter_property.rb +0 -8
  18. data/lib/ogc/gml/abstract_general_parameter_value_property.rb +0 -2
  19. data/lib/ogc/gml/abstract_general_transformation.rb +0 -1
  20. data/lib/ogc/gml/abstract_geometric_aggregate.rb +0 -1
  21. data/lib/ogc/gml/abstract_geometric_primitive.rb +0 -6
  22. data/lib/ogc/gml/abstract_geometry.rb +0 -1
  23. data/lib/ogc/gml/abstract_gml.rb +0 -6
  24. data/lib/ogc/gml/abstract_meta_data.rb +0 -1
  25. data/lib/ogc/gml/abstract_ring_property.rb +0 -2
  26. data/lib/ogc/gml/abstract_solid.rb +0 -1
  27. data/lib/ogc/gml/abstract_surface.rb +0 -1
  28. data/lib/ogc/gml/abstract_time_complex.rb +0 -6
  29. data/lib/ogc/gml/abstract_time_geometric_primitive.rb +0 -7
  30. data/lib/ogc/gml/abstract_time_object.rb +0 -6
  31. data/lib/ogc/gml/abstract_time_primitive.rb +0 -4
  32. data/lib/ogc/gml/abstract_time_slice.rb +0 -8
  33. data/lib/ogc/gml/abstract_time_topology_primitive.rb +0 -7
  34. data/lib/ogc/gml/abstract_topo_primitive.rb +0 -6
  35. data/lib/ogc/gml/abstract_topology.rb +0 -5
  36. data/lib/ogc/gml/affine_cs.rb +0 -1
  37. data/lib/ogc/gml/affine_cs_property.rb +0 -2
  38. data/lib/ogc/gml/affine_placement.rb +0 -3
  39. data/lib/ogc/gml/angle.rb +0 -3
  40. data/lib/ogc/gml/arc.rb +0 -1
  41. data/lib/ogc/gml/arc_by_bulge.rb +0 -2
  42. data/lib/ogc/gml/arc_by_center_point.rb +0 -5
  43. data/lib/ogc/gml/arc_string.rb +0 -6
  44. data/lib/ogc/gml/arc_string_by_bulge.rb +0 -2
  45. data/lib/ogc/gml/array.rb +0 -7
  46. data/lib/ogc/gml/b_spline.rb +0 -1
  47. data/lib/ogc/gml/bag.rb +0 -8
  48. data/lib/ogc/gml/base_unit.rb +0 -7
  49. data/lib/ogc/gml/bezier.rb +0 -6
  50. data/lib/ogc/gml/bounding_shape.rb +0 -2
  51. data/lib/ogc/gml/cartesian_cs.rb +0 -1
  52. data/lib/ogc/gml/cartesian_cs_property.rb +0 -2
  53. data/lib/ogc/gml/category.rb +0 -2
  54. data/lib/ogc/gml/category_extent.rb +0 -2
  55. data/lib/ogc/gml/circle.rb +0 -1
  56. data/lib/ogc/gml/circle_by_center_point.rb +0 -7
  57. data/lib/ogc/gml/clothoid.rb +0 -3
  58. data/lib/ogc/gml/code_with_authority.rb +0 -2
  59. data/lib/ogc/gml/composite_curve.rb +0 -2
  60. data/lib/ogc/gml/composite_solid.rb +0 -2
  61. data/lib/ogc/gml/composite_surface.rb +0 -2
  62. data/lib/ogc/gml/composite_value.rb +0 -8
  63. data/lib/ogc/gml/compound_crs.rb +0 -2
  64. data/lib/ogc/gml/compound_crs_property.rb +0 -2
  65. data/lib/ogc/gml/concatenated_operation.rb +0 -8
  66. data/lib/ogc/gml/concatenated_operation_property.rb +0 -2
  67. data/lib/ogc/gml/cone.rb +0 -1
  68. data/lib/ogc/gml/control_point.rb +0 -4
  69. data/lib/ogc/gml/conventional_unit.rb +0 -9
  70. data/lib/ogc/gml/conversion.rb +0 -3
  71. data/lib/ogc/gml/conversion_property.rb +0 -2
  72. data/lib/ogc/gml/conversion_to_preferred_unit.rb +0 -2
  73. data/lib/ogc/gml/coordinate_operation_accuracy.rb +0 -2
  74. data/lib/ogc/gml/coordinate_operation_property.rb +0 -2
  75. data/lib/ogc/gml/coordinate_system_axis.rb +0 -6
  76. data/lib/ogc/gml/coordinate_system_axis_property.rb +0 -2
  77. data/lib/ogc/gml/coordinate_system_property.rb +0 -2
  78. data/lib/ogc/gml/coverage_function.rb +0 -4
  79. data/lib/ogc/gml/crs_property.rb +0 -2
  80. data/lib/ogc/gml/cubic_spline.rb +0 -7
  81. data/lib/ogc/gml/curve.rb +0 -2
  82. data/lib/ogc/gml/curve_array_property.rb +0 -3
  83. data/lib/ogc/gml/curve_property.rb +0 -5
  84. data/lib/ogc/gml/curve_segment_array_property.rb +0 -6
  85. data/lib/ogc/gml/cylinder.rb +0 -1
  86. data/lib/ogc/gml/cylindrical_cs.rb +0 -1
  87. data/lib/ogc/gml/cylindrical_cs_property.rb +0 -2
  88. data/lib/ogc/gml/data_block.rb +0 -3
  89. data/lib/ogc/gml/datum_property.rb +0 -2
  90. data/lib/ogc/gml/definition.rb +0 -6
  91. data/lib/ogc/gml/definition_proxy.rb +0 -6
  92. data/lib/ogc/gml/derived_crs.rb +0 -4
  93. data/lib/ogc/gml/derived_crs_property.rb +0 -2
  94. data/lib/ogc/gml/derived_unit.rb +0 -8
  95. data/lib/ogc/gml/dictionary.rb +0 -10
  96. data/lib/ogc/gml/dictionary_entry.rb +0 -3
  97. data/lib/ogc/gml/directed_edge_property.rb +0 -2
  98. data/lib/ogc/gml/directed_face_property.rb +0 -2
  99. data/lib/ogc/gml/directed_node_property.rb +0 -2
  100. data/lib/ogc/gml/directed_observation.rb +0 -13
  101. data/lib/ogc/gml/directed_observation_at_distance.rb +0 -14
  102. data/lib/ogc/gml/directed_topo_solid_property.rb +0 -2
  103. data/lib/ogc/gml/direction_description.rb +0 -3
  104. data/lib/ogc/gml/direction_property.rb +0 -5
  105. data/lib/ogc/gml/direction_vector.rb +0 -3
  106. data/lib/ogc/gml/discrete_coverage.rb +0 -1
  107. data/lib/ogc/gml/dms_angle.rb +0 -2
  108. data/lib/ogc/gml/domain_of_validity.rb +0 -2
  109. data/lib/ogc/gml/domain_set.rb +0 -3
  110. data/lib/ogc/gml/dynamic_feature.rb +0 -11
  111. data/lib/ogc/gml/dynamic_feature_collection.rb +0 -12
  112. data/lib/ogc/gml/dynamic_feature_member.rb +0 -2
  113. data/lib/ogc/gml/edge.rb +0 -10
  114. data/lib/ogc/gml/ellipsoid.rb +0 -8
  115. data/lib/ogc/gml/ellipsoid_property.rb +0 -2
  116. data/lib/ogc/gml/ellipsoidal_cs.rb +0 -1
  117. data/lib/ogc/gml/ellipsoidal_cs_property.rb +0 -2
  118. data/lib/ogc/gml/engineering_crs.rb +0 -10
  119. data/lib/ogc/gml/engineering_crs_property.rb +0 -2
  120. data/lib/ogc/gml/engineering_datum.rb +0 -1
  121. data/lib/ogc/gml/engineering_datum_property.rb +0 -2
  122. data/lib/ogc/gml/envelope.rb +0 -3
  123. data/lib/ogc/gml/envelope_with_time_period.rb +0 -4
  124. data/lib/ogc/gml/face.rb +0 -10
  125. data/lib/ogc/gml/face_or_topo_solid_property.rb +0 -6
  126. data/lib/ogc/gml/feature_array_property.rb +0 -2
  127. data/lib/ogc/gml/feature_collection.rb +0 -1
  128. data/lib/ogc/gml/feature_property.rb +0 -2
  129. data/lib/ogc/gml/file.rb +0 -3
  130. data/lib/ogc/gml/formula_citation.rb +0 -2
  131. data/lib/ogc/gml/general_conversion_property.rb +0 -2
  132. data/lib/ogc/gml/general_transformation_property.rb +0 -2
  133. data/lib/ogc/gml/generic_meta_data.rb +0 -1
  134. data/lib/ogc/gml/geocentric_crs.rb +0 -4
  135. data/lib/ogc/gml/geocentric_crs_property.rb +0 -2
  136. data/lib/ogc/gml/geodesic.rb +0 -5
  137. data/lib/ogc/gml/geodesic_string.rb +0 -5
  138. data/lib/ogc/gml/geodetic_crs.rb +0 -6
  139. data/lib/ogc/gml/geodetic_crs_property.rb +0 -2
  140. data/lib/ogc/gml/geodetic_datum.rb +0 -3
  141. data/lib/ogc/gml/geodetic_datum_property.rb +0 -2
  142. data/lib/ogc/gml/geographic_crs.rb +0 -3
  143. data/lib/ogc/gml/geographic_crs_property.rb +0 -2
  144. data/lib/ogc/gml/geometric_complex.rb +0 -2
  145. data/lib/ogc/gml/geometric_primitive_property.rb +0 -2
  146. data/lib/ogc/gml/geometry_array_property.rb +0 -2
  147. data/lib/ogc/gml/geometry_property.rb +0 -2
  148. data/lib/ogc/gml/grid.rb +0 -7
  149. data/lib/ogc/gml/grid_function.rb +0 -2
  150. data/lib/ogc/gml/grid_limits.rb +0 -2
  151. data/lib/ogc/gml/history_property.rb +0 -2
  152. data/lib/ogc/gml/image_crs.rb +0 -5
  153. data/lib/ogc/gml/image_crs_property.rb +0 -2
  154. data/lib/ogc/gml/image_datum.rb +0 -1
  155. data/lib/ogc/gml/image_datum_property.rb +0 -2
  156. data/lib/ogc/gml/indirect_entry.rb +0 -2
  157. data/lib/ogc/gml/knot_property.rb +0 -2
  158. data/lib/ogc/gml/length.rb +0 -3
  159. data/lib/ogc/gml/line_string.rb +0 -6
  160. data/lib/ogc/gml/line_string_segment.rb +0 -6
  161. data/lib/ogc/gml/line_string_segment_array_property.rb +0 -2
  162. data/lib/ogc/gml/linear_cs.rb +0 -1
  163. data/lib/ogc/gml/linear_cs_property.rb +0 -2
  164. data/lib/ogc/gml/linear_ring.rb +0 -5
  165. data/lib/ogc/gml/location_property.rb +0 -4
  166. data/lib/ogc/gml/mapping_rule.rb +0 -2
  167. data/lib/ogc/gml/meta_data_property.rb +0 -2
  168. data/lib/ogc/gml/moving_object_status.rb +0 -12
  169. data/lib/ogc/gml/multi_curve.rb +0 -2
  170. data/lib/ogc/gml/multi_curve_property.rb +0 -2
  171. data/lib/ogc/gml/multi_geometry.rb +0 -3
  172. data/lib/ogc/gml/multi_geometry_property.rb +0 -2
  173. data/lib/ogc/gml/multi_point.rb +0 -3
  174. data/lib/ogc/gml/multi_point_property.rb +0 -2
  175. data/lib/ogc/gml/multi_solid.rb +0 -3
  176. data/lib/ogc/gml/multi_solid_property.rb +0 -2
  177. data/lib/ogc/gml/multi_surface.rb +0 -3
  178. data/lib/ogc/gml/multi_surface_property.rb +0 -2
  179. data/lib/ogc/gml/namespace.rb +0 -2
  180. data/lib/ogc/gml/namespaces/gml_31_namespace.rb +0 -1
  181. data/lib/ogc/gml/namespaces/gml_32_namespace.rb +0 -1
  182. data/lib/ogc/gml/node.rb +0 -12
  183. data/lib/ogc/gml/node_or_edge_property.rb +0 -6
  184. data/lib/ogc/gml/node_property.rb +0 -2
  185. data/lib/ogc/gml/oblique_cartesian_cs.rb +0 -1
  186. data/lib/ogc/gml/oblique_cartesian_cs_property.rb +0 -2
  187. data/lib/ogc/gml/observation.rb +0 -12
  188. data/lib/ogc/gml/offset_curve.rb +0 -5
  189. data/lib/ogc/gml/operation_method.rb +0 -8
  190. data/lib/ogc/gml/operation_method_property.rb +0 -2
  191. data/lib/ogc/gml/operation_parameter.rb +0 -1
  192. data/lib/ogc/gml/operation_parameter_group.rb +0 -2
  193. data/lib/ogc/gml/operation_parameter_group_property.rb +0 -2
  194. data/lib/ogc/gml/operation_parameter_property.rb +0 -2
  195. data/lib/ogc/gml/operation_property.rb +0 -2
  196. data/lib/ogc/gml/orientable_curve.rb +0 -10
  197. data/lib/ogc/gml/orientable_surface.rb +0 -7
  198. data/lib/ogc/gml/parameter_value.rb +0 -5
  199. data/lib/ogc/gml/parameter_value_group.rb +0 -3
  200. data/lib/ogc/gml/pass_through_operation.rb +0 -9
  201. data/lib/ogc/gml/pass_through_operation_property.rb +0 -2
  202. data/lib/ogc/gml/point.rb +0 -2
  203. data/lib/ogc/gml/point_array_property.rb +0 -2
  204. data/lib/ogc/gml/point_property.rb +0 -2
  205. data/lib/ogc/gml/polar_cs.rb +0 -1
  206. data/lib/ogc/gml/polar_cs_property.rb +0 -2
  207. data/lib/ogc/gml/polygon.rb +0 -3
  208. data/lib/ogc/gml/polygon_patch.rb +0 -2
  209. data/lib/ogc/gml/prime_meridian.rb +0 -7
  210. data/lib/ogc/gml/prime_meridian_property.rb +0 -2
  211. data/lib/ogc/gml/priority_location_property.rb +0 -4
  212. data/lib/ogc/gml/procedure_property.rb +0 -2
  213. data/lib/ogc/gml/projected_crs.rb +0 -4
  214. data/lib/ogc/gml/projected_crs_property.rb +0 -2
  215. data/lib/ogc/gml/quantity.rb +0 -2
  216. data/lib/ogc/gml/quantity_extent.rb +0 -2
  217. data/lib/ogc/gml/range_set.rb +0 -4
  218. data/lib/ogc/gml/rectangle.rb +0 -2
  219. data/lib/ogc/gml/rectified_grid.rb +0 -9
  220. data/lib/ogc/gml/ref_location.rb +0 -2
  221. data/lib/ogc/gml/related_time.rb +0 -2
  222. data/lib/ogc/gml/ring.rb +0 -1
  223. data/lib/ogc/gml/second_defining_parameter1.rb +0 -2
  224. data/lib/ogc/gml/second_defining_parameter2.rb +0 -3
  225. data/lib/ogc/gml/shell.rb +0 -4
  226. data/lib/ogc/gml/shell_property.rb +0 -4
  227. data/lib/ogc/gml/single_crs_property.rb +0 -2
  228. data/lib/ogc/gml/single_operation_property.rb +0 -2
  229. data/lib/ogc/gml/solid.rb +0 -2
  230. data/lib/ogc/gml/solid_array_property.rb +0 -2
  231. data/lib/ogc/gml/solid_property.rb +0 -2
  232. data/lib/ogc/gml/sphere.rb +0 -1
  233. data/lib/ogc/gml/spherical_cs.rb +0 -1
  234. data/lib/ogc/gml/spherical_cs_property.rb +0 -2
  235. data/lib/ogc/gml/surface.rb +0 -2
  236. data/lib/ogc/gml/surface_array_property.rb +0 -2
  237. data/lib/ogc/gml/surface_patch_array_property.rb +0 -3
  238. data/lib/ogc/gml/surface_property.rb +0 -3
  239. data/lib/ogc/gml/target_property.rb +0 -3
  240. data/lib/ogc/gml/temporal_crs.rb +0 -4
  241. data/lib/ogc/gml/temporal_crs_property.rb +0 -2
  242. data/lib/ogc/gml/temporal_cs.rb +0 -1
  243. data/lib/ogc/gml/temporal_cs_property.rb +0 -2
  244. data/lib/ogc/gml/temporal_datum.rb +0 -7
  245. data/lib/ogc/gml/temporal_datum_property.rb +0 -2
  246. data/lib/ogc/gml/time_calendar.rb +0 -7
  247. data/lib/ogc/gml/time_calendar_era.rb +0 -8
  248. data/lib/ogc/gml/time_calendar_era_property.rb +0 -2
  249. data/lib/ogc/gml/time_calendar_property.rb +0 -2
  250. data/lib/ogc/gml/time_clock.rb +0 -8
  251. data/lib/ogc/gml/time_coordinate_system.rb +0 -9
  252. data/lib/ogc/gml/time_cs.rb +0 -1
  253. data/lib/ogc/gml/time_cs_property.rb +0 -2
  254. data/lib/ogc/gml/time_edge.rb +0 -9
  255. data/lib/ogc/gml/time_edge_property.rb +0 -2
  256. data/lib/ogc/gml/time_instant.rb +0 -2
  257. data/lib/ogc/gml/time_instant_property.rb +0 -2
  258. data/lib/ogc/gml/time_node.rb +0 -6
  259. data/lib/ogc/gml/time_node_property.rb +0 -2
  260. data/lib/ogc/gml/time_ordinal_era.rb +0 -9
  261. data/lib/ogc/gml/time_ordinal_era_property.rb +0 -2
  262. data/lib/ogc/gml/time_ordinal_reference_system.rb +0 -7
  263. data/lib/ogc/gml/time_period.rb +0 -4
  264. data/lib/ogc/gml/time_period_property.rb +0 -2
  265. data/lib/ogc/gml/time_primitive_property.rb +0 -2
  266. data/lib/ogc/gml/time_reference_system.rb +0 -6
  267. data/lib/ogc/gml/time_topology_complex.rb +0 -7
  268. data/lib/ogc/gml/time_topology_primitive_property.rb +0 -2
  269. data/lib/ogc/gml/tin.rb +0 -6
  270. data/lib/ogc/gml/topo_complex.rb +0 -12
  271. data/lib/ogc/gml/topo_complex_property.rb +0 -2
  272. data/lib/ogc/gml/topo_curve.rb +0 -7
  273. data/lib/ogc/gml/topo_curve_property.rb +0 -2
  274. data/lib/ogc/gml/topo_point.rb +0 -7
  275. data/lib/ogc/gml/topo_point_property.rb +0 -2
  276. data/lib/ogc/gml/topo_primitive_array_association.rb +0 -2
  277. data/lib/ogc/gml/topo_primitive_member.rb +0 -2
  278. data/lib/ogc/gml/topo_solid.rb +0 -12
  279. data/lib/ogc/gml/topo_solid_property.rb +0 -2
  280. data/lib/ogc/gml/topo_surface.rb +0 -7
  281. data/lib/ogc/gml/topo_surface_property.rb +0 -2
  282. data/lib/ogc/gml/topo_volume.rb +0 -7
  283. data/lib/ogc/gml/topo_volume_property.rb +0 -2
  284. data/lib/ogc/gml/transformation.rb +0 -10
  285. data/lib/ogc/gml/transformation_property.rb +0 -2
  286. data/lib/ogc/gml/triangle.rb +0 -2
  287. data/lib/ogc/gml/unit_definition.rb +0 -7
  288. data/lib/ogc/gml/user_defined_cs.rb +0 -1
  289. data/lib/ogc/gml/user_defined_cs_property.rb +0 -2
  290. data/lib/ogc/gml/value_array.rb +0 -8
  291. data/lib/ogc/gml/value_array_property.rb +0 -3
  292. data/lib/ogc/gml/value_property.rb +0 -3
  293. data/lib/ogc/gml/vector.rb +0 -2
  294. data/lib/ogc/gml/version.rb +1 -1
  295. data/lib/ogc/gml/vertical_crs.rb +0 -3
  296. data/lib/ogc/gml/vertical_crs_property.rb +0 -2
  297. data/lib/ogc/gml/vertical_cs.rb +0 -1
  298. data/lib/ogc/gml/vertical_cs_property.rb +0 -2
  299. data/lib/ogc/gml/vertical_datum.rb +0 -1
  300. data/lib/ogc/gml/vertical_datum_property.rb +0 -2
  301. data/lib/ogc/gml.rb +660 -327
  302. data/ogc-gml.gemspec +3 -1
  303. metadata +5 -6
  304. data/lib/ogc/gml/namespace_registry.rb +0 -56
  305. data/lib/ogc/gml/versioned_model.rb +0 -78
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85394869fbff7b7cac85c5d8ca435c1876b34dde2edb5936e1c05d88dc4fa36e
4
- data.tar.gz: 85a6bed6c6f6c0e9c78ab57b616eac56a4ea7fe5aba9fed0464da454041b2263
3
+ metadata.gz: b8f0d439b67f0cc07b0974172fcb075c253f1e245947dd524a2cb53920529aef
4
+ data.tar.gz: d2413f431befdf21e5e7aad79fdaceb68be0636b49034d36dff6adf3777aeb9c
5
5
  SHA512:
6
- metadata.gz: 893f2fcf43800b1049274ce83f2a73804768c82ccba372e831a940a1a592c3eb3033696af4b4ed1b0143587c00db7e68b0004df26ac42eac9e1f483e685b17a3
7
- data.tar.gz: 3e32002b943e8c4c09876f0ee94c9328670fca33385a5c5efcf3de5af4ff1a8c01e326fb9d2c449349f95f9ff32797c9b79000b01286ac55f46c4a0b30421b52
6
+ metadata.gz: c0f302d4a94cbce0011ac7bf7991879d24e8e37fe04c08002078de0e55f9ea19c1795f2edc02217bcff16fd287662c2e80c423f7753aeee2b7f72838f43c5cbd
7
+ data.tar.gz: 76fa53ef24147b5b69d68e27c336f577c19201b940a0cdbe187e3bddf170c9c5d2544c8dc4512018e6e82c2621d76eea0913d3468f360d000e5f6a00b3e0a491
data/CLAUDE.md ADDED
@@ -0,0 +1,139 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ This is a Ruby gem for parsing and generating OGC GML 3.2 (Geography Markup Language) data. It provides Ruby objects that map to GML schema elements, using the `lutaml-model` library for XML serialization/deserialization.
8
+
9
+ GML 3.1.1 documents are NOT parsed by these models (different namespace and schema). Multi-version support is planned on lutaml-model's register system (namespace-bound contexts per version, the plurimath/mml pattern); the i-UR 3.1.1 fixtures are skipped in specs until the gml_31 register mappings are generated.
10
+
11
+ ## Commands
12
+
13
+ ```bash
14
+ # Install dependencies (includes git submodule initialization)
15
+ git submodule update --init --recursive
16
+ bundle install
17
+
18
+ # Run all tests
19
+ bundle exec rake spec
20
+ # or
21
+ bundle exec rspec
22
+
23
+ # Run a single test file
24
+ bundle exec rspec spec/ogc/gml/point_spec.rb
25
+
26
+ # Run a specific test
27
+ bundle exec rspec spec/ogc/gml/point_spec.rb:18
28
+
29
+ # Run linter
30
+ bundle exec rubocop
31
+
32
+ # Run linter with auto-fix
33
+ bundle exec rubocop -A
34
+
35
+ # Run default task (tests + linting)
36
+ bundle exec rake
37
+
38
+ # Start interactive console
39
+ bin/console
40
+ ```
41
+
42
+ ## Architecture
43
+
44
+ The codebase follows a consistent pattern where each GML element is represented by a Ruby class:
45
+
46
+ - **Location**: All model classes are in `lib/ogc/gml/` with one class per file
47
+ - **Entry point**: `lib/ogc/gml.rb` registers `autoload` entries for every class; there is no `require_relative` graph (removing it fixed the circular-require warnings of issue #21). Never add `require_relative` for internal library code — add an autoload entry in `lib/ogc/gml.rb`.
48
+ - **One class per file, opened first**: mutually recursive schema types rely on the class keyword executing before any cyclic constant reference. Do not embed duplicate or stub class definitions in other files (the old cycle-dodge shells broke autoload resolution).
49
+ - **Namespace**: `lib/ogc/gml/namespace.rb` aliases `Namespace = Gml32Namespace`; the version namespace classes live in `lib/ogc/gml/namespaces/`
50
+
51
+ ### Class Hierarchy
52
+
53
+ Classes inherit from abstract base classes that mirror the GML schema:
54
+
55
+ ```
56
+ Lutaml::Model::Serializable
57
+ └── AbstractGml
58
+ ├── AbstractFeature (features, collections)
59
+ ├── AbstractGeometry ← AbstractGeometricPrimitive
60
+ │ ├── Point, LineString, Curve, Surface, Solid, etc.
61
+ │ └── Multi* aggregate types
62
+ ├── AbstractCRS (coordinate reference systems)
63
+ ├── AbstractDatum, AbstractCoordinateSystem
64
+ └── AbstractTime* (temporal types)
65
+ ```
66
+
67
+ ### XML Mapping Pattern
68
+
69
+ Each class defines its XML structure using the `xml` block:
70
+
71
+ ```ruby
72
+ class Point < AbstractGeometry
73
+ attribute :pos, DirectPosition
74
+ attribute :coordinates, Coordinates
75
+
76
+ xml do
77
+ element "Point"
78
+ namespace Namespace # References the Gml::Namespace constant
79
+
80
+ # gml:id is a namespace-qualified global attribute
81
+ map_attribute "id", to: :id, form: :qualified
82
+ # Local attributes are unqualified in the GML schema
83
+ map_attribute "srsName", to: :srs_name
84
+
85
+ map_element "pos", to: :pos
86
+ map_element "coordinates", to: :coordinates
87
+ end
88
+ end
89
+ ```
90
+
91
+ ### Namespace Configuration
92
+
93
+ The namespace classes (`lib/ogc/gml/namespaces/gml_32_namespace.rb`) configure the GML namespace:
94
+
95
+ ```ruby
96
+ class Gml32Namespace < Lutaml::Xml::Namespace
97
+ uri "http://www.opengis.net/gml/3.2"
98
+ prefix_default "gml"
99
+ element_form_default :qualified
100
+ # NO attribute_form_default here: GML declares attributeFormDefault="unqualified".
101
+ # Qualifying the schema-wide default serialized invalid gml:srsName (issue #22).
102
+ # Only per-rule form: :qualified on gml:id attributes.
103
+ end
104
+ ```
105
+
106
+ ## Testing
107
+
108
+ Tests use RSpec with the `canon` gem for XML comparison. The main pattern is round-trip testing:
109
+
110
+ ```ruby
111
+ it "round-trips Point-epsg3045.xml" do
112
+ input = file_contents("Point-epsg3045.xml")
113
+ output = described_class.from_xml(input).to_xml(
114
+ prefix: true, # Include namespace prefixes
115
+ pretty: true, # Format with indentation
116
+ declaration: true # Include XML declaration
117
+ )
118
+ expect(SpecHelpers.remove_xml_comments(output))
119
+ .to be_xml_equivalent_to(SpecHelpers.remove_xml_comments(input))
120
+ end
121
+ ```
122
+
123
+ - `SpecHelpers.remove_xml_comments` (in `spec/spec_helper.rb`) is the shared comment-stripper.
124
+ - Strict attribute-form assertions live in `spec/ogc/gml/point_spec.rb` (gml:id prefixed; srsName/srsDimension never prefixed) and `spec/ogc/gml/gml3*_namespace_spec.rb`. Canon compares attributes loosely (lutaml/canon#155), so prefix regressions are only caught by these strict specs.
125
+ - RSpec semantics: `pending "reason"` inside an example body STILL EXECUTES the body; use `skip "reason"` when the body must not run (this once turned "pending" 3.1.1 round-trips into a multi-minute suite freeze).
126
+
127
+ Test fixtures are located in:
128
+ - `spec/fixtures/ets-gml32/` - GML test suite from OGC ETS for GML 3.2 (git submodule)
129
+ - `spec/fixtures/geospatial_jp_iur_3.1/` - Japanese i-UR codelist data (GML 3.1.1; round-trips skipped pending gml_31 register support)
130
+
131
+ ## Dependencies
132
+
133
+ - **lutaml-model**: XML serialization framework (`~> 0.8.20` — first release with source-namespace-preserving serialization, which round-trip fidelity relies on)
134
+ - **nokogiri**: XML parsing
135
+ - **canon**: XML comparison for tests (dev dependency in Gemfile, not gemspec)
136
+
137
+ ## Known upstream issues
138
+
139
+ - lutaml-model#754: lenient parsing of out-of-namespace documents silently drops `gml:description` content; resolution is strict expanded-name parsing with register-based multi-version support, never local-name fallbacks.
data/Gemfile CHANGED
@@ -6,7 +6,6 @@ source "https://rubygems.org"
6
6
  gemspec
7
7
 
8
8
  gem "canon"
9
- gem "lutaml-model", github: "lutaml/lutaml-model", branch: "main"
10
9
  gem "rake"
11
10
  gem "rspec"
12
11
  gem "rubocop"
data/README.adoc CHANGED
@@ -46,10 +46,10 @@ For example:
46
46
  gml_data = File.read('spec/fixtures/geospatial_jp_iur_3.1/Bridge_class.xml')
47
47
  gml = Ogc::Gml::Dictionary.from_xml(gml_data)
48
48
 
49
- # Access the loaded GML Dictionary
50
- gml_dictionary = gml.dictionary
51
- gml_dictionary.features.each do |feature|
52
- puts feature.name
49
+ # Access the loaded GML Dictionary entries
50
+ gml.dictionary_entry.each do |entry|
51
+ definition = entry.definition
52
+ puts "#{definition.name.first&.content}: #{definition.description}"
53
53
  end
54
54
  ----
55
55
 
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "coverage_function"
5
- require_relative "abstract_coverage"
6
4
 
7
5
  module Ogc
8
6
  module Gml
@@ -2,10 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "coordinate_operation_accuracy"
6
- require_relative "crs_property"
7
- require_relative "abstract_topology"
8
-
9
5
  module Ogc
10
6
  module Gml
11
7
  class AbstractCoordinateOperation < AbstractTopology
@@ -2,13 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "coordinate_system_axis_property"
8
- require_relative "meta_data_property"
9
- require_relative "reference"
10
- require_relative "identifier"
11
-
12
5
  module Ogc
13
6
  module Gml
14
7
  class AbstractCoordinateSystem < Lutaml::Model::Serializable
@@ -1,11 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "bounding_shape"
5
- require_relative "domain_set"
6
- require_relative "location_property"
7
- require_relative "range_set"
8
- require_relative "abstract_topology"
9
4
 
10
5
  module Ogc
11
6
  module Gml
@@ -2,12 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "meta_data_property"
8
- require_relative "reference"
9
- require_relative "abstract_topology"
10
-
11
5
  module Ogc
12
6
  module Gml
13
7
  class AbstractCRS < AbstractTopology
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "abstract_geometric_primitive"
5
4
 
6
5
  module Ogc
7
6
  module Gml
@@ -2,12 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "meta_data_property"
8
- require_relative "reference"
9
- require_relative "abstract_topology"
10
-
11
5
  module Ogc
12
6
  module Gml
13
7
  class AbstractDatum < AbstractTopology
@@ -2,14 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "bounding_shape"
6
- require_relative "code"
7
- require_relative "code_with_authority"
8
- require_relative "location_property"
9
- require_relative "meta_data_property"
10
- require_relative "reference"
11
- require_relative "abstract_topology"
12
-
13
5
  module Ogc
14
6
  module Gml
15
7
  class AbstractFeature < AbstractTopology
@@ -1,11 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "bounding_shape"
5
- require_relative "feature_array_property"
6
- require_relative "feature_property"
7
- require_relative "location_property"
8
- require_relative "abstract_topology"
9
4
 
10
5
  module Ogc
11
6
  module Gml
@@ -2,13 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "coordinate_operation_accuracy"
8
- require_relative "meta_data_property"
9
- require_relative "reference"
10
- require_relative "abstract_topology"
11
-
12
5
  module Ogc
13
6
  module Gml
14
7
  class AbstractGeneralConversion < AbstractTopology
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "general_conversion_property"
5
- require_relative "abstract_crs"
6
4
 
7
5
  module Ogc
8
6
  module Gml
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "abstract_topology"
5
4
 
6
5
  module Ogc
7
6
  module Gml
@@ -2,16 +2,8 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "abstract_general_operation_parameter"
6
-
7
5
  module Ogc
8
6
  module Gml
9
- class RemoteSchema < Lutaml::Model::Type::String
10
- xml do
11
- namespace Namespace
12
- end
13
- end
14
-
15
7
  class AbstractGeneralOperationParameterProperty < Lutaml::Model::Serializable
16
8
  attribute :nil_reason, :string
17
9
  attribute :remote_schema, RemoteSchema
@@ -2,8 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "abstract_general_parameter_value"
6
-
7
5
  module Ogc
8
6
  module Gml
9
7
  class AbstractGeneralParameterValueProperty < Lutaml::Model::Serializable
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "abstract_coordinate_operation"
5
4
 
6
5
  module Ogc
7
6
  module Gml
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "abstract_geometric_primitive"
5
4
 
6
5
  module Ogc
7
6
  module Gml
@@ -2,12 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "meta_data_property"
8
- require_relative "reference"
9
- require_relative "identifier"
10
-
11
5
  module Ogc
12
6
  module Gml
13
7
  class AbstractGeometricPrimitive < Lutaml::Model::Serializable
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "abstract_geometric_primitive"
5
4
 
6
5
  module Ogc
7
6
  module Gml
@@ -2,12 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "meta_data_property"
8
- require_relative "reference"
9
- require_relative "abstract_topology"
10
-
11
5
  module Ogc
12
6
  module Gml
13
7
  class AbstractGML < AbstractTopology
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "identifier"
5
4
 
6
5
  module Ogc
7
6
  module Gml
@@ -2,8 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "abstract_ring"
6
-
7
5
  module Ogc
8
6
  module Gml
9
7
  class AbstractRingProperty < Lutaml::Model::Serializable
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "abstract_geometric_primitive"
5
4
 
6
5
  module Ogc
7
6
  module Gml
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "abstract_geometric_primitive"
5
4
 
6
5
  module Ogc
7
6
  module Gml
@@ -2,12 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "meta_data_property"
8
- require_relative "reference"
9
- require_relative "abstract_topology"
10
-
11
5
  module Ogc
12
6
  module Gml
13
7
  class AbstractTimeComplex < AbstractTopology
@@ -2,13 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "meta_data_property"
8
- require_relative "reference"
9
- require_relative "related_time"
10
- require_relative "identifier"
11
-
12
5
  module Ogc
13
6
  module Gml
14
7
  class AbstractTimeGeometricPrimitive < Lutaml::Model::Serializable
@@ -2,12 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "meta_data_property"
8
- require_relative "reference"
9
- require_relative "abstract_topology"
10
-
11
5
  module Ogc
12
6
  module Gml
13
7
  class AbstractTimeObject < AbstractTopology
@@ -1,13 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- # require_relative "related_time"
5
4
 
6
5
  module Ogc
7
6
  module Gml
8
- class RelatedTime < Lutaml::Model::Serializable
9
- end
10
-
11
7
  class AbstractTimePrimitive < AbstractTopology
12
8
  attribute :related_time, RelatedTime, collection: true
13
9
 
@@ -2,14 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "meta_data_property"
8
- require_relative "reference"
9
- require_relative "string_or_ref"
10
- require_relative "time_primitive_property"
11
- require_relative "abstract_topology"
12
-
13
5
  module Ogc
14
6
  module Gml
15
7
  class AbstractTimeSlice < AbstractTopology
@@ -2,13 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "meta_data_property"
8
- require_relative "reference"
9
- require_relative "related_time"
10
- require_relative "abstract_topology"
11
-
12
5
  module Ogc
13
6
  module Gml
14
7
  class AbstractTimeTopologyPrimitive < AbstractTopology
@@ -2,12 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "code"
6
- require_relative "code_with_authority"
7
- require_relative "meta_data_property"
8
- require_relative "reference"
9
- require_relative "abstract_topology"
10
-
11
5
  module Ogc
12
6
  module Gml
13
7
  class AbstractTopoPrimitive < AbstractTopology
@@ -1,11 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "code"
5
- require_relative "code_with_authority"
6
- require_relative "meta_data_property"
7
- require_relative "reference"
8
- require_relative "identifier"
9
4
 
10
5
  module Ogc
11
6
  module Gml
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "abstract_coordinate_system"
5
4
 
6
5
  module Ogc
7
6
  module Gml
@@ -2,8 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "affine_cs"
6
-
7
5
  module Ogc
8
6
  module Gml
9
7
  class AffineCSProperty < Lutaml::Model::Serializable
@@ -2,9 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "direct_position"
6
- require_relative "vector"
7
-
8
5
  module Ogc
9
6
  module Gml
10
7
  class AffinePlacement < Lutaml::Model::Serializable
data/lib/ogc/gml/angle.rb CHANGED
@@ -2,9 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "measure"
6
- require_relative "unit_of_measure"
7
-
8
5
  module Ogc
9
6
  module Gml
10
7
  class Angle < UnitOfMeasure
data/lib/ogc/gml/arc.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "arc_string"
5
4
 
6
5
  module Ogc
7
6
  module Gml
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "vector"
5
- require_relative "arc"
6
4
 
7
5
  module Ogc
8
6
  module Gml
@@ -2,11 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "angle"
6
- require_relative "direct_position"
7
- require_relative "length"
8
- require_relative "arc"
9
-
10
5
  module Ogc
11
6
  module Gml
12
7
  class ArcByCenterPoint < Arc
@@ -2,12 +2,6 @@
2
2
 
3
3
  require "lutaml/model"
4
4
 
5
- require_relative "coordinates"
6
- require_relative "direct_position_list"
7
- require_relative "direct_position"
8
- require_relative "point_property"
9
- require_relative "abstract_curve_segment"
10
-
11
5
  module Ogc
12
6
  module Gml
13
7
  class ArcString < AbstractCurveSegment
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require_relative "vector"
5
- require_relative "arc_string"
6
4
 
7
5
  module Ogc
8
6
  module Gml