Virtuoso Use Case Collection

Virtuoso for EU Cellar

A use-case document showing how Virtuoso supports a 24/7 Cellar Knowledge Graph constructed from many EU open datasets for humans, applications, and AI agents. The case study treats Cellar like DBpedia: a public, Virtuoso-backed knowledge graph deployed with Linked Data principles so it manifests a usable Semantic Web.

Use Case

Cellar is a public-sector semantic repository use case: multilingual EU publications and related open datasets need durable identifiers, RDF metadata, ontology-backed structure, queryable relationships, and continuous access. Virtuoso is modeled here as the platform that makes those RDF/SPARQL, Linked Data, and agent-facing workloads operational at scale.

Use-case problem

EU publications require multilingual, persistent, queryable metadata across legal, bibliographic, vocabulary, organisational, and harvested open-data domains.

EU open-data harvesting pattern

Cellar represents a pattern for turning many EU datasets into a coherent RDF knowledge graph that remains available around the clock.

Linked Data deployment pattern

The graph has to be deployed using Linked Data principles: durable IRIs, RDF descriptions, typed links, and resolver-friendly access that materialize a Semantic Web.

Performance and scalability mandate

The platform choice must satisfy non-negotiable requirements for graph scale, SPARQL performance, uptime, and concurrent human and agent access.

Virtuoso role

Virtuoso provides the RDF triple-store, SPARQL access layer, Linked Data publishing substrate, and scalable runtime for Cellar metadata workloads.

SPARQL workloads

Representative workloads include WEMI traversal, Official Journal retrieval, Whoiswho organisation lookup, identifier resolution, and assistant-mediated templates.

Integration pattern

Cellar combines REST for known content retrieval, feeds for ingestion notifications, and SPARQL for discovery, relationship traversal, and metadata analytics.

Use-case outcomes

The Virtuoso-backed Cellar pattern enables machine-readable EU publication metadata, reusable identifiers, queryable vocabularies, assistant-mediated access, and public Semantic Web deployment.

Platform Pattern

The pattern separates known-resource content retrieval from graph discovery: REST retrieves known content streams and notices; Virtuoso SPARQL supports metadata discovery, relationship traversal, identifier reconciliation, analytics, and Semantic Web access. High performance, scalability, and 24/7 availability are non-negotiable because the graph serves humans and automated agents.

Cellar Knowledge Graph

EU publication metadata knowledge graph constructed from many EU open datasets, stored in a triple store, and queried using SPARQL.

Virtuoso Universal Server

Virtuoso triple store/SPARQL platform identified in Cellar training as the Cellar knowledge graph store.

DBpedia Knowledge Graph

24/7 public knowledge graph powered by Virtuoso, used here as a comparison point for Cellar-style open data access.

Linked Data principles

Use HTTP IRIs, publish RDF descriptions, and connect resources so Cellar manifests a navigable Semantic Web.

Semantic Web

Web of machine-readable RDF resources enabled when public knowledge graphs expose dereferenceable identifiers and typed links.

Human and AI agent access

The deployed graph must be usable by browsers, SPARQL tools, applications, and AI agents that need durable identifiers and machine-readable context.

High performance and scalability

High-performance SPARQL execution, large graph scale, concurrency, and reliable uptime are non-negotiable platform requirements.

Cello Assistant

OpenLink assistant that uses AI and SPARQL templates to query the Cellar Public Knowledge Graph.

Source Mesh

Each source is represented in RDF and linked from the main analysis entity.

Architecture - Cellar

Describes METS packages, FRBR/WEMI, file-system and RDBMS storage, the knowledge graph, REST, RSS/Atom, and SPARQL dissemination.

Open source

Cellar Documentation

Documentation hub linking end-user manual, developer guide, code, training material, Postman collection, and research papers.

Open source

SPARQL Query Examples

Queries are modeled as schema:SoftwareSourceCode with preserved query text and target endpoints. Complete examples get live query actions; templates with placeholders are marked for value substitution instead of linked as runnable queries.

Extract a WEMI hierarchyRun live query

Retrieves Work, Expression, Manifestation, Item, language code, and format for a CELEX identifier.

prefix cdm: <http://publications.europa.eu/ontology/cdm#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix purl: <http://purl.org/dc/elements/1.1/>
select distinct ?work, ?expr, ?manif, ?langCode, str(?format) as ?format, ?item
where {
  ?work owl:sameAs <http://publications.europa.eu/resource/celex/32018R1805> .
  ?expr cdm:expression_belongs_to_work ?work ;
        cdm:expression_uses_language ?lang .
  ?lang purl:identifier ?langCode .
  ?manif cdm:manifestation_manifests_expression ?expr;
         cdm:manifestation_type ?format.
  ?item cdm:item_belongs_to_manifestation ?manif.
} LIMIT 1000
Retrieve Official Journals published in 2022Run live query

Finds Official Journal resources from 2022 and their business identifiers.

prefix cdm: <http://publications.europa.eu/ontology/cdm#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?uri ?businessIdentifier
WHERE {
  ?uri cdm:official-journal_year "2022"^^xsd:gYear.
  ?uri rdf:type cdm:official-journal.
  ?uri owl:sameAs ?businessIdentifier .
}
Retrieve EU Whoiswho dataRun live query

Retrieves person, membership, position, and organisation labels from the EU Whoiswho branch.

prefix skos: <http://www.w3.org/2004/02/skos/core#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix euvoc: <http://publications.europa.eu/ontology/euvoc#>
prefix org: <http://www.w3.org/ns/org#>
prefix vcard: <http://www.w3.org/2006/vcard/ns#>
prefix person: <http://publications.europa.eu/resource/person>
SELECT DISTINCT *
where {
  ?per a foaf:Person. ?per foaf:name ?name .
  ?per foaf:givenName ?givenName .
  ?per vcard:hasGender ?gender .
  ?per foaf:familyName ?familyName .
  ?per org:hasMembership ?membership.
  ?per vcard:hasHonorificPrefix ?honorificPrefix .
  ?membership euvoc:positionComplement ?position .
  ?membership org:organization ?org .
  ?org skos:prefLabel ?label .
  FILTER (str(?familyName) = 'MICHEL' && str(?givenName) = 'Charles')
  FILTER (lang(?position) = 'en' && lang(?label) = 'en')
}
Cello template: publications about a subjectTemplate needs values

Cello assistant template that federates into Cellar and matches EuroVoc labels. This template preserves documented placeholders and needs real values from the underlying knowledge graph before execution.

PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
PREFIX skos-core: <http://www.w3.org/2004/02/skos/core#>
SELECT *
WHERE {
  SERVICE <https://publications.europa.eu/webapi/rdf/sparql> {
    SELECT DISTINCT ?work ?label
    WHERE {
      ?work cdm:resource_legal_in-force "1"^^<http://www.w3.org/2001/XMLSchema#boolean> ;
            a cdm:legislation_secondary;
            cdm:work_date_document ?date ;
            cdm:work_is_about_concept_eurovoc ?eurovoc .
      {
        SELECT ?eurovoc
        WHERE {
          ?eurovoc skos-core:inScheme <http://eurovoc.europa.eu/100141>;
                   skos-core:prefLabel ?label .
          FILTER (str(?label)="{{Subject}}")
        }
      }
    }
    ORDER BY DESC(?date)
  }
}
{{LIMIT provided by /limit value. Default is LIMIT 10.}}
Cello template: business identifiers, title, and dateTemplate needs values

Cello assistant template for resolving identifiers and publication titles through CDM. This template preserves documented placeholders and needs real values from the underlying knowledge graph before execution.

PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT *
WHERE {
  SERVICE <https://publications.europa.eu/webapi/rdf/sparql> {
    SELECT GROUP_CONCAT(?psi, ',') AS ?identifier, STR(?title) AS ?title, ?date
    WHERE {
      ?expression cdm:expression_belongs_to_work ?work.
      ?work owl:sameAs ?psi .
      ?work cdm:work_date_document ?date .
      ?expression cdm:expression_title ?title.
      ?expression cdm:expression_uses_language <http://publications.europa.eu/resource/authority/language/ENG>.
      OPTIONAL { ?expression cdm:expression_subtitle ?subtitle. }
      VALUES(?work) { (<{{Add Publication URI Here}}>) }
    }
  }
}
{{LIMIT provided by /limit value. Default is LIMIT 10.}}
Training example: inspect triples for a Cellar identifierRun live query

Training-deck example that lists predicate/object pairs for a known Cellar resource.

prefix cellar: <http://publications.europa.eu/resource/cellar/>
select ?property ?object
where {
  cellar:db594e8d-c430-11ec-b6f4-01aa75ed71a1 ?property ?object .
}
Training example: retrieve other identifiers of a publicationRun live query

Training-deck example that starts from an Official Journal business identifier and retrieves equivalent publication identifiers.

prefix owl: <http://www.w3.org/2002/07/owl#>
SELECT ?uri ?psi
WHERE {
  ?uri owl:sameAs <http://publications.europa.eu/resource/oj/JOC_2022_182_R_0001>.
  ?uri owl:sameAs ?psi.
}
Training example: retrieve languages and formatsRun live query

Training-deck example that traverses Work, Expression, Manifestation, and Item resources to list language labels and formats.

prefix cdm: <http://publications.europa.eu/ontology/cdm#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?lang_en ?format
WHERE {
  ?work owl:sameAs <http://publications.europa.eu/resource/oj/JOC_2022_182_R_0001>.
  ?expression cdm:expression_belongs_to_work ?work.
  ?manifestation cdm:manifestation_manifests_expression ?expression.
  ?item cdm:item_belongs_to_manifestation ?manifestation.
  ?expression cdm:expression_uses_language ?languageConcept.
  ?languageConcept skos:prefLabel ?lang_en.
  FILTER(LANG(?lang_en)="en")
  ?manifestation cdm:manifestation_type ?format.
}
Training example: retrieve all work metadataRun live query

Training-deck example that retrieves all direct predicate/object metadata attached to the normalized work resource.

prefix owl: <http://www.w3.org/2002/07/owl#>
SELECT ?work ?p ?o
WHERE {
  ?work owl:sameAs <http://publications.europa.eu/resource/oj/JOC_2022_182_R_0001>.
  ?work ?p ?o.
}
Training example: retrieve publication metadata across WEMIRun live query

Training-deck example that retrieves metadata across Work, Expression, Manifestation, and Item levels.

prefix cdm: <http://publications.europa.eu/ontology/cdm#>
prefix owl: <http://www.w3.org/2002/07/owl#>
SELECT ?work ?pWork ?oWork ?expression ?pExpression ?oExpression ?manifestation ?pManifestation ?oManifestation ?item ?pItem ?oItem
WHERE {
  ?work owl:sameAs <http://publications.europa.eu/resource/oj/JOC_2022_182_R_0001>.
  ?expression cdm:expression_belongs_to_work ?work.
  ?manifestation cdm:manifestation_manifests_expression ?expression.
  ?item cdm:item_belongs_to_manifestation ?manifestation.
  ?work ?pWork ?oWork.
  ?expression ?pExpression ?oExpression.
  ?manifestation ?pManifestation ?oManifestation.
  ?item ?pItem ?oItem.
}
limit 1000
Training example: retrieve Official Journals in a date rangeRun live query

Training-deck example that retrieves Official Journals published within a specific period with class, number, collection, year, and document date.

prefix cdm: <http://publications.europa.eu/ontology/cdm#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?uri ?ojclass ?ojnumber ?ojcollection ?ojyear ?workdatedoc
WHERE {
  ?uri cdm:official-journal_class ?ojclass.
  ?uri cdm:official-journal_number ?ojnumber.
  ?uri cdm:official-journal_part_of_collection_document ?ojcollection.
  ?uri cdm:official-journal_year ?ojyear.
  ?uri cdm:work_date_document ?workdatedoc.
  ?uri rdf:type cdm:official-journal.
  FILTER(?workdatedoc >= "2022-01-01"^^xsd:date && ?workdatedoc < "2022-10-01"^^xsd:date)
}
Training example: retrieve Official Journal acts for 2024Run live query

Training-deck example for the Official Journal act class introduced in the 2024 context.

prefix cdm: <http://publications.europa.eu/ontology/cdm#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?uri
WHERE {
  ?uri cdm:official-journal-act_year "2024"^^xsd:gYear.
  ?uri rdf:type cdm:official-journal-act.
}
Training example: Official Journal act and business identifierRun live query

Training-deck example that connects Official Journal acts to business identifiers using owl:sameAs.

prefix cdm: <http://publications.europa.eu/ontology/cdm#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT DISTINCT ?c_act ?act
WHERE {
  ?c_act owl:sameAs ?act.
  ?c_act cdm:official-journal-act_year "2024"^^xsd:gYear.
  FILTER(regex(str(?act), "/oj/"))
}
Training example: retrieve case-law created in a date rangeRun live query

Training-deck practical-session example for case-law classes, ECLI identifiers, titles, and creator agents.

prefix cdm: <http://publications.europa.eu/ontology/cdm#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
select distinct ?w ?class ?ecli ?title ?agent
where {
  ?w a ?class.
  ?w cdm:date_creation_legacy ?datedoc.
  OPTIONAL { ?w cdm:case-law_ecli ?ecli. }
  OPTIONAL {
    ?e cdm:expression_belongs_to_work ?w.
    ?e cdm:expression_uses_language <http://publications.europa.eu/resource/authority/language/ENG>.
    ?e cdm:expression_title ?title.
    ?w cdm:work_created_by_agent ?agent.
  }
  FILTER(?datedoc >= "2022-01-01"^^xsd:date && ?datedoc < "2022-12-01"^^xsd:date)
  FILTER(?class in (
    <http://publications.europa.eu/ontology/cdm#document_cjeu>,
    <http://publications.europa.eu/ontology/cdm#court-report>,
    <http://publications.europa.eu/ontology/cdm#case-law>,
    <http://publications.europa.eu/ontology/cdm#summary_case-law>,
    <http://publications.europa.eu/ontology/cdm#summary_case-law_jure>
  ))
}
order by ?class
Training example: retrieve acts put in force in 2022 and still in forceRun live query

Training-deck practical-session example for legal acts in force, entry-into-force dates, and grouped document identifiers.

prefix cdm: <http://publications.europa.eu/ontology/cdm#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
select ?act ?date_entry_into_force (GROUP_CONCAT(?actID; separator=",") as ?actIds)
where {
  ?act cdm:resource_legal_in-force "true"^^xsd:boolean.
  ?act cdm:resource_legal_date_entry-into-force ?date_entry_into_force.
  ?act cdm:work_id_document ?actID.
  FILTER(?date_entry_into_force >= "2022-01-01"^^xsd:date && ?date_entry_into_force < "2023-01-01"^^xsd:date)
}
group by ?act ?date_entry_into_force
order by ?date_entry_into_force
European Data Portal endpoint smoke testRun live query

A small cross-portal query for validating the European Data Portal SPARQL endpoint included in the mesh.

select ?s ?p ?o
where {
  ?s ?p ?o .
}
limit 10

Knowledge Graph Explorer

Graph data is embedded from the companion RDF model at generation time. Nodes and edge labels resolve through URIBurner.

Drag nodes to pin them. Double-click to unpin. Click nodes or edge labels to resolve their IRIs.

HowTo

Workflow for using this RDF-backed artifact set.

Frame the workload

Decide whether the task is metadata discovery, relationship traversal, identifier resolution, content retrieval, or notification monitoring.

Account for harvested EU datasets

Identify which EU datasets, vocabularies, identifiers, and publication streams need to be harmonized into the operational knowledge graph.

Validate Linked Data deployment

Check that domain entities use durable IRIs, resolver-friendly RDF descriptions, typed relationships, and cross-graph links that can be followed by humans and agents.

Choose the interface

Use Virtuoso/SPARQL for discovery and relationship questions; use the REST API when the content or notice target is already known.

Inspect the query pattern

Open the SPARQL accordion that matches the workload and review the query body, endpoint, and modeled RDF entity links.

Adapt and run the query

Use the live query link as a starting point, replacing visible placeholders where the source template requires a value.

Trace the RDF model

Use the KG Explorer and resolver-backed links to inspect how the use-case entities, endpoints, query templates, and source documents connect.

FAQ

FAQ questions are resolver-backed RDF entities.

What is the Virtuoso use case?

Cellar shows Virtuoso used as an RDF triple-store and SPARQL access platform for high-value EU publication metadata and semantic repository workloads.

Why is Virtuoso central to this model?

The Cellar training material identifies the knowledge graph triple store as Virtuoso and explains that RDF triples are queried with SPARQL through the Virtuoso endpoint.

Why is 24/7 knowledge graph access important?

Cellar-like public knowledge graphs serve institutions, citizens, applications, and AI agents continuously, so durable availability is part of the use case rather than an optional deployment detail.

How is Cellar similar to DBpedia?

Both are public knowledge graph patterns where heterogeneous source data is transformed into RDF, published with Linked Data principles, and made available through Virtuoso-powered access paths.

Why are Linked Data principles essential?

Linked Data principles turn the graph into a Semantic Web surface: identifiers can be resolved, RDF descriptions can be followed, and agents can traverse typed relationships instead of scraping isolated pages.

Why are performance and scalability non-negotiable?

A public EU knowledge graph must handle large data volumes, multilingual metadata, concurrent use, and unpredictable agent workloads while keeping SPARQL discovery responsive.

How do AI agents benefit from this architecture?

AI agents can ground answers and workflows in dereferenceable IRIs, SPARQL query results, controlled vocabularies, and reusable graph relationships rather than brittle text-only context.

What workloads does the use case demonstrate?

The use case demonstrates WEMI hierarchy traversal, Official Journal retrieval, EU Whoiswho lookups, identifier resolution, vocabulary queries, and assistant-mediated SPARQL templates.

Which SPARQL endpoint should be used for Cellar?

The Cellar SPARQL endpoint is http://publications.europa.eu/webapi/rdf/sparql, modeled here as a WebAPI and linked to sample query entities.

What is the REST/SPARQL boundary?

REST is appropriate for retrieving known content streams and metadata notices; SPARQL is appropriate for list, discovery, relationship, and metadata query workloads.

Why does WEMI matter?

WEMI structures publications as Work, Expression, Manifestation, and Item, letting users retrieve language and format variants of a publication.

How does the Cello assistant fit?

Cello is modeled as an AI-assisted application that maps user requests to SPARQL templates targeting the Cellar public knowledge graph.

Why include the European Data Portal endpoint?

It provides cross-portal linked data context and another EU SPARQL service endpoint in the mesh.

Glossary

Key terms from the Cellar mesh.

Cellar

The Publications Office common data repository and semantic repository.

Virtuoso

The triple store/SPARQL platform identified in the Cellar training material.

DBpedia

A public 24/7 knowledge graph powered by Virtuoso and used here as a reference pattern.

Linked Data principles

HTTP IRI, RDF description, and interlinking rules that let graph resources resolve and connect across the Web.

Semantic Web

A Web of machine-readable, typed, linked resources that humans, applications, and AI agents can traverse.

AI agent access

Machine access pattern where agents use IRIs, RDF, SPARQL, and vocabularies as operational context.

Scalability

Capacity to sustain large graphs, concurrent access, and responsive query workloads.

CDM

Common Data Model ontology used for Cellar metadata.

WEMI

Work, Expression, Manifestation, Item model for publication variants.

Cellar identifiers

Canonical Cellar resource identifiers used as normalized graph subjects.

Case-law

CDM class family for CJEU and related case-law resources.

METS

Packaging standard used during Cellar ingestion.

CELEX

Identifier scheme for EU legal publications.

Cello

Assistant configuration for querying Cellar with SPARQL templates.