OpenMetadata RDF API

APIs for RDF and SPARQL operations

OpenAPI Specification

openmetadata-rdf-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: OpenMetadata APIs Agent Executions RDF API
  description: Common types and API definition for OpenMetadata
  contact:
    name: OpenMetadata
    url: https://open-metadata.org
    email: openmetadata-dev@googlegroups.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: '1.13'
servers:
- url: /api
  description: Current Host
- url: http://localhost:8585/api
  description: Endpoint URL
security:
- BearerAuth: []
tags:
- name: RDF
  description: APIs for RDF and SPARQL operations
paths:
  /v1/rdf/debug/glossary-relations:
    get:
      tags:
      - RDF
      summary: Debug glossary term relations in RDF
      description: Diagnostic endpoint to inspect what predicates are stored between glossary terms in the RDF store
      operationId: debugGlossaryRelations
      responses:
        '200':
          description: Debug information about glossary term relations
          content:
            application/json: {}
        '503':
          description: RDF service not enabled
  /v1/rdf/graph/explore:
    get:
      tags:
      - RDF
      summary: Explore entity graph
      description: Get graph data for an entity with relationships up to specified depth
      operationId: exploreEntityGraph
      parameters:
      - name: entityId
        in: query
        description: Entity ID
        required: true
        schema:
          type: string
          format: uuid
      - name: entityType
        in: query
        description: Entity type
        required: true
        schema:
          type: string
      - name: depth
        in: query
        description: Depth of relationships to explore
        schema:
          type: integer
          format: int32
          default: 2
      - name: entityTypes
        in: query
        description: Comma-separated entity types to keep in the graph
        schema:
          type: string
      - name: relationshipTypes
        in: query
        description: Comma-separated relationship types to keep in the graph
        schema:
          type: string
      responses:
        '200':
          description: Graph data with nodes and edges
          content:
            application/json: {}
        '404':
          description: Entity not found
        '503':
          description: RDF service not enabled
  /v1/rdf/graph/explore/export:
    get:
      tags:
      - RDF
      summary: Export explored entity graph
      description: Export the currently explored entity graph in Turtle or JSON-LD format
      operationId: exportEntityGraph
      parameters:
      - name: entityId
        in: query
        description: Entity ID
        required: true
        schema:
          type: string
          format: uuid
      - name: entityType
        in: query
        description: Entity type
        required: true
        schema:
          type: string
      - name: depth
        in: query
        description: Depth of relationships to explore
        schema:
          type: integer
          format: int32
          default: 2
      - name: entityTypes
        in: query
        description: Comma-separated entity types to keep in the graph
        schema:
          type: string
      - name: relationshipTypes
        in: query
        description: Comma-separated relationship types to keep in the graph
        schema:
          type: string
      - name: format
        in: query
        description: 'Export format: turtle or jsonld'
        schema:
          type: string
          default: turtle
      responses:
        '200':
          description: Entity graph exported successfully
        '400':
          description: Invalid request
        '503':
          description: RDF service not enabled
  /v1/rdf/glossary/{id}/export:
    get:
      tags:
      - RDF
      summary: Export glossary as ontology
      description: Export a glossary with all its terms and relationships as an ontology in RDF format (Turtle, RDF/XML, N-Triples, or JSON-LD). Includes SKOS vocabulary for semantic interoperability.
      operationId: exportGlossaryAsOntology
      parameters:
      - name: id
        in: path
        description: Glossary ID
        required: true
        schema:
          type: string
          format: uuid
      - name: format
        in: query
        description: RDF format (turtle, rdfxml, ntriples, jsonld)
        schema:
          type: string
          default: turtle
      - name: includeRelations
        in: query
        description: Include term relations
        schema:
          type: boolean
          default: true
      responses:
        '200':
          description: Glossary exported as ontology
          content:
            text/turtle: {}
            application/rdf+xml: {}
            application/n-triples: {}
            application/ld+json: {}
        '404':
          description: Glossary not found
        '503':
          description: RDF service not enabled
  /v1/rdf/search/similar/{entityType}/{id}:
    get:
      tags:
      - RDF
      summary: Find similar entities
      description: Find entities similar to the given entity using semantic analysis
      operationId: findSimilarEntities
      parameters:
      - name: entityType
        in: path
        description: Entity type
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Entity ID
        required: true
        schema:
          type: string
          format: uuid
      - name: limit
        in: query
        description: Maximum number of results
        schema:
          type: integer
          format: int32
          default: 10
      responses:
        '200':
          description: Similar entities
          content:
            application/json: {}
        '404':
          description: Entity not found
        '503':
          description: Service unavailable
  /v1/rdf/entity/{entityType}/{id}:
    get:
      tags:
      - RDF
      summary: Get entity as RDF
      description: Retrieve an entity in RDF format (JSON-LD, Turtle, RDF/XML, N-Triples)
      operationId: getEntityAsRdf
      parameters:
      - name: entityType
        in: path
        description: Entity type
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Entity id
        required: true
        schema:
          type: string
          format: uuid
      - name: format
        in: query
        description: RDF format
        schema:
          type: string
          default: jsonld
      responses:
        '200':
          description: Entity in requested RDF format
          content:
            application/ld+json: {}
            text/turtle: {}
            application/rdf+xml: {}
            application/n-triples: {}
        '404':
          description: Entity not found
        '503':
          description: RDF service not enabled
  /v1/rdf/inference/lineage/{entityId}:
    get:
      tags:
      - RDF
      summary: Get full lineage with inference
      description: Get complete upstream and downstream lineage including transitive relationships
      operationId: getFullLineage
      parameters:
      - name: entityId
        in: path
        description: Entity ID
        required: true
        schema:
          type: string
          format: uuid
      - name: entityType
        in: query
        description: Entity type
        required: true
        schema:
          type: string
      - name: direction
        in: query
        description: Direction (upstream, downstream, both)
        schema:
          type: string
          default: both
      responses:
        '200':
          description: Lineage retrieved successfully
        '404':
          description: Entity not found
  /v1/rdf/glossary/graph:
    get:
      tags:
      - RDF
      summary: Get glossary term relationship graph
      description: Get all glossary terms and their relationships as a graph. Supports filtering by glossary and pagination for large datasets.
      operationId: getGlossaryTermGraph
      parameters:
      - name: glossaryId
        in: query
        description: Filter by glossary ID (UUID)
        schema:
          type: string
          format: uuid
      - name: relationTypes
        in: query
        description: Filter by relation types (comma-separated)
        schema:
          type: string
      - name: limit
        in: query
        description: Maximum number of terms to return
        schema:
          type: integer
          format: int32
          default: 500
      - name: offset
        in: query
        description: Offset for pagination
        schema:
          type: integer
          format: int32
          default: 0
      - name: includeIsolated
        in: query
        description: Include isolated terms (terms without relations)
        schema:
          type: boolean
          default: true
      responses:
        '200':
          description: Graph data with nodes and edges
          content:
            application/json: {}
        '503':
          description: RDF service not enabled
  /v1/rdf/status:
    get:
      tags:
      - RDF
      summary: Get RDF service status
      description: Check RDF service status including inference configuration
      operationId: getRdfStatus
      responses:
        '200':
          description: RDF service status with inference information
          content:
            application/json: {}
  /v1/rdf/search/recommendations/{userId}:
    get:
      tags:
      - RDF
      summary: Get personalized recommendations
      description: Get entity recommendations based on user's interaction history
      operationId: getRecommendations
      parameters:
      - name: userId
        in: path
        description: User ID
        required: true
        schema:
          type: string
          format: uuid
      - name: type
        in: query
        description: Entity type for recommendations
        schema:
          type: string
      - name: limit
        in: query
        description: Maximum number of results
        schema:
          type: integer
          format: int32
          default: 10
      responses:
        '200':
          description: Recommended entities
          content:
            application/json: {}
        '404':
          description: User not found
        '503':
          description: Service unavailable
  /v1/rdf/sparql:
    get:
      tags:
      - RDF
      summary: Execute SPARQL query via GET
      description: Execute a SPARQL query against the RDF store using GET method
      operationId: querySparqlGet
      parameters:
      - name: query
        in: query
        description: SPARQL query string
        required: true
        schema:
          type: string
      - name: format
        in: query
        description: Response format (json, xml, csv, tsv)
        schema:
          type: string
          default: json
      - name: inference
        in: query
        description: Enable inference/reasoning (none, rdfs, owl, custom)
        schema:
          type: string
          default: none
      responses:
        '200':
          description: Query executed successfully
          content:
            application/json: {}
        '400':
          description: Invalid query
        '500':
          description: Internal server error
    post:
      tags:
      - RDF
      summary: Execute SPARQL query via POST
      description: Execute a SPARQL query against the RDF store using POST method
      operationId: querySparqlPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SparqlQuery'
      responses:
        '200':
          description: Query executed successfully
          content:
            application/json: {}
        '400':
          description: Invalid query
        '500':
          description: Internal server error
  /v1/rdf/search/semantic:
    get:
      tags:
      - RDF
      summary: Semantic search across entities
      description: Search for entities using semantic understanding and graph relationships
      operationId: semanticSearch
      parameters:
      - name: q
        in: query
        description: Search query
        required: true
        schema:
          type: string
      - name: type
        in: query
        description: Entity type to search
        schema:
          type: string
        example: table
      - name: limit
        in: query
        description: Maximum number of results
        schema:
          type: integer
          format: int32
          default: 10
      responses:
        '200':
          description: Search results
          content:
            application/json: {}
        '400':
          description: Invalid request
        '503':
          description: Service unavailable
  /v1/rdf/sparql/update:
    post:
      tags:
      - RDF
      summary: Execute SPARQL UPDATE
      description: Execute a SPARQL UPDATE operation (INSERT, DELETE, etc.)
      operationId: updateSparql
      requestBody:
        description: SPARQL UPDATE query
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SparqlQuery'
        required: true
      responses:
        '200':
          description: Update executed successfully
        '400':
          description: Invalid update query
        '403':
          description: Forbidden - insufficient permissions
        '500':
          description: Internal server error
components:
  schemas:
    SparqlQuery:
      required:
      - query
      type: object
      properties:
        query:
          type: string
        format:
          type: string
          enum:
          - json
          - xml
          - csv
          - tsv
          - turtle
          - rdfxml
          - ntriples
          - jsonld
        timeout:
          maximum: 300000
          exclusiveMaximum: false
          minimum: 0
          exclusiveMinimum: false
          type: integer
          format: int32
        defaultGraphUri:
          type: string
          format: uri
        namedGraphUri:
          type: array
          items:
            type: string
            format: uri
        inference:
          type: string
          enum:
          - none
          - rdfs
          - owl
          - custom
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT