s3dgraphy 1.5.2__tar.gz → 1.6.0.dev5__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.
- {s3dgraphy-1.5.2/src/s3dgraphy.egg-info → s3dgraphy-1.6.0.dev5}/PKG-INFO +81 -7
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/README.md +69 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/pyproject.toml +47 -15
- s3dgraphy-1.6.0.dev5/src/s3dgraphy/JSON_config/em.ttl +442 -0
- s3dgraphy-1.6.0.dev5/src/s3dgraphy/JSON_config/em_palette_icons.json +15 -0
- s3dgraphy-1.6.0.dev5/src/s3dgraphy/JSON_config/em_qualia_types.json +1188 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/em_visual_rules.json +84 -0
- s3dgraphy-1.6.0.dev5/src/s3dgraphy/JSON_config/hdto_extension.ttl +177 -0
- s3dgraphy-1.6.0.dev5/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json +817 -0
- s3dgraphy-1.5.2/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json → s3dgraphy-1.6.0.dev5/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json.v155.bak +1 -1
- s3dgraphy-1.6.0.dev5/src/s3dgraphy/JSON_config/s3Dgraphy_node_datamodel.json +1142 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/__init__.py +1 -1
- s3dgraphy-1.6.0.dev5/src/s3dgraphy/exporter/__init__.py +21 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/canvas_generator.py +64 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/graphml_exporter.py +161 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/json_exporter.py +140 -26
- s3dgraphy-1.6.0.dev5/src/s3dgraphy/exporter/rdf_exporter.py +693 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/importer/base_importer.py +98 -3
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/importer/import_graphml.py +286 -1
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/importer/mapped_xlsx_importer.py +78 -9
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/importer/pyarchinit_importer.py +160 -12
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/importer/qualia_importer.py +10 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/importer/xlsx_importer.py +56 -6
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/mappings/pyarchinit/pyarchinit_us_mapping.json +25 -6
- s3dgraphy-1.6.0.dev5/src/s3dgraphy/mappings/template_emdb_mapping.json +55 -0
- s3dgraphy-1.6.0.dev5/src/s3dgraphy/mappings/template_pyarchinit_mapping.json +103 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/__init__.py +15 -10
- s3dgraphy-1.6.0.dev5/src/s3dgraphy/nodes/hdt_node.py +110 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5/src/s3dgraphy.egg-info}/PKG-INFO +81 -7
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy.egg-info/SOURCES.txt +11 -1
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy.egg-info/requires.txt +11 -3
- s3dgraphy-1.6.0.dev5/tests/test_composite_node_name.py +232 -0
- s3dgraphy-1.6.0.dev5/tests/test_filtered_import.py +232 -0
- s3dgraphy-1.6.0.dev5/tests/test_lossless_roundtrip.py +773 -0
- s3dgraphy-1.5.2/src/s3dgraphy/JSON_config/em_palette_icons.json +0 -14
- s3dgraphy-1.5.2/src/s3dgraphy/JSON_config/em_qualia_types.json +0 -572
- s3dgraphy-1.5.2/src/s3dgraphy/JSON_config/s3Dgraphy_node_datamodel.json +0 -837
- s3dgraphy-1.5.2/src/s3dgraphy/exporter/__init__.py +0 -6
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/LICENSE +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/MANIFEST.in +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/setup.cfg +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/em_document_types.json +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/em_extractor_types.json +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/em_qualia_types_additions.json +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/new_qualia_template.json +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/outdated_s3dgraphy.ttl +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/outdated_s3dgraphy_nomapping.ttl +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/RSF.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/RSF.svg +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/SF.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/TSU.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/US.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/USD.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/USVn.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/USVs.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/VSF.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/combiner.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/continuity.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/document.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/extractor.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/property.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/serSU.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/serUSD.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/2D/serUSV.png +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/RSF.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/SF.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/TSU.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/US.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/USD.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/USVn.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/USVs.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/VSF.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/combiner.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/continuity.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/document.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/extractor.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/property.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/serSU.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/serUSD.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/JSON_config/src/3D/serUSV.glb +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/classification.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/data/StratiMiner_Extraction_Prompt.md +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/diagnostics.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/edges/__init__.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/edges/connections_loader.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/edges/edge.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/__init__.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/edge_generator.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/epoch_generator.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/graphml_patcher.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/group_node_generator.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/node_generator.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/node_registry.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/palette_resources.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/paradata_generator.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/paradata_image_generator.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/paradata_node_generators.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/table_node_generator.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/graphml/utils.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/exporter/unified_xlsx_exporter.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/graph.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/importer/__init__.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/importer/unified_xlsx_importer.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/indices.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/mappings/__init__.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/mappings/emdb/generic_specialfind_mapping.json +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/mappings/emdb/site_properties_mapping.json +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/mappings/emdb/usm_mapping.json +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/mappings/generic/excel_to_graphml_mapping.json +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/mappings/registry.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/merge/__init__.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/merge/graph_merger.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/multigraph/__init__.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/multigraph/multigraph.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/author_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/base_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/combiner_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/document_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/embargo_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/epoch_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/extractor_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/geo_position_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/graph_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/group_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/license_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/link_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/paradata_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/property_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/representation_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/semantic_shape_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/nodes/stratigraphic_node.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/resolvers/__init__.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/resolvers/builtin_rules.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/resolvers/property_resolver.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/templates/em_data_template.xlsx +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/templates/em_palette_template.graphml +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/temporal/__init__.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/temporal/inference_engine.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/transforms/__init__.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/transforms/aux_tracking.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/transforms/compact.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/transforms/materialize_continuity.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/utils/__init__.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/utils/utils.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy/utils/visual_layout.py +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy.egg-info/dependency_links.txt +0 -0
- {s3dgraphy-1.5.2 → s3dgraphy-1.6.0.dev5}/src/s3dgraphy.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: s3dgraphy
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.0.dev5
|
|
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>
|
|
@@ -32,10 +32,17 @@ Requires-Python: >=3.9
|
|
|
32
32
|
Description-Content-Type: text/markdown
|
|
33
33
|
License-File: LICENSE
|
|
34
34
|
Requires-Dist: pandas>=2.0.0
|
|
35
|
-
Requires-Dist: numpy>=1.21.0
|
|
36
35
|
Requires-Dist: lxml>=4.9.0
|
|
37
36
|
Requires-Dist: openpyxl>=3.0.0
|
|
38
37
|
Requires-Dist: networkx>=3.0
|
|
38
|
+
Provides-Extra: rdf
|
|
39
|
+
Requires-Dist: rdflib>=7.0; extra == "rdf"
|
|
40
|
+
Provides-Extra: rdf-embedded
|
|
41
|
+
Requires-Dist: rdflib>=7.0; extra == "rdf-embedded"
|
|
42
|
+
Requires-Dist: pyoxigraph>=0.4; extra == "rdf-embedded"
|
|
43
|
+
Provides-Extra: visualization
|
|
44
|
+
Requires-Dist: matplotlib>=3.0; extra == "visualization"
|
|
45
|
+
Requires-Dist: plotly>=5.0; extra == "visualization"
|
|
39
46
|
Provides-Extra: dev
|
|
40
47
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
41
48
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -49,12 +56,10 @@ Provides-Extra: docs
|
|
|
49
56
|
Requires-Dist: sphinx>=5.0; extra == "docs"
|
|
50
57
|
Requires-Dist: sphinx-rtd-theme; extra == "docs"
|
|
51
58
|
Requires-Dist: myst-parser; extra == "docs"
|
|
52
|
-
Provides-Extra: visualization
|
|
53
|
-
Requires-Dist: networkx>=3.0; extra == "visualization"
|
|
54
|
-
Requires-Dist: matplotlib>=3.0; extra == "visualization"
|
|
55
|
-
Requires-Dist: plotly>=5.0; extra == "visualization"
|
|
56
59
|
Provides-Extra: full
|
|
57
|
-
Requires-Dist: s3dgraphy[
|
|
60
|
+
Requires-Dist: s3dgraphy[rdf-embedded,visualization]; extra == "full"
|
|
61
|
+
Provides-Extra: all
|
|
62
|
+
Requires-Dist: s3dgraphy[dev,docs,full]; extra == "all"
|
|
58
63
|
Dynamic: license-file
|
|
59
64
|
|
|
60
65
|
# s3dgraphy
|
|
@@ -152,6 +157,75 @@ graph.export_json("stratigraphy.json")
|
|
|
152
157
|
- **Virtual Archaeology**: Create interactive 3D experiences
|
|
153
158
|
- **Research Integration**: Connect archaeological data with other disciplines
|
|
154
159
|
|
|
160
|
+
## Mapping JSON files
|
|
161
|
+
|
|
162
|
+
The `src/s3dgraphy/mappings/` folder contains JSON templates that describe how
|
|
163
|
+
to import data from external tabular sources (SQLite tables from PyArchInit,
|
|
164
|
+
XLSX files from EMdb, generic CSVs, etc.) into an s3dgraphy graph.
|
|
165
|
+
|
|
166
|
+
Two template files live at the root of the folder for reference:
|
|
167
|
+
|
|
168
|
+
- `template_pyarchinit_mapping.json` — for SQLite-based tables (PyArchInit-style)
|
|
169
|
+
- `template_emdb_mapping.json` — for XLSX-based tables (EMdb-style)
|
|
170
|
+
|
|
171
|
+
These templates are NOT loaded automatically by `MappingRegistry`, which only
|
|
172
|
+
scans the `pyarchinit/`, `emdb/`, and `generic/` subdirectories. To use one as
|
|
173
|
+
a starting point, copy it to the appropriate subdirectory and adapt it to your
|
|
174
|
+
table structure.
|
|
175
|
+
|
|
176
|
+
The templates document the schema inline. In addition to `is_id`,
|
|
177
|
+
`is_description`, `is_attribute`, and `node_type`, 1.6 introduces two new
|
|
178
|
+
optional flags on each `column_mappings` entry:
|
|
179
|
+
|
|
180
|
+
- `is_filter` — marks the column as a candidate filter. Importers expose these
|
|
181
|
+
via `get_filter_columns()` so a consumer application can present a dropdown
|
|
182
|
+
before triggering the import.
|
|
183
|
+
- `filter_required` — when `true`, the consumer is expected to force the user
|
|
184
|
+
to pick a value (no "All values" option). When `false`, the filter is
|
|
185
|
+
optional.
|
|
186
|
+
|
|
187
|
+
Each importer (`PyArchInitImporter`, `MappedXLSXImporter`, `XLSXImporter`) now
|
|
188
|
+
accepts a `filters={col: value, ...}` kwarg with AND semantics, and exposes a
|
|
189
|
+
`get_distinct_values(col)` helper for populating the dropdown. The semantics
|
|
190
|
+
are deliberately library-side and make no assumption about who renders the
|
|
191
|
+
filter UI.
|
|
192
|
+
|
|
193
|
+
**Full schema reference:**
|
|
194
|
+
[Mapping JSON Schema Reference](https://docs.extendedmatrix.org/projects/s3dgraphy/en/latest/importers/mapping_schema.html)
|
|
195
|
+
documents every key (`table_settings`, `column_mappings`, `relations`) and the
|
|
196
|
+
1.6 filter flags in detail.
|
|
197
|
+
|
|
198
|
+
### Consumer-side quick start
|
|
199
|
+
|
|
200
|
+
```python
|
|
201
|
+
from s3dgraphy.importer.pyarchinit_importer import PyArchInitImporter
|
|
202
|
+
|
|
203
|
+
# 1) Probe the mapping: discover filter columns and their values.
|
|
204
|
+
probe = PyArchInitImporter(
|
|
205
|
+
filepath="excavation.sqlite",
|
|
206
|
+
mapping_name="pyarchinit_us_mapping",
|
|
207
|
+
)
|
|
208
|
+
for spec in probe.get_filter_columns():
|
|
209
|
+
column = spec["column"]
|
|
210
|
+
label = spec["display_name"]
|
|
211
|
+
required = spec["filter_required"]
|
|
212
|
+
values = probe.get_distinct_values(column)
|
|
213
|
+
print(f"{label} ({'required' if required else 'optional'}): {values}")
|
|
214
|
+
|
|
215
|
+
# 2) Import only the subset the user picked.
|
|
216
|
+
importer = PyArchInitImporter(
|
|
217
|
+
filepath="excavation.sqlite",
|
|
218
|
+
mapping_name="pyarchinit_us_mapping",
|
|
219
|
+
filters={"sito": "Pompei", "area": "A"},
|
|
220
|
+
)
|
|
221
|
+
graph = importer.parse()
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
`filters` defaults to `None` (no filtering), so all existing code continues
|
|
225
|
+
to work unchanged. Multiple entries are combined with logical AND; values
|
|
226
|
+
match exactly and case-sensitively. The same flow applies to
|
|
227
|
+
`MappedXLSXImporter` and `XLSXImporter` for XLSX sources.
|
|
228
|
+
|
|
155
229
|
## 📖 Documentation
|
|
156
230
|
|
|
157
231
|
- **[User Guide](https://docs.extendedmatrix.org/projects/s3dgraphy/)** - Complete documentation
|
|
@@ -93,6 +93,75 @@ graph.export_json("stratigraphy.json")
|
|
|
93
93
|
- **Virtual Archaeology**: Create interactive 3D experiences
|
|
94
94
|
- **Research Integration**: Connect archaeological data with other disciplines
|
|
95
95
|
|
|
96
|
+
## Mapping JSON files
|
|
97
|
+
|
|
98
|
+
The `src/s3dgraphy/mappings/` folder contains JSON templates that describe how
|
|
99
|
+
to import data from external tabular sources (SQLite tables from PyArchInit,
|
|
100
|
+
XLSX files from EMdb, generic CSVs, etc.) into an s3dgraphy graph.
|
|
101
|
+
|
|
102
|
+
Two template files live at the root of the folder for reference:
|
|
103
|
+
|
|
104
|
+
- `template_pyarchinit_mapping.json` — for SQLite-based tables (PyArchInit-style)
|
|
105
|
+
- `template_emdb_mapping.json` — for XLSX-based tables (EMdb-style)
|
|
106
|
+
|
|
107
|
+
These templates are NOT loaded automatically by `MappingRegistry`, which only
|
|
108
|
+
scans the `pyarchinit/`, `emdb/`, and `generic/` subdirectories. To use one as
|
|
109
|
+
a starting point, copy it to the appropriate subdirectory and adapt it to your
|
|
110
|
+
table structure.
|
|
111
|
+
|
|
112
|
+
The templates document the schema inline. In addition to `is_id`,
|
|
113
|
+
`is_description`, `is_attribute`, and `node_type`, 1.6 introduces two new
|
|
114
|
+
optional flags on each `column_mappings` entry:
|
|
115
|
+
|
|
116
|
+
- `is_filter` — marks the column as a candidate filter. Importers expose these
|
|
117
|
+
via `get_filter_columns()` so a consumer application can present a dropdown
|
|
118
|
+
before triggering the import.
|
|
119
|
+
- `filter_required` — when `true`, the consumer is expected to force the user
|
|
120
|
+
to pick a value (no "All values" option). When `false`, the filter is
|
|
121
|
+
optional.
|
|
122
|
+
|
|
123
|
+
Each importer (`PyArchInitImporter`, `MappedXLSXImporter`, `XLSXImporter`) now
|
|
124
|
+
accepts a `filters={col: value, ...}` kwarg with AND semantics, and exposes a
|
|
125
|
+
`get_distinct_values(col)` helper for populating the dropdown. The semantics
|
|
126
|
+
are deliberately library-side and make no assumption about who renders the
|
|
127
|
+
filter UI.
|
|
128
|
+
|
|
129
|
+
**Full schema reference:**
|
|
130
|
+
[Mapping JSON Schema Reference](https://docs.extendedmatrix.org/projects/s3dgraphy/en/latest/importers/mapping_schema.html)
|
|
131
|
+
documents every key (`table_settings`, `column_mappings`, `relations`) and the
|
|
132
|
+
1.6 filter flags in detail.
|
|
133
|
+
|
|
134
|
+
### Consumer-side quick start
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
from s3dgraphy.importer.pyarchinit_importer import PyArchInitImporter
|
|
138
|
+
|
|
139
|
+
# 1) Probe the mapping: discover filter columns and their values.
|
|
140
|
+
probe = PyArchInitImporter(
|
|
141
|
+
filepath="excavation.sqlite",
|
|
142
|
+
mapping_name="pyarchinit_us_mapping",
|
|
143
|
+
)
|
|
144
|
+
for spec in probe.get_filter_columns():
|
|
145
|
+
column = spec["column"]
|
|
146
|
+
label = spec["display_name"]
|
|
147
|
+
required = spec["filter_required"]
|
|
148
|
+
values = probe.get_distinct_values(column)
|
|
149
|
+
print(f"{label} ({'required' if required else 'optional'}): {values}")
|
|
150
|
+
|
|
151
|
+
# 2) Import only the subset the user picked.
|
|
152
|
+
importer = PyArchInitImporter(
|
|
153
|
+
filepath="excavation.sqlite",
|
|
154
|
+
mapping_name="pyarchinit_us_mapping",
|
|
155
|
+
filters={"sito": "Pompei", "area": "A"},
|
|
156
|
+
)
|
|
157
|
+
graph = importer.parse()
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
`filters` defaults to `None` (no filtering), so all existing code continues
|
|
161
|
+
to work unchanged. Multiple entries are combined with logical AND; values
|
|
162
|
+
match exactly and case-sensitively. The same flow applies to
|
|
163
|
+
`MappedXLSXImporter` and `XLSXImporter` for XLSX sources.
|
|
164
|
+
|
|
96
165
|
## 📖 Documentation
|
|
97
166
|
|
|
98
167
|
- **[User Guide](https://docs.extendedmatrix.org/projects/s3dgraphy/)** - Complete documentation
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "s3dgraphy"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.6.0.dev5"
|
|
8
8
|
description = "3D Stratigraphic Graph Management Library for archaeological and heritage applications"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -44,11 +44,13 @@ classifiers = [
|
|
|
44
44
|
]
|
|
45
45
|
|
|
46
46
|
dependencies = [
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
"
|
|
47
|
+
# Strict runtime dependencies — directly imported by s3dgraphy core.
|
|
48
|
+
# Kept minimal: numpy was removed in 1.6.0 (only transitive via pandas;
|
|
49
|
+
# no direct s3dgraphy code imports numpy).
|
|
50
|
+
"pandas>=2.0.0", # used by xlsx_importer, mapping system
|
|
51
|
+
"lxml>=4.9.0", # used by graphml importer/exporter
|
|
52
|
+
"openpyxl>=3.0.0", # used by xlsx_importer
|
|
53
|
+
"networkx>=3.0", # used by temporal/inference_engine.py
|
|
52
54
|
]
|
|
53
55
|
|
|
54
56
|
[project.urls]
|
|
@@ -60,29 +62,59 @@ Repository = "https://github.com/zalmoxes-laran/s3dgraphy.git"
|
|
|
60
62
|
"Extended Matrix" = "https://www.extendedmatrix.org"
|
|
61
63
|
Changelog = "https://github.com/zalmoxes-laran/s3dgraphy/blob/main/CHANGELOG.md"
|
|
62
64
|
|
|
65
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
66
|
+
# Optional features — pip install s3dgraphy[<extra>]
|
|
67
|
+
#
|
|
68
|
+
# Pattern: each feature that requires extra runtime libraries is opt-in.
|
|
69
|
+
# This keeps the core install small and avoids forcing rdflib/pyoxigraph
|
|
70
|
+
# on consumers that only need GraphML/JSON/xlsx pipelines.
|
|
71
|
+
#
|
|
72
|
+
# Recommended for most users:
|
|
73
|
+
# pip install s3dgraphy[full]
|
|
74
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
63
75
|
[project.optional-dependencies]
|
|
76
|
+
rdf = [
|
|
77
|
+
# RDF export pipeline (RDFExporter → Turtle / N-Triples / JSON-LD / TriG / RDF-XML)
|
|
78
|
+
# via s3dgraphy.exporter.rdf_exporter. Without this extra, importing
|
|
79
|
+
# RDFExporter raises ImportError (gracefully handled by exporter/__init__.py).
|
|
80
|
+
"rdflib>=7.0",
|
|
81
|
+
]
|
|
82
|
+
rdf-embedded = [
|
|
83
|
+
# RDF export + embedded SPARQL store (no separate server required).
|
|
84
|
+
# Planned for s3dgraphy v1.6.3+ (SPARQL endpoint read/write workflow).
|
|
85
|
+
"rdflib>=7.0",
|
|
86
|
+
"pyoxigraph>=0.4",
|
|
87
|
+
]
|
|
88
|
+
visualization = [
|
|
89
|
+
# Plotting / network visualization helpers. networkx itself is strict
|
|
90
|
+
# (used by temporal/inference_engine) so it is NOT listed here to avoid
|
|
91
|
+
# a duplicate constraint that could confuse pip resolvers.
|
|
92
|
+
"matplotlib>=3.0",
|
|
93
|
+
"plotly>=5.0",
|
|
94
|
+
]
|
|
64
95
|
dev = [
|
|
65
96
|
"pytest>=7.0",
|
|
66
|
-
"pytest-cov",
|
|
97
|
+
"pytest-cov",
|
|
67
98
|
"black",
|
|
68
99
|
"flake8",
|
|
69
100
|
"mypy",
|
|
70
101
|
"build",
|
|
71
102
|
"twine",
|
|
72
|
-
"bump2version"
|
|
103
|
+
"bump2version",
|
|
73
104
|
]
|
|
74
105
|
docs = [
|
|
75
106
|
"sphinx>=5.0",
|
|
76
107
|
"sphinx-rtd-theme",
|
|
77
|
-
"myst-parser"
|
|
78
|
-
]
|
|
79
|
-
visualization = [
|
|
80
|
-
"networkx>=3.0",
|
|
81
|
-
"matplotlib>=3.0",
|
|
82
|
-
"plotly>=5.0"
|
|
108
|
+
"myst-parser",
|
|
83
109
|
]
|
|
110
|
+
# Convenience aggregate — installs every runtime feature (RDF + viz)
|
|
111
|
+
# without the dev/docs tooling. The dev/docs/test stacks stay separate
|
|
112
|
+
# so CI-style installs don't pull editor/QA deps.
|
|
84
113
|
full = [
|
|
85
|
-
"s3dgraphy[
|
|
114
|
+
"s3dgraphy[rdf-embedded,visualization]",
|
|
115
|
+
]
|
|
116
|
+
all = [
|
|
117
|
+
"s3dgraphy[full,dev,docs]",
|
|
86
118
|
]
|
|
87
119
|
|
|
88
120
|
[tool.setuptools.packages.find]
|