Node Types
This section documents all the different node types available in s3dgraphy.
Stratigraphic Nodes
- class s3dgraphy.nodes.stratigraphic_node.StratigraphicNode(node_id, name, description='')[source]
Bases:
NodeBase class for all stratigraphic units within the graph structure. Inherits from Node and provides additional functionality specific to stratigraphy.
- node_type = 'StratigraphicNode'
- class s3dgraphy.nodes.stratigraphic_node.StratigraphicUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'US'
- class s3dgraphy.nodes.stratigraphic_node.StructuralVirtualStratigraphicUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'USVs'
- class s3dgraphy.nodes.stratigraphic_node.SeriesOfStratigraphicUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'serSU'
- class s3dgraphy.nodes.stratigraphic_node.SeriesOfNonStructuralVirtualStratigraphicUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'serUSVn'
- class s3dgraphy.nodes.stratigraphic_node.SeriesOfStructuralVirtualStratigraphicUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'serUSVs'
- class s3dgraphy.nodes.stratigraphic_node.SeriesOfDocumentaryStratigraphicUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'serUSD'
- class s3dgraphy.nodes.stratigraphic_node.NonStructuralVirtualStratigraphicUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'USVn'
- class s3dgraphy.nodes.stratigraphic_node.SpecialFindUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'SF'
- class s3dgraphy.nodes.stratigraphic_node.VirtualSpecialFindUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'VSF'
- class s3dgraphy.nodes.stratigraphic_node.ReusedSpecialFind(node_id, name, description='')[source]
Bases:
StratigraphicNodeReused Special Find (RSF) — re-used architectural / decorative element (spolia) in archaeological reconstructions.
Typological cousin of
SpecialFindUnit(SF) andVirtualSpecialFindUnit(VSF): all three render as octagons. RSF is distinguished by its red border (#9B3333) and a white fill, marking the element as physically present and re-deployed out of its original construction context.Originating Development Project: DP-26 (spolia project, last DP before the EM 1.5 cut). Visual stencil shipped in the palette template at
templates/em_palette_template.graphml.- node_type = 'RSF'
- class s3dgraphy.nodes.stratigraphic_node.DocumentaryStratigraphicUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'USD'
- class s3dgraphy.nodes.stratigraphic_node.TransformationStratigraphicUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'TSU'
- class s3dgraphy.nodes.stratigraphic_node.WorkingUnit(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'UL'
- class s3dgraphy.nodes.stratigraphic_node.NegativeStratigraphicUnit(node_id, name, description='')[source]
Bases:
StratigraphicNodeNegative Stratigraphic Unit (US negativa / USN).
Describes a lacuna, a removal, or an interface that marks the absence of matter rather than its presence — e.g. a pit cut, an erosion surface, a demolition void. Distinct from a plain
StratigraphicUnit(which is positive by default), but equally observable on the ground: it is a real stratigraphic element, hence classified in therealfamily alongsideStratigraphicUnitandDocumentaryStratigraphicUnit.- node_type = 'USN'
- class s3dgraphy.nodes.stratigraphic_node.ContinuityNode(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'BR'
- class s3dgraphy.nodes.stratigraphic_node.StratigraphicEventNode(node_id, name, description='')[source]
Bases:
StratigraphicNode- node_type = 'SE'
Paradata Nodes
Representation Nodes
- class s3dgraphy.nodes.representation_node.RepresentationNode(node_id: str, name: str, type: str = 'generic', transform: Dict[str, List[str]] | None = None, description: str = '')[source]
Bases:
NodeBase class for all representation nodes in 3D space.
This class provides common functionality for RepresentationModelNode, RepresentationModelDocNode, and RepresentationModelSpecialFindNode.
- node_type = 'representation_node'
- __init__(node_id: str, name: str, type: str = 'generic', transform: Dict[str, List[str]] | None = None, description: str = '')[source]
Initialize a new RepresentationNode.
- class s3dgraphy.nodes.representation_node.RepresentationModelNode(node_id: str, name: str, type: str = 'RM', transform: Dict[str, List[str]] | None = None, description: str = '')[source]
Bases:
RepresentationNodeNode representing a 3D model or spatialized image.
This class is used for general 3D models associated with stratigraphic units.
- node_type = 'representation_model'
- VALID_TYPES = {'RM': 'Representation Model - 3D Model', 'generic': 'Generic Representation', 'spatialized_image': 'Spatialized Image'}
- class s3dgraphy.nodes.representation_node.RepresentationModelDocNode(node_id: str, name: str, type: str = 'spatialized_image', transform: Dict[str, List[str]] | None = None, description: str = '')[source]
Bases:
RepresentationNodeNode representing a 3D model or spatialized image for documents.
This class is used to instantiate documents, extractors or combiner nodes within the scene. An example is a historical photo positioned in its original position.
- node_type = 'representation_model_doc'
- VALID_TYPES = {'RM': 'Representation Model - 3D Model', 'generic': 'Generic Representation', 'spatialized_image': 'Spatialized Image'}
- class s3dgraphy.nodes.representation_node.RepresentationModelSpecialFindNode(node_id: str, name: str, type: str = 'RM', transform: Dict[str, List[str]] | None = None, description: str = '')[source]
Bases:
RepresentationNodeNode representing a 3D model for special finds.
This class is used to instantiate special finds in the scene. An example is a scanned 3D model of a capital repositioned in its original position according to an anastylosis hypothesis.
- node_type = 'representation_model_sf'
- VALID_TYPES = {'RM': 'Representation Model - 3D Model', 'generic': 'Generic Representation', 'spatialized_image': 'Spatialized Image'}
Other Node Types
- class s3dgraphy.nodes.group_node.GroupNode(node_id, name, description='', y_pos=0.0)[source]
Bases:
NodeNodo che rappresenta un gruppo di nodi. Tali gruppi possono essere di vari tipi: vedi sottoclassi di seguito.
- node_type = 'Group'
- class s3dgraphy.nodes.group_node.ActivityNodeGroup(node_id, name, description='', y_pos=0.0)[source]
Bases:
GroupNodeNodo gruppo per attività. Una attività è un gruppo logico di azioni che vengono tenute insieme per un fine narrativo e di ordine delle informazioni (es: costruzione di una stanza di un edificio nell’anno x, attività di restauro di varie parti di quella stanza 20 anni dopo)
- node_type = 'ActivityNodeGroup'
- class s3dgraphy.nodes.group_node.ParadataNodeGroup(node_id, name, description='', y_pos=0.0)[source]
Bases:
GroupNodeNodo gruppo per paradata. Questo gruppo tiene insieme tutti i paradati relativi ad una unità stratigrafica: normalmente si chiama “[nome_US]_PD” (ParaData)
- node_type = 'ParadataNodeGroup'
- class s3dgraphy.nodes.group_node.TimeBranchNodeGroup(node_id, name, description='', y_pos=0.0)[source]
Bases:
GroupNodeGroup node to aggregate all elements belonging to a time branch. Two TB can be connected by a “contrasts_with” edge.
- node_type = 'TimeBranchNodeGroup'
- class s3dgraphy.nodes.group_node.LocationNodeGroup(node_id, name, kind, description='', propagation='additive', y_pos=0.0)[source]
Bases:
GroupNodeGroup node for spatial / locational membership of stratigraphic units and paradata. Orthogonal to
ActivityNodeGroup(intention) andEpochNode(time): a Location answers the question what (named) place is this in?.Three required kinds coexist on the same axis and may compose on the same node:
toponym— external / administrative identity(Pompei, Lazio, Italia)
study— operational / procedural identity(saggio, settore, quadrato, sondage)
functional— interpretive / semantic identity(basilica, room A, courtyard)
Propagation is additive: multiple memberships compose, none overrides — distinct from
EpochNodewhich is substitutive (finest-grained wins).Membership is m:n via multiple
is_in_locationedges. A wall between two rooms belongs to both. The optionalis_primary: Trueattribute on one of the edges marks the membership that should be rendered as a yEd group folder in em-graph (yEd cannot draw overlapping group folders).Locations are hierarchical: a
LocationNodeGroupcan itself beis_in_locationof anotherLocationNodeGroup(Pompei → Sector 4 → Casa del Fauno → Room 12).A Location is identitary, not geometric. For coordinates / EPSG / shifts use the dedicated
GeoPositionNode. The two concepts are linked at the CIDOC level via P161 has spatial projection (E53 Place → E94 Space Primitive).- CIDOC-CRM mapping:
the
LocationNodeGroupitself → E53 Placethe
kindattribute classifies it → E55 Typeis_in_location(node → location) → P53 has former or current locationis_in_location(location → location, recursive)→ P89 falls within
non-CIDOC fields (
is_primary,propagation,kindenum value) →s3d:extension URIs
- Originating discussion:
- node_type = 'LocationNodeGroup'
- VALID_KINDS = ('toponym', 'study', 'functional')
- VALID_PROPAGATIONS = ('additive', 'substitutive')
- class s3dgraphy.nodes.graph_node.GraphNode(node_id, name='Graph', description='')[source]
Bases:
NodeIt represents the node of the graph itself within the system. It allows the graph itself to be linked to other nodes, such as authors and licences.
- node_type = 'graph'
- class s3dgraphy.nodes.geo_position_node.GeoPositionNode(node_id, epsg=4326, shift_x=0.0, shift_y=0.0, shift_z=0.0)[source]
Bases:
NodeClasse per rappresentare un nodo GeoPosition all’interno del grafo.
- Attributi:
type (str): Tipo di nodo, impostato su “geo_position”. data (dict): Dati relativi alla posizione geografica.
- node_type = 'geo_position'
- __init__(node_id, epsg=4326, shift_x=0.0, shift_y=0.0, shift_z=0.0)[source]
Inizializza una nuova istanza di GeoPositionNode.
- Parameters:
node_id (str) – Identificativo univoco del nodo.
epsg (int, opzionale) – Codice EPSG del sistema di riferimento delle coordinate. Defaults to 4326.
shift_x (float, opzionale) – Spostamento lungo l’asse X. Defaults to 0.0.
shift_y (float, opzionale) – Spostamento lungo l’asse Y. Defaults to 0.0.
shift_z (float, opzionale) – Spostamento lungo l’asse Z. Defaults to 0.0.
- class s3dgraphy.nodes.epoch_node.EpochNode(node_id, name, start_time, end_time, color='#FFFFFF', description='')[source]
Bases:
NodeNodo che rappresenta un’epoca temporale. Si tratta di un insieme di comodo che permette di attribuire d’ufficio una serie di azioni ad un delta temporale. Una volta che i dati puntuali sulla cronologia, espressi come proprietà start_time ed end_time delle singole US viene definito grazie ad elementi dtanti, tali nodi epoca vengono ignorati laddove ci sono i suddetti dati puntuali.
- node_type = 'EpochNode'