Web-Algebra
Conjunto de herramientas MCP genéricas para Linked Data/SPARQL y específicas de LinkedDataHub
Documentación
Web-Algebra
Un sistema componible de operaciones RDF que traduce instrucciones en lenguaje natural a operaciones JSON en un lenguaje específico de dominio para cargar, consultar y escribir datos enlazados RDF.
Descripción general
Este sistema implementa operaciones genéricas para datos enlazados RDF y gestión de SPARQL, así como algunas operaciones específicas de LinkedDataHub. Las operaciones se pueden consumir de dos maneras:
- Formato JSON ejecutable: Las operaciones se componen en estructuras JSON y se ejecutan mediante el motor de ejecución proporcionado
- Protocolo de Contexto de Modelo (MCP): Las operaciones se exponen como herramientas para que los agentes de IA las utilicen de forma interactiva
En lugar de que los agentes ejecuten flujos de trabajo semánticos paso a paso mediante llamadas individuales a herramientas MCP, Web-Algebra permite a los agentes compilar flujos de trabajo completos en "código de bytes" JSON optimizado que se ejecuta de forma atómica, lo que permite composiciones complejas de múltiples operaciones.
Demostración
Vea WebAlgebra en acción: traduciendo lenguaje natural a operaciones RDF.
Arquitectura
El sistema se construye alrededor de la clase base abstracta Operation que proporciona:
- Sistema de registro: Descubrimiento automático de operaciones desde
src/web_algebra/operations/ - DSL JSON: Las operaciones utilizan la clave
@opconargspara parámetros, admitiendo llamadas anidadas a operaciones - Sistema de tipos RDFLib: Utiliza los tipos
URIRef,Literal,GraphyResultinternamente para un manejo adecuado de RDF - Motor de ejecución: Tanto ejecución independiente como integración con servidor MCP
- Sistema de contexto: Las operaciones ForEach establecen el contexto de fila para que las operaciones internas accedan a él mediante
Value - Resolución de URI: Construcción semántica adecuada de URI con la operación
ResolveURI
Componentes clave
- Prompt del sistema: Definiciones completas de operaciones y especificación del formato JSON
- Semántica formal: Sistema de tipos completo y catálogo de operaciones
- Interfaz de operación: Clase base e intérprete JSON
- Implementaciones de operaciones: Directorio que contiene todas las operaciones disponibles
- Ejemplos JSON: Composiciones de operaciones de muestra
Operaciones
Las operaciones cubren datos enlazados de lectura-escritura, consultas SPARQL, manipulación de URI y creación de recursos específicos de LinkedDataHub. Lista no exhaustiva:
- Datos enlazados
GETPATCHPOSTPUT
- SPARQL
CONSTRUCTDESCRIBESELECTSubstituteValuesSPARQLString
- Esquema
ExtractClassesExtractDatatypePropertiesExtractObjectPropertiesExtractOntology
- Operaciones de URI y cadenas
ResolveURIEncodeForURIConcatReplaceStrSTRUUIDURI
- Flujo de control y variables
ValueVariableForEachIterateFilterBindingsCurrentPositionLastMerge
- Específicas de LinkedDataHub
ldh-CreateContainerldh-CreateItemldh-Listldh-AddFileldh-AddGenericServiceldh-AddResultSetChartldh-AddSelectldh-AddConstructldh-AddViewldh-AddObjectBlockldh-AddXHTMLBlockldh-RemoveBlockldh-GeneratePortalldh-GenerateClassContainersldh-GenerateOntologyViews
Uso
Requisitos previos
- Instalar uv
-
uv venv uv sync
Standalone
Natural language instruction
uv run python src/web_algebra/main.py
Luego ingrese una instrucción, por ejemplo:
Seleccionar 10 ciudades del Reino Unido al azar de DBpedia
Consulte más ejemplos
Actualmente requiere acceso a la API de OpenAI. El valor de entorno OPENAI_API_KEY debe estar configurado.
Ejecutar JSON
uv run python src/web_algebra/main.py --from-json ./examples/united-kingdom-cities.json
Consulte ejemplos JSON.
Con LinkedDataHub
- Ejecute LinkedDataHub v5
- Ejecute
src/web_algebra/main.py, que espera la ruta al certificado de propietario de su LDH y su contraseña como argumentos. Por ejemplo:
uv run python src/web_algebra/main.py --from-json ./examples/united-kingdom-cities.json \
--cert_pem_path ../LinkedDataHub/ssl/owner/cert.pem \
--cert_password **********
Aquí y en toda esta guía, los argumentos de certificado/contraseña del cliente solo son necesarios para la autenticación con LinkedDataHub. No los necesita si no está usando LinkedDataHub con Web Algebra.
Como servidor MCP
Transporte stdio
uv run python -m web_algebra
Transporte HTTP transmisible
uv run uvicorn web_algebra.server:app --reload
o con credenciales de certificado de LinkedDataHub (cambie la ruta y la contraseña por las suyas):
CERT_PEM_PATH="/Users/Martynas.Jusevicius/WebRoot/LinkedDataHub/ssl/owner/cert.pem" CERT_PASSWORD="********" uv run uvicorn web_algebra.server:app --reload
Configuración de MCP Inspector
Puede usar el inspector de esta manera:
npx @modelcontextprotocol/inspector
y luego abrir la URL impresa en su salida de consola, por ejemplo:
http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=b31e4b3d852b5a2445f45032c484e54e319bf16359585858cf88fe9a90816744
El MCP_PROXY_AUTH_TOKEN es obligatorio. Si el enlace no aparece, debe copiar el token de sesión de la consola y pegarlo en la configuración de Token de sesión de proxy del inspector.
Configuración de Web Algebra:
- Tipo de transporte
- HTTP transmisible
- URL
- http://127.0.0.1:8000/mcp
Configuración de herramienta de Claude Desktop
Agregue la entrada de Web Algebra (que usa transporte stdio) a la configuración mcpServer de su archivo claude_desktop_config.json:
{
"mcpServers": {
"Web Algebra": {
"command": "uv",
"args": [
"--directory",
"/Users/Martynas.Jusevicius/WebRoot/Web-Algebra/src",
"run",
"--with",
"mcp[cli]",
"--with",
"rdflib",
"--with",
"openai",
"python",
"-m",
"web_algebra"
],
"env": {
"CERT_PEM_PATH": "/Users/Martynas.Jusevicius/WebRoot/LinkedDataHub/ssl/owner/cert.pem",
"CERT_PASSWORD": "********"
}
}
}
}
Deje el comando tal como está. Esos argumentos uv run --with son importantes; de lo contrario, los paquetes de terceros no se pueden encontrar.
En mi Mac, la ruta a uv debe ser absoluta; de lo contrario, no funciona en Claude Desktop 🤷♂️.
Los valores de entorno CERT_PEM_PATH y CERT_PASSWORD son opcionales.
