--- title: "Change Management Module" description: "Version control, SHA-256 checksums, diff analysis, rollback, and audit trails for knowledge graphs and ontologies." icon: "clock-rotate-left" --- > Enterprise-grade version control and audit trails for knowledge graphs with data integrity verification. --- ## Overview The **Change Management Module** provides versioning for knowledge graphs — SHA-256 checksums, full snapshot history, diff analysis, rollback protection, and compliance-grade audit trails (HIPAA, SOX, FDA 21 CFR Part 11). Snapshot, diff, rollback, and audit trail for knowledge graphs. Version control for OWL ontologies with diff and migration support. Pluggable storage — in-memory for tests, SQLite for production. SHA-256 checksums to detect unauthorized modifications. --- ## TemporalVersionManager Version control for knowledge graphs: ```python from semantica.change_management import TemporalVersionManager manager = TemporalVersionManager(storage_path="versions.db") # Create a snapshot snapshot_id = manager.create_snapshot( graph=kg, version="v1.0", author="user@example.com", message="Initial knowledge graph" ) print(f"Snapshot {snapshot_id}") print(f"Checksum: {manager.get_checksum(snapshot_id)}") ``` --- ## Versioning ```python # List all versions versions = manager.list_versions() for v in versions: print(f"{v.version} — {v.author} — {v.created_at} — {v.checksum[:8]}...") # Retrieve a specific version kg_v1 = manager.get_version("v1.0") # Rollback manager.rollback(target_version="v1.0", allow_data_loss=False) ``` --- ## Diff Analysis ```python diff = manager.diff("v1.0", "v2.0") print(f"Added nodes: {len(diff.added_nodes)}") print(f"Removed nodes: {len(diff.removed_nodes)}") print(f"Modified edges: {len(diff.modified_edges)}") for change in diff.changes: print(f" [{change.type}] {change.element}: {change.description}") ``` --- ## OntologyVersionManager Version control for OWL ontologies: ```python from semantica.change_management import OntologyVersionManager, OntologyVersion manager = OntologyVersionManager() # Save a version version: OntologyVersion = manager.save_version( ontology=ontology, version="1.2.0", author="ontology-team", message="Added FHIR alignment mappings" ) # Diff two ontology versions diff = manager.diff("1.1.0", "1.2.0") for change in diff.changes: print(f"[{change.type}] {change.class_name}: {change.description}") ``` --- ## VersionStorage Pluggable storage backends: ```python from semantica.change_management import ( VersionStorage, InMemoryVersionStorage, SQLiteVersionStorage, ) # In-memory (tests and development) storage = InMemoryVersionStorage() # SQLite (production — persistent across restarts) storage = SQLiteVersionStorage(db_path="versions.db") # Pass to a version manager manager = TemporalVersionManager(storage=storage) ``` --- ## Integrity Verification SHA-256 checksums detect any unauthorized modification to the graph: ```python from semantica.change_management import compute_checksum, verify_checksum # Compute checksum for a graph checksum = compute_checksum(kg) # Verify graph against stored checksum is_valid = verify_checksum(kg, expected_checksum=checksum) if not is_valid: print("Warning: Graph has been modified since the checksum was recorded") ``` --- ## Audit Trail ```python # Full audit trail for an entity trail = manager.get_audit_trail(entity_id="apple_inc") for entry in trail: print(f"{entry.timestamp} — {entry.author}: {entry.action} — {entry.description}") # Export audit trail manager.export_audit_trail("audit.csv", format="csv") manager.export_audit_trail("audit.json", format="json") ``` --- ## ChangeLogEntry Every version snapshot includes a structured `ChangeLogEntry`: ```python from semantica.change_management import ChangeLogEntry entry: ChangeLogEntry = manager.get_log_entry(snapshot_id) print(entry.version) print(entry.author) print(entry.message) print(entry.checksum) print(entry.created_at) print(entry.changes) # list of individual change records ``` --- ## See Also W3C PROV-O lineage tracking. The graph being versioned. Export versioned snapshots. Detect conflicts introduced between versions.