Skip to main content

Web-Algebra

Web-Algebra - Listed on Claude AI Directory

A composable RDF operations system that translates natural language instructions into JSON-formatted domain-specific language operations for loading, querying, and writing RDF Linked Data.

Overview

This system implements generic operations for RDF Linked Data and SPARQL management, as well as some LinkedDataHub-specific operations. Operations can be consumed in two ways:

  1. Executable JSON format: Operations are composed into JSON structures and executed by the provided execution engine
  2. Model Context Protocol (MCP): Operations are exposed as tools for AI agents to use interactively

Instead of agents executing semantic workflows step-by-step through individual MCP tool calls, Web-Algebra enables agents to compile entire workflows into optimized JSON "bytecode" that executes atomically - enabling complex multi-operation compositions.

Demo

Web-Algebra in action: an AI agent builds Linked Data pages over MCP

See WebAlgebra in action - translating natural language into RDF operations.

Architecture

The system is built around the Operation abstract base class that provides:

  • Registry System: Auto-discovery of operations from src/web_algebra/operations/
  • JSON DSL: Operations use @op key with args for parameters, supporting nested operation calls
  • RDFLib Type System: Uses URIRef, Literal, Graph, and Result types internally for proper RDF handling
  • Execution Engine: Both standalone execution and MCP server integration
  • Context System: ForEach operations set row context for inner operations to access via Value
  • URI Resolution: Proper semantic URI construction with ResolveURI operation

Key Components

Operations

The operations cover read-write Linked Data, SPARQL queries, URI manipulation, and LinkedDataHub-specific resource creation. Non-exhaustive list:

  • Linked Data
    • GET
    • PATCH
    • POST
    • PUT
  • SPARQL
    • CONSTRUCT
    • DESCRIBE
    • SELECT
    • Substitute
    • Values
    • SPARQLString
  • Schema
    • ExtractClasses
    • ExtractDatatypeProperties
    • ExtractObjectProperties
    • ExtractOntology
  • URI & String Operations
    • ResolveURI
    • EncodeForURI
    • Concat
    • Replace
    • Str
    • StrUUID
    • URI
  • Date/Time
    • Now
  • Control Flow & Variables
    • Value
    • Variable
    • ForEach
    • Iterate
    • Filter
    • Bindings
    • Current
    • Position
    • Last
    • Merge
  • LinkedDataHub-specific
    • ldh-CreateContainer
    • ldh-CreateItem
    • ldh-List
    • ldh-AddFile
    • ldh-AddGenericService
    • ldh-AddResultSetChart
    • ldh-AddSelect
    • ldh-AddConstruct
    • ldh-AddView
    • ldh-AddObjectBlock
    • ldh-AddXHTMLBlock
    • ldh-RemoveBlock
    • ldh-GeneratePortal
    • ldh-GenerateClassContainers
    • ldh-GenerateOntologyViews

Usage

Pre-requisites

  1. Install uv
  2. uv venv
    uv sync
    

Standalone

Natural language instruction

uv run python src/web_algebra/main.py

Then enter instruction, for example:

Select random 10 UK cities from DBpedia

See the instructions of the examples.

Currently requires OpenAI API access. OPENAI_API_KEY env value has to be set.

Execute JSON

uv run web-algebra --from-json ./examples/city-profiles/plan.json

See the examples: each has the instruction it answers, its plan, the result of a run, and checks.

With LinkedDataHub

  1. Run LinkedDataHub v6
  2. Give web-algebra your LDH's owner certificate and its password in the CERT_PEM_PATH and CERT_PASSWORD environment variables (or the --cert_pem_path and --cert_password options, which override them). For example:
export CERT_PEM_PATH=../LinkedDataHub/ssl/owner/cert.pem
export CERT_PASSWORD="$(cat ../LinkedDataHub/secrets/owner_cert_password.txt)"
uv run web-algebra --from-json ./examples/northwind-category-catalogue/plan.json

Here and throughout this guide, the client certificate and its password are only required for authentication with LinkedDataHub. You don't need them if you're not using LinkedDataHub with Web Algebra.

As MCP server

Install

Requires uv. Add this to your MCP client configuration (e.g. claude_desktop_config.json):

{
    "mcpServers": {
        "web-algebra": {
            "command": "uvx",
            "args": ["--from", "web-algebra", "web-algebra-mcp"],
            "env": {
                "CERT_PEM_PATH": "/path/to/LinkedDataHub/ssl/owner/cert.pem",
                "CERT_PASSWORD": "********"
            }
        }
    }
}

or with Claude Code:

claude mcp add web-algebra -e CERT_PEM_PATH=/path/to/LinkedDataHub/ssl/owner/cert.pem -e CERT_PASSWORD=******** -- uvx --from web-algebra web-algebra-mcp

uvx web-algebra mcp runs the same server.

Environment variables:

Name Required Description
CERT_PEM_PATH No Path to the LinkedDataHub owner certificate (PEM). Only needed for LinkedDataHub operations.
CERT_PASSWORD No Password for the certificate above.
OPENAI_API_KEY No OpenAI API key. Only needed for the SPARQLString tool, which asks a model to write the query.

stdio transport

uv run web-algebra-mcp

Streamable HTTP transport

uv run uvicorn web_algebra.server:app --reload

with CERT_PEM_PATH and CERT_PASSWORD set, as above, for LinkedDataHub.

MCP Inspector config

You can the inspector like this:

npx @modelcontextprotocol/inspector

and then open on the URL printed in its console output, for example:

http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=b31e4b3d852b5a2445f45032c484e54e319bf16359585858cf88fe9a90816744

The MCP_PROXY_AUTH_TOKEN is required. If the link does not appear, you need to copy the session token from the console and paste it into inspector's Proxy Session Token config.

Web Algebra's settings:

Transport Type
Streamable HTTP
URL
http://127.0.0.1:8000/mcp

Claude Desktop tool config from a local checkout

To run the MCP server from a local checkout instead of the published package, add a Web Algebra entry (that uses stdio transport) to the mcpServer configuration your claude_desktop_config.json file:

{
    "mcpServers": {
        "Web Algebra": {
            "command": "uv",
            "args": [
                "--directory",
                "/path/to/Web-Algebra",
                "run",
                "web-algebra-mcp"
            ],
            "env": {
                "CERT_PEM_PATH": "/path/to/LinkedDataHub/ssl/owner/cert.pem",
                "CERT_PASSWORD": "********"
            }
        }
    }
}

Leave the command as it is. Those uv run --with arguments are important, otherwise 3rd party packages cannot be found.

On my Mac, the path to uv has to be absolute, otherwise it doesn't work in Claude Desktop 🤷‍♂️.

CERT_PEM_PATH and CERT_PASSWORD env values are optional.

Metadata

Release files for web-algebra 2.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for web-algebra 2.0.3
File Size Uploaded Provenance Actions
web_algebra-2.0.3.tar.gz 110.6 kB With provenance Details for web_algebra-2.0.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for web-algebra 2.0.3
File Interpreter ABI Platform Actions
web_algebra-2.0.3-py3-none-any.whl Python 3 none any Details for web_algebra-2.0.3-py3-none-any.whl

Total release size: 254.8 kB

Release files / web_algebra-2.0.3.tar.gz

Download URL web_algebra-2.0.3.tar.gz
Size 110.6 kB
Tags Source
SHA-256 checksum
How to use checksums
2a3f5ef8a44ec80d2f24c9dadac9429509e211fe0bd8638814ca195bc36cbde7
BLAKE2b-256 checksum
How to use checksums
1125359775b554a34d8a7fa3f6235345040e3bcf43842bf322394657cfec574e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / web_algebra-2.0.3-py3-none-any.whl

Download URL web_algebra-2.0.3-py3-none-any.whl
Size 144.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
88aa0e0629728b3fb4d9ce9ac67f821c67f6c90b83cd41baee5b7687c15a5f87
BLAKE2b-256 checksum
How to use checksums
a197806ffb8be741dff74d9486ec83d9cf3a13ada9e3e3d49093d57cc0b08a93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Security for web-algebra 2.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for web_algebra-2.0.3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page