mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
Backend (semantica/explorer/routes/ontology.py): - suggest-alignments: add TF-IDF character-ngram embeddings via sklearn (SimilarityCalculator-compatible cosine scoring) so embedding_similarity is populated in results; combined score = 0.4*label + 0.6*embedding when available, falling back to label-only when sklearn is absent - suggest-alignments: add token-overlap prefilter before SequenceMatcher so zero-Jaccard pairs are skipped without computing full similarity; add _MAX_ENTITIES_PER_SIDE=500 per-ontology cap on top of the existing _MAX_ANALYSIS_NODES global cap - suggest-alignments: remove dead try/except OntologyEngine.create_alignment block that always failed silently (no TripletStore configured); replace with a comment explaining the intentional ephemeral-only storage model - health: replace O(alignments x entities) any() scans for alignment coverage with O(1) set membership checks via assessed_ids - shacl/validate: run rdflib.Graph().parse(format='turtle') syntax check on the submitted Turtle before returning; invalid syntax now raises 422 instead of returning a misleading unavailable/success response Frontend: - AlignmentsTab: add pairwise alignment matrix section that groups recorded alignments by (source_ontology, target_ontology) pair; each cell shows color-coded relation badges per RELATION_COLORS; clicking a badge populates the create/edit form for quick editing; matrix is shown when at least two ontologies are loaded - ShaclStudio: add selectedShapeId state and fullShacl ref; each shape row in the library is now a clickable button that extracts its Turtle block from the full SHACL and pre-populates the Monaco editor; a "View all" toggle restores the full SHACL; selected shape ID is shown in the editor header - GraphWorkspace: fix viewMode race in external focus effect — call setSelectedNodeId directly instead of going through focusNode(), which captured a stale viewMode in its closure; remove focusNode from the dependency array since it is no longer called Tests (14 passing, was 11): - Add test_suggest_alignments_returns_embedding_similarity: asserts embedding_similarity is non-null when sklearn is available - Add test_shacl_validate_rejects_invalid_turtle_syntax: asserts 422 on syntactically invalid Turtle - Add test_health_alignment_coverage_uses_set_lookup: asserts alignment dimension score is non-zero after recording an alignment, verifying the O(1) set lookup path works correctly end-to-end Co-authored-by: KaifAhmad1 <mohammadk78600@gmail.com> Co-authored-by: ZohaibHassan16 <zohaib@hawksight.ai>