Skip to content

Implement YAML-LD and Markdown-LD LSP support on SWLS

Decided · 23 August 2026

Context

This ADR evaluates foundations for a generic LSP supporting JSON-LD, YAML-LD, and Markdown-LD, without assigning it to a particular consumer.

Requirements

  • Parse JSON-LD, YAML-LD, and Markdown-LD while preserving authored source spans.
  • Interpret JSON-LD contexts, including @type: @id coercion, to distinguish IRI-valued values from literals.
  • Expose IRI-valued values as clickable document links.
  • Make Go to Definition return every matching definition in the workspace when an IRI has several definitions.
  • Resolve relative local IRIs and support unsaved buffers.

Decision

Assessment legend. These are ADR judgments derived from the linked universe checklists. ★★ means Medium relative implementation difficulty; ★★★ means Hard relative implementation difficulty. ✓✓✓ means three of three expected LSP reuse; ✓✓ means two of three; ✓ means one of three; and ∅ means zero of three. means shared upstream plus local extensions; means a fork or extraction plus replacement pipeline; and means locally owned new or full server layers.

Universe Alternative Language Stars Latest published version Difficulty (ADR assessment) Expected LSP reuse (ADR assessment) Expected maintenance ownership (ADR assessment) Decision
Build on an existing LSP implementation
Universe SemanticWebLanguageServer/swls Rust SemanticWebLanguageServer/swls 53 SemanticWebLanguageServer/swls swls-v0.4.1, 2026-07-07 SemanticWebLanguageServer/swls ★★ ✓✓✓ ✅ Chosen
Universe stardog-union/stardog-language-servers TypeScript stardog-union/stardog-language-servers 40 stardog-union/stardog-language-servers sparql-language-server v4.3.0, 2024-08-12 ★★★ ✓✓ ❌ Hard implementation effort
Universe IoannisNezis/Qlue-ls Rust IoannisNezis/Qlue-ls 47 IoannisNezis/Qlue-ls v3.4.2, 2026-08-21 IoannisNezis/Qlue-ls ★★★ ✓✓ ❌ Hard implementation effort
Universe BrickSchema/langserver Python BrickSchema/langserver 7 BrickSchema/langserver turtle-language-server v0.1.2, 2021-01-13 ★★★ ✓ ❌ Hard implementation effort
Universe jeswr/shaclc-language-server TypeScript jeswr/shaclc-language-server 1 jeswr/shaclc-language-server v0.0.1, 2023-01-02 ★★★ ✓ ❌ Hard implementation effort
Universe niklasl/rdflangserver Python niklasl/rdflangserver 0 niklasl/rdflangserver No published release; repository version 0.1.0-dev pyproject.toml ❌ not published to PyPI
Universe alexkreidler/vscode-jsonld TypeScript alexkreidler/vscode-jsonld 0 alexkreidler/vscode-jsonld No published release; repository version 1.0.0 package.json ❌ not published to VS Code Marketplace
Build on an existing JSON-LD parser implementation
Universe oxigraph/oxigraph (oxjsonld) Rust oxigraph/oxigraph 1833 oxigraph/oxigraph oxjsonld v0.2.5, 2026-04-19 ★★★ ∅ ❌ Hard implementation effort
Universe timothee-haudebourg/json-ld Rust timothee-haudebourg/json-ld 154 timothee-haudebourg/json-ld json-ld v0.21.4, 2026-02-19 ★★★ ∅ ❌ Hard implementation effort
Universe pchampin/sophia_rs (sophia_jsonld) Rust pchampin/sophia_rs 328 pchampin/sophia_rs sophia_jsonld v0.10.0, 2026-05-19 ★★★ ∅ ❌ Hard implementation effort
Universe mskvarc/jsonld Rust mskvarc/jsonld 0 mskvarc/jsonld jsonld v0.22.0, 2026-08-04 ★★★ ∅ ❌ Hard implementation effort
Universe jsonld-java/jsonld-java Java jsonld-java/jsonld-java 388 jsonld-java/jsonld-java jsonld-java v0.13.6, 2023-11-06 ★★★ ∅ ❌ Hard implementation effort
Universe piprate/json-gold Go piprate/json-gold 313 piprate/json-gold v0.8.0, 2026-02-23 piprate/json-gold ★★★ ∅ ❌ Hard implementation effort
Universe digitalbazaar/jsonld.js JavaScript digitalbazaar/jsonld.js 1816 digitalbazaar/jsonld.js jsonld v9.0.0, 2025-11-21 ★★★ ∅ ❌ Hard implementation effort
Universe digitalbazaar/pyld Python digitalbazaar/pyld 678 digitalbazaar/pyld PyLD v3.2.0, 2026-08-17 ★★★ ∅ ❌ Hard implementation effort

Consequences

  • SWLS is the implementation foundation for YAML-LD and Markdown-LD LSP support.
  • YAML-LD and Markdown-LD source mapping and JSON-LD semantics remain local extension work.