Skip to content

Feature Request: Support parsing link types from [[Note|Alias&Relation]] syntax #51

@HoBeom

Description

@HoBeom

Thanks for your great work on this plugin! This feature would make Graph Link Types even more expressive and user-friendly in a graph knowledge workflow.

I’d like to request support for parsing edge types directly from the alias portion of Obsidian wiki links using a & delimiter syntax.

This allows users to semantically describe relationships inline, without requiring frontmatter or dataview fields.

✅ Supported Formats

Syntax Display Text Relation Type Note File Target
[[Plato|Socrates&teacher_of]] Socrates teacher_of Plato
[[Plato|&teacher_of]] Plato teacher_of Plato
[[Plato|Socrates]] Socrates (none) Plato
[[Plato]] Plato (none) Plato

⚠️ [[Plato&teacher_of]] should not be parsed this way because & is valid in note titles.

Reference Implementation (Experimental)

I’ve extended the getMetadataKeyForLink() function to support this logic. Here’s the relevant snippet:

private getMetadataKeyForLink(sourceId: string, targetId: string): string | null {
...
for (const l of sourcePage.file?.outlinks ?? []) {
    if (l.path !== targetId) continue;
    const disp = (l.display ?? "").trim();
    if (!disp) return null;

    const ampPos = disp.indexOf("&");
    if (ampPos === -1) return null;

    const aliasPart = disp.substring(0, ampPos).trim();
    const propPart  = disp.substring(ampPos + 1).trim();
    if (!aliasPart || !propPart) return null;

    return propPart;
}
return null;}

This checks for outlinks with a display string of the form Alias&Relation, splits them, and uses the right-hand portion (Relation) as the edge label.

Additionally, I would like to have a function (or CSS snippet) that hides after the & delimiter in a link’s display text, so that only the part before & is visible in the rendered note. This would ensure a clean and intuitive display while preserving the semantic edge information for the graph.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions