- server.py: split vocabulary router into its own try/except so a missing
vocabulary module (pending #421) cannot prevent the 7 existing routers
from mounting
- rdf_parser.py: rename `format` param to `rdf_format` to avoid shadowing
the Python builtin; add exception chaining (raise...from e); document
the silent edge-drop behaviour for cross-vocabulary URIs
- Add semantica/explorer/utils/__init__.py (package was not importable)
- Add tests/explorer/test_rdf_parser.py: 32 tests covering node/edge
extraction, label priority, altLabel dedup, all 6 SKOS edge types,
orphan-edge filtering, empty graph, error cases, and RDF/XML format
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>