Obsidian format parser: aliases, wikilinks, and tags extraction
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 42/100
Rechercherichtung
Start by reading terraphim_automata/src/markdown_directives.rs and the MarkdownDirectives definition in terraphim_types, then inspect haystack configuration in terraphim_config. Use real Obsidian vault fixtures and add tests for frontmatter aliases and tags, wikilinks, inline tags, mixed syntax, and format routing. Done means all listed patterns merge into the shared struct and the obsidian configuration is accepted.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Summary
Extend parse_markdown_directives_content() in terraphim_automata/src/markdown_directives.rs to parse Obsidian-native patterns alongside the existing Logseq synonyms:: syntax.
Current Parser
The parser handles 4 directives:
synonyms::-> synonyms (Logseq property syntax)type:::-> document typeroute::-> LLM routing configpriority::-> priority score
New Patterns to Parse
1. YAML Frontmatter
---
aliases: [context management, semantic scope]
tags: [engineering, knowledge-graph]
---
aliases:-> treated as synonyms (same semantics assynonyms::)tags:-> stored as concept categories (new field inMarkdownDirectives)- Supports both YAML list syntax (
[a, b]) and multi-line (- a\n- b)
2. Wikilinks
Related to [[knowledge graph]] and [[ontology]] concepts.
- Extract all
[[target]]and[[target|display text]]patterns - Store as related concepts (new
Vec<String>field inMarkdownDirectives) - These become edges in the rolegraph, not synonyms
3. Inline Tags
This concept is important for #engineering and #search.
- Extract
#tagpatterns (excluding headings## heading) - Store as categories alongside YAML frontmatter tags
- Deduplicate with YAML tags
Parser Mode Configuration
Add a format field to haystack config:
[[roles.engineer.haystacks]]
location = "~/.config/terraphim/kg"
format = "terraphim" # synonyms:: + type::: + route:: + priority:: (default)
[[roles.engineer.haystacks]]
location = "~/synced/pages"
format = "logseq" # synonyms:: only
[[roles.engineer.haystacks]]
location = "~/synced/ObsidianVault"
format = "obsidian" # aliases: + [[wikilinks]] + #tags + synonyms::
All formats output the same MarkdownDirectives struct. The obsidian format is a superset that also accepts synonyms:: (for Dataview users).
Extended Struct
pub struct MarkdownDirectives {
pub doc_type: DocumentType,
pub synonyms: Vec<String>, // existing
pub route: Option<RouteDirective>, // existing
pub priority: Option<u8>, // existing
pub categories: Vec<String>, // NEW: from tags:/\#tag
pub related_concepts: Vec<String>, // NEW: from [[wikilinks]]
}
Test Plan
- Fixture: real Obsidian vault files with YAML frontmatter, wikilinks, and tags
- Test: aliases parsed as synonyms alongside existing synonyms:: support
- Test: wikilinks extracted as related concepts
- Test: tags extracted from both YAML frontmatter and inline #tags, deduplicated
- Test: mixed format (file has both synonyms:: and aliases:) merges correctly
- Test: obsidian format config flag routes to extended parser
Affected Crates
terraphim_automata(primary -- extend markdown_directives.rs)terraphim_types(add categories + related_concepts to MarkdownDirectives)terraphim_config(add format field to haystack config)
Estimated Effort
~4 hours
Part of
Epic #603
- Vorherrschende Sprache
- Rust
- Sterne
- 62
- Forks
- 5
- Ø Merge
- 2 Std. 27 Min.
- Gemergte PRs (30 T.)
- 1
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus terraphim/terraphim-ai
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
terraphim/terraphim-ai#885 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
terraphim/terraphim-ai#871 ·
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
terraphim/terraphim-ai#810 · 2 Kommentare ·
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
terraphim/terraphim-ai#729 ·
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
terraphim/terraphim-ai#728 ·
Alle Issues in terraphim/terraphim-ai
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
ClickHouse/ClickHouse#121222 ·
-
enhancement remote
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100