Skip to content

Roadmap Plugin

Bundled with iolanta ⩾ 2.1.12

iolanta iolanta-development-roadmap.yamlld --as https://iolanta.tech/roadmap/datatypes/mermaid
graph LR
  94a66155d45d1d72d781c8c707b8198d_b19("Implement YAML-LD Ontology")
  94a66155d45d1d72d781c8c707b8198d_b26("<code>mermaid</code> datatype from roadmap plugin does not resolve nor is documented")
  94a66155d45d1d72d781c8c707b8198d_b8("Unblock Nanopubs")
  https___iolanta_tech_Facet("Generate Facets list")
  click https___iolanta_tech_Facet "https://iolanta.tech/Facet/"
  94a66155d45d1d72d781c8c707b8198d_b7("First WASM based facet")
  94a66155d45d1d72d781c8c707b8198d_b25("Inference depends on alphabetical order of its CONSTRUCT queries")
  94a66155d45d1d72d781c8c707b8198d_b1("Render LD from IPFS")
  94a66155d45d1d72d781c8c707b8198d_b18("Tractatus Logico-Philosophicus → LD")
  94a66155d45d1d72d781c8c707b8198d_b20("HOWTO Make your own facet")
  94a66155d45d1d72d781c8c707b8198d_b10("Discovery MCP discovers LD based on free form text")
  94a66155d45d1d72d781c8c707b8198d_b6("Generate this roadmap from LD")
  94a66155d45d1d72d781c8c707b8198d_b2("Render a Decision Matrix with Iolanta")
  94a66155d45d1d72d781c8c707b8198d_b21("Upper ontology not chosen for <code>roadmap</code>")
  94a66155d45d1d72d781c8c707b8198d_b9("Start jeeves-nanopublications")
  94a66155d45d1d72d781c8c707b8198d_b5("Implement a 3D view for the roadmap (because should look cool)")
  https___github_com_Nanopublication_nanopub-py_pull_180("PR 180: Nanopublication/nanopub-py is merged")
  click https___github_com_Nanopublication_nanopub-py_pull_180 "https://github.com/Nanopublication/nanopub-py/pull/180"
  94a66155d45d1d72d781c8c707b8198d_b11("Armenian pronouns nanopub")
  94a66155d45d1d72d781c8c707b8198d_b4("Build roadmaps & plans with Iolanta")
  94a66155d45d1d72d781c8c707b8198d_b3("Manage ADRs with Iolanta")
  94a66155d45d1d72d781c8c707b8198d_b22("<code>$type: Bug</code> does not work; maybe use some other syntax even?")
  94a66155d45d1d72d781c8c707b8198d_b24("Roadmap <code>Unblocked</code> is a <code>Class</code>")
  94a66155d45d1d72d781c8c707b8198d_b12("Write nanopublications with Iolanta")
  94a66155d45d1d72d781c8c707b8198d_b23("Unable to specify if <code>Event</code> had happened")
  94a66155d45d1d72d781c8c707b8198d_b17("pyld fails on lexinfo")
  94a66155d45d1d72d781c8c707b8198d_b13("FOAF Title facet only reacts on foaf:Person class")
  94a66155d45d1d72d781c8c707b8198d_b14("Iolanta starts with a blank console")
  94a66155d45d1d72d781c8c707b8198d_b15("SPARQL inference handled by sparqlspace")
  94a66155d45d1d72d781c8c707b8198d_b16("sparqlspace has no integration tests")
  94a66155d45d1d72d781c8c707b8198d_b10 --> 94a66155d45d1d72d781c8c707b8198d_b12
  94a66155d45d1d72d781c8c707b8198d_b17 --> 94a66155d45d1d72d781c8c707b8198d_b11
  94a66155d45d1d72d781c8c707b8198d_b8 --> 94a66155d45d1d72d781c8c707b8198d_b11
  94a66155d45d1d72d781c8c707b8198d_b2 --> 94a66155d45d1d72d781c8c707b8198d_b3
  94a66155d45d1d72d781c8c707b8198d_b21 --> 94a66155d45d1d72d781c8c707b8198d_b22
  94a66155d45d1d72d781c8c707b8198d_b21 --> 94a66155d45d1d72d781c8c707b8198d_b23
  94a66155d45d1d72d781c8c707b8198d_b21 --> 94a66155d45d1d72d781c8c707b8198d_b24
  94a66155d45d1d72d781c8c707b8198d_b3 --> 94a66155d45d1d72d781c8c707b8198d_b4
  94a66155d45d1d72d781c8c707b8198d_b6 --> 94a66155d45d1d72d781c8c707b8198d_b4
  94a66155d45d1d72d781c8c707b8198d_b4 --> 94a66155d45d1d72d781c8c707b8198d_b5
  94a66155d45d1d72d781c8c707b8198d_b8 --> https___github_com_Nanopublication_nanopub-py_pull_180
  94a66155d45d1d72d781c8c707b8198d_b8 --> 94a66155d45d1d72d781c8c707b8198d_b9
  94a66155d45d1d72d781c8c707b8198d_b8 --> 94a66155d45d1d72d781c8c707b8198d_b10
  classDef predicate fill:transparent,stroke:transparent,stroke-width:0px;
  classDef unblocked fill:#0a5,stroke:#063,stroke-width:2px,color:#fff;
class 94a66155d45d1d72d781c8c707b8198d_b19 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b26 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b8 unblocked
class https___iolanta_tech_Facet unblocked
class 94a66155d45d1d72d781c8c707b8198d_b7 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b25 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b1 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b18 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b20 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b6 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b2 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b21 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b17 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b13 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b14 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b15 unblocked
class 94a66155d45d1d72d781c8c707b8198d_b16 unblocked
iolanta-development-roadmap.yamlld (top 20 lines)
"@context": https://iolanta.tech/roadmap/contexts/v0.1.yamlld

tasks:
  # IPFS rendering
  - $id: _:ipfs
    $: Render LD from IPFS

  # Decision Matrix & ADRs workflow
  - $id: _:render-decision-matrix
    $: Render a Decision Matrix with Iolanta
    blocks:
      - $id: _:manage-adrs
        $: Manage ADRs with Iolanta
        blocks:
          - $id: _:manage-roadmaps
            $: Build roadmaps & plans with Iolanta
            blocks:
              - $id: _:roadmap3d
                $: Implement a 3D view for the roadmap (because should look cool)

# …

Quick Start

To use the Roadmap plugin in your roadmap files, import the context:

"@context": https://iolanta.tech/roadmap/contexts/v0.1.yamlld

This context provides the namespace prefixes and property mappings you need to write roadmap data.

Minimal Example

"@context": https://iolanta.tech/roadmap/contexts/v0.1.yamlld

$included:
  - $id: _:complete-docs
    $type: roadmap:Task
    $: Complete documentation
    blocks:
      - $: Publish release
        $type: roadmap:Task

Nesting Tasks

Tasks can be nested directly under blocks: or is-blocked-by: properties. This creates a more compact and readable structure:

- $type: roadmap:Task
  $: Main task
  blocks:
    - $: Subtask 1
      $type: roadmap:Task
    - $: Subtask 2
      $type: roadmap:Task
      blocks:
        - $: Nested subtask
          $type: roadmap:Task

Identifiers

When you need to reference a roadmap item from another item (using blocks or is-blocked-by), you must give it an identifier using $id. In roadmap files, identifiers should be blank nodes using the _: prefix:

  • ✅ Good: $id: _:implement-auth
  • ❌ Bad: $id: roadmap:task-1 (full URI not needed for local references)

If an item is not referenced anywhere else in your roadmap, you don't need to provide an $id at all. You only need an identifier when: - The item is referenced from elsewhere (e.g., blocks: [_:some-task]) - The item needs to be referenced later in the file

Data Model

The Roadmap plugin uses the following classes and properties:

  • roadmap:Task


    A to-do item or feature
    Subclass of prov:Activity

  • roadmap:Bug


    A known issue
    Subclass of roadmap:Task

  • roadmap:Event


    A scheduled event or milestone
    Subclass of prov:Activity

  • roadmap:blocks


    Indicates that one item blocks another
    Inverse of roadmap:is-blocked-by, subproperty of prov:wasInformedBy

  • roadmap:is-blocked-by


    Indicates that one item is blocked by another
    Inverse of roadmap:blocks, subproperty of prov:wasInformedBy

Relationship to PROV Ontology

The roadmap vocabulary builds on the PROV ontology (prov:Activity, prov:wasInformedBy), allowing roadmap items to be integrated with provenance tracking and activity descriptions.

Rendering

Command Line

Render a roadmap file as a Mermaid diagram:

iolanta path/to/roadmap.yamlld --as https://iolanta.tech/roadmap/datatypes/mermaid

In MkDocs

Use the Iolanta template to render roadmaps in your documentation:

{{ (docs / 'path/to/roadmap.yamlld') | as('https://iolanta.tech/roadmap/datatypes/mermaid') }}

Exporting to Images

Generate PNG or SVG images from your roadmap for use in blogs, documentation, or presentations:

# Generate PNG
iolanta path/to/roadmap.yamlld --as https://iolanta.tech/roadmap/datatypes/mermaid | mmdc -i - -o roadmap.png

# Generate SVG
iolanta path/to/roadmap.yamlld --as https://iolanta.tech/roadmap/datatypes/mermaid | mmdc -i - -o roadmap.svg -b transparent

This requires @mermaid-js/mermaid-cli to be installed. Install it with:

npm install -g @mermaid-js/mermaid-cli

Context Versioning

The roadmap context is versioned to ensure stability. Current version:

  • v0.1: https://iolanta.tech/roadmap/contexts/v0.1.yamlld

When referencing the context, pin to a specific version (e.g., v0.1) for stability.

Future versions will be published at https://iolanta.tech/roadmap/contexts/v<version>.yamlld.