Commit Graph
4 Commits
Author SHA1 Message Date
f3dc2a449d feat(export): implement Neo4j Bulk CSV Exporter and update registry docs (#261) (#665)
* feat(export): implement Neo4j Bulk CSV Exporter and update registry docs (#261)

* fix(export): address review bugs in Neo4j CSV exporter

- _write_csv: filter **options to known csv.writer dialect params only,
  preventing TypeError when callers pass kwargs like delimiter= or encoding=
  that would reach csv.writer twice or as unknown arguments
- export_neo4j_csv: split kwargs into constructor-level init_params vs
  per-call call_kwargs before forwarding, eliminating the double-pass that
  caused dialect params to collide inside _write_csv
- _prepare_export: remove dead node_id_lookup dict that was built but never
  consumed by any caller
- export_knowledge_graph dispatch: drop the ambiguous "neo4j" format alias
  (kept "neo4j_csv" and "neo4j-csv"); "neo4j" conflicts with the codebase's
  established meaning of the live Bolt/Cypher store backend; add inline
  comment clarifying that file_path is treated as an output directory for
  this format
- export_usage.md: fix all three wrong API examples — constructor params
  node_label_sep/strict_validation corrected to label_separator/strict,
  non-existent nodes_path/rels_path kwargs removed, convenience-method
  example updated to show the correct positional output_dir argument

Co-Authored-By: KaifAhmad1 <kaif2208@gmail.com>

* docs(changelog): add Neo4j Bulk CSV Export entry for PR #665

Documents the new Neo4jCSVExporter feature contributed by @Luffy2208
and the five follow-up bug fixes (TypeError on dialect kwargs,
double-pass kwargs split, dead node_id_lookup removal, ambiguous
format="neo4j" alias removal, and wrong API examples in docs).

Co-Authored-By: KaifAhmad1 <kaif2208@gmail.com>

---------

Co-authored-by: KaifAhmad1 <kaifahmad087@gmail.com>
Co-authored-by: KaifAhmad1 <kaif2208@gmail.com>
2026-06-23 21:15:25 +05:30
Mohd KaifandClaude Sonnet 4.6 892ff4b4a7 fix(export): fix OWLExporter Turtle invalid syntax and silent data-property omission (#478) (#479)
- Add _ttl_block() helper to accumulate all predicate-object pairs before
  writing, producing a single valid Turtle subject block terminated by one
  period — eliminates the bug where rdfs:subClassOf / domain / range were
  appended after a closed '.' block
- Add missing data_properties loop to _export_owl_turtle so
  owl:DatatypeProperty declarations are no longer silently dropped
- Add _escape_ttl_str() to escape quotes, backslashes, newlines, carriage
  returns, and tabs inside Turtle string literals (rdfs:label, rdfs:comment,
  owl:versionInfo)
- Unify optional-field null checks to consistent x = prop.get(); if x: pattern
- Add 43 tests in tests/export/test_owl_exporter.py covering syntax validity,
  data properties, string escaping, null handling, and header output
- Update CHANGELOG.md with [Unreleased] entry

Closes #478

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 15:08:59 +05:30
KaifAhmad1andClaude Sonnet 4.6 1d96b6f80e fix: address code review issues from PR #358 (#355)
- rdf_exporter.py: add isinstance(format, str) guard before .lower() so
  non-string inputs (None, int, etc.) raise ValidationError consistently
  instead of AttributeError; normalize via strip().lower() in one step
- 15_Export.ipynb: fix notebook cell using result['valid'] → result['overall_valid']
  (validate_rdf() returns overall_valid, not valid); add trailing EOF newline
- test_rdf_exporter.py: add tests for non-string format → ValidationError
  and for overall_valid key presence in validate_rdf() return value

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-07 03:03:44 +05:30
KaifAhmad1andClaude Sonnet 4.6 8c4e5e5968 fix: resolve TTL export alias failure and add RDF notebook example (#355)
- Add _format_aliases map in RDFExporter to accept 'ttl', 'nt', 'xml', 'rdf', 'json-ld' as shorthands for canonical format names
- Resolve alias at the start of export_to_rdf() before validation, leaving all existing callers unaffected
- Add TTL alias demo cell to cookbook/introduction/15_Export.ipynb
- Add tests/export/test_rdf_exporter.py covering alias parity, canonical formats, unsupported format error, and file export with format="ttl"

Closes #355

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-07 01:42:16 +05:30