@prefix : <https://claude.com/blog/how-anthropic-enables-self-service-data-analytics-with-claude#> .
@prefix schema: <http://schema.org/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix prov: <http://www.w3.org/ns/prov#> .

<> a schema:CreativeWork ;
    schema:name "Anthropic Self-Service Data Analytics with Claude — Comparison to data-twingler"@en ;
    schema:description "RDF knowledge graph comparing Anthropic's Claude-based self-service analytics approach (June 2026) with the OpenLink data-twingler reusable skill. Covers architecture, failure modes, query languages, skill model, entity resolution, validation, and provenance approaches."@en ;
    schema:dateCreated "2026-06-07T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-06-07T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://www.linkedin.com/in/kidehen#this> ;
    schema:about :comparisonAnalysis .

# ── Primary Subject: Anthropic Blog Post ──────────────────────────────────────

:anthropicBlogPost a schema:Article ;
    schema:name "How Anthropic enables self-service data analytics with Claude"@en ;
    schema:url <https://claude.com/blog/how-anthropic-enables-self-service-data-analytics-with-claude> ;
    schema:description "Anthropic's approach to enabling self-service business analytics using Claude Code. Describes the 3 failure modes of analytics agents (concept-entity ambiguity, data staleness, retrieval failure), their 4-layer agentic analytics stack (data foundations, sources of truth, skills, validation), and best practices for teams implementing LLM-driven analytics."@en ;
    schema:datePublished "2026-06-03"^^xsd:date ;
    schema:author :anthropicDataTeam ;
    schema:about :anthropicAnalyticsApproach .

:anthropicDataTeam a schema:Organization ;
    schema:name "Anthropic Data Science and Data Engineering Team"@en ;
    schema:description "Authors: Chen Chang, Clement Peng, Justin Leder, Johanne Jiao, Josh Cherry"@en .

# ── Anthropic's Analytics Approach ────────────────────────────────────────────

:anthropicAnalyticsApproach a schema:HowTo ;
    schema:name "Anthropic's Self-Service Analytics Approach"@en ;
    schema:description "A 4-layer agentic analytics stack using Claude Code skills for self-service business intelligence, achieving ~95% automation of business queries at ~95% accuracy."@en ;
    schema:step :anthro-step-foundations, :anthro-step-sourcesOfTruth,
        :anthro-step-skills, :anthro-step-validation .

:anthro-step-foundations a schema:HowToStep ;
    schema:position 1 ;
    schema:name "Data Foundations"@en ;
    schema:description "Canonical datasets, enforced standards, colocated artifacts (data code, semantic layer, dashboards in one repo), metadata as first-class product. Dimensional modeling and shift-left testing remain essential."@en .

:anthro-step-sourcesOfTruth a schema:HowToStep ;
    schema:position 2 ;
    schema:name "Sources of Truth"@en ;
    schema:description "Semantic layer (mandatory first path), lineage and transformation graph, query corpus (distilled into reference docs, not raw), business context via company knowledge graph."@en .

:anthro-step-skills a schema:HowToStep ;
    schema:position 3 ;
    schema:name "Skills (Procedural Knowledge)"@en ;
    schema:description "Markdown skill files with pairwise design (knowledge skill + unbook skill), proper LLM-oriented reference docs, skill maintenance colocated with data model changes, consistent experience across all surfaces (Slack, IDE, dashboards, standalone agents)."@en .

:anthro-step-validation a schema:HowToStep ;
    schema:position 4 ;
    schema:name "Validation"@en ;
    schema:description "Offline evals (dashboard-based + long-tail), ablation techniques at PR granularity, online validation via adversarial review, provenance footer, data quality checks, passive monitoring, active correction harvesting."@en .

# ── Three Failure Modes (Anthropic) ──────────────────────────────────────────

:conceptEntityAmbiguity a schema:Thing ;
    schema:name "Concept-Entity Ambiguity"@en ;
    schema:description "With hundreds of viable fields in a data model, the agent cannot choose the correct fields to answer a question. E.g., measuring 'active users': what actions count as active? Include fraudulent users? What lookback window?"@en .

:dataStaleness a schema:Thing ;
    schema:name "Data Staleness"@en ;
    schema:description "Data sources, business definitions, and schemas change constantly; assets and agent knowledge go stale and start returning subtly wrong answers."@en .

:retrievalFailure a schema:Thing ;
    schema:name "Retrieval Failure"@en ;
    schema:description "The right information exists in the data model but the agent cannot find it given the vastness of the search space."@en .

# ── Comparison Target: data-twingler ──────────────────────────────────────────

<https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/data-twingler#this> a schema:SoftwareApplication ;
    schema:name "data-twingler"@en ;
    schema:version "2.0.86" ;
    schema:description "OpenLink Data Twingler — a reusable SKILL.md for AI agents that routes natural language intent to the correct query language and live endpoint. Covers SQL, SPARQL, SPASQL, SPARQL-FED, and GraphQL. No imperative programming required from the user."@en ;
    schema:url <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/data-twingler> ;
    schema:applicationCategory "AI Agent Skill"@en ;
    schema:provider <http://dbpedia.org/resource/OpenLink_Software> .

:dataTwinglerHowTo a schema:HowTo ;
    schema:name "data-twingler Self-Service Analytics Approach"@en ;
    schema:description "Declarative multi-query-language analytics via a reusable SKILL.md. Users express questions in natural language; the skill routes to the appropriate query language and endpoint. Local-first vector search, KG-hybrid query modalities, semantic variant retries."@en ;
    schema:step :dt-step-localSearch, :dt-step-graphDiscovery,
        :dt-step-templateMatch, :dt-step-queryExec,
        :dt-step-entityDenotation .

:dt-step-localSearch a schema:HowToStep ;
    schema:position 1 ;
    schema:name "Local-First Vector Search (Step 0)"@en ;
    schema:description "Before any endpoint call, scan local RDF directories, extract candidate entities matching Vector Candidate Types (schema:Question, schema:DefinedTerm, schema:HowTo, schema:HowToStep, skos:Concept), embed user prompt, return cosine-similarity matches above 0.75 threshold. Inverts the traditional remote-first workflow."@en .

:dt-step-graphDiscovery a schema:HowToStep ;
    schema:position 2 ;
    schema:name "Graph IRI Discovery (KG-Hybrid)"@en ;
    schema:description "Two parallel search strategies: keyword (bif:contains) as primary path, server-side vector similarity (vvec:cosine_similarity_openai) as fallback. Supports semantic variant retry (up to 3 rephrasings) when both modalities return zero results."@en .

:dt-step-templateMatch a schema:HowToStep ;
    schema:position 3 ;
    schema:name "Predefined Template Matching"@en ;
    schema:description "8 templates (T1-T8) matching trigger phrases: Explore Data Space, Explore specific KG, HowTo queries, Q&A with context, DefinedTerm queries, Direct Entity Descriptions. No query executes until template matching is attempted."@en .

:dt-step-queryExec a schema:HowToStep ;
    schema:position 4 ;
    schema:name "Multi-Language Query Execution"@en ;
    schema:description "6 execution modes in priority order: direct curl → URIBurner REST functions → OAuth2 flow → MCP → chatPromptComplete → OPAL Agent. Covers SQL, SPARQL, SPASQL, SPARQL-FED, and GraphQL. Default endpoint: linkeddata.uriburner.com/sparql."@en .

:dt-step-entityDenotation a schema:HowToStep ;
    schema:position 5 ;
    schema:name "Entity Denotation via Hyperlinks"@en ;
    schema:description "All entity identifiers hyperlinked via linkeddata.uriburner.com/describe/?uri={url_encoded_entity_id}. Every result carries resolver URLs to source entities — providing inherent provenance built into the data model."@en .

# ── Comparison Analysis ───────────────────────────────────────────────────────

:comparisonAnalysis a schema:Report ;
    schema:name "Comparison: Anthropic Claude Analytics vs. data-twingler"@en ;
    schema:description "Systematic comparison of two approaches to LLM-driven self-service data analytics across 7 dimensions."@en .

:comp-queryLanguages a schema:Comparison ;
    schema:name "Query Language Support"@en ;
    schema:description "Anthropic: SQL-only (via semantic layer). data-twingler: SQL + SPARQL + SPASQL + SPARQL-FED + GraphQL."@en .

:comp-skillModel a schema:Comparison ;
    schema:name "Skill/Packaging Model"@en ;
    schema:description "Anthropic: Per-team markdown skill files in code repos with CI maintenance. data-twingler: Single reusable SKILL.md any agent environment loads. Zero build system. Drop-in deployment."@en .

:comp-entityResolution a schema:Comparison ;
    schema:name "Entity Resolution Strategy"@en ;
    schema:description "Anthropic: Human-curated canonical datasets + governed semantic layer + tooling enforcement. data-twingler: Vector search against existing KGs + template routing + Linked Data IRI hyperlinks. Leverages existing KGs rather than requiring curated semantic layers."@en .

:comp-provenance a schema:Comparison ;
    schema:name "Provenance & Trust"@en ;
    schema:description "Anthropic: Provenance footer appended to responses (source tier, freshness, owner). data-twingler: Inherent provenance via hyperlinked entity IRIs — every result carries resolvable URIs to source entities in the KG. Provenance is structural, not cosmetic."@en .

:comp-accuracy a schema:Comparison ;
    schema:name "Accuracy Approach"@en ;
    schema:description "Anthropic: ~95% accuracy via offline evals, adversarial review, ablation at PR granularity, active correction harvesting. data-twingler: Accuracy via template pre-gate (no ad-hoc queries until templates exhausted), local-first grounding, semantic variant retries, multiple fallback endpoints."@en .

:comp-reusability a schema:Comparison ;
    schema:name "Cross-Platform Reusability"@en ;
    schema:description "Anthropic: Skills synced to plugin marketplace, cloud-storage blobs, MCP resources. Requires sync infrastructure. data-twingler: Single SKILL.md loaded by any agent that supports the SKILL.md protocol. No sync infrastructure needed."@en .

:comp-staleness a schema:Comparison ;
    schema:name "Staleness Defense"@en ;
    schema:description "Anthropic: CI hooks flag model changes missing skill updates, colocated artifacts in single repo, freshness checks. data-twingler: Default endpoint returns live KG data; no stale local model problem. Local RDF can be regenerated on demand from source."@en .

# ── FAQ ──────────────────────────────────────────────────────────────────────

:faq1 a schema:Question ;
    schema:name "What are the three failure modes of analytics agents according to Anthropic?"@en ;
    schema:text "What are the three failure modes of analytics agents according to Anthropic?"@en ;
    schema:acceptedAnswer [
        a schema:Answer ;
        schema:text "1) Concept-Entity Ambiguity — the agent cannot map a user's question to the correct fields in the data model. 2) Data Staleness — business definitions and schemas change, making agent knowledge stale. 3) Retrieval Failure — the right information exists but the agent cannot find it in the vast search space."@en
    ] .

:faq2 a schema:Question ;
    schema:name "What query languages does data-twingler support that Anthropic's approach does not?"@en ;
    schema:text "What query languages does data-twingler support that Anthropic's approach does not?"@en ;
    schema:acceptedAnswer [
        a schema:Answer ;
        schema:text "data-twingler supports SPARQL, SPASQL (SPARQL embedded in SQL), SPARQL-FED (federated queries across endpoints), and GraphQL — in addition to plain SQL. Anthropic's approach is SQL-only, routed through a semantic layer."@en
    ] .

:faq3 a schema:Question ;
    schema:name "How does data-twingler handle entity disambiguation compared to Anthropic's approach?"@en ;
    schema:text "How does data-twingler handle entity disambiguation compared to Anthropic's approach?"@en ;
    schema:acceptedAnswer [
        a schema:Answer ;
        schema:text "Anthropic relies on human-curated canonical datasets and a governed semantic layer with tooling enforcement. data-twingler uses local-first vector search against existing Knowledge Graphs, template-based routing (T1-T8), and Linked Data hyperlinks (URIBurner resolver) for entity denotation. The KG provides inherent disambiguation via structured relationships."@en
    ] .

# ── Defined Terms (Glossary) ──────────────────────────────────────────────────

:termSemanticLayer a skos:Concept ;
    skos:prefLabel "Semantic Layer"@en ;
    skos:definition "A compiled set of metric and dimension definitions that maps business concepts to governed data entities. In Anthropic's stack, agents are structurally required to query the semantic layer first before falling back to raw SQL."@en .

:termSkill a skos:Concept ;
    skos:prefLabel "Skill (Claude Code)"@en ;
    skos:definition "A folder of markdown that Claude Code reads on demand, encoding procedural knowledge: which sources to consult in what order, how to navigate ambiguous data, and what a finished analysis looks like."@en .

:termSKILLmd a skos:Concept ;
    skos:prefLabel "SKILL.md"@en ;
    skos:definition "A standardized markdown file format for defining reusable AI agent skills. Any agent environment that supports the SKILL.md protocol can load and execute the skill. Used by data-twingler and other skills in the ai-agent-skills repository."@en .

:termKGHybrid a skos:Concept ;
    skos:prefLabel "KG-Hybrid Query Modality"@en ;
    skos:definition "A dual-path search approach combining keyword full-text search (bif:contains) and server-side vector similarity (vvec:cosine_similarity_openai) against the same knowledge graph endpoint. Used by data-twingler for Graph IRI Discovery."@en .

:termProvenanceFooter a skos:Concept ;
    skos:prefLabel "Provenance Footer"@en ;
    skos:definition "A metadata footer appended to every analytics response containing source tier (semantic layer vs curated reference vs raw table), data freshness date, and owning team. Used by Anthropic to help consumers judge response trustworthiness."@en .

:termLinkedDataEntityDenotation a skos:Concept ;
    skos:prefLabel "Linked Data Entity Denotation"@en ;
    skos:definition "The practice of hyperlinking every entity identifier in query results to a resolvable URI via a Linked Data resolver (e.g., linkeddata.uriburner.com/describe/?uri=...). Used by data-twingler for inherent provenance."@en .

# ── Cross-References ──────────────────────────────────────────────────────────

:anthropicBlogPost rdfs:seeAlso <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/data-twingler#this> .
<https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/data-twingler#this> rdfs:seeAlso :anthropicBlogPost .
:comparisonAnalysis rdfs:seeAlso :anthropicBlogPost, <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/data-twingler#this> .

# ── Graph Visualization Entities ──────────────────────────────────────────────

<http://dbpedia.org/resource/Anthropic> a schema:Organization ;
    schema:name "Anthropic"@en ;
    schema:description "An American AI research company that develops Claude, a family of large language models."@en ;
    schema:url <https://www.anthropic.com> .

<https://virtuoso.openlinksw.com/#this> a schema:SoftwareApplication ;
    schema:name "OpenLink Virtuoso"@en ;
    schema:description "A high-performance and scalable Multi-Model RDBMS, Data Integration Middleware, Linked Data Deployment, and HTTP Application Server Platform created by OpenLink Software."@en ;
    schema:url <https://virtuoso.openlinksw.com/> .

<https://linkeddata.uriburner.com/#this> a schema:WebApplication ;
    schema:name "URIBurner"@en ;
    schema:description "OpenLink's Linked Data URI resolution and RDF data retrieval service. Provides SPARQL endpoint access, RDF document sponging, and Linked Data resolver functionality at linkeddata.uriburner.com."@en ;
    schema:url <https://linkeddata.uriburner.com/> .

<http://dbpedia.org/resource/SPARQL> a schema:Thing ;
    schema:name "SPARQL"@en ;
    schema:description "SPARQL Protocol and RDF Query Language — a W3C-standardized query language for RDF data, supporting both simple triple pattern matching and complex federated queries across distributed SPARQL endpoints."@en ;
    schema:url <https://www.w3.org/TR/sparql11-query/> .

<http://dbpedia.org/resource/GraphQL> a schema:Thing ;
    schema:name "GraphQL"@en ;
    schema:description "A data query and manipulation language for APIs, providing an alternative to RESTful architectures with client-specified data shapes and real-time subscription support."@en ;
    schema:url <https://graphql.org/> .
