Skip to content
Eden Engine

WarSampo Finnish WWII Knowledge Graph: SPARQL Query (Persons, Units, Battles, Places)

ldfwarsa/sparql-query

Runs a read-only SPARQL SELECT query against the WarSampo Knowledge Graph, the Finnish Second World War linked-data publication of Aalto University: persons, military units, battles and other events, places, photographs, war diaries and casualty records (CC BY). You write the SPARQL; the answer is the standard SPARQL results document with the selected variables under `head.vars` and one object per solution under `results.bindings`. The query must end with LIMIT n (1 to 1000), optionally followed by OFFSET m; SELECT only, at most 2000 characters. An empty `bindings` list is a valid empty answer. WarSampo data as served by Eden Engine; not an official Aalto University product.

activeper callv1

Price

$0.0026 per call

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.

Data source

WarSampo Knowledge Graph (Aalto University SeCo)

WarSampo Knowledge Graph, Semantic Computing Research Group (SeCo), Aalto University / Linked Data Finland (ldf.fi), published under CC BY (https://creativecommons.org/licenses/by/4.0/). Data fields are passed through as the endpoint sends them. Served by Eden Engine; not an official Aalto University or WarSampo product.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

Connect once and your AI can find and run this tool, and any other it needs.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "ldfwarsa/sparql-query" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "ldfwarsa/sparql-query" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "ldfwarsa/sparql-query", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "ldfwarsa/sparql-query", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.0026
Updated
Oct 21, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "pattern": "^(?=[\\s\\S]*\\b[Ss][Ee][Ll][Ee][Cc][Tt]\\b)(?:[^#<]|<(?![^<>\"{}|^\\x60\\\\\\s]*>)|<[^<>\"{}|^\\x60\\\\\\s]*>)*\\b[Ll][Ii][Mm][Ii][Tt]\\s+([1-9][0-9]{0,2}|1000)(\\s+[Oo][Ff][Ff][Ss][Ee][Tt]\\s+[0-9]{1,7})?\\s*$",
      "maxLength": 2000,
      "minLength": 20,
      "description": "A SPARQL SELECT query of at most 2000 characters that ends with LIMIT n (n from 1 to 1000), optionally followed by OFFSET m, for example SELECT ?s ?l WHERE { ?s a <http://ldf.fi/schema/warsa/Battle> ; <http://www.w3.org/2004/02/skos/core#prefLabel> ?l } LIMIT 5. The LIMIT is required because the graph holds millions of statements; page with OFFSET. A query without it, one that is not a SELECT, or one with a # comment outside a <...> IRI is refused before any call is made; a query the engine cannot parse is refused as invalid."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "required": [
    "head",
    "results"
  ],
  "properties": {
    "head": {
      "type": "object",
      "properties": {
        "vars": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "`vars` lists the selected variable names.",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "description": "Engine statistics where the endpoint adds them (query time, result size).",
      "additionalProperties": true
    },
    "results": {
      "type": "object",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          },
          "description": "One object per solution, keyed by variable name. Each value is a term object: `type` (uri or literal), `value` (a string) and, for typed or language-tagged literals, `datatype` or `xml:lang`. A variable left unbound by an OPTIONAL is absent from its row. An empty list means no match."
        }
      },
      "additionalProperties": true
    }
  },
  "description": "The SPARQL 1.1 query results document (application/sparql-results+json), passed through as the endpoint sent it.",
  "additionalProperties": true
}