mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-09-05 04:00:31 +00:00
* feat(explorer): serve the RDF export formats the MCP tool already offers (#1131) `POST /api/export` accepted only `json` and `csv` and answered 422 for everything else, while the MCP `export_graph` tool resolved Turtle, N-Triples, RDF/XML, JSON-LD, GraphML and Parquet through `semantica.export`. Two surfaces of one product disagreeing about what the product can do — and for an RDF-native project, a graph that loads as JSON-LD and cannot be exported as RDF is a one-way door. The route now reaches the same exporters the MCP tool uses. Nothing is reimplemented: `RDFExporter.export_to_rdf` and `GraphMLExporter.export` receive the dict `session.build_graph_dict()` already builds. The alias table is a copy of `mcp/tools/export.py::_FORMAT_ALIASES` plus the spellings the issue mentioned (`ntriples`, `rdf-xml`), and a test asserts the two tables agree — if either drifts, the formats a caller can use would depend on which door they came through. Media types and extensions per serializer, so a Turtle export is `text/turtle` and not `application/json` with a `.json` name. The 422 message now names what IS supported. The old one said only that the format was unsupported, which reads as "this format does not exist" rather than "this door does not open it" — that is what sent me looking through the library. Parquet is left out on purpose: `ParquetExporter.export` writes a file and returns a path, so serving it over HTTP is a different shape of change and deserves its own review. Tests, in `TestImportExport`: the seven RDF spellings, each **parsed with rdflib** rather than asserted on strings — a response that merely looks like Turtle is what lets this class of gap survive a suite. Plus the alias-agreement canary and the error message. Three mutations (rejecting RDF again, breaking one alias, emptying the message) each turn the matching tests red. 110 tests in `tests/explorer/test_explorer_api.py` pass. * fix(explorer): complete RDF export support * fix(explorer): secure GraphML temporary file handling * fix(ci): scan declared dependencies with Safety --------- Co-authored-by: 13g4d0 <13g4d0@users.noreply.github.com> Co-authored-by: Sameer Kadam <sskadam6305@gmail.com>