Skip to main content

Enable RDF (Knowledge Graph)

Collate’s Knowledge Graph & Ontology Explorer stores your metadata in a graph database powered by RDF (Resource Description Framework). Collate uses Apache Jena Fuseki as the SPARQL (SPARQL Protocol and RDF Query Language) store—the Collate server writes your entity metadata, relationships, and lineage into Fuseki, and the RDF Indexing application builds and maintains the graph.
Note: This page applies to BYOC deployments only. On Collate SaaS, RDF and Fuseki are deployed and managed for you—no action is required. RDF is available in Collate 1.13 and later.
To enable RDF on BYOC, follow these steps:
  1. Deploy Apache Jena Fuseki into your cluster.
  2. Configure the Collate Helm release to point at the Fuseki endpoint.

Prerequisites

Before you begin, make sure the following are in place.
  • A running Collate BYOC deployment installed with the open-metadata/openmetadata Helm chart. See EKS, AKS, GKE, or On-Prem.
  • OpenSearch as the search engine—already required for Collate BYOC.
  • kubectl and helm access to the namespace where Collate is deployed (the examples below use collate).

Step 1: Deploy Apache Jena Fuseki

Fuseki ships with the open-metadata/openmetadata-dependencies Helm chart (Collate 1.13.1 and later). Because Collate BYOC brings its own database and OpenSearch, you install this chart as a small, dedicated release with only Fuseki enabled: MySQL, OpenSearch, and Airflow stay off. The chart deploys Fuseki as a Deployment with a ClusterIP Service so the Collate server can reach it in-cluster.
  1. Create the Fuseki admin credentials. Fuseki needs an admin password, and the Collate server uses the same credentials to connect to it. Create a Kubernetes secret holding the password—the Fuseki chart reads fuseki-admin-credentials / admin-password by default:
  2. Deploy Fuseki from the dependencies chart. Add the Helm repository (skip if you already added it for the Collate install):
    Create a values file that enables only Fuseki. The fuseki sizing and persistence values shown are the chart defaults (the production BYOC sizing). On charts before 2.0.3, the image block overrides the stock chart default; on 2.0.3 and later it pins the version the chart already uses. The minimum required is fuseki.enabled: true, disabling the other dependencies, and openmetadata-dependencies 2.0.3 or later. Tune the rest for your catalog size:
    On openmetadata-dependencies 2.0.3 and later, the chart defaults to the openmetadata/fuseki:6.2.0 image. It sets FUSEKI_DATASETS to create the datasets, sets FUSEKI_UNION_DEFAULT_GRAPH=true and OPENMETADATA_EXTENSION_ENABLED=true, and runs the pod with fsGroup: 1000. SPARQL queries then read across all named graphs instead of only the default graph. The image block above is an explicit version pin, not a requirement. Charts before 2.0.3 default to stock Apache Jena Fuseki (daschswiss/apache-jena-fuseki) and don’t inject this environment, so RDF indexing finds no openmetadata dataset and the pod can crash-loop. Upgrade the chart rather than only overriding the image. Install it as a dedicated release in the same namespace as Collate:
    This deploys a fuseki Deployment, a ClusterIP Service, and a PersistentVolumeClaim. The Collate server reaches Fuseki in-cluster at http://fuseki:3030 (or http://fuseki.collate.svc.cluster.local:3030 from other namespaces).
    Note: You don’t need to create the Fuseki datasets manually. On openmetadata-dependencies 2.0.3 and later, the chart sets FUSEKI_DATASETS to openmetadata,openmetadata_a,openmetadata_b and FUSEKI_UNION_DEFAULT_GRAPH=true, so the image creates all three datasets with the union default graph enabled on first start. The _a and _b datasets let RDF indexing rebuild the graph in one dataset while the other stays live. Don’t create datasets by hand through the Fuseki admin API: datasets created that way have unionDefaultGraph off and fail the readiness check.
    Important: Size Fuseki for your catalog. Fuseki holds the whole graph in memory and can be OOMKilled during the initial RDF indexing of a large catalog. Keep jvmArgs (-Xmx) below the container memory limit and raise both together for larger deployments. The defaults above (8 GB heap / 12 GiB limit, 100 GiB storage) follow the production BYOC recommendation; reduce them for smaller catalogs.

Step 2: Configure Collate to Use Fuseki

Add the rdf block under openmetadata.config in your Collate Helm values (for example openmetadata.values.yml):
When rdf.enabled is true, the chart renders these into the Collate server environment as RDF_ENABLED, RDF_STORAGE_TYPE, RDF_ENDPOINT, RDF_REMOTE_USERNAME, RDF_DATASET, RDF_BASE_URI, and RDF_REMOTE_PASSWORD (pulled from the secret). Apply the change with a Helm upgrade against your existing release:
After the server pod restarts, confirm there are no Fuseki connection errors:

Step 3: Populate the Knowledge Graph

Enabling RDF wires up the store, but the graph is populated by the RDF Indexing application.
  1. In Collate, click the Profile icon and go to Settings > Applications.
  2. Open the RDF Indexing app.
  3. Run the app.
After it completes, the Knowledge Graph tab appears on data assets (for example, on a table) and the Ontology Explorer reflects your glossary terms and relationships.

Troubleshooting

Use these checks if RDF indexing isn’t working as expected after completing the setup.
  • The Knowledge Graph tab doesn’t appear on data assets RDF is enabled, but the graph hasn’t been populated yet. Go to Settings > Applications, open the RDF Indexing app, and run it. The tab appears once indexing completes.
  • The RDF Indexing app fails or the Collate server shows a connection error This usually means the Collate server can’t connect to Fuseki, or the credentials are wrong. Check the following:
    • Confirm the Fuseki pod is running:
      The pod status should be Running. If it’s Pending or CrashLoopBackOff, check its logs:
    • Confirm the remoteEndpoint in your Helm values points to the correct in-cluster address (http://fuseki:3030/<dataset-name>) and that the dataset name in the URL matches the dataset field.
    • Confirm the username and password values match the secret you created in Step 1: Deploy Apache Jena Fuseki.
  • RDF indexing fails with a 405 or a read-only Graph Store error Either the dataset is served read-only, or Fuseki is a stock Apache Jena Fuseki image. On openmetadata-dependencies 2.0.3 and later the openmetadata/fuseki:6.2.0 image is the default and the chart sets FUSEKI_DATASETS to create the datasets, so a 405 or read-only store usually means Fuseki serves the dataset read-only. If you’re on an older chart, upgrade to 2.0.3 or later, then re-run the RDF Indexing app. To inspect the dataset, port-forward the Fuseki service and send an OPTIONS request to its data endpoint. The Collate server image has no curl, so run curl from your own machine:
    1. Port-forward the Fuseki service:
    2. From your machine, send the OPTIONS request:
    Read the response headers. The X-OpenMetadata-* headers mean the extension is active. An Allow header without POST means the Graph Store is read-only. Stock Fuseki also returns an Allow header. Only the missing X-OpenMetadata-* headers identify a stock image.
  • Indexing starts but stops partway through, and the Fuseki pod restarts Fuseki ran out of memory during indexing. This happens when the catalog is large. Raise both fuseki.jvmArgs (-Xmx) and fuseki.resources.limits.memory together in fuseki.values.yml, upgrade the Fuseki release, then re-run the RDF Indexing app:
    The chart defaults (8 GB heap / 12 GiB limit) follow the production BYOC recommendation—larger catalogs may need more.