s3dgraphy 1.6.0.dev28__tar.gz → 1.6.0.dev29__tar.gz

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 (504) hide show
  1. {s3dgraphy-1.6.0.dev28/src/s3dgraphy.egg-info → s3dgraphy-1.6.0.dev29}/PKG-INFO +1 -1
  2. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/pyproject.toml +1 -1
  3. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/datamodel_translations.json +42 -0
  4. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/em.ttl +51 -3
  5. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/em_visual_rules.json +239 -1
  6. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/node_registry.generated.json +1 -1
  7. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/s3Dgraphy_node_datamodel.json +15 -5
  8. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/__init__.py +1 -1
  9. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/api.py +200 -17
  10. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/dtc/ingest.py +102 -24
  11. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/graphml_exporter.py +1 -1
  12. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/rdf_exporter.py +42 -0
  13. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/import_graphml.py +2 -2
  14. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/mapped_xlsx_importer.py +35 -4
  15. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/rdf_importer.py +53 -2
  16. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/xlsx_importer.py +6 -2
  17. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/mappings/emdb/generic_specialfind_mapping.json +2 -2
  18. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/mappings/emdb/site_properties_mapping.json +2 -2
  19. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/mappings/emdb/usm_mapping.json +2 -2
  20. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/mappings/generic/excel_to_graphml_mapping.json +2 -2
  21. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/mappings/pyarchinit/pyarchinit_us_mapping.json +2 -2
  22. s3dgraphy-1.6.0.dev29/src/s3dgraphy/mappings/source_list/em_sourcelist_it.json +47 -0
  23. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/mappings/source_list/source_list_mapping.json +2 -2
  24. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/mappings/template_emdb_mapping.json +2 -2
  25. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/mappings/template_pyarchinit_mapping.json +2 -2
  26. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/geo_position_node.py +8 -3
  27. {s3dgraphy-1.6.0.dev28/src/s3dgraphy/sync → s3dgraphy-1.6.0.dev29/src/s3dgraphy}/rapporti.py +3 -3
  28. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/resources/files.py +68 -0
  29. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/stamp/absorb.py +34 -1
  30. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/stamp/emit.py +64 -4
  31. s3dgraphy-1.6.0.dev29/src/s3dgraphy/sync/rapporti.py +15 -0
  32. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29/src/s3dgraphy.egg-info}/PKG-INFO +1 -1
  33. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy.egg-info/SOURCES.txt +9 -0
  34. s3dgraphy-1.6.0.dev29/tests/test_dev29_em_sourcelist.py +99 -0
  35. s3dgraphy-1.6.0.dev29/tests/test_dev29_file_set_stamp.py +124 -0
  36. s3dgraphy-1.6.0.dev29/tests/test_dev29_graphml_without_a_database.py +63 -0
  37. s3dgraphy-1.6.0.dev29/tests/test_dev29_image_set_texturing.py +50 -0
  38. s3dgraphy-1.6.0.dev29/tests/test_dev29_not_georeferenced.py +90 -0
  39. s3dgraphy-1.6.0.dev29/tests/test_dev29_one_act_n_outputs.py +116 -0
  40. s3dgraphy-1.6.0.dev29/tests/test_dev29_ttl_round_trip.py +117 -0
  41. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_extracted_from_unit.py +3 -2
  42. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_release.py +58 -2
  43. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_resource_file_node.py +2 -2
  44. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/LICENSE +0 -0
  45. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/MANIFEST.in +0 -0
  46. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/README.md +0 -0
  47. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/setup.cfg +0 -0
  48. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/acquisition_descriptor.schema.json +0 -0
  49. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/acquisition_mappings/ercolano.json +0 -0
  50. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/acquisition_mappings/fs.json +0 -0
  51. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/acquisition_mappings/uri.json +0 -0
  52. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/em_document_types.json +0 -0
  53. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/em_extractor_types.json +0 -0
  54. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/em_palette_icons.json +0 -0
  55. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/em_qualia_types.json +0 -0
  56. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/em_qualia_types_additions.json +0 -0
  57. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/hdto_extension.ttl +0 -0
  58. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/new_qualia_template.json +0 -0
  59. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/outdated_s3dgraphy.ttl +0 -0
  60. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/outdated_s3dgraphy_nomapping.ttl +0 -0
  61. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json +0 -0
  62. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json.v155.bak +0 -0
  63. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/ActivityNodeGroup.svg +0 -0
  64. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.png +0 -0
  65. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.svg +0 -0
  66. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/EpochNode.svg +0 -0
  67. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/ParadataNodeGroup.svg +0 -0
  68. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/RSF.png +0 -0
  69. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/RSF.svg +0 -0
  70. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/SE.svg +0 -0
  71. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/SE_old.png +0 -0
  72. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/SE_old.svg +0 -0
  73. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/SF.png +0 -0
  74. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/SF.svg +0 -0
  75. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/TSU.png +0 -0
  76. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/US.png +0 -0
  77. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/US.svg +0 -0
  78. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/USD.png +0 -0
  79. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/USD.svg +0 -0
  80. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/USVn.png +0 -0
  81. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/USVn.svg +0 -0
  82. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/USVs.png +0 -0
  83. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/USVs.svg +0 -0
  84. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/UTR.svg +0 -0
  85. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/VSF.png +0 -0
  86. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/VSF.svg +0 -0
  87. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/author.png +0 -0
  88. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/author.svg +0 -0
  89. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/author_ai.png +0 -0
  90. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/author_ai.svg +0 -0
  91. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/combiner.png +0 -0
  92. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/combiner.svg +0 -0
  93. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/continuity.png +0 -0
  94. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/continuity.svg +0 -0
  95. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/document.png +0 -0
  96. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/document.svg +0 -0
  97. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/00_transformation.svg +0 -0
  98. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/01_topographicnetwork.svg +0 -0
  99. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/02_pointcloud.svg +0 -0
  100. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/03_mesh.svg +0 -0
  101. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/04_points.svg +0 -0
  102. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/05_lines.svg +0 -0
  103. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/06_polygons.svg +0 -0
  104. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/07_DEM.svg +0 -0
  105. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/08_ortophoto.svg +0 -0
  106. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/09_photos.svg +0 -0
  107. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/10_laserscanner.svg +0 -0
  108. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device.svg +0 -0
  109. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_computer.svg +0 -0
  110. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_drone.svg +0 -0
  111. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_gnss.svg +0 -0
  112. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_optical.svg +0 -0
  113. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_scanner.svg +0 -0
  114. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_sensor.svg +0 -0
  115. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_station.svg +0 -0
  116. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/12_gnss_survey.svg +0 -0
  117. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/13_field_drawing.svg +0 -0
  118. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/14_recording_sheet.svg +0 -0
  119. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/15_decimation.svg +0 -0
  120. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/16_georeferencing.svg +0 -0
  121. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/17_format_conversion.svg +0 -0
  122. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/18_classification.svg +0 -0
  123. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/dtc/19_vectorization.svg +0 -0
  124. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/embargo.png +0 -0
  125. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/embargo.svg +0 -0
  126. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/extractor.png +0 -0
  127. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/extractor.svg +0 -0
  128. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/gcp_set.svg +0 -0
  129. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/generic_node.svg +0 -0
  130. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/geo_position.svg +0 -0
  131. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/graph.svg +0 -0
  132. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/license.png +0 -0
  133. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/license.svg +0 -0
  134. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/link.svg +0 -0
  135. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/narrative.png +0 -0
  136. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/narrative.svg +0 -0
  137. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/play.svg +0 -0
  138. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/property.png +0 -0
  139. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/property.svg +0 -0
  140. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/registration_transform.svg +0 -0
  141. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/representation_model.svg +0 -0
  142. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/representation_model_doc.svg +0 -0
  143. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/representation_model_sf.svg +0 -0
  144. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/resource_file.svg +0 -0
  145. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/semantic_shape.svg +0 -0
  146. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/serSU.png +0 -0
  147. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/serSU.svg +0 -0
  148. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/serUSD.png +0 -0
  149. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/serUSV.png +0 -0
  150. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/serUSVn.svg +0 -0
  151. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/2D/serUSVs.svg +0 -0
  152. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/RSF.glb +0 -0
  153. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/SF.glb +0 -0
  154. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/TSU.glb +0 -0
  155. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/US.glb +0 -0
  156. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/USD.glb +0 -0
  157. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/USVn.glb +0 -0
  158. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/USVs.glb +0 -0
  159. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/VSF.glb +0 -0
  160. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/combiner.glb +0 -0
  161. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/continuity.glb +0 -0
  162. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/document.glb +0 -0
  163. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/extractor.glb +0 -0
  164. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/property.glb +0 -0
  165. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/serSU.glb +0 -0
  166. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/serUSD.glb +0 -0
  167. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/JSON_config/src/3D/serUSV.glb +0 -0
  168. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/acquisition/__init__.py +0 -0
  169. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/acquisition/acquire.py +0 -0
  170. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/acquisition/descriptor.py +0 -0
  171. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/acquisition/mapping.py +0 -0
  172. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/ai_validation.py +0 -0
  173. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/annotation/__init__.py +0 -0
  174. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/annotation/migrate_reading.py +0 -0
  175. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/annotation/paradata.py +0 -0
  176. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/annotation/reading.py +0 -0
  177. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/authorities/__init__.py +0 -0
  178. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/authorities/resolver.py +0 -0
  179. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/authorities/snapshots/LICENSE +0 -0
  180. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/authorities/snapshots/chronontology.jsonld +0 -0
  181. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/authorities/snapshots/getty_aat.jsonld +0 -0
  182. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/authorities/snapshots/getty_tgn.jsonld +0 -0
  183. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/authorities/snapshots/periodo.jsonld +0 -0
  184. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/authorities/snapshots/provenance.json +0 -0
  185. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/classification.py +0 -0
  186. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/container.py +0 -0
  187. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/contract/__init__.py +0 -0
  188. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/contract/connector.py +0 -0
  189. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/contract/consumer.py +0 -0
  190. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/contract/core.py +0 -0
  191. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/contract/reference.py +0 -0
  192. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/crdt.py +0 -0
  193. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/data/StratiMiner_Extraction_Prompt.md +0 -0
  194. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/datamodel.py +0 -0
  195. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/diagnostics.py +0 -0
  196. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/dissemination.py +0 -0
  197. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/dtc/__init__.py +0 -0
  198. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/dtc/capture.py +0 -0
  199. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/dtc/corpus.py +0 -0
  200. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/dtc/devices.py +0 -0
  201. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/dtc/neighbourhood.py +0 -0
  202. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/dtc/residency.py +0 -0
  203. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/edges/__init__.py +0 -0
  204. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/edges/connection_resolver.py +0 -0
  205. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/edges/connections_loader.py +0 -0
  206. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/edges/edge.py +0 -0
  207. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/editorial.py +0 -0
  208. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/__init__.py +0 -0
  209. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/docx_exporter.py +0 -0
  210. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/emjson_exporter.py +0 -0
  211. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/__init__.py +0 -0
  212. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/canvas_generator.py +0 -0
  213. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/edge_generator.py +0 -0
  214. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/epoch_generator.py +0 -0
  215. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/graphml_patcher.py +0 -0
  216. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/group_node_generator.py +0 -0
  217. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/node_generator.py +0 -0
  218. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/node_registry.py +0 -0
  219. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/palette_resources.py +0 -0
  220. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/paradata_generator.py +0 -0
  221. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/paradata_image_generator.py +0 -0
  222. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/paradata_node_generators.py +0 -0
  223. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/table_node_generator.py +0 -0
  224. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/graphml/utils.py +0 -0
  225. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/html_exporter.py +0 -0
  226. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/ipynb_exporter.py +0 -0
  227. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/json_exporter.py +0 -0
  228. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/latex_exporter.py +0 -0
  229. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/exporter/unified_xlsx_exporter.py +0 -0
  230. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/geometry/__init__.py +0 -0
  231. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/geometry/aton.py +0 -0
  232. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/geometry/gltf.py +0 -0
  233. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/geometry/migrate.py +0 -0
  234. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/geometry/proxy.py +0 -0
  235. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/geometry/reading_glb.py +0 -0
  236. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/geometry/store_backed.py +0 -0
  237. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/geometry/wkt.py +0 -0
  238. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/graph.py +0 -0
  239. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/iiif.py +0 -0
  240. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/__init__.py +0 -0
  241. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/base_importer.py +0 -0
  242. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/csv_importer.py +0 -0
  243. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/emjson_importer.py +0 -0
  244. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/fmpxml_importer.py +0 -0
  245. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/pyarchinit_importer.py +0 -0
  246. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/qualia_importer.py +0 -0
  247. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/sheet_header.py +0 -0
  248. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/source_text.py +0 -0
  249. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/unified_xlsx_importer.py +0 -0
  250. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/importer/xml_importer.py +0 -0
  251. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/indices.py +0 -0
  252. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/language.py +0 -0
  253. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/mappings/__init__.py +0 -0
  254. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/mappings/authoring.py +0 -0
  255. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/mappings/registry.py +0 -0
  256. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/merge/__init__.py +0 -0
  257. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/merge/graph_merger.py +0 -0
  258. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/multigraph/__init__.py +0 -0
  259. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/multigraph/multigraph.py +0 -0
  260. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/narrative/__init__.py +0 -0
  261. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/narrative/bake.py +0 -0
  262. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/narrative/generation.py +0 -0
  263. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/narrative/query.py +0 -0
  264. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/narrative/registry.py +0 -0
  265. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/narrative/site_story.py +0 -0
  266. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/__init__.py +0 -0
  267. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/annotation_region_node.py +0 -0
  268. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/author_node.py +0 -0
  269. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/base_node.py +0 -0
  270. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/combiner_node.py +0 -0
  271. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/document_node.py +0 -0
  272. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/dtc_acquisition_node.py +0 -0
  273. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/dtc_device_node.py +0 -0
  274. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/dtc_node.py +0 -0
  275. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/dtc_process_node.py +0 -0
  276. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/embargo_node.py +0 -0
  277. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/epoch_node.py +0 -0
  278. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/extractor_node.py +0 -0
  279. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/georeferencing_node.py +0 -0
  280. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/graph_node.py +0 -0
  281. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/group_node.py +0 -0
  282. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/hdt_node.py +0 -0
  283. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/heritage_entity_node.py +0 -0
  284. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/license_node.py +0 -0
  285. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/narrative_node.py +0 -0
  286. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/paradata_node.py +0 -0
  287. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/project_node.py +0 -0
  288. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/property_node.py +0 -0
  289. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/representation_node.py +0 -0
  290. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/resource_file_node.py +0 -0
  291. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/resource_node.py +0 -0
  292. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/semantic_shape_node.py +0 -0
  293. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/stratigraphic_node.py +0 -0
  294. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/study_node.py +0 -0
  295. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/nodes/translation_node.py +0 -0
  296. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/ownership.py +0 -0
  297. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/photogrammetry/__init__.py +0 -0
  298. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/photogrammetry/delta.py +0 -0
  299. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/publication.py +0 -0
  300. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/resolvers/__init__.py +0 -0
  301. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/resolvers/builtin_rules.py +0 -0
  302. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/resolvers/property_resolver.py +0 -0
  303. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/resources/__init__.py +0 -0
  304. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/resources/addresses.py +0 -0
  305. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/resources/fs_backend.py +0 -0
  306. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/resources/minio_backend.py +0 -0
  307. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/resources/resolver.py +0 -0
  308. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/resources/tiles3tz.py +0 -0
  309. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/rights.py +0 -0
  310. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/shelf/__init__.py +0 -0
  311. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/shelf/core.py +0 -0
  312. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/stamp/__init__.py +0 -0
  313. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/stamp/hints.py +0 -0
  314. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/stamp/identity.py +0 -0
  315. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/study.py +0 -0
  316. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/__init__.py +0 -0
  317. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/_db_handle.py +0 -0
  318. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/_legacy_paradata_svgs.py +0 -0
  319. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/_workspace.py +0 -0
  320. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/conflict_resolver.py +0 -0
  321. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/edge_registry.py +0 -0
  322. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/graph_ingestor.py +0 -0
  323. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/graph_projector.py +0 -0
  324. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/graphml_writer.py +0 -0
  325. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/group_projector.py +0 -0
  326. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/group_store.py +0 -0
  327. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/ingest_result.py +0 -0
  328. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/paradata_store.py +0 -0
  329. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/pyarchinit_pg_importer.py +0 -0
  330. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/uuid7.py +0 -0
  331. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/vocab_provider_core.py +0 -0
  332. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/vocab_types.py +0 -0
  333. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/yed_classifier.py +0 -0
  334. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/yed_detector.py +0 -0
  335. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/yed_group_walker.py +0 -0
  336. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/yed_import_pipeline.py +0 -0
  337. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/yed_rapporti_policy.py +0 -0
  338. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/sync/yed_table_parser.py +0 -0
  339. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/templates/em_data_template.xlsx +0 -0
  340. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/templates/em_palette_template.graphml +0 -0
  341. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/temporal/__init__.py +0 -0
  342. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/temporal/inference_engine.py +0 -0
  343. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/tools/__init__.py +0 -0
  344. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/tools/consumer_drift.py +0 -0
  345. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/tools/datamodel_i18n.py +0 -0
  346. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/tools/deliverable_report.py +0 -0
  347. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/tools/glyph_sheet.py +0 -0
  348. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/tools/glyphs_from_svg.py +0 -0
  349. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/tools/sync_node_datamodel.py +0 -0
  350. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/tools/wheel_drift.py +0 -0
  351. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/transforms/__init__.py +0 -0
  352. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/transforms/aux_tracking.py +0 -0
  353. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/transforms/compact.py +0 -0
  354. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/transforms/materialize_continuity.py +0 -0
  355. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/translation.py +0 -0
  356. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/utils/__init__.py +0 -0
  357. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/utils/utils.py +0 -0
  358. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/utils/visual_layout.py +0 -0
  359. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy/zero_hour.py +0 -0
  360. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy.egg-info/dependency_links.txt +0 -0
  361. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy.egg-info/requires.txt +0 -0
  362. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/src/s3dgraphy.egg-info/top_level.txt +0 -0
  363. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_acquisition.py +0 -0
  364. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_acquisition_fs.py +0 -0
  365. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_add_resource.py +0 -0
  366. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_ai_validation_nodes.py +0 -0
  367. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_api_surface.py +0 -0
  368. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_asset_dtc_protocol.py +0 -0
  369. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_aton_shapes.py +0 -0
  370. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_attach_only.py +0 -0
  371. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_authority_projection.py +0 -0
  372. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_authority_resolver.py +0 -0
  373. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_blend_locator.py +0 -0
  374. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_canonical_document_rename.py +0 -0
  375. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_canvas_metadata_import.py +0 -0
  376. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_capture_acquisition.py +0 -0
  377. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_capture_rdf_class.py +0 -0
  378. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_chronology_on_request.py +0 -0
  379. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_coating_unit.py +0 -0
  380. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_composite_node_name.py +0 -0
  381. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_connection_resolver.py +0 -0
  382. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_consumer_drift.py +0 -0
  383. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_container.py +0 -0
  384. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_containment_tpq.py +0 -0
  385. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_contract.py +0 -0
  386. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_contract_consumer.py +0 -0
  387. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_convert_command.py +0 -0
  388. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_crdt.py +0 -0
  389. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_datamodel_fingerprint.py +0 -0
  390. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_datamodel_i18n.py +0 -0
  391. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_deterministic_ids.py +0 -0
  392. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_devices.py +0 -0
  393. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_dissemination_tombstones.py +0 -0
  394. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_dove_sta_il_testo.py +0 -0
  395. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_dtc_corpus.py +0 -0
  396. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_dtc_ingest.py +0 -0
  397. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_dtc_neighbourhood.py +0 -0
  398. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_dtc_projection.py +0 -0
  399. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_dtc_residency.py +0 -0
  400. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_edge_ui_phrases.py +0 -0
  401. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_editorial.py +0 -0
  402. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_em_ttl_matches_the_datamodels.py +0 -0
  403. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_emjson_roundtrip.py +0 -0
  404. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_emjson_schema_version.py +0 -0
  405. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_epoch_properties_and_sub_epochs.py +0 -0
  406. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_epoch_undated_import.py +0 -0
  407. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_explicit_node_type_marker.py +0 -0
  408. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_filtered_import.py +0 -0
  409. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_fmpxml_importer.py +0 -0
  410. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_fs_backend.py +0 -0
  411. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_functional_units.py +0 -0
  412. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_georeference_scene.py +0 -0
  413. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_gltf_stitch.py +0 -0
  414. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_glyph_paths.py +0 -0
  415. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_graph_indices_edges.py +0 -0
  416. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_graph_scope_migration.py +0 -0
  417. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_hdto_projection.py +0 -0
  418. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_header_key_aliases.py +0 -0
  419. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_i_generi_dei_passi.py +0 -0
  420. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_iiif.py +0 -0
  421. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_il_modo_d_accesso.py +0 -0
  422. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_il_modo_dal_relay.py +0 -0
  423. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_il_proprietario_si_legge.py +0 -0
  424. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_il_riallineamento.py +0 -0
  425. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_importer_edge_hygiene.py +0 -0
  426. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_ipynb_exporter.py +0 -0
  427. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_la_lingua_alla_nascita.py +0 -0
  428. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_la_lingua_dei_dati.py +0 -0
  429. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_la_lingua_nell_op.py +0 -0
  430. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_la_riga_d_intestazione.py +0 -0
  431. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_latex_exporter.py +0 -0
  432. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_le_traduzioni.py +0 -0
  433. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_lossless_roundtrip.py +0 -0
  434. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_mapping_authoring.py +0 -0
  435. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_mapping_csv_and_relations.py +0 -0
  436. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_masonry_unit.py +0 -0
  437. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_material_color.py +0 -0
  438. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_merge_conflicts.py +0 -0
  439. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_migrate_legacy_proxy.py +0 -0
  440. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_minio_backend.py +0 -0
  441. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_narrative_authorship.py +0 -0
  442. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_narrative_bake_docx.py +0 -0
  443. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_narrative_figures.py +0 -0
  444. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_narrative_generation.py +0 -0
  445. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_narrative_mentions.py +0 -0
  446. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_narrative_node.py +0 -0
  447. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_narrative_query.py +0 -0
  448. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_narrative_scaffolder.py +0 -0
  449. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_narrative_site_place.py +0 -0
  450. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_narrative_unvalidated_export.py +0 -0
  451. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_node_datamodel_registry.py +0 -0
  452. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_node_type_map_integrity.py +0 -0
  453. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_one_spelling_writers.py +0 -0
  454. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_pg_importer.py +0 -0
  455. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_photogrammetry_delta.py +0 -0
  456. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_physical_relation_spellings.py +0 -0
  457. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_piu_indirizzi.py +0 -0
  458. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_promotion.py +0 -0
  459. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_property_owners.py +0 -0
  460. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_proxy_resource.py +0 -0
  461. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_proxy_retype.py +0 -0
  462. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_pyarchinit_tier2.py +0 -0
  463. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_qualia_dai_d7_d8.py +0 -0
  464. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_rdf_embedding.py +0 -0
  465. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_rdf_reverse_edges.py +0 -0
  466. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_rdf_roundtrip.py +0 -0
  467. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_reading_coords.py +0 -0
  468. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_reading_glb.py +0 -0
  469. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_reading_migration.py +0 -0
  470. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_reading_place.py +0 -0
  471. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_reading_rdf.py +0 -0
  472. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_recompute_warnings.py +0 -0
  473. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_reproject.py +0 -0
  474. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_resource_files_implicit.py +0 -0
  475. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_resource_layer.py +0 -0
  476. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_resource_representations.py +0 -0
  477. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_resource_revision.py +0 -0
  478. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_resource_tier.py +0 -0
  479. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_reverse_edges.py +0 -0
  480. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_rm_container_node_group.py +0 -0
  481. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_semantic_purity.py +0 -0
  482. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_shelf.py +0 -0
  483. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_shelf_facets.py +0 -0
  484. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_shelf_hatting.py +0 -0
  485. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_shelf_role_uri_table.py +0 -0
  486. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_shipped_mappings.py +0 -0
  487. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_source_list_mapping.py +0 -0
  488. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_source_text.py +0 -0
  489. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_stamp.py +0 -0
  490. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_stamp_hints.py +0 -0
  491. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_stamp_title_description.py +0 -0
  492. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_store_backed_geometry.py +0 -0
  493. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_stratiminer_api.py +0 -0
  494. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_study_metadata.py +0 -0
  495. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_tileset_resource.py +0 -0
  496. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_ttl_roundtrip.py +0 -0
  497. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_unit_definition.py +0 -0
  498. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_verifica_provenance.py +0 -0
  499. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_visual_assets.py +0 -0
  500. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_wheel_drift.py +0 -0
  501. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_xlsx_containment_and_unknown_bounds.py +0 -0
  502. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_xlsx_importer_graph_init.py +0 -0
  503. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_xlsx_source_column.py +0 -0
  504. {s3dgraphy-1.6.0.dev28 → s3dgraphy-1.6.0.dev29}/tests/test_zero_hour.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: s3dgraphy
3
- Version: 1.6.0.dev28
3
+ Version: 1.6.0.dev29
4
4
  Summary: 3D Stratigraphic Graph Management Library for archaeological and heritage applications
5
5
  Author-email: Emanuel Demetrescu <emanuel.demetrescu@cnr.it>
6
6
  Maintainer-email: Emanuel Demetrescu <emanuel.demetrescu@cnr.it>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "s3dgraphy"
7
- version = "1.6.0.dev28"
7
+ version = "1.6.0.dev29"
8
8
  description = "3D Stratigraphic Graph Management Library for archaeological and heritage applications"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -7543,6 +7543,27 @@
7543
7543
  "he": "מדידת GNSS"
7544
7544
  }
7545
7545
  },
7546
+ "image_set": {
7547
+ "label": {
7548
+ "en": "Image set",
7549
+ "validated_it": false,
7550
+ "validated_el": false,
7551
+ "validated_he": false,
7552
+ "validated_es": false,
7553
+ "validated_pl": false,
7554
+ "validated_ro": false,
7555
+ "validated_fr": false,
7556
+ "validated_de": false,
7557
+ "it": "Insieme di immagini",
7558
+ "de": "Bildsatz",
7559
+ "fr": "Ensemble d'images",
7560
+ "es": "Conjunto de imágenes",
7561
+ "pl": "Zbiór obrazów",
7562
+ "ro": "Set de imagini",
7563
+ "el": "Σύνολο εικόνων",
7564
+ "he": "אוסף תמונות"
7565
+ }
7566
+ },
7546
7567
  "ingest": {
7547
7568
  "label": {
7548
7569
  "en": "Ingest",
@@ -7879,6 +7900,27 @@
7879
7900
  "he": "חיישן"
7880
7901
  }
7881
7902
  },
7903
+ "texturing": {
7904
+ "label": {
7905
+ "en": "Texturing",
7906
+ "validated_it": false,
7907
+ "validated_el": false,
7908
+ "validated_he": false,
7909
+ "validated_es": false,
7910
+ "validated_pl": false,
7911
+ "validated_ro": false,
7912
+ "validated_fr": false,
7913
+ "validated_de": false,
7914
+ "it": "Texturizzazione",
7915
+ "de": "Texturierung",
7916
+ "fr": "Texturage",
7917
+ "es": "Texturizado",
7918
+ "pl": "Teksturowanie",
7919
+ "ro": "Texturare",
7920
+ "el": "Εφαρμογή υφής",
7921
+ "he": "החלת טקסטורה"
7922
+ }
7923
+ },
7882
7924
  "tiling": {
7883
7925
  "label": {
7884
7926
  "en": "Tiling",
@@ -10,6 +10,7 @@
10
10
  @prefix oa: <http://www.w3.org/ns/oa#> .
11
11
  @prefix geo: <http://www.opengis.net/ont/geosparql#> .
12
12
  @prefix dcterms: <http://purl.org/dc/terms/> .
13
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
13
14
  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
14
15
  @prefix owl: <http://www.w3.org/2002/07/owl#> .
15
16
  @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@@ -46,8 +47,8 @@
46
47
  dcterms:creator "Emanuele Demetrescu" ;
47
48
  dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
48
49
  dcterms:issued "2026-05-23"^^xsd:date ;
49
- owl:versionInfo "1.6.12" ;
50
- rdfs:comment "Formal ontology for Extended Matrix (EM): a human-readable layout for knowledge graphs of archaeological stratigraphy and virtual reconstruction. Extends CIDOC-CRM, CRMarchaeo, CRMinf, CRMdig, CRMgeo, with PROV-O for agent provenance and HDT-O for digital-twin granularity. This file declares the em: classes and properties introduced in s3dgraphy v1.6.0. v1.6.12 (2026-11-01, dev28, decided by E.D. 2026-10-01): no new term — em:authMode admits a third value, 'declared' (an iD typed in a tool's preferences and checked by nobody), with no em:attestedBy. v1.6.11 (2026-10-31, dev27, decided by E.D. 2026-10-01): ten properties. Section 15, several addresses of ONE resource (em:hasAddress to <resource>/address/<i>, em:locator, em:checkedAt, em:reachable) and a dated digest (em:checksumAt); section 16, how the hand of a signature had entered (em:createdVia, em:modifiedVia, em:validatedVia to <node>/auth/<stamp>, em:authMode orcid | node_password, em:attestedBy the StratiGraph node). The language of the content of a resource leaves as dcterms:language: no em: term. v1.6.10 (2026-10-29, MICRO le traduzioni, decided by E.D. 2026-10-01): six DatatypeProperties for the language of the original and its translations (section 14) — em:originalLanguage on any node, which says which literal is the original once translations share its predicate, and em:sourceLanguage, em:translatedField, em:translationMethod, em:sourceDigest, em:reviewRequested on a TranslationNode, which is a plain crm:E33_Linguistic_Object reached by crm:P73_has_translation: CIDOC has the class and the relation, so no em: class is added. v1.6.9 (2026-10-18, MICRO la risorsa e i suoi file): em:ResourceFile, ONE FILE of a resource (node datamodel 1.6.17), a subclass of crmdig:D1_Digital_Object; the resource is composed of its files by crm:P106_is_composed_of (connections has_file, 1.6.30). A distinct URI because a DTC output resource is already typed crmdig:D1, and a file typed only D1 would read back as a resource. v1.6.2 (2026-09-21, CIDOC repair pass): the eight terms the datamodels cited and this file never defined are declared in section 12; em:NodeGroup and em:ParadataNodeGroup leave the undeclared crm:E78_Collection for crm:E73_Information_Object and crm:E89_Propositional_Object; em:SemanticShape leaves crmgeo:SP5 for crm:E73_Information_Object, provisionally; crmarchaeo:AP11_has_physical_relation becomes AP11_has_physical_relation_to, the name CRMarchaeo has used since 2.0; and em:RepresentationModel says what a representation model IS. v1.6.5 (2026-10-20, MICRO la definizione dell\'unita\'): em:hasDefinition, the DEFINIZIONE of a stratigraphic unit as a subproperty of crm:P2_has_type — declared for the node datamodel 1.6.9 entry StratigraphicNode.properties.definition, not emitted by default (owl:versionInfo was left at 1.6.2 by the 1.6.3/1.6.4 passes and is realigned here). v1.6.8 (2026-10-11, MICRO la geometria per origine): the vertices of a 3D reading (point, line, polyline) are data of the region (node datamodel 1.6.15, AnnotationRegionNode.coords) and leave for RDF as ONE GeoSPARQL 1.1 literal: <region> geo:hasGeometry <region>/geometry, a geo:Geometry with geo:asWKT '<CRS IRI> POINT Z (x y z)' | 'MULTIPOINT Z (...)' | 'LINESTRING Z (...)'^^geo:wktLiteral. WHY GeoSPARQL and not em: terms: the WKT literal is the standard every triplestore with a spatial index reads, and it is the 3D twin of the Media Fragment a 2D region already emits (a string a consumer outside EM can act on); CRMgeo was built to meet GeoSPARQL at exactly this point (SP5 Geometric Place Expression ~ geo:Geometry), and an em:coords literal would say the same thing to nobody. The CRS travels INSIDE the literal, so it cannot be separated from the numbers: em:LocalSceneFrame (declared here) for the scene-local frame, the OGC EPSG IRI for a projected one. em:vertexCount stays (the count of a .glb resource above the threshold). The .glb of a reading is no longer a SemanticShape's rdfs:seeAlso: above coords.inline_max_vertices (500) it is a ResourceNode the region reaches with has_linked_resource (crm:P67_refers_to), and a proxy's .glb is likewise a proxy_model ResourceNode (connections 1.6.28-1.6.29). v1.6.7 (2026-09-30, MICRO la cattura in RDF): no em: term added — the acquisition of a digital object is typed by its KIND. A capture is not a transfer: crmdig:D2_Digitization_Process for a photograph or a laser scan, crmdig:D11_Digital_Measurement_Event for a topographic or GNSS survey, crm:E65_Creation for a field drawing or a recording sheet (made by hand; the file is their copy, so no D7 machine event is asserted); a retrieval (download, local import, URI, ingest) stays crmdig:D12_Data_Transfer_Event. The rule is data (em_visual_rules 1.6.24, dtc_kinds.acquisition.<kind>.mapping). v1.6.6 (2026-10-07, MICRO la misura in RDF): the place of a reading gets its quote and its measure. The quote of a passage reuses W3C Web Annotation (oa:hasSelector -> oa:TextQuoteSelector, oa:exact) — the only standard term for a quote, which has no fragment-string form; its offsets stay the RFC 5147 em:hasSelector 'char=s,e'. The length of a line or polyline reuses CIDOC (crm:P43_has_dimension -> crm:E54_Dimension, P90_has_value xsd:double, P91_has_unit -> a QUDT unit IRI); two em: terms are new, em:vertexCount and em:crs, for what neither vocabulary says. The .glb of a 3D reading is not described here: its URL is the rdfs:seeAlso of the SemanticShape the region reaches with em:hasSemanticShape, and no coordinate enters RDF."@en ;
50
+ owl:versionInfo "1.6.13" ;
51
+ rdfs:comment "Formal ontology for Extended Matrix (EM): a human-readable layout for knowledge graphs of archaeological stratigraphy and virtual reconstruction. Extends CIDOC-CRM, CRMarchaeo, CRMinf, CRMdig, CRMgeo, with PROV-O for agent provenance and HDT-O for digital-twin granularity. This file declares the em: classes and properties introduced in s3dgraphy v1.6.0. v1.6.13 (2026-10-02, dev29, measured on San Pietro): seven DatatypeProperties, section 17 — how the bytes of a resource are packed and what its digest covers (em:packaging, em:tier, em:digestCovers, em:contentDigest) and what a DTC step declares (em:technique, em:parameters, em:software, the last two rdf:JSON): the round trip em.json → TTL → em.json lost all seven. v1.6.12 (2026-11-01, dev28, decided by E.D. 2026-10-01): no new term — em:authMode admits a third value, 'declared' (an iD typed in a tool's preferences and checked by nobody), with no em:attestedBy. v1.6.11 (2026-10-31, dev27, decided by E.D. 2026-10-01): ten properties. Section 15, several addresses of ONE resource (em:hasAddress to <resource>/address/<i>, em:locator, em:checkedAt, em:reachable) and a dated digest (em:checksumAt); section 16, how the hand of a signature had entered (em:createdVia, em:modifiedVia, em:validatedVia to <node>/auth/<stamp>, em:authMode orcid | node_password, em:attestedBy the StratiGraph node). The language of the content of a resource leaves as dcterms:language: no em: term. v1.6.10 (2026-10-29, MICRO le traduzioni, decided by E.D. 2026-10-01): six DatatypeProperties for the language of the original and its translations (section 14) — em:originalLanguage on any node, which says which literal is the original once translations share its predicate, and em:sourceLanguage, em:translatedField, em:translationMethod, em:sourceDigest, em:reviewRequested on a TranslationNode, which is a plain crm:E33_Linguistic_Object reached by crm:P73_has_translation: CIDOC has the class and the relation, so no em: class is added. v1.6.9 (2026-10-18, MICRO la risorsa e i suoi file): em:ResourceFile, ONE FILE of a resource (node datamodel 1.6.17), a subclass of crmdig:D1_Digital_Object; the resource is composed of its files by crm:P106_is_composed_of (connections has_file, 1.6.30). A distinct URI because a DTC output resource is already typed crmdig:D1, and a file typed only D1 would read back as a resource. v1.6.2 (2026-09-21, CIDOC repair pass): the eight terms the datamodels cited and this file never defined are declared in section 12; em:NodeGroup and em:ParadataNodeGroup leave the undeclared crm:E78_Collection for crm:E73_Information_Object and crm:E89_Propositional_Object; em:SemanticShape leaves crmgeo:SP5 for crm:E73_Information_Object, provisionally; crmarchaeo:AP11_has_physical_relation becomes AP11_has_physical_relation_to, the name CRMarchaeo has used since 2.0; and em:RepresentationModel says what a representation model IS. v1.6.5 (2026-10-20, MICRO la definizione dell\'unita\'): em:hasDefinition, the DEFINIZIONE of a stratigraphic unit as a subproperty of crm:P2_has_type — declared for the node datamodel 1.6.9 entry StratigraphicNode.properties.definition, not emitted by default (owl:versionInfo was left at 1.6.2 by the 1.6.3/1.6.4 passes and is realigned here). v1.6.8 (2026-10-11, MICRO la geometria per origine): the vertices of a 3D reading (point, line, polyline) are data of the region (node datamodel 1.6.15, AnnotationRegionNode.coords) and leave for RDF as ONE GeoSPARQL 1.1 literal: <region> geo:hasGeometry <region>/geometry, a geo:Geometry with geo:asWKT '<CRS IRI> POINT Z (x y z)' | 'MULTIPOINT Z (...)' | 'LINESTRING Z (...)'^^geo:wktLiteral. WHY GeoSPARQL and not em: terms: the WKT literal is the standard every triplestore with a spatial index reads, and it is the 3D twin of the Media Fragment a 2D region already emits (a string a consumer outside EM can act on); CRMgeo was built to meet GeoSPARQL at exactly this point (SP5 Geometric Place Expression ~ geo:Geometry), and an em:coords literal would say the same thing to nobody. The CRS travels INSIDE the literal, so it cannot be separated from the numbers: em:LocalSceneFrame (declared here) for the scene-local frame, the OGC EPSG IRI for a projected one. em:vertexCount stays (the count of a .glb resource above the threshold). The .glb of a reading is no longer a SemanticShape's rdfs:seeAlso: above coords.inline_max_vertices (500) it is a ResourceNode the region reaches with has_linked_resource (crm:P67_refers_to), and a proxy's .glb is likewise a proxy_model ResourceNode (connections 1.6.28-1.6.29). v1.6.7 (2026-09-30, MICRO la cattura in RDF): no em: term added — the acquisition of a digital object is typed by its KIND. A capture is not a transfer: crmdig:D2_Digitization_Process for a photograph or a laser scan, crmdig:D11_Digital_Measurement_Event for a topographic or GNSS survey, crm:E65_Creation for a field drawing or a recording sheet (made by hand; the file is their copy, so no D7 machine event is asserted); a retrieval (download, local import, URI, ingest) stays crmdig:D12_Data_Transfer_Event. The rule is data (em_visual_rules 1.6.24, dtc_kinds.acquisition.<kind>.mapping). v1.6.6 (2026-10-07, MICRO la misura in RDF): the place of a reading gets its quote and its measure. The quote of a passage reuses W3C Web Annotation (oa:hasSelector -> oa:TextQuoteSelector, oa:exact) — the only standard term for a quote, which has no fragment-string form; its offsets stay the RFC 5147 em:hasSelector 'char=s,e'. The length of a line or polyline reuses CIDOC (crm:P43_has_dimension -> crm:E54_Dimension, P90_has_value xsd:double, P91_has_unit -> a QUDT unit IRI); two em: terms are new, em:vertexCount and em:crs, for what neither vocabulary says. The .glb of a 3D reading is not described here: its URL is the rdfs:seeAlso of the SemanticShape the region reaches with em:hasSemanticShape, and no coordinate enters RDF."@en ;
51
52
  owl:imports <http://www.cidoc-crm.org/cidoc-crm/> ,
52
53
  <http://www.cidoc-crm.org/extensions/crminf/> ,
53
54
  <http://www.cidoc-crm.org/extensions/crmarchaeo/> ,
@@ -932,5 +933,52 @@ em:attestedBy
932
933
  rdfs:comment "The name of the StratiGraph node that attested an identity entered with the node's password (em:authMode 'node_password'). Maps to: node_datamodel Node.properties.created_auth.attested_by."@en .
933
934
 
934
935
  # ============================================================================
935
- # End of em.ttl v1.6.12
936
+ # 17. How the bytes are packed, and what a step declares (v1.6.13, dev29,
937
+ # 2026-10-02, measured on the round trip of San Pietro)
938
+ # ============================================================================
939
+
940
+ em:packaging
941
+ a owl:DatatypeProperty ;
942
+ rdfs:label "packaging"@en ;
943
+ rdfs:range xsd:string ;
944
+ rdfs:comment "How the bytes of a resource are packed: 'file', 'file_set' (an entry point and the files it calls), 'directory', 'archive', 'datablock' — the vocabulary of the stamp format (dtcstamp PACKAGINGS). DECLARED, emitted only when recorded: a reader's fallback is never written as a fact. Maps to: node_datamodel ResourceNode.properties.packaging."@en .
945
+
946
+ em:tier
947
+ a owl:DatatypeProperty ;
948
+ rdfs:label "tier"@en ;
949
+ rdfs:range xsd:string ;
950
+ rdfs:comment "Which tier a resource is — 'master' (the source a person keeps) or 'distribution' (what is handed out). Declared, emitted only when recorded. Maps to: node_datamodel ResourceNode.properties.tier."@en .
951
+
952
+ em:digestCovers
953
+ a owl:DatatypeProperty ;
954
+ rdfs:label "digest covers"@en ;
955
+ rdfs:range xsd:string ;
956
+ rdfs:comment "What em:checksum is the digest OF: 'artifact' (the bytes as they came out of the process), 'payload' (the content without an embedded stamp), 'members' (the canonical list of the members of a file_set — role, path and digest of each — not the bytes of any one file). Without it a reader takes the digest of a list for the digest of a file. Maps to: node_datamodel ResourceNode.properties.digest_covers."@en .
957
+
958
+ em:contentDigest
959
+ a owl:DatatypeProperty ;
960
+ rdfs:label "content digest"@en ;
961
+ rdfs:range xsd:string ;
962
+ rdfs:comment "The digest of the CONTENT of a tree, 'sha256:<hex>' of the canonical list of its members: the same for a folder and for the same folder packed in a .3tz, which em:checksum (of the container's bytes) cannot be. Maps to: node_datamodel ResourceNode.properties.content_digest."@en .
963
+
964
+ em:technique
965
+ a owl:DatatypeProperty ;
966
+ rdfs:label "technique"@en ;
967
+ rdfs:range xsd:string ;
968
+ rdfs:comment "The free word of whoever did a DTC step ('allineamento', 'quadric edge collapse'), beside the controlled kind it leaves with as crm:P2_has_type. Two granularities, two fields. Maps to: node_datamodel DTCProcessNode.properties.technique."@en .
969
+
970
+ em:parameters
971
+ a owl:DatatypeProperty ;
972
+ rdfs:label "parameters"@en ;
973
+ rdfs:range rdf:JSON ;
974
+ rdfs:comment "How the technique of a DTC step was applied, as ONE rdf:JSON object: the stamp format owns its shape, and RDF carries it back unchanged. Maps to: node_datamodel DTCProcessNode.properties.parameters."@en .
975
+
976
+ em:software
977
+ a owl:DatatypeProperty ;
978
+ rdfs:label "software"@en ;
979
+ rdfs:range rdf:JSON ;
980
+ rdfs:comment "The software of a DTC step, as ONE rdf:JSON list of {name, version, commit?}: a real chain names two (the tool and the library), and the commit says which build. Maps to: node_datamodel DTCProcessNode.properties.software."@en .
981
+
982
+ # ============================================================================
983
+ # End of em.ttl v1.6.13
936
984
  # ============================================================================
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "formal_language": "EM",
3
- "version": "1.6.29",
3
+ "version": "1.6.30",
4
4
  "_note_material_vs_qualia_color": [
5
5
  "DUE COSE DIVERSE CHE SI CHIAMANO ENTRAMBE color. Non confonderle: e gia successo.",
6
6
  "1) QUI, in node_styles.<tipo>.style.material.rgba_color — il COLORE DEL MATERIALE BLENDER del proxy 3D, in float LINEARI. UNA sola chiave: `rgba_color`. Fino a S8 il file ne usava due (`color` sui 13 tipi stratigrafici, `rgba_color` sugli altri) e get_material_color() ne leggeva una sola, restituendo None per 21 tipi su 38; ora sono unificate e la vecchia `color` e letta solo come tolleranza verso file scritti prima. Un tipo che non diventa mai una mesh NON ha material affatto (i contenitori di gruppo, e da S7 i dieci nodi che rendono per icona): per loro get_material_color() torna None, ed e corretto.",
@@ -9,6 +9,7 @@
9
9
  "In breve: qui si decide di che colore DISEGNARE una US; li si registra di che colore ERA."
10
10
  ],
11
11
  "_changelog": {
12
+ "1.6.30": "AN IMAGE SET AND TEXTURING (dev29, 2 Oct 2026, proposed from the measurements on San Pietro and confirmed by E.D. the same day). dtc_kinds.output += image_set (a set of photographs kept and handed on as ONE product, its images the members of one resource), glyph 09_photos reused; dtc_kinds.process += texturing (a model given its colour from images: projection onto a mesh or baking into an atlas, one kind until decided otherwise), glyph 03_mesh reused. Labels in the nine languages (not validated); 2d_glyphs regenerated. Like every process kind texturing declares no mapping.",
12
13
  "1.6.29": "THE FOUR GESTURES OF WHOEVER EXPORTS (dev28, decision of E.D. 1 Oct 2026 on the dev27 report, part D). dtc_kinds.process += export (an object of a working project written as a file of its own), lod_generation (a level of detail baked from the master), tiling (a mesh divided into a 3D Tiles tree), packing (a tree packed into one archive, the .3tz). Until dev28 EM Tools and 3DSC wrote them format_conversion / decimation / transformation with the gesture in `technique`; those stamps stay true. NO NEW GLYPH: they reuse 17_format_conversion (export, packing), 15_decimation (lod_generation), 00_transformation (tiling) — a mark of their own is an act of EM iconography, left to E.D.; 2d_glyphs regenerated (dtc:<kind> entries). NO MAPPING, measured: no process kind declares one; a step is the crmdig:D7 of DTCProcessNode whatever its kind. Labels in the nine languages in datamodel_translations.json (dtc_kinds).",
13
14
  "1.6.28": "THE TRANSLATION NODE (MICRO le traduzioni, 29 Oct 2026, decision of E.D. 1 Oct 2026). node_styles.TRANSL for TranslationNode: the narrative's neutral grey and its glyph (src/2D/narrative.svg, SHARED, declared by 2d_file_vect — the way UL / USN / USNt share US.png), with a DASHED border so a translation does not read as a narrative. Choosing a mark of its own is an act of EM iconography and is left to E.D.; no file_3d, no material: a translation never becomes a mesh.",
14
15
  "1.6.27": "THE GLYPH OF THE FILE (MICRO-REVISIONE, 20 Oct 2026, decision of E.D. 30 Sep 2026: Claude draws it). node_styles.FILE.2d_file_vect: src/2D/link.svg -> src/2D/resource_file.svg, a sheet with a folded corner and the digest sign inside the 2017 DTC circle. WHERE, MEASURED: a resource takes its sign from node_styles.<KEY>.2d_file_vect (LINK -> src/2D/link.svg), a FILE, which EMStudio's icons.ts resolves (declaration, then src/2D/<node_type>.svg) and sync-datamodels.sh vendors from the top level of src/2D/. It is NOT a DTC glyph (dtc_kinds name the glyphs of DTC kinds, and a file is a node type, not a kind) and NOT a 2d_glyphs entry: LINK is not in 2d_render_glyph_types either, and joining that list would change how the label is laid out, which nobody asked. Still no .glb (as before). The dashed border and the LINK colour stay.",
@@ -616,6 +617,169 @@
616
617
  ],
617
618
  "source": "src/2D/dtc/03_mesh.svg"
618
619
  },
620
+ "dtc:texturing": {
621
+ "viewBox": [
622
+ 0,
623
+ 0,
624
+ 87.12,
625
+ 87.12
626
+ ],
627
+ "aspect": 1.0,
628
+ "layers": [
629
+ {
630
+ "d": "M84.7 43.56C84.7 66.28 66.28 84.7 43.56 84.7C20.84 84.7 2.43 66.28 2.43 43.56C2.43 20.84 20.84 2.43 43.56 2.43C66.28 2.43 84.7 20.84 84.7 43.56Z",
631
+ "role": "paper",
632
+ "fill": "#FFFFFF"
633
+ },
634
+ {
635
+ "d": "M84.7 43.56C84.7 66.28 66.28 84.7 43.56 84.7C20.84 84.7 2.43 66.28 2.43 43.56C2.43 20.84 20.84 2.43 43.56 2.43C66.28 2.43 84.7 20.84 84.7 43.56Z",
636
+ "role": "ink",
637
+ "stroke": "#000000",
638
+ "stroke_width": 1.5,
639
+ "line_cap": "round",
640
+ "line_join": "round"
641
+ },
642
+ {
643
+ "d": "M22.28 28.63L22.27 28.03Z",
644
+ "role": "paper",
645
+ "fill": "#FFFFFF",
646
+ "fill_rule": "evenodd"
647
+ },
648
+ {
649
+ "d": "M22.28 28.63L22.27 28.03Z",
650
+ "role": "ink",
651
+ "stroke": "#000000",
652
+ "stroke_width": 2.77,
653
+ "line_cap": "round",
654
+ "line_join": "round"
655
+ },
656
+ {
657
+ "d": "M41.22 18.27L41.21 17.68Z",
658
+ "role": "paper",
659
+ "fill": "#FFFFFF",
660
+ "fill_rule": "evenodd"
661
+ },
662
+ {
663
+ "d": "M41.22 18.27L41.21 17.68Z",
664
+ "role": "ink",
665
+ "stroke": "#000000",
666
+ "stroke_width": 2.77,
667
+ "line_cap": "round",
668
+ "line_join": "round"
669
+ },
670
+ {
671
+ "d": "M21.32 55.39L21.31 54.79Z",
672
+ "role": "paper",
673
+ "fill": "#FFFFFF",
674
+ "fill_rule": "evenodd"
675
+ },
676
+ {
677
+ "d": "M21.32 55.39L21.31 54.79Z",
678
+ "role": "ink",
679
+ "stroke": "#000000",
680
+ "stroke_width": 2.77,
681
+ "line_cap": "round",
682
+ "line_join": "round"
683
+ },
684
+ {
685
+ "d": "M48.53 35.31L48.52 34.71Z",
686
+ "role": "paper",
687
+ "fill": "#FFFFFF",
688
+ "fill_rule": "evenodd"
689
+ },
690
+ {
691
+ "d": "M48.53 35.31L48.52 34.71Z",
692
+ "role": "ink",
693
+ "stroke": "#000000",
694
+ "stroke_width": 2.77,
695
+ "line_cap": "round",
696
+ "line_join": "round"
697
+ },
698
+ {
699
+ "d": "M37.16 44.66L37.16 44.06Z",
700
+ "role": "paper",
701
+ "fill": "#FFFFFF",
702
+ "fill_rule": "evenodd"
703
+ },
704
+ {
705
+ "d": "M37.16 44.66L37.16 44.06Z",
706
+ "role": "ink",
707
+ "stroke": "#000000",
708
+ "stroke_width": 2.77,
709
+ "line_cap": "round",
710
+ "line_join": "round"
711
+ },
712
+ {
713
+ "d": "M66.32 33.08L66.31 32.49Z",
714
+ "role": "paper",
715
+ "fill": "#FFFFFF",
716
+ "fill_rule": "evenodd"
717
+ },
718
+ {
719
+ "d": "M66.32 33.08L66.31 32.49Z",
720
+ "role": "ink",
721
+ "stroke": "#000000",
722
+ "stroke_width": 2.77,
723
+ "line_cap": "round",
724
+ "line_join": "round"
725
+ },
726
+ {
727
+ "d": "M42.03 67L42.02 66.41Z",
728
+ "role": "paper",
729
+ "fill": "#FFFFFF",
730
+ "fill_rule": "evenodd"
731
+ },
732
+ {
733
+ "d": "M42.03 67L42.02 66.41Z",
734
+ "role": "ink",
735
+ "stroke": "#000000",
736
+ "stroke_width": 2.77,
737
+ "line_cap": "round",
738
+ "line_join": "round"
739
+ },
740
+ {
741
+ "d": "M58.06 63.85L58.06 63.25Z",
742
+ "role": "paper",
743
+ "fill": "#FFFFFF",
744
+ "fill_rule": "evenodd"
745
+ },
746
+ {
747
+ "d": "M58.06 63.85L58.06 63.25Z",
748
+ "role": "ink",
749
+ "stroke": "#000000",
750
+ "stroke_width": 2.77,
751
+ "line_cap": "round",
752
+ "line_join": "round"
753
+ },
754
+ {
755
+ "d": "M54.23 51.95L54.22 51.35Z",
756
+ "role": "paper",
757
+ "fill": "#FFFFFF",
758
+ "fill_rule": "evenodd"
759
+ },
760
+ {
761
+ "d": "M54.23 51.95L54.22 51.35Z",
762
+ "role": "ink",
763
+ "stroke": "#000000",
764
+ "stroke_width": 2.77,
765
+ "line_cap": "round",
766
+ "line_join": "round"
767
+ },
768
+ {
769
+ "d": "M21.9 28.66C22.97 27.59 40.83 17.95 40.83 17.95L66.72 33.13L54.4 51.7L58.07 63.59L66.72 33.49L48.87 34.91C48.87 34.91 55.12 51.7 54.4 51.34C53.69 50.99 37.26 43.66 37.26 43.66C37.26 43.66 60.69 63.87 58.02 63.69C55.34 63.51 41.72 67.77 41.72 66.52C41.72 65.27 37.26 44.56 37.26 44.56C37.26 44.56 21.55 55.99 21.55 54.91C21.55 53.84 22.44 27.06 22.62 27.95C22.8 28.84 36.72 44.56 36.72 44.56L48.87 34.56L40.83 18.31",
770
+ "role": "ink",
771
+ "stroke": "#000000",
772
+ "stroke_width": 0.6
773
+ },
774
+ {
775
+ "d": "M21.02 55.35L41.79 66.96",
776
+ "role": "ink",
777
+ "stroke": "#000000",
778
+ "stroke_width": 0.6
779
+ }
780
+ ],
781
+ "source": "src/2D/dtc/03_mesh.svg"
782
+ },
619
783
  "dtc:transformation": {
620
784
  "viewBox": [
621
785
  0,
@@ -2568,6 +2732,70 @@
2568
2732
  ],
2569
2733
  "source": "src/2D/dtc/08_ortophoto.svg"
2570
2734
  },
2735
+ "dtc:image_set": {
2736
+ "viewBox": [
2737
+ 0,
2738
+ 0,
2739
+ 87.12,
2740
+ 87.12
2741
+ ],
2742
+ "aspect": 1.0,
2743
+ "layers": [
2744
+ {
2745
+ "d": "M84.7 43.56C84.7 66.28 66.28 84.7 43.56 84.7C20.84 84.7 2.43 66.28 2.43 43.56C2.43 20.84 20.84 2.43 43.56 2.43C66.28 2.43 84.7 20.84 84.7 43.56Z",
2746
+ "role": "paper",
2747
+ "fill": "#FFFFFF"
2748
+ },
2749
+ {
2750
+ "d": "M84.7 43.56C84.7 66.28 66.28 84.7 43.56 84.7C20.84 84.7 2.43 66.28 2.43 43.56C2.43 20.84 20.84 2.43 43.56 2.43C66.28 2.43 84.7 20.84 84.7 43.56Z",
2751
+ "role": "ink",
2752
+ "stroke": "#000000",
2753
+ "stroke_width": 1.5,
2754
+ "line_cap": "round",
2755
+ "line_join": "round"
2756
+ },
2757
+ {
2758
+ "d": "M33.96 25.38L69.83 25.38L69.83 48.11L33.96 48.11Z",
2759
+ "role": "paper",
2760
+ "fill": "#FFFFFF"
2761
+ },
2762
+ {
2763
+ "d": "M33.96 25.38L69.83 25.38L69.83 48.11L33.96 48.11Z",
2764
+ "role": "ink",
2765
+ "stroke": "#000000",
2766
+ "stroke_width": 1.0,
2767
+ "line_cap": "round",
2768
+ "line_join": "round"
2769
+ },
2770
+ {
2771
+ "d": "M25.13 31.69L60.99 31.69L60.99 54.42L25.13 54.42Z",
2772
+ "role": "paper",
2773
+ "fill": "#FFFFFF"
2774
+ },
2775
+ {
2776
+ "d": "M25.13 31.69L60.99 31.69L60.99 54.42L25.13 54.42Z",
2777
+ "role": "ink",
2778
+ "stroke": "#000000",
2779
+ "stroke_width": 1.0,
2780
+ "line_cap": "round",
2781
+ "line_join": "round"
2782
+ },
2783
+ {
2784
+ "d": "M17.04 38.26L52.91 38.26L52.91 60.99L17.04 60.99Z",
2785
+ "role": "paper",
2786
+ "fill": "#FFFFFF"
2787
+ },
2788
+ {
2789
+ "d": "M17.04 38.26L52.91 38.26L52.91 60.99L17.04 60.99Z",
2790
+ "role": "ink",
2791
+ "stroke": "#000000",
2792
+ "stroke_width": 1.0,
2793
+ "line_cap": "round",
2794
+ "line_join": "round"
2795
+ }
2796
+ ],
2797
+ "source": "src/2D/dtc/09_photos.svg"
2798
+ },
2571
2799
  "dtc:points": {
2572
2800
  "viewBox": [
2573
2801
  0,
@@ -4100,6 +4328,11 @@
4100
4328
  "glyph": "03_mesh",
4101
4329
  "description": "Structure-from-motion reconstruction: a cluster of photographs becomes a 3D model. A specific kind of transformation, named because what a reader needs to know about a mesh is which family of process made it — and because the placement (RegistrationTransform) only means something for this one."
4102
4330
  },
4331
+ "texturing": {
4332
+ "label": "Texturing",
4333
+ "glyph": "03_mesh",
4334
+ "description": "Giving a model its colour from images: projecting photographs onto a mesh, or baking its textures into an atlas (measured on San Pietro: the published LOD0 and the case-study LOD1 have the same geometry and differ only in the textures). Projection and baking stay one kind until E.D. says otherwise; which one it was goes in `technique`. Proposed in dev29, confirmed by E.D. on 2 Oct 2026. A crmdig:D7 Digital Machine Event like every process."
4335
+ },
4103
4336
  "transformation": {
4104
4337
  "label": "Transformation",
4105
4338
  "glyph": "00_transformation",
@@ -4290,6 +4523,11 @@
4290
4523
  "glyph": "08_ortophoto",
4291
4524
  "description": "Produced orthophoto / orthomosaic."
4292
4525
  },
4526
+ "image_set": {
4527
+ "label": "Image set",
4528
+ "glyph": "09_photos",
4529
+ "description": "A SET of photographs (or other images) kept and handed on together as one product — the 71 drone frames of a flight, the 204 Canon frames of a survey — rather than each image as its own product. Its files are the members of ONE resource (packaging directory or file_set). Proposed in dev29 from the measurements on San Pietro, confirmed by E.D. on 2 Oct 2026."
4530
+ },
4293
4531
  "points": {
4294
4532
  "label": "Points",
4295
4533
  "glyph": "04_points",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "_generated": "by `python -m s3dgraphy.tools.sync_node_datamodel` — DO NOT hand-edit. The flat class hierarchy (parent/node_type/description) is derived from the Python Node subclasses; hand-authored semantics and CIDOC mappings live in s3Dgraphy_node_datamodel.json.",
3
- "s3Dgraphy_data_model_version": "1.6.22",
3
+ "s3Dgraphy_data_model_version": "1.6.23",
4
4
  "node_types": {
5
5
  "ActivityNodeGroup": {
6
6
  "parent": "GroupNode",
@@ -1,6 +1,6 @@
1
1
  {
2
- "s3Dgraphy_data_model_version": "1.6.22",
3
- "description": "v1.6.22 (dev28, 2026-11-01, decided by E.D. 2026-10-01 on the dev27 report): the access mode of a signature (created_auth / modified_auth / validated_auth) admits a third mode, 'declared' — an iD typed in a tool's preferences and checked by nobody (EMStudio's declared identity, EM Tools' local identity), with no attested_by; through a relay the mode is the relay's, read from the token (crdt.stamp_auth), not the client's declaration. The language a node is born in travels in the add_node op (crdt.make_op requires it of the producer, 'und' when unknown); the study's language is read only for old ops, said and counted. CRMem 1.6.12. v1.6.21 (dev27, 2026-10-31, decided by E.D. 2026-10-01, «il testo, la risorsa e la selezione» and «l'accesso sul campo»): ResourceNode.properties gains lang — on a resource the language(s) of its CONTENT, one tag or a sorted list, leaving as dcterms:language and outside the cascade of the texts — addresses (several addresses of ONE resource, same digest: em:hasAddress with em:locator, em:residency, em:checkedAt, em:reachable) and checksum_at (a dated digest, em:checksumAt). Node.properties gains created_auth / modified_auth / validated_auth: how the hand of a signature had entered, {mode: orcid | node_password, attested_by} (em:createdVia / em:modifiedVia / em:validatedVia, em:authMode, em:attestedBy). data.lang is written at birth (s3dgraphy.language.stamp_birth_language), also when equal to the study's. v1.6.20 (MICRO le traduzioni, 2026-10-29, decided by E.D. 2026-10-01, «Le traduzioni»): NEW TranslationNode (TRANSL, crm:E33_Linguistic_Object) — ONE translation of one text field of one node. The original stays a string in its field (data.lang on the node, else the study's), never overwritten; each translation is a node reached by has_translation (crm:P73_has_translation, connections 1.6.34) with data.lang (arrival), data.from_lang (departure, written because the original can change), data.field (CRDT vocabulary: description | data.<key>; a PropertyNode's value is data.value; never name), data.text, data.method (manual | ai | edition), data.source_digest (sha256 of the original translated: a different digest = «da riallineare») and data.review_requested («da rivedere»). Who: has_author; AI: data.ai_assisted, unverified until validated_by; an edition: extracted_from → the DocumentNode. RDF (em.ttl 1.6.10): Node.properties.lang names em:originalLanguage — the node's own data.lang leaves as that literal whenever it is declared, equal to the study's too, so a reader tells the original literal from the translations that share its predicate and the round trip gives data.lang back exactly where it was (the D.1 limit of 1.6.19 is closed); the TranslationNode's fields name em:sourceLanguage, em:translatedField, em:translationMethod, em:sourceDigest, em:reviewRequested. v1.6.19 (MICRO la lingua dei dati, 2026-10-27, decided by E.D. 2026-09-28): Node.properties.description becomes an object {cidoc: P3_has_note, natural_language: true, note} — the MARKER that says the description is text in a natural language and leaves in RDF with its language tag; declared once on the base class and inherited by every node type. name is NOT marked: names are invariant identities. No field added, no node element, no graph change: the em.json is the same; only the RDF literal gains its tag. v1.6.18 (MICRO i termini di em.ttl nel datamodel, 2026-10-26, decided by E.D. 2026-10-01 — the datamodel JSON is the truth, so every em: term of em.ttl is cited by a datamodel or is a written exception): the em: predicates the RDF exporter already writes are now NAMED in properties, as plain-string mapping notes (no field added, no node element, no graph change). Node (inherited by every class): the last-hand stamps created_by em:createdBy / modified_by em:lastEditedBy / modified_at em:modifiedAt (created_at prov:generatedAtTime), the tombstone removed.ts em:removedAt / removed.by em:removedBy, the AI marker ai_assisted.by em:aiAssistedBy / .model em:aiModel / .prompt_ref em:aiPromptRef / .fields em:aiAssistedField and the verification validated_by em:validatedBy / validated_at em:validatedAt (properties_note). ResourceNode: checksum em:checksum, scope em:resourceScope, residency em:residency. SemanticShapeNode: convexshapes em:convexShape, spheres em:sphere. AnnotationRegionNode: crs em:crs, coords.frame_iri em:LocalSceneFrame. AuthorNode and AuthorAINode: verified em:orcidVerified (AuthorAINode also names orcid P48, which the exporter writes for both). LocationNodeGroup.propagation.mapping: uri em:propagation. THREE ENTRIES CORRECTED TO WHAT THE CODE WRITES (measured in rdf_exporter.py): PropertyNode.property_type was P2_has_type, is em:hasQualiaType; AuthorAINode model / prompt_reference were P3_has_note, are em:modelIdentifier / em:promptReference; ResourceFileNode.checksum was P1_is_identified_by, is em:checksum; and LocationNodeGroup.propagation said 'not serialized to triplestore' while the exporter has written the non-default value as em:propagation since c1a702c (2026-08-12). v1.6.17 (MICRO la risorsa e i suoi file, 2026-10-18, decided by E.D. 2026-09-30): NEW ResourceFileNode (FILE, crmdig:D1_Digital_Object) — the ResourceNode is the set, the ResourceFileNode is each file, reached by has_file (connections 1.6.30) with role and relative path on the edge. With one file the node is implicit (url and checksum stay on the ResourceNode, as today). ResourceNode.PACKAGINGS += file_set (a few files that call each other: obj → mtl → textures, gltf → bin, shp and companions) and datablock (one object inside a file, a blend:// locator). Representations of the same thing are sibling ResourceNodes tied by dtc_derived_from and chosen by tier and packaging. ADDITIVE: nothing narrowed, no graph changes. v1.6.16 (MICRO le annotazioni ATON sull'asset, 2026-10-15, decided by E.D.): AnnotationRegionNode gains geometry_kind 'volume' — an annotation that encloses a part of a 3D model (ATON / Hathor convex hulls and spheres) and is the proxy of no unit. The region carries no vertices: it reaches a SemanticShapeNode (convexshapes, spheres) with has_semantic_shape and the model with is_on_resource. geometry.aton.import_aton_scene makes one for every semantic id no EM node is named after (a stratigraphic unit only with an explicit create_type); api.promote_region_to_proxy turns it into the proxy of a unit later. RDF: P2_has_type 'volume', no selector, no WKT; the shape travels as itself. Additive. v1.6.15 (MICRO la geometria per origine, 2026-10-11, decided by E.D. 2026-09-30): AnnotationRegionNode's point / line / polyline keep their vertices IN THE NODE, data.coords [[x, y, z], ...] (scene-local, glTF Y-up, metres) with crs and, for a line or a polyline, length and unit — no .glb and no SemanticShape for a reading. New block coords (inline_max_vertices 500: above it the vertices go to a .glb resource via has_linked_resource, with a warning). RDF: geo:hasGeometry -> <region>/geometry geo:asWKT (POINT Z / LINESTRING Z, GeoSPARQL). The readings/<id>.glb of 2026-10-06 are migrated on opening. v1.6.14 (MICRO la cattura in RDF, 2026-09-30): DTCAcquisitionNode.mapping.by_kind — its D12 is the class of a retrieval; a capture takes the class its kind declares in em_visual_rules 1.6.24 (D2 / D11 / E65). Mapping text only, no field changed. v1.6.13 (MICRO i generi delle US, 2026-09-30, decided by E.D. the same day): stratigraphic_kind gains 'coating' — the USR (rivestimento) and its English translation USS (surface): plaster, floors, revetments — with `labels`, `codes` and `default_code` per kind; new node element `source_code` (data.source_code) keeps the code a unit came in with when it is not its kind's default, so the way back to pyArchInit gives the same code. A legacy node_type 'USR' / 'USS' opens as US + coating. v1.6.12 (MICRO la cattura nel DTC e le murature, 2026-09-30): StratigraphicUnit (US) gains the node element `stratigraphic_kind` (em.json data.stratigraphic_kind; today one value, 'masonry'): a USM is a US + masonry, and the legacy node_type 'USM' — never a type of this datamodel — opens as that. DTCAcquisitionNode's description names the two families of the acquisition axis (em_visual_rules 1.6.22: capture / retrieval). v1.6.11 (MICRO la misura in RDF, 2026-10-07): AnnotationRegionNode.properties says how the fields left unprojected by 1.6.10 now travel — the quote of a passage as oa:TextQuoteSelector, the length of a line/polyline as crm:E54_Dimension (P90 value, P91 QUDT unit, em:crs), vertex_count as em:vertexCount. CRMem (em.ttl) 1.6.5 -> 1.6.6. Mapping text only, no field changed. v1.6.10 (MICRO la geometria della lettura, 2026-10-06, decided by E.D. on 2026-09-29): AnnotationRegionNode becomes the node of THE PLACE A READING LOOKED AT, with a new field geometry_kind: region2d (default, every older region), passage (start, end, text), point, line, polyline. The three 3D kinds keep their coordinates in a .glb (glTF POINTS / LINES / LINE_STRIP) linked with has_semantic_shape exactly like a proxy's payload, never in the em.json; the node keeps vertex_count and, for line/polyline, length + unit + crs (api.measure). See the entry's geometry_kinds and glb_payload. Paired with connections 1.6.27 (is_on_resource.target += the representation models). Additive: a region without geometry_kind reads as region2d. v1.6.9 (MICRO la definizione dell'unita', 2026-10-20, decided by E.D. on 2026-09-27): StratigraphicNode.properties gains `definition`, the DEFINIZIONE of the US sheet, as an element of the node like name and description and NOT a qualia. Value = a controlled-vocabulary concept {concept, label}; em.json carries it as data.definition (CRDT field 'data.definition', no change to the frozen em.json v1 node shape); inherited by every stratigraphic subtype. The RDF projection is declared in the entry itself (`rdf`): crm:P2_has_type -> crm:E55_Type when a concept URI is present, nothing when only a label is (`label_only: null`). CRMem 1.6.4 -> 1.6.5 for the companion em:hasDefinition (subproperty of crm:P2_has_type, declared, not emitted by default). Additive only. v1.6.7 (CRMem WIRING, 2026-09-24): rimosso il campo legacy `cidoc_s3d` da tutte le mapping. Non era letto da nessuna parte del codice e portava quattro nomi di classe senza namespace, mai dichiarati e mai emessi: EpochNode = StratigraphicTimeframe; ActivityNodeGroup = StratigraphicActivity; ParadataNodeGroup = ParadataCollection; ResourceNode = ExternalResourceReference. Il prefisso CIDOC-S3D non esiste piu' in nessuno dei due datamodel. v1.6.6 (CIDOC REPAIR, 2026-09-21): classes that pointed at IRIs nobody declares. Checked by parsing the official releases, not from memory. crm:E78_Collection is gone from CIDOC CRM 7.1.3 — renamed E78_Curated_Holding — and E.D. decided NOT to follow the rename, because E78_Curated_Holding is a subclass of E24 Physical Human-Made Thing and a group of nodes is not a physical thing. The three classes that carried it therefore split, each to the class it actually is: GroupNode and RepresentationModelNodeGroup to crm:E73_Information_Object (a conceptual set, and an E90 Symbolic Object, which is what the P106i membership edge needs at both ends), ParadataNodeGroup to crm:E89_Propositional_Object — which is what a gathered body of reasoning IS and what the range of crm:P129i_is_subject_of demands, that being the predicate has_paradata_nodegroup takes in connections 1.6.17 the same day; it stays an E90 through em:NodeGroup, so the membership edge does not break. SemanticShapeNode leaves crmgeo:SP5_Geometric_Place_Expression for crm:E73_Information_Object, PROVVISORIAMENTE: SP5 is not declared at the crmgeo namespace this datamodel emits, crmgeo:SP6_Declarative_Place is the better candidate, and the decision is rinviata da E.D. — E73 commits to nothing meanwhile. crm:P131_is_identified_by, deprecated in CRM 7.x together with E82 Actor Appellation, becomes crm:P1_is_identified_by on AuthorNode (name, surname) and AuthorAINode (name). «CRMs3D» is renamed «CRMem», in components and in referenced_ontology_versions alike: the companion ontology is em.ttl and its namespace is em:, so the old name pointed at nothing anyone could look up. CRMsci moves 3.1 -> 3.2 (latest release). The eight em: terms this file and the connections datamodel cite but em.ttl never defined are now declared there (em:FunctionalUnit, em:GCPSet, em:Narrative, em:NeutralSU, em:RegistrationTransform, em:RepresentationModelNodeGroup, em:hasSubEpoch, em:validatedBy), with domain, range and superclass read off these datamodels and nothing invented. NOT TOUCHED: the `alternative` and legacy `cidoc_s3d` prose fields, which still discuss E78 as an option — prose, not a projection, and rewording them is modelling rather than repair. v1.6.5 (EM16-RMNG, 2026-09-10): adds RepresentationModelNodeGroup, the RM container as a first-class group of the graph — sixth subtype of GroupNode, keeping the parent's E78 Collection because a container IS a curatorial set. Paired with connections datamodel 1.6.14, which adds the is_in_representation_model_group membership edge and widens has_representation_model.target to accept the group. Additive only: no existing entry changed. s3Dgraphy nodes datamodel including node types with CIDOC-CRM mappings. v1.6.4 adds the ADDITIVE georeferencing_nodes section (GCPSetNode = em:GCPSet, RegistrationTransformNode = em:RegistrationTransform, both subclasses of crm:E73_Information_Object with their own extension URIs so the RDF projection stays bijective): the CONTROL and the SOLUTION that place a produced model in the world, introduced with the photogrammetry processing connector. The two modes of that connector are the SHAPE of the graph (a transform with a CRS that has_gcp_set points at = absolute; a transform with crs=null and no control set = a site-local frame; no transform at all = nobody placed it), never a flag. No existing family changed. v1.6.3 re-reads SemanticShapeNode as a PAYLOAD carrier: the proxy of a unit is now a PropertyNode of qualia type 'geometry' that points at the shape (has_semantic_shape), so the proxy inherits the paradata chain it never had. Breaking for consumers that read the proxy as a standalone SemanticShape. v1.6.2 adds AnnotationRegionNode (em:AnnotationRegion, subclass of crm:E36_Visual_Item): the geometry of a 2D annotation in NORMALISED image space, distinct from SemanticShapeNode (3D scene geometry, crmgeo:SP5) - the semantics of the 2D annotator, defined before any canvas exists. v1.6.0 inaugurates a systematic CIDOC-CRM mapping revision: complete audit of all node types against CIDOC-CRM, CRMarchaeo, CRMinf, CRMdig, CRMsci, CRMgeo; replacement of legacy 'cidoc_s3d' pseudo-class names (invented strings without IRI or superclass declaration) with formal em:/s3d: IRIs declared as proper subclasses of CRM classes; introduction of CRMinf as primary (not alternative) for the paradata chain (ParadataNode, PropertyNode interpretive case, ExtractorNode, CombinerNode); introduction of PROV-O for AuthorNode to cover both human and AI agents; alignment with the Heritage Digital Twin Ontology (HDT-O) for containment / granularity properties; LocationNodeGroup (v1.5.3) adopted as the reference pattern (CIDOC-native composition via P2_has_type → E55 Type instances, with explicit extension_status and rationale). Companion deliverables: em.ttl (formal EM extension ontology, dereferenceable via w3id.org/em/) and hdto_extension.ttl (HDT-O granularity properties: contains_HDT, contains_SU, isPrimary). v1.5.4 added RSF (Reused Special Find — spolia) as a stratigraphic subtype, octagon with red border, family=real, is_series=false. Originating DP: DP-26 (spolia project, last DP before the EM 1.5 cut). v1.5.3 added LocationNodeGroup (E53 Place + E55 Type) for spatial / locational membership orthogonal to ActivityNodeGroup (intention) and EpochNode (time). v1.5.2 added family + is_series classification metadata on stratigraphic subtypes.",
2
+ "s3Dgraphy_data_model_version": "1.6.23",
3
+ "description": "v1.6.23 (dev29, 2026-10-02, measured on San Pietro): seven properties that the round trip em.json → TTL → em.json lost now leave and come back — ResourceNode packaging / tier / digest_covers / content_digest (em:packaging, em:tier, em:digestCovers, em:contentDigest) and the declared fields of a DTC step, technique / parameters / software (em:technique, em:parameters, em:software, the last two as rdf:JSON). digest_covers admits members (a file_set). The blend:// locator stays out of RDF on purpose: it is a private path. v1.6.22 (dev28, 2026-11-01, decided by E.D. 2026-10-01 on the dev27 report): the access mode of a signature (created_auth / modified_auth / validated_auth) admits a third mode, 'declared' — an iD typed in a tool's preferences and checked by nobody (EMStudio's declared identity, EM Tools' local identity), with no attested_by; through a relay the mode is the relay's, read from the token (crdt.stamp_auth), not the client's declaration. The language a node is born in travels in the add_node op (crdt.make_op requires it of the producer, 'und' when unknown); the study's language is read only for old ops, said and counted. CRMem 1.6.12. v1.6.21 (dev27, 2026-10-31, decided by E.D. 2026-10-01, «il testo, la risorsa e la selezione» and «l'accesso sul campo»): ResourceNode.properties gains lang — on a resource the language(s) of its CONTENT, one tag or a sorted list, leaving as dcterms:language and outside the cascade of the texts — addresses (several addresses of ONE resource, same digest: em:hasAddress with em:locator, em:residency, em:checkedAt, em:reachable) and checksum_at (a dated digest, em:checksumAt). Node.properties gains created_auth / modified_auth / validated_auth: how the hand of a signature had entered, {mode: orcid | node_password, attested_by} (em:createdVia / em:modifiedVia / em:validatedVia, em:authMode, em:attestedBy). data.lang is written at birth (s3dgraphy.language.stamp_birth_language), also when equal to the study's. v1.6.20 (MICRO le traduzioni, 2026-10-29, decided by E.D. 2026-10-01, «Le traduzioni»): NEW TranslationNode (TRANSL, crm:E33_Linguistic_Object) — ONE translation of one text field of one node. The original stays a string in its field (data.lang on the node, else the study's), never overwritten; each translation is a node reached by has_translation (crm:P73_has_translation, connections 1.6.34) with data.lang (arrival), data.from_lang (departure, written because the original can change), data.field (CRDT vocabulary: description | data.<key>; a PropertyNode's value is data.value; never name), data.text, data.method (manual | ai | edition), data.source_digest (sha256 of the original translated: a different digest = «da riallineare») and data.review_requested («da rivedere»). Who: has_author; AI: data.ai_assisted, unverified until validated_by; an edition: extracted_from → the DocumentNode. RDF (em.ttl 1.6.10): Node.properties.lang names em:originalLanguage — the node's own data.lang leaves as that literal whenever it is declared, equal to the study's too, so a reader tells the original literal from the translations that share its predicate and the round trip gives data.lang back exactly where it was (the D.1 limit of 1.6.19 is closed); the TranslationNode's fields name em:sourceLanguage, em:translatedField, em:translationMethod, em:sourceDigest, em:reviewRequested. v1.6.19 (MICRO la lingua dei dati, 2026-10-27, decided by E.D. 2026-09-28): Node.properties.description becomes an object {cidoc: P3_has_note, natural_language: true, note} — the MARKER that says the description is text in a natural language and leaves in RDF with its language tag; declared once on the base class and inherited by every node type. name is NOT marked: names are invariant identities. No field added, no node element, no graph change: the em.json is the same; only the RDF literal gains its tag. v1.6.18 (MICRO i termini di em.ttl nel datamodel, 2026-10-26, decided by E.D. 2026-10-01 — the datamodel JSON is the truth, so every em: term of em.ttl is cited by a datamodel or is a written exception): the em: predicates the RDF exporter already writes are now NAMED in properties, as plain-string mapping notes (no field added, no node element, no graph change). Node (inherited by every class): the last-hand stamps created_by em:createdBy / modified_by em:lastEditedBy / modified_at em:modifiedAt (created_at prov:generatedAtTime), the tombstone removed.ts em:removedAt / removed.by em:removedBy, the AI marker ai_assisted.by em:aiAssistedBy / .model em:aiModel / .prompt_ref em:aiPromptRef / .fields em:aiAssistedField and the verification validated_by em:validatedBy / validated_at em:validatedAt (properties_note). ResourceNode: checksum em:checksum, scope em:resourceScope, residency em:residency. SemanticShapeNode: convexshapes em:convexShape, spheres em:sphere. AnnotationRegionNode: crs em:crs, coords.frame_iri em:LocalSceneFrame. AuthorNode and AuthorAINode: verified em:orcidVerified (AuthorAINode also names orcid P48, which the exporter writes for both). LocationNodeGroup.propagation.mapping: uri em:propagation. THREE ENTRIES CORRECTED TO WHAT THE CODE WRITES (measured in rdf_exporter.py): PropertyNode.property_type was P2_has_type, is em:hasQualiaType; AuthorAINode model / prompt_reference were P3_has_note, are em:modelIdentifier / em:promptReference; ResourceFileNode.checksum was P1_is_identified_by, is em:checksum; and LocationNodeGroup.propagation said 'not serialized to triplestore' while the exporter has written the non-default value as em:propagation since c1a702c (2026-08-12). v1.6.17 (MICRO la risorsa e i suoi file, 2026-10-18, decided by E.D. 2026-09-30): NEW ResourceFileNode (FILE, crmdig:D1_Digital_Object) — the ResourceNode is the set, the ResourceFileNode is each file, reached by has_file (connections 1.6.30) with role and relative path on the edge. With one file the node is implicit (url and checksum stay on the ResourceNode, as today). ResourceNode.PACKAGINGS += file_set (a few files that call each other: obj → mtl → textures, gltf → bin, shp and companions) and datablock (one object inside a file, a blend:// locator). Representations of the same thing are sibling ResourceNodes tied by dtc_derived_from and chosen by tier and packaging. ADDITIVE: nothing narrowed, no graph changes. v1.6.16 (MICRO le annotazioni ATON sull'asset, 2026-10-15, decided by E.D.): AnnotationRegionNode gains geometry_kind 'volume' — an annotation that encloses a part of a 3D model (ATON / Hathor convex hulls and spheres) and is the proxy of no unit. The region carries no vertices: it reaches a SemanticShapeNode (convexshapes, spheres) with has_semantic_shape and the model with is_on_resource. geometry.aton.import_aton_scene makes one for every semantic id no EM node is named after (a stratigraphic unit only with an explicit create_type); api.promote_region_to_proxy turns it into the proxy of a unit later. RDF: P2_has_type 'volume', no selector, no WKT; the shape travels as itself. Additive. v1.6.15 (MICRO la geometria per origine, 2026-10-11, decided by E.D. 2026-09-30): AnnotationRegionNode's point / line / polyline keep their vertices IN THE NODE, data.coords [[x, y, z], ...] (scene-local, glTF Y-up, metres) with crs and, for a line or a polyline, length and unit — no .glb and no SemanticShape for a reading. New block coords (inline_max_vertices 500: above it the vertices go to a .glb resource via has_linked_resource, with a warning). RDF: geo:hasGeometry -> <region>/geometry geo:asWKT (POINT Z / LINESTRING Z, GeoSPARQL). The readings/<id>.glb of 2026-10-06 are migrated on opening. v1.6.14 (MICRO la cattura in RDF, 2026-09-30): DTCAcquisitionNode.mapping.by_kind — its D12 is the class of a retrieval; a capture takes the class its kind declares in em_visual_rules 1.6.24 (D2 / D11 / E65). Mapping text only, no field changed. v1.6.13 (MICRO i generi delle US, 2026-09-30, decided by E.D. the same day): stratigraphic_kind gains 'coating' — the USR (rivestimento) and its English translation USS (surface): plaster, floors, revetments — with `labels`, `codes` and `default_code` per kind; new node element `source_code` (data.source_code) keeps the code a unit came in with when it is not its kind's default, so the way back to pyArchInit gives the same code. A legacy node_type 'USR' / 'USS' opens as US + coating. v1.6.12 (MICRO la cattura nel DTC e le murature, 2026-09-30): StratigraphicUnit (US) gains the node element `stratigraphic_kind` (em.json data.stratigraphic_kind; today one value, 'masonry'): a USM is a US + masonry, and the legacy node_type 'USM' — never a type of this datamodel — opens as that. DTCAcquisitionNode's description names the two families of the acquisition axis (em_visual_rules 1.6.22: capture / retrieval). v1.6.11 (MICRO la misura in RDF, 2026-10-07): AnnotationRegionNode.properties says how the fields left unprojected by 1.6.10 now travel — the quote of a passage as oa:TextQuoteSelector, the length of a line/polyline as crm:E54_Dimension (P90 value, P91 QUDT unit, em:crs), vertex_count as em:vertexCount. CRMem (em.ttl) 1.6.5 -> 1.6.6. Mapping text only, no field changed. v1.6.10 (MICRO la geometria della lettura, 2026-10-06, decided by E.D. on 2026-09-29): AnnotationRegionNode becomes the node of THE PLACE A READING LOOKED AT, with a new field geometry_kind: region2d (default, every older region), passage (start, end, text), point, line, polyline. The three 3D kinds keep their coordinates in a .glb (glTF POINTS / LINES / LINE_STRIP) linked with has_semantic_shape exactly like a proxy's payload, never in the em.json; the node keeps vertex_count and, for line/polyline, length + unit + crs (api.measure). See the entry's geometry_kinds and glb_payload. Paired with connections 1.6.27 (is_on_resource.target += the representation models). Additive: a region without geometry_kind reads as region2d. v1.6.9 (MICRO la definizione dell'unita', 2026-10-20, decided by E.D. on 2026-09-27): StratigraphicNode.properties gains `definition`, the DEFINIZIONE of the US sheet, as an element of the node like name and description and NOT a qualia. Value = a controlled-vocabulary concept {concept, label}; em.json carries it as data.definition (CRDT field 'data.definition', no change to the frozen em.json v1 node shape); inherited by every stratigraphic subtype. The RDF projection is declared in the entry itself (`rdf`): crm:P2_has_type -> crm:E55_Type when a concept URI is present, nothing when only a label is (`label_only: null`). CRMem 1.6.4 -> 1.6.5 for the companion em:hasDefinition (subproperty of crm:P2_has_type, declared, not emitted by default). Additive only. v1.6.7 (CRMem WIRING, 2026-09-24): rimosso il campo legacy `cidoc_s3d` da tutte le mapping. Non era letto da nessuna parte del codice e portava quattro nomi di classe senza namespace, mai dichiarati e mai emessi: EpochNode = StratigraphicTimeframe; ActivityNodeGroup = StratigraphicActivity; ParadataNodeGroup = ParadataCollection; ResourceNode = ExternalResourceReference. Il prefisso CIDOC-S3D non esiste piu' in nessuno dei due datamodel. v1.6.6 (CIDOC REPAIR, 2026-09-21): classes that pointed at IRIs nobody declares. Checked by parsing the official releases, not from memory. crm:E78_Collection is gone from CIDOC CRM 7.1.3 — renamed E78_Curated_Holding — and E.D. decided NOT to follow the rename, because E78_Curated_Holding is a subclass of E24 Physical Human-Made Thing and a group of nodes is not a physical thing. The three classes that carried it therefore split, each to the class it actually is: GroupNode and RepresentationModelNodeGroup to crm:E73_Information_Object (a conceptual set, and an E90 Symbolic Object, which is what the P106i membership edge needs at both ends), ParadataNodeGroup to crm:E89_Propositional_Object — which is what a gathered body of reasoning IS and what the range of crm:P129i_is_subject_of demands, that being the predicate has_paradata_nodegroup takes in connections 1.6.17 the same day; it stays an E90 through em:NodeGroup, so the membership edge does not break. SemanticShapeNode leaves crmgeo:SP5_Geometric_Place_Expression for crm:E73_Information_Object, PROVVISORIAMENTE: SP5 is not declared at the crmgeo namespace this datamodel emits, crmgeo:SP6_Declarative_Place is the better candidate, and the decision is rinviata da E.D. — E73 commits to nothing meanwhile. crm:P131_is_identified_by, deprecated in CRM 7.x together with E82 Actor Appellation, becomes crm:P1_is_identified_by on AuthorNode (name, surname) and AuthorAINode (name). «CRMs3D» is renamed «CRMem», in components and in referenced_ontology_versions alike: the companion ontology is em.ttl and its namespace is em:, so the old name pointed at nothing anyone could look up. CRMsci moves 3.1 -> 3.2 (latest release). The eight em: terms this file and the connections datamodel cite but em.ttl never defined are now declared there (em:FunctionalUnit, em:GCPSet, em:Narrative, em:NeutralSU, em:RegistrationTransform, em:RepresentationModelNodeGroup, em:hasSubEpoch, em:validatedBy), with domain, range and superclass read off these datamodels and nothing invented. NOT TOUCHED: the `alternative` and legacy `cidoc_s3d` prose fields, which still discuss E78 as an option — prose, not a projection, and rewording them is modelling rather than repair. v1.6.5 (EM16-RMNG, 2026-09-10): adds RepresentationModelNodeGroup, the RM container as a first-class group of the graph — sixth subtype of GroupNode, keeping the parent's E78 Collection because a container IS a curatorial set. Paired with connections datamodel 1.6.14, which adds the is_in_representation_model_group membership edge and widens has_representation_model.target to accept the group. Additive only: no existing entry changed. s3Dgraphy nodes datamodel including node types with CIDOC-CRM mappings. v1.6.4 adds the ADDITIVE georeferencing_nodes section (GCPSetNode = em:GCPSet, RegistrationTransformNode = em:RegistrationTransform, both subclasses of crm:E73_Information_Object with their own extension URIs so the RDF projection stays bijective): the CONTROL and the SOLUTION that place a produced model in the world, introduced with the photogrammetry processing connector. The two modes of that connector are the SHAPE of the graph (a transform with a CRS that has_gcp_set points at = absolute; a transform with crs=null and no control set = a site-local frame; no transform at all = nobody placed it), never a flag. No existing family changed. v1.6.3 re-reads SemanticShapeNode as a PAYLOAD carrier: the proxy of a unit is now a PropertyNode of qualia type 'geometry' that points at the shape (has_semantic_shape), so the proxy inherits the paradata chain it never had. Breaking for consumers that read the proxy as a standalone SemanticShape. v1.6.2 adds AnnotationRegionNode (em:AnnotationRegion, subclass of crm:E36_Visual_Item): the geometry of a 2D annotation in NORMALISED image space, distinct from SemanticShapeNode (3D scene geometry, crmgeo:SP5) - the semantics of the 2D annotator, defined before any canvas exists. v1.6.0 inaugurates a systematic CIDOC-CRM mapping revision: complete audit of all node types against CIDOC-CRM, CRMarchaeo, CRMinf, CRMdig, CRMsci, CRMgeo; replacement of legacy 'cidoc_s3d' pseudo-class names (invented strings without IRI or superclass declaration) with formal em:/s3d: IRIs declared as proper subclasses of CRM classes; introduction of CRMinf as primary (not alternative) for the paradata chain (ParadataNode, PropertyNode interpretive case, ExtractorNode, CombinerNode); introduction of PROV-O for AuthorNode to cover both human and AI agents; alignment with the Heritage Digital Twin Ontology (HDT-O) for containment / granularity properties; LocationNodeGroup (v1.5.3) adopted as the reference pattern (CIDOC-native composition via P2_has_type → E55 Type instances, with explicit extension_status and rationale). Companion deliverables: em.ttl (formal EM extension ontology, dereferenceable via w3id.org/em/) and hdto_extension.ttl (HDT-O granularity properties: contains_HDT, contains_SU, isPrimary). v1.5.4 added RSF (Reused Special Find — spolia) as a stratigraphic subtype, octagon with red border, family=real, is_series=false. Originating DP: DP-26 (spolia project, last DP before the EM 1.5 cut). v1.5.3 added LocationNodeGroup (E53 Place + E55 Type) for spatial / locational membership orthogonal to ActivityNodeGroup (intention) and EpochNode (time). v1.5.2 added family + is_series classification metadata on stratigraphic subtypes.",
4
4
  "components": [
5
5
  "CIDOC-CRM",
6
6
  "CRMarchaeo",
@@ -48,7 +48,7 @@
48
48
  "source": "https://www.w3.org/TR/prov-o/"
49
49
  },
50
50
  "CRMem": {
51
- "version": "1.6.12",
51
+ "version": "1.6.13",
52
52
  "source": "internal em.ttl / hdto_extension.ttl companion ontologies"
53
53
  }
54
54
  },
@@ -1079,6 +1079,10 @@
1079
1079
  "checksum": "em:checksum",
1080
1080
  "scope": "em:resourceScope",
1081
1081
  "residency": "em:residency",
1082
+ "packaging": {"rdf": "em:packaging", "note": "1.6.23 (dev29): how the bytes are packed (file | file_set | directory | archive | datablock, the dtcstamp PACKAGINGS), DECLARED — never the effective_packaging fallback. Emitted only when recorded."},
1083
+ "tier": {"rdf": "em:tier", "note": "1.6.23 (dev29): master | distribution | …, declared; emitted only when recorded."},
1084
+ "digest_covers": {"rdf": "em:digestCovers", "note": "1.6.23 (dev29): what em:checksum covers — artifact (the bytes), payload, members (the canonical list of the members of a file_set, dtcstamp.members_digest). add_resource writes members for a file_set; a legacy members_digest equal to the checksum leaves as members."},
1085
+ "content_digest": {"rdf": "em:contentDigest", "note": "1.6.23 (dev29): the digest of the CONTENT of a tree (a folder or its .3tz), dtcstamp.content_digest — the same for both forms."},
1082
1086
  "addresses": {
1083
1087
  "rdf": "em:hasAddress",
1084
1088
  "note": "1.6.21 (dev27, decided by E.D. 2026-10-01, «più risorse per un documento»): the SAME bytes — the same digest — are ONE resource with several addresses (the same PDF on the disk, on MinIO, on Zenodo); different manifestations are sister resources. data.addresses = [{locator, residency?, checked_at?, ok?}], written only when there is a second address or a check; address 0 is data.url, which a consumer that knows only url keeps reading. ok true = reachable at checked_at, false = dead (a warning while a live one remains, never removed by a check), absent = never checked. Written by s3dgraphy.resources.addresses (add_address refuses a different digest, and a resource with no digest). In RDF every locator is an rdfs:seeAlso of the resource, and each address <resource>/address/<i> em:hasAddress, with em:locator, em:residency, em:checkedAt, em:reachable."
@@ -1677,7 +1681,10 @@
1677
1681
  "properties": {
1678
1682
  "name": "P1_is_identified_by",
1679
1683
  "description": "P3_has_note",
1680
- "dtc_kind": "P2_has_type"
1684
+ "dtc_kind": "P2_has_type",
1685
+ "technique": {"rdf": "em:technique", "note": "1.6.23 (dev29): the free word of whoever did the gesture, beside the controlled dtc_kind. Leaves for RDF and comes back (it was lost by the round trip, measured on San Pietro)."},
1686
+ "parameters": {"rdf": "em:parameters", "note": "1.6.23 (dev29): how the technique was applied, a dict; ONE rdf:JSON literal, because the stamp format owns its shape."},
1687
+ "software": {"rdf": "em:software", "note": "1.6.23 (dev29): the list of software of the step, each {name, version, commit?}; ONE rdf:JSON literal. data.tool is read back from its first entry, as declare_derivation writes it."}
1681
1688
  }
1682
1689
  },
1683
1690
  "DTCAcquisitionNode": {
@@ -1705,7 +1712,10 @@
1705
1712
  "properties": {
1706
1713
  "name": "P1_is_identified_by",
1707
1714
  "description": "P3_has_note",
1708
- "dtc_kind": "P2_has_type"
1715
+ "dtc_kind": "P2_has_type",
1716
+ "technique": {"rdf": "em:technique", "note": "1.6.23 (dev29): the free word of whoever did the gesture, beside the controlled dtc_kind. Leaves for RDF and comes back (it was lost by the round trip, measured on San Pietro)."},
1717
+ "parameters": {"rdf": "em:parameters", "note": "1.6.23 (dev29): how the technique was applied, a dict; ONE rdf:JSON literal, because the stamp format owns its shape."},
1718
+ "software": {"rdf": "em:software", "note": "1.6.23 (dev29): the list of software of the step, each {name, version, commit?}; ONE rdf:JSON literal. data.tool is read back from its first entry, as declare_derivation writes it."}
1709
1719
  }
1710
1720
  },
1711
1721
  "DTCDeviceNode": {
@@ -1,4 +1,4 @@
1
- __version__ = "1.6.0.dev28"
1
+ __version__ = "1.6.0.dev29"
2
2
  __datamodel_version__ = "1.5.5" # s3Dgraphy connections datamodel version
3
3
 
4
4
  # s3Dgraphy/__init__.py