Skip to content

CLI: knowledge-mapper sparql — config-driven ANSWER/REACT KB backed by a SPARQL endpoint #19

Description

@david-debest

Goal

Add a knowledge-mapper sparql config.yaml subcommand that starts a Knowledge Base with auto-generated ANSWER and REACT handlers, where each handler queries a SPARQL endpoint defined in the config.

Motivation

Simple "read-only" knowledge bases that expose existing SPARQL data to the KE network should require zero Python code — just a config file and one command.

Usage

knowledge-mapper sparql config.yaml

Config structure (sketch)

knowledge_base:
  id: "http://example.org/my-kb"
  name: "my-kb"
  description: "..."
knowledge_engine_endpoint: "http://localhost:8280/rest"
sparql_endpoint: "http://localhost:7200/repositories/myrepo"

knowledge_interactions:
  - name: tree-answer-ki
    type: AnswerKnowledgeInteraction
    prefixes:
      ex: "http://example.org/"
    graph_pattern: "?tree ex:hasHeight ?height ; ex:hasName ?name ."
    sparql_query: "SELECT ?tree ?height ?name WHERE { ?tree a ex:Tree ; ex:hasHeight ?height ; ex:hasName ?name . }"
    # Optional explicit variable mapping (defaults to 1:1 by name):
    # variable_mapping:
    #   tree: tree
    #   height: height

Behaviour

  1. Load and validate the config file using KnowledgeBaseSettings (or a subclass).
  2. For each ANSWER/REACT KI in config: register it with an auto-generated handler that executes the configured SPARQL query, maps result variables to graph pattern variables (implicitly by name, or explicitly via variable_mapping), and returns the binding set.
  3. Register the KB and start the handling loop.
  4. On SIGINT/SIGTERM: unregister and exit cleanly.

Out of scope for this issue

  • ASK and POST interactions (no auto-handler, since they require knowing when to fire).
  • SQL and other data sources (separate issues when the time comes).

Implementation notes

  • Variable mapping: implicit (SPARQL var name == graph pattern var name) by default; explicit mapping optional per KI.
  • Use typer as the CLI framework (same as the run subcommand).
  • Connects to issue Create default handlers for POST and ASK interactions #15 (default handlers) — the auto-generated handler is essentially a default ANSWER/REACT handler backed by SPARQL.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions