The Wiki CLI and Obsidian's community Dataview plugin can be used together on the same Markdown wiki. Because both tools operate on plain text Markdown files and standard YAML/JSON frontmatter, they interoperate naturally without needing any data migration or conversion.
How they complement each other
While both tools allow you to query your wiki metadata, they optimize for different workflows:
- Dataview is designed for interactive, in-editor presentation inside the Obsidian GUI. It is perfect for dynamic dashboards, daily note tracking, and local navigation.
- Wiki CLI is a verifiable semantic compiler and toolchain designed to run anywhere (local terminal, CI/CD pipelines, or static web servers). It enforces data structures via SHACL and JSON Schema, executes query-based rendering via SPARQL, and builds standalone static HTML sites.
Comparison
| Feature | Obsidian Dataview | Wiki CLI |
|---|---|---|
| Execution Context | Inside the Obsidian application (GUI) | Terminal, scripts, and CI/CD pipelines |
| Query Language | DQL (custom SQL-like) or JavaScript | SPARQL (W3C standard) |
| Validation | Presentation only (no constraints check) | wiki check (SHACL and JSON Schema validation) |
| Logical Inference | None (direct field matching) | OWL-RL reasoning (implicit class hierarchies) |
| Output Formats | Dynamic markdown views in Obsidian | Static HTML, Turtle, JSON-LD, RDF/XML |
Query examples
Because the Wiki CLI parses standard YAML frontmatter, any properties you declare for semantic queries in the CLI are also accessible to Dataview.
Basic DQL vs SPARQL
To list all software applications in the wiki:
Dataview (DQL)
```dataview
TABLE description, softwareVersion as Version
WHERE type = "schema:SoftwareApplication" OR type = "SoftwareApplication"
SORT file.name ASC
#### Wiki CLI (SPARQL)
```sparql
PREFIX schema: <https://schema.org/>
SELECT ?name ?description ?version WHERE {
?s a schema:SoftwareApplication ;
schema:name ?name ;
schema:description ?description ;
schema:softwareVersion ?version .
}
ORDER BY ?name
Advanced Querying with DataviewJS
If you need programmatic control or custom rendering inside Obsidian, you can use DataviewJS to filter and present your semantic properties:
```dataviewjs
// Query and filter pages with a specific type
const apps = dv.pages()
.filter(p => p.type === "schema:SoftwareApplication" || p.type === "SoftwareApplication");
// Render as a table inside your note
dv.table(
["App", "Description", "Version"],
apps.map(p => [
p.file.link,
p.description || "No description",
p.softwareVersion || "N/A"
])
);
## Related
- [Obsidian Integration](Obsidian_Integration.md) — executing CLI commands from Obsidian
- [Wiki CLI](Wiki_CLI.md) — command reference home
- [SPARQL](SPARQL.md) — semantic web query background