Design: 0.6 CLI (oxiland-cli / rdfproc workflows)¶
Status: accepted for milestone 0.6
Milestone: 0.6
Related: ADR-019
Goal¶
Ship a workspace binary crate crates/oxiland-cli that covers the rdfproc
class of workflows using the safe Oxiland facade. This is workflow parity,
not a drop-in binary/ABI clone of native rdfproc.
Packaging¶
- Cargo workspace member
oxiland-cli - Depends on path crate
oxiland - Owns argv parsing and human-facing output only (no RDF semantics)
Invocation:
store-name is a path (Fjall) or the literal memory for an in-memory model.
Options¶
| rdfproc | Oxiland CLI |
|---|---|
-n / --new |
Create Fjall store if missing (OpenOptions::create(true)); without -n, missing paths fail |
-s / --storage |
memory or fjall only; other types error |
-o / --output |
Serialize syntax name (default nquads so named graphs work) |
-r / --results |
SPARQL results format (ResultsFormat::from_name) |
-q / --quiet |
Suppress informational stderr |
-v / --version |
Print crate version |
-h / --help |
Clap help |
Commands (0.6 minimum)¶
| Command | Behavior |
|---|---|
parse PATH [--syntax S] [--base B] |
Parser::load_path_collecting |
parse-stream PATH [--syntax S] [--base B] |
Parser::load_path_into (progressive) |
serialize [--syntax S] |
Serialize model |
print |
Serialize with -o (default nquads) |
add S P O [CONTEXT] |
Insert statement |
remove S P O [CONTEXT] |
Remove statement |
find S|- P|- O|- [CONTEXT] |
Pattern match; print quads |
query sparql|- - QUERY |
SPARQL only (rdql errors) |
contexts |
List named graphs present |
Node arguments use simple heuristics: IRIs as absolute URIs, blank nodes as
_:id, otherwise literals.
Non-goals¶
- MySQL / Virtuoso / BDB
hashesstorage plugins - Password prompting for remote stores
- RDQL
- Exact rdfproc exit codes and banner strings
Evidence¶
- Integration tests under
crates/oxiland-cli/tests/ - Harness:
compatibility/harness/cli_smoke.py - User guide:
docs/users/cli.md