Agent skill

Connect Rapidminer Graph

by mendixlabs in mendixlabs/mxcli

Fetch data from a RapidMiner graph mart or any SPARQL 1.1 HTTP endpoint (AnzoGraph and friends) and surface it as Mendix entities.

Apache-2.0Auto-check passed

Install Connect Rapidminer Graph

skills CLI
$ npx skills add mendixlabs/mxcli --skill connect-rapidminer-graph -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mendixlabs/mxcli connect-rapidminer-graph --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/mendix/connect-rapidminer-graph .claude/skills/connect-rapidminer-graph && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
connect-rapidminer-graph
GitHub stars
128
Token cost
~3.2k tokens
SKILL.md length
886 words
Files
1
Skills in repo
72
Repo updated
First seen
Licence
Apache-2.0

At a glance

Fetch data from a RapidMiner graph mart or any SPARQL 1.1 HTTP endpoint (AnzoGraph and friends) and surface it as Mendix entities.

  • Works in 6 steps: Persistent target entity → Non-persistent wrapper (for the import… → Data Transformer (JSLT) — flatten SPARQL… → …
  • A graph database with a SPARQL endpoint has to feed a Mendix app read-only
  • SKILL.md covers When to Use, Endpoint shape, SPARQL JSON result shape and The full pipeline, plus 5 more sections
  • Calls curl; reaches graphstudio.mendixdemo.com and cambridgesemantics.com

What it does

Connect Rapidminer Graph is an agent skill from mendixlabs/mxcli. Fetch data from a RapidMiner graph mart or any SPARQL 1.1 HTTP endpoint (AnzoGraph and friends) and surface it as Mendix entities. Use when a graph database with a SPARQL endpoint has to feed a Mendix app read-only.

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: Mendix cli tool, a headless way to work with Mendix projects. Enables Mendix projects for use with 3rd party agentic coding tools like Claude Code and Copilot. Includes a… The licence is Apache-2.0.

When your agent uses it

  • A graph database with a SPARQL endpoint has to feed a Mendix app read-only

Example prompts

  • “/connect-rapidminer-graph”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Persistent target entity
  2. Non-persistent wrapper (for the import mapping only)
  3. Data Transformer (JSLT) — flatten SPARQL response
  4. JSON structure + Import Mapping
  5. Microflow — the actual API call
  6. Page

What it can do on your machine

Read from SKILL.md and the folder at commit 20a6c89. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • graphstudio.mendixdemo.com
    • cambridgesemantics.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Connect Rapidminer Graph loads about 3.2k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 886 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from mendixlabs/mxcli at commit 20a6c89, republished under its Apache-2.0 licence (© mendixlabs). 886 words, ~3,168 tokens.

Download SKILL.mdSave it as .claude/skills/connect-rapidminer-graph/SKILL.md (or your agent's skills folder).
name
connect-rapidminer-graph
description
Fetch data from a RapidMiner graph mart or any SPARQL 1.1 HTTP endpoint (AnzoGraph and friends) and surface it as Mendix entities. Use when a graph database with a SPARQL endpoint has to feed a Mendix app read-only.

Connecting Mendix to RapidMiner / AnzoGraph via SPARQL

Use this skill when you need to fetch data from a RapidMiner graph mart (or any SPARQL 1.1 HTTP endpoint like AnzoGraph) and surface it in a Mendix app.

When to Use

  • An external graph database exposes a SPARQL HTTP endpoint with Basic Auth
  • You want the graph results to become Mendix entities (for display, search, further processing)
  • You have read-only needs — the pattern fits SELECT queries that return tabular results

Endpoint shape

A RapidMiner / AnzoGraph graphmart endpoint looks like:

https://<host>/sparql/graphmart/<url-encoded-graphmart-uri>

Example:

https://graphstudio.mendixdemo.com/sparql/graphmart/http%3A%2F%2Fcambridgesemantics.com%2FGraphmart%2F3617250aca6a40d88972c1c0de38f86a

Two things to note:

  1. The graphmart URI is URL-encoded and embedded in the path (colons and slashes become %3A / %2F).
  2. SPARQL queries are sent as the POST body with content-type: application/sparql-query, and the response is JSON when Accept: application/sparql-results+json.

Verify with curl first:

bash
curl -u 'user@example.com:password' \
  -H 'Accept: application/sparql-results+json' \
  -H 'Content-Type: application/sparql-query' \
  --data-binary 'SELECT ?s WHERE { ?s a <http://example.com/Foo> } LIMIT 10' \
  'https://host/sparql/graphmart/<encoded-uri>'

If curl returns 200 and a JSON results.bindings array, you're ready to wire it into Mendix.

SPARQL JSON result shape

Every SPARQL HTTP result looks like this:

json
{
  "head": { "vars": ["customer", "customerId", "customerName"] },
  "results": {
    "bindings": [
      {
        "customer":     {"type": "uri",     "value": "http://.../Customer/0000000"},
        "customerId":   {"type": "literal", "value": "CUST001"},
        "customerName": {"type": "literal", "value": "Global Tech Solutions Inc."}
      }
    ]
  }
}

Each row in bindings is an object of {var: {type, value}}. A JSLT transformer flattens this to something directly mappable into Mendix entities.

The full pipeline

┌────────────────────┐   ┌────────────────────┐   ┌────────────────────┐   ┌────────────────┐
│  Inline rest call  │─▶│ data transformer   │─▶│  import mapping    │─▶│ Mendix entity  │
│  post + basic auth │   │ jslt: flatten      │   │ json → entities    │   │ (persistent)   │
│  SPARQL as body    │   │ results.bindings   │   │                    │   │                │
└────────────────────┘   └────────────────────┘   └────────────────────┘   └────────────────┘

Why inline call rest service rather than create consumed rest service + send rest request?

  • At the time of writing, REST Client authentication: basic (username: '...', password: '...') silently fails to attach the Authorization header when the password contains special characters (e.g. !). Result: 401 Unauthorized.
  • Inline call rest service ... (Authentication: basic (Username: '<user>', Password: '<pass>')) handles the same credentials correctly.

Why persistent entities for the final list?

  • Non-persistent ReferenceSet children can't be extracted as a list in MDL microflows (no documented retrieve ... by association syntax), and loop $c in $Parent/Assoc fails at build time.
  • Persistent entities work with datasource: database on a DataGrid — the standard happy path.

Step-by-step template

1. Persistent target entity
sql
mdl 1;
@position(100, 100)
create persistent entity MyModule.Customer (
  CustomerUri:  string(500),
  CustomerId:   string(50),
  CustomerName: string(200)
);
2. Non-persistent wrapper (for the import mapping only)

Import mappings need a single root entity. A tiny non-persistent wrapper with one dummy attribute is enough:

sql
mdl 1;
@position(400, 100)
create non-persistent entity MyModule.CustomerImport (
  DummyAttr: string(10)
);

create association MyModule.CustomerImport_Customer
  from MyModule.CustomerImport
  to   MyModule.Customer
  type ReferenceSet;
3. Data Transformer (JSLT) — flatten SPARQL response

Take the nested results.bindings[].*.value shape and emit a flat customers[] array:

sql
mdl 1;
create data transformer MyModule.SimplifyCustomers
source json '{"head":{"vars":["customer","customerId","customerName"]},"results":{"bindings":[{"customer":{"type":"uri","value":"http://.../Customer/0"},"customerId":{"type":"literal","value":"CUST001"},"customerName":{"type":"literal","value":"Global Tech Solutions Inc."}}]}}'
{
  jslt $$
{
  "customers": [for (.results.bindings)
    {
      "customerUri":  .customer.value,
      "customerId":   .customerId.value,
      "customerName": .customerName.value
    }
  ]
}
  $$;
};

JSLT notes for this runtime:

  • [for (.path.to.array) <expr>] works for iteration.
  • .field.subfield path access works.
  • [N] array indexing works.
  • $var[start : end] slice works for strings — do not use substring(...) (it silently drops the field from the output).
  • let variables and if/else expressions work.
  • def fn(arg) ... helper functions work.
4. JSON structure + Import Mapping

The JSON structure represents the transformed shape (after JSLT), not the raw SPARQL response:

sql
mdl 1;
create json structure MyModule.JSON_Customers
sample '{"customers":[{"customerUri":"http://example.com/Customer/0","customerId":"CUST001","customerName":"Global Tech Solutions Inc."}]}';

create import mapping MyModule.IMM_Customers
  with json structure MyModule.JSON_Customers
{
  create MyModule.CustomerImport {
    create MyModule.CustomerImport_Customer/MyModule.Customer = customers {
      CustomerUri  = customerUri,
      CustomerId   = customerId,
      CustomerName = customerName
    }
  }
};
5. Microflow — the actual API call
sql
mdl 1;
create microflow MyModule.ACT_RefreshCustomers ()
returns boolean as $success
begin
  log info node 'MyModule' '=== Refresh start ===';

  -- Clear existing persistent records (full replace)
  retrieve $Existing from MyModule.Customer;
  loop $C in $Existing begin
    delete $C;
  end loop;

  -- Inline REST CALL — NOT the REST Client (see notes)
  $RawJson = call rest service post 'https://graphstudio.mendixdemo.com/sparql/graphmart/http%3A%2F%2Fcambridgesemantics.com%2FGraphmart%2F3617250aca6a40d88972c1c0de38f86a' (
    Headers: ('Accept': 'application/sparql-results+json', 'Content-Type': 'application/sparql-query'),
    Authentication: basic (Username: '<username>', Password: '<password>'),
    Body: template 'PREFIX model: <http://cambridgesemantics.com/SourceLayer/c4ce0eca2e7241f2aee13b46fbdca3f8/Model#> SELECT ?customer ?customerId ?customerName FROM <http://cambridgesemantics.com/SourceLayer/c4ce0eca2e7241f2aee13b46fbdca3f8/Model> WHERE {1} ?customer a model:ExamplePlmBom.Customer; model:ExamplePlmBom.Customer.id ?customerId; model:ExamplePlmBom.Customer.name ?customerName; {2}'
    with ({1} = '{', {2} = '}'),
    Timeout: 60,
  ) returns string
    on error continue;

  log info node 'MyModule' '{1}' with ({1} = 'HTTP status: ' + toString($latestHttpResponse/StatusCode));

  if $latestHttpResponse/StatusCode = 200 then
    $SimplifiedJson = transform $RawJson with MyModule.SimplifyCustomers;
    $ImportResult   = import from mapping MyModule.IMM_Customers($SimplifiedJson);
    log info node 'MyModule' '=== Done ===';
  end if;

  return true;
end;
6. Page
sql
mdl 1;
create page MyModule.Customer_Overview (
  title:  'Customers (from Graph Mart)',
  layout: Atlas_Core.Atlas_Default
) {
  dynamictext heading (content: 'Customers', rendermode: H2)
  actionbutton btnRefresh (caption: 'Refresh', action: call microflow MyModule.ACT_RefreshCustomers, buttonstyle: primary)
  datagrid gridCustomers (datasource: database MyModule.Customer sort by CustomerId asc) {
    column   (attribute: CustomerId,   caption: 'ID')
    column (attribute: CustomerName, caption: 'Name')
    column  (attribute: CustomerUri,  caption: 'URI')
  }
};

Gotchas (things that burned an hour during development)

! in Basic Auth password → 401

REST Client authentication: basic (...) with a literal password containing ! sends no auth header at runtime. Workaround: use inline call rest service ... (Authentication: basic (Username: '<user>', Password: '<pass>')). The inline form works with the same literal credentials.

SPARQL { braces in Body: template are consumed as placeholder escapes

In call rest service ... (Body: template '...'), the body is a template string where {1}, {2} are placeholders. A literal { must be escaped as {{, but in this runtime {{ is sent literally rather than being converted to { → server returns 400 Bad request.

Solution: pass literal braces as placeholder values:

sql
Body: template '... WHERE {1} ... {2}'
  with ({1} = '{', {2} = '}')
Show full SKILL.md (366 more words)Show less
JSON structure auto-detects ISO strings as DateTime

If your JSLT emits ISO 8601 timestamps ("2026-04-13T14:00") and the target Mendix attribute is string, create json structure ... sample '...' will infer datetime from the sample and mxbuild fails with CE5015 ("schema type DateTime doesn't match attribute type String").

Solutions:

  • Use a non-ISO sample value in the snippet (e.g. "2026-04-13 14:00 CET").
  • Or slice/format the timestamp in JSLT so it doesn't look like ISO 8601 ($rawTime[11 : 16] for HH:MM).
  • Or change the target attribute to datetime.
Non-persistent child lists can't be extracted in microflows

The import mapping happily populates CustomerImport with a ReferenceSet of Customer children, but:

  • return $Root/MyModule.CustomerImport_Customer → "Error(s) in expression" at build
  • declare $C list of MyModule.Customer = $Root/... → "Error(s) in expression"
  • loop $c in $Root/MyModule.CustomerImport_Customer → "The 'Iterate over' property is required"
  • DataGrid datasource: $currentObject/MyModule.CustomerImport_Customer → BSON serializer drops the datasource

Solution: Make the target entity persistent. The import mapping commits them automatically, and the page uses the standard datasource: database MyModule.Customer for the grid. A full replace on each refresh (delete-all-then-import) keeps data consistent with the graph.

Rapid drop/create cycles on the same entity can corrupt the MPR

If you drop entity X then create entity X repeatedly while associations referencing X exist, the associations may hold the old entity GUID → mxbuild fails with KeyNotFoundException. Fix by dropping/recreating the broken association after the entity change.

Exploring the graph

Before building the pipeline, explore the graph to understand what's there. Useful SPARQL queries (send via curl):

List all classes with counts:

sparql
select distinct ?class (count(?s) as ?count)
from <http://.../model>
where { ?s a ?class }
GROUP by ?class
ORDER by desc(?count)

List properties used by a given class:

sparql
PREFIX model: <http://.../model#>
select distinct ?property
from <http://.../model>
where {
  ?s a model:ExamplePlmBom.Customer ;
     ?property ?o .
}
ORDER by ?property

Filter to a single namespace (skip rdf/owl noise):

sparql
select distinct ?class ?property
from <http://.../model>
where {
  ?s a ?class ;
     ?property ?o .
  filter(STRSTARTS(STR(?class), "http://.../model#MyPrefix"))
}

Credential management

For demos, literal credentials inline in the microflow are the simplest and most reliable. For anything else, put them in a project constant and reference it as @Module.ConstantName — the one way MDL refers to a constant, in a microflow expression and in create consumed rest service ... authentication: basic (username: @Module.User, password: @Module.Password) alike. The older $ConstantName spelling in a REST credential still parses and warns MDL-DEPR083.

© mendixlabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/mendix/connect-rapidminer-graph of mendixlabs/mxcli.

Open the folder on GitHubat commit 20a6c89

Compare with similar skills

Connect Rapidminer Graph next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Connect Rapidminer Graph compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Connect Rapidminer Graph this skillmendixlabs/mxcli128—~3.2kAutomated safety check: PassApache-2.0
ConnectComposioHQ/awesome-claude-skills77k3 repos~987Automated safety check: PassNone
Graphagenticnotetaking/arscontexta3.5k1 repos~4.9kAutomated safety check: NotesMIT
Node Connectopenclaw/openclaw392k—~1.6kAutomated safety check: PassMIT
Bigquery Graphgoogle/adk-python22k—~4.8kAutomated safety check: PassApache-2.0
Connectnimbalyst/nimbalyst1.9k—~1.8kAutomated safety check: PassMIT

Similar skills

  • Connect

    ComposioHQ/awesome-claude-skills

    Connect Claude to any app. An agent skill from ComposioHQ/awesome-claude-skills.

    77k GitHub starsUsed in 3 repos~987 tokens
    Productivity & AutomationAuto-check passed
  • Graph

    agenticnotetaking/arscontexta

    Interactive knowledge graph analysis. An agent skill from agenticnotetaking/arscontexta.

    3.5k GitHub starsUsed in 1 repo~4.9k tokens
    Knowledge ManagementAuto-check: notes
  • Node Connect

    openclaw/openclaw

    Diagnose OpenClaw Control UI browser and native Android, iOS, or macOS node connection failures across route, auth, pairing, QR/setup-code, and reconnect states.

    392k GitHub stars~1.6k tokensUpdated today
    MobileAuto-check passed
  • Bigquery Graph

    google/adk-python

    Official

    Skill for Graph Query Language (GQL) or SQL/PGQ queries against a property graph.

    22k GitHub stars~4.8k tokensUpdated today
    DatabasesAuto-check passed
  • Connect

    nimbalyst/nimbalyst

    Connect this repository to its Nimbalyst team project so the session can read and write the team's pages.

    1.9k GitHub stars~1.8k tokensUpdated today
    Knowledge ManagementAuto-check passed
  • Code Review Graph Builder

    tirth8205/code-review-graph

    Builds or incrementally updates the code-review knowledge graph for a repository and reports whether the build succeeded, partly or failed.

    32k GitHub stars~295 tokensUpdated yesterday
    DevelopmentAuto-check passed

More from mendixlabs/mxcli

All 72 skills in this repo
  • Mendix Odata Pushdown

    mendixlabs/mxcli

    Push OData query options into the SQL of a Mendix resource served by a read microflow, so $filter, $orderby, $top, $skip, $count and the key lookup reach the database instead of being silently…

    128 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Mendix Vega Charts

    mendixlabs/mxcli

    Chart a Mendix app with Vega-Lite through a pluggable widget that takes the specification and the data as separate properties, so the model emits rows and never assembles a chart payload.

    128 GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Agents

    mendixlabs/mxcli

    Author Mendix AI agent documents in MDL — Model, Knowledge Base, Consumed MCP Service and Agent, with variables, tools and multi-line prompts.

    128 GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check passed
  • Mendix Bulk Oql Dml

    mendixlabs/mxcli

    Run set-based INSERT, UPDATE and DELETE against Mendix entities through OQL statements, which the runtime supports and Studio Pro cannot author.

    128 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Business Events

    mendixlabs/mxcli

    Define event-driven APIs over Kafka with Mendix business event services — publish and subscribe contracts, CREATE/DROP/DESCRIBE.

    128 GitHub starsUsed in 1 repo~1.3k tokens
    Auto-check passed
  • Catalog Search

    mendixlabs/mxcli

    Search the Mendix Catalog platform service registry (catalog.mendix.com) from the CLI to find services published across an organisation.

    128 GitHub starsUsed in 1 repo~1.4k tokens
    Auto-check passed

Questions about Connect Rapidminer Graph

What does Connect Rapidminer Graph do?

Fetch data from a RapidMiner graph mart or any SPARQL 1.1 HTTP endpoint (AnzoGraph and friends) and surface it as Mendix entities. Connect Rapidminer Graph is an agent skill from mendixlabs/mxcli.1 HTTP endpoint (AnzoGraph and friends) and surface it as Mendix entities.

When should I use Connect Rapidminer Graph?

Connect Rapidminer Graph fits situations like: A graph database with a SPARQL endpoint has to feed a Mendix app read-only.

How do I install Connect Rapidminer Graph in Claude Code?

Run `npx skills add mendixlabs/mxcli --skill connect-rapidminer-graph -a claude-code`. Or copy the skill folder (.claude/skills/mendix/connect-rapidminer-graph in mendixlabs/mxcli) into .claude/skills/connect-rapidminer-graph in your project. Claude Code loads it when a task matches its description.

How do I install Connect Rapidminer Graph in Codex?

Run `npx skills add mendixlabs/mxcli --skill connect-rapidminer-graph -a codex`. Or copy the skill folder (.claude/skills/mendix/connect-rapidminer-graph in mendixlabs/mxcli) into .agents/skills/connect-rapidminer-graph in your project. Codex loads it when a task matches its description.

Can I use Connect Rapidminer Graph in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mendixlabs/mxcli --skill connect-rapidminer-graph -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/connect-rapidminer-graph, .gemini/skills/connect-rapidminer-graph, .github/skills/connect-rapidminer-graph and .opencode/skills/connect-rapidminer-graph in your project.

What does Connect Rapidminer Graph need to run?

Going by SKILL.md and its folder, Connect Rapidminer Graph needs the command-line tools its instructions call (curl).

Does Connect Rapidminer Graph access the network?

SKILL.md names 2 domains. In commands or code: graphstudio.mendixdemo.com and cambridgesemantics.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Connect Rapidminer Graph safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Connect Rapidminer Graph use?

Connect Rapidminer Graph is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Connect Rapidminer Graph use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Connect Rapidminer Graph?

Skills that share tags, products or a category with Connect Rapidminer Graph: Connect (ComposioHQ/awesome-claude-skills, 77k stars), Graph (agenticnotetaking/arscontexta, 3.5k stars), Node Connect (openclaw/openclaw, 392k stars) and Bigquery Graph (google/adk-python, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Connect Rapidminer Graph?

mendixlabs (a GitHub organization) maintains it in mendixlabs/mxcli, which has 128 GitHub stars. The repository holds 72 skills in this directory. The repository was last updated on October 7, 2026.

Source: mendixlabs/mxcli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.