@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix cli: <urn:unrdf:cli:> .

# AUTO-GENERATED from CLI source code via packages/daemon/src/mcp/generate.mjs
# DO NOT edit this file manually. To update, run: node packages/daemon/src/mcp/generate.mjs

# =============================================================================
# VOCABULARY — Classes and Properties
# =============================================================================

cli:Command a rdfs:Class ;
  rdfs:label "CLI Command" ;
  rdfs:comment "Represents a unrdf CLI command to be exposed as an MCP tool" .

cli:Argument a rdfs:Class ;
  rdfs:label "Command Argument" ;
  rdfs:comment "Represents a command-line argument or option" .

cli:toolName a rdf:Property ;
  rdfs:domain cli:Command ;
  rdfs:range xsd:string ;
  rdfs:comment "MCP tool name (snake_case)" .

cli:description a rdf:Property ;
  rdfs:domain cli:Command ;
  rdfs:range xsd:string ;
  rdfs:comment "Human-readable description" .

cli:cliPath a rdf:Property ;
  rdfs:domain cli:Command ;
  rdfs:range xsd:string ;
  rdfs:comment "Full CLI invocation path (e.g., 'graph create')" .

cli:hasArgument a rdf:Property ;
  rdfs:domain cli:Command ;
  rdfs:range cli:Argument ;
  rdfs:comment "Links Command to its Arguments" .

cli:argName a rdf:Property ;
  rdfs:domain cli:Argument ;
  rdfs:range xsd:string ;
  rdfs:comment "Argument name" .

cli:argType a rdf:Property ;
  rdfs:domain cli:Argument ;
  rdfs:range xsd:string ;
  rdfs:comment "Argument type: string, boolean, number" .

cli:required a rdf:Property ;
  rdfs:domain cli:Argument ;
  rdfs:range xsd:boolean ;
  rdfs:comment "Whether argument is required" .

cli:argDescription a rdf:Property ;
  rdfs:domain cli:Argument ;
  rdfs:range xsd:string ;
  rdfs:comment "Argument description" .

cli:defaultValue a rdf:Property ;
  rdfs:domain cli:Argument ;
  rdfs:range xsd:string ;
  rdfs:comment "Default value if not provided" .

# =============================================================================
# INSTANCES — AUTO-DISCOVERED CLI COMMANDS
# =============================================================================


cli:graph_create a cli:Command ;
  cli:toolName "graph_create" ;
  cli:description "Create a new RDF graph" ;
  cli:cliPath "graph create" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "name" ; cli:argType "string" ; cli:required true ; cli:argDescription "Graph name" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output file path (default: <name>.nq)" ] .


cli:graph_load a cli:Command ;
  cli:toolName "graph_load" ;
  cli:description "Load RDF data into a graph" ;
  cli:cliPath "graph load" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required true ; cli:argDescription "RDF file to load (Turtle, N-Triples, N-Quads)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "graph" ; cli:argType "string" ; cli:required false ; cli:argDescription "Target graph name" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "format" ; cli:argType "string" ; cli:required false ; cli:argDescription "RDF format (turtle, ntriples, nquads) - auto-detected if not specified" ] .


cli:graph_query a cli:Command ;
  cli:toolName "graph_query" ;
  cli:description "Execute SPARQL query on graph" ;
  cli:cliPath "graph query" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required true ; cli:argDescription "Graph file to query" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "query" ; cli:argType "string" ; cli:required true ; cli:argDescription "SPARQL query string" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "format" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output format (table, json, turtle)" ; cli:defaultValue "table" ] .


cli:graph_dump a cli:Command ;
  cli:toolName "graph_dump" ;
  cli:description "Export graph data to file" ;
  cli:cliPath "graph dump" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required true ; cli:argDescription "Source graph file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "output" ; cli:argType "string" ; cli:required true ; cli:argDescription "Output file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "format" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output format (turtle, ntriples, nquads)" ; cli:defaultValue "turtle" ] .


cli:graph_stats a cli:Command ;
  cli:toolName "graph_stats" ;
  cli:description "Show graph statistics" ;
  cli:cliPath "graph stats" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required true ; cli:argDescription "Graph file to analyze" ] .


cli:query a cli:Command ;
  cli:toolName "query" ;
  cli:description "Execute SPARQL query" ;
  cli:cliPath "query" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required true ; cli:argDescription "RDF data file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "query" ; cli:argType "string" ; cli:required true ; cli:argDescription "SPARQL query string" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "format" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output format (table, json, csv)" ; cli:defaultValue "table" ] .


cli:query_file a cli:Command ;
  cli:toolName "query_file" ;
  cli:description "Execute SPARQL query from file" ;
  cli:cliPath "query-file" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "data" ; cli:argType "string" ; cli:required true ; cli:argDescription "RDF data file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "query" ; cli:argType "string" ; cli:required true ; cli:argDescription "SPARQL query file (.sparql)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "format" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output format (table, json, csv)" ; cli:defaultValue "table" ] .


cli:context_create a cli:Command ;
  cli:toolName "context_create" ;
  cli:description "Create a new JSON-LD context" ;
  cli:cliPath "context create" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "name" ; cli:argType "string" ; cli:required true ; cli:argDescription "Context name" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "output" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output file path" ] .


cli:context_add a cli:Command ;
  cli:toolName "context_add" ;
  cli:description "Add prefix to context" ;
  cli:cliPath "context add" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required true ; cli:argDescription "Context file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "prefix" ; cli:argType "string" ; cli:required true ; cli:argDescription "Prefix name" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "namespace" ; cli:argType "string" ; cli:required true ; cli:argDescription "Namespace IRI" ] .


cli:context_list a cli:Command ;
  cli:toolName "context_list" ;
  cli:description "List context prefixes" ;
  cli:cliPath "context list" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required true ; cli:argDescription "Context file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "format" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output format (table, json)" ; cli:defaultValue "table" ] .


cli:context_remove a cli:Command ;
  cli:toolName "context_remove" ;
  cli:description "Remove prefix from context" ;
  cli:cliPath "context remove" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required true ; cli:argDescription "Context file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "prefix" ; cli:argType "string" ; cli:required true ; cli:argDescription "Prefix name to remove" ] .


cli:convert a cli:Command ;
  cli:toolName "convert" ;
  cli:description "Convert RDF between formats" ;
  cli:cliPath "convert" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "input" ; cli:argType "string" ; cli:required true ; cli:argDescription "Input RDF file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "output" ; cli:argType "string" ; cli:required true ; cli:argDescription "Output file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "from" ; cli:argType "string" ; cli:required false ; cli:argDescription "Input format (turtle, ntriples, nquads) - auto-detected if not specified" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "to" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output format (turtle, ntriples, nquads) - auto-detected if not specified" ] .


cli:to_turtle a cli:Command ;
  cli:toolName "to_turtle" ;
  cli:description "Convert RDF to Turtle format" ;
  cli:cliPath "to-turtle" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "input" ; cli:argType "string" ; cli:required true ; cli:argDescription "Input RDF file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "output" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output Turtle file" ] .


cli:to_ntriples a cli:Command ;
  cli:toolName "to_ntriples" ;
  cli:description "Convert RDF to N-Triples format" ;
  cli:cliPath "to-ntriples" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "input" ; cli:argType "string" ; cli:required true ; cli:argDescription "Input RDF file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "output" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output N-Triples file" ] .


cli:to_json a cli:Command ;
  cli:toolName "to_json" ;
  cli:description "Convert RDF to JSON representation" ;
  cli:cliPath "to-json" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "input" ; cli:argType "string" ; cli:required true ; cli:argDescription "Input RDF file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "output" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output JSON file" ] .


cli:hooks_execute a cli:Command ;
  cli:toolName "hooks_execute" ;
  cli:description "Execute hooks against an RDF store" ;
  cli:cliPath "hooks execute" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "store" ; cli:argType "string" ; cli:required true ; cli:argDescription "Store file (NQ/Turtle/N-Triples)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "config" ; cli:argType "string" ; cli:required true ; cli:argDescription "Hooks config file (JSON)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "output" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output file for results (JSON)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "show-receipts" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Show receipt chain with hashes" ; cli:defaultValue "false" ] .


cli:hooks_define a cli:Command ;
  cli:toolName "hooks_define" ;
  cli:description "Define hooks from config file" ;
  cli:cliPath "hooks define" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "config" ; cli:argType "string" ; cli:required true ; cli:argDescription "Hooks config file (JSON)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "validate" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Validate without executing" ; cli:defaultValue "false" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "output" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output file for hook metadata (JSON)" ] .


cli:hooks_evaluate_condition a cli:Command ;
  cli:toolName "hooks_evaluate_condition" ;
  cli:description "Evaluate a single condition against a store" ;
  cli:cliPath "hooks evaluate-condition" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "store" ; cli:argType "string" ; cli:required true ; cli:argDescription "Store file (NQ/Turtle/N-Triples)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "condition" ; cli:argType "string" ; cli:required true ; cli:argDescription "Condition type (sparql-ask, sparql-select, shacl, delta, threshold, count, window, n3, datalog)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "config" ; cli:argType "string" ; cli:required true ; cli:argDescription "Condition config as JSON" ] .


cli:hooks_list_conditions a cli:Command ;
  cli:toolName "hooks_list_conditions" ;
  cli:description "List available condition kinds" ;
  cli:cliPath "hooks list-conditions" .


cli:hooks_receipts a cli:Command ;
  cli:toolName "hooks_receipts" ;
  cli:description "Display receipt chain from hook execution results" ;
  cli:cliPath "hooks receipts" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required true ; cli:argDescription "Execution result file (JSON)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "format" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output format (json, table)" ; cli:defaultValue "table" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "verify" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Verify receipt chain integrity" ; cli:defaultValue "false" ] .


cli:daemon_list a cli:Command ;
  cli:toolName "daemon_list" ;
  cli:description "List all configured operations" ;
  cli:cliPath "daemon list" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "json" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Output as JSON" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "include-metadata" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Include metadata in output" ] .


cli:daemon_run a cli:Command ;
  cli:toolName "daemon_run" ;
  cli:description "Execute operation immediately" ;
  cli:cliPath "daemon run" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "operation" ; cli:argType "string" ; cli:required true ; cli:argDescription "Operation ID to execute" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "payload" ; cli:argType "string" ; cli:required false ; cli:argDescription "Operation payload (JSON string)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "json" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Output as JSON" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "timeout" ; cli:argType "number" ; cli:required false ; cli:argDescription "Execution timeout in milliseconds" ] .


cli:daemon_schedule a cli:Command ;
  cli:toolName "daemon_schedule" ;
  cli:description "Add scheduled trigger to operation" ;
  cli:cliPath "daemon schedule" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "operation" ; cli:argType "string" ; cli:required true ; cli:argDescription "Operation ID to schedule" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "trigger" ; cli:argType "string" ; cli:required true ; cli:argDescription "Trigger type (cron, interval, reactive, event)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "payload" ; cli:argType "string" ; cli:required false ; cli:argDescription "Trigger payload (JSON string)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "json" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Output as JSON" ] .


cli:daemon_status a cli:Command ;
  cli:toolName "daemon_status" ;
  cli:description "Show daemon health and metrics" ;
  cli:cliPath "daemon status" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "json" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Output as JSON" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "include-metrics" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Include detailed metrics" ] .


cli:daemon_logs a cli:Command ;
  cli:toolName "daemon_logs" ;
  cli:description "View operation logs with filtering" ;
  cli:cliPath "daemon logs" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "follow" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Follow log output (stream mode)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "filter" ; cli:argType "string" ; cli:required false ; cli:argDescription "Filter logs by pattern" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "max-lines" ; cli:argType "number" ; cli:required false ; cli:argDescription "Maximum lines to display" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "json" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Output as JSON" ] .


cli:daemon_config a cli:Command ;
  cli:toolName "daemon_config" ;
  cli:description "Display current daemon configuration" ;
  cli:cliPath "daemon config" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "json" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Output as JSON" ] .


cli:daemon_cluster a cli:Command ;
  cli:toolName "daemon_cluster" ;
  cli:description "Show Raft cluster status and members" ;
  cli:cliPath "daemon cluster" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "json" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Output as JSON" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "include-metrics" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Include detailed member metrics" ] .


cli:mcp_start a cli:Command ;
  cli:toolName "mcp_start" ;
  cli:description "Start the MCP server" ;
  cli:cliPath "mcp start" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "transport" ; cli:argType "string" ; cli:required false ; cli:argDescription "Transport type: stdio or sse" ; cli:defaultValue "stdio" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "port" ; cli:argType "number" ; cli:required false ; cli:argDescription "Port for SSE transport (when transport=sse)" ; cli:defaultValue "3001" ] .


cli:mcp_status a cli:Command ;
  cli:toolName "mcp_status" ;
  cli:description "Show if MCP server is running" ;
  cli:cliPath "mcp status" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "json" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Output as JSON" ] .


cli:mcp_inspect a cli:Command ;
  cli:toolName "mcp_inspect" ;
  cli:description "List all exposed tools, resources, and prompts" ;
  cli:cliPath "mcp inspect" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "json" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Output as JSON" ] .


cli:mcp_stop a cli:Command ;
  cli:toolName "mcp_stop" ;
  cli:description "Stop the running MCP server" ;
  cli:cliPath "mcp stop" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "json" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Output as JSON" ] .


cli:sync a cli:Command ;
  cli:toolName "sync" ;
  cli:description "Generate synchronized code artifacts from RDF ontology" ;
  cli:cliPath "sync" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "config" ; cli:argType "string" ; cli:required false ; cli:argDescription "Path to `.unrdf.toml` configuration file" ; cli:defaultValue ".unrdf.toml" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "dry-run" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Preview changes without writing files" ; cli:defaultValue "false" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "verbose" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Enable verbose output" ; cli:defaultValue "false" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "force" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Overwrite existing files without prompting" ; cli:defaultValue "false" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "rule" ; cli:argType "string" ; cli:required false ; cli:argDescription "Run only the specified rule by name" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "output" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output format: text or json" ; cli:defaultValue "text" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "watch" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Watch ontology and template files for changes" ; cli:defaultValue "false" ] .


cli:template_generate a cli:Command ;
  cli:toolName "template_generate" ;
  cli:description "Generate files from RDF + Nunjucks template (`--template`). RDF path can be positional or `rdf:` in template frontmatter." ;
  cli:cliPath "template generate" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required false ; cli:argDescription "RDF file (Turtle, N-Triples, N-Quads, …). Optional if template sets `rdf:` in frontmatter." ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "template" ; cli:argType "string" ; cli:required true ; cli:argDescription "Template .njk path" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "outputDir" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output directory for generated files" ; cli:defaultValue "./generated" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "subject" ; cli:argType "string" ; cli:required false ; cli:argDescription "Focus subject URI; replaces ?subject in SPARQL when present" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "batch" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "One output per instance of `--class-uri`; SPARQL must use ?subject" ; cli:defaultValue "false" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "classUri" ; cli:argType "string" ; cli:required false ; cli:argDescription "RDFS/OWL class IRI for batch mode (with `--batch`)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "sparql" ; cli:argType "string" ; cli:required false ; cli:argDescription "SPARQL SELECT (overrides frontmatter `sparql:`)" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "dryRun" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Print paths without writing" ; cli:defaultValue "false" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "force" ; cli:argType "boolean" ; cli:required false ; cli:argDescription "Overwrite existing files" ; cli:defaultValue "false" ] .


cli:template_list a cli:Command ;
  cli:toolName "template_list" ;
  cli:description "List discovered .njk templates (default: bundled sync templates)" ;
  cli:cliPath "template list" .


cli:template_query a cli:Command ;
  cli:toolName "template_query" ;
  cli:description "Run SPARQL SELECT on an RDF file and print template-style context. For CONSTRUCT/ASK/DESCRIBE use `unrdf query`." ;
  cli:cliPath "template query" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required true ; cli:argDescription "RDF data file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "sparql" ; cli:argType "string" ; cli:required false ; cli:argDescription "SPARQL SELECT query" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "predicate" ; cli:argType "string" ; cli:required false ; cli:argDescription "Find all values of predicate" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "subject" ; cli:argType "string" ; cli:required false ; cli:argDescription "Find all predicates for subject" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "format" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output format (table|json)" ; cli:defaultValue "table" ] .


cli:template_extract a cli:Command ;
  cli:toolName "template_extract" ;
  cli:description "Extract properties for a subject as JSON (template debugging)" ;
  cli:cliPath "template extract" ;
  cli:hasArgument [ a cli:Argument ; cli:argName "file" ; cli:argType "string" ; cli:required true ; cli:argDescription "RDF data file" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "subject" ; cli:argType "string" ; cli:required false ; cli:argDescription "Subject URI" ] ;
  cli:hasArgument [ a cli:Argument ; cli:argName "format" ; cli:argType "string" ; cli:required false ; cli:argDescription "Output format (json|yaml|table)" ; cli:defaultValue "json" ] .


