MATIH Platform is in active MVP development. Documentation reflects current implementation status.
11. Pipelines & Data Engineering
Ontology Service
GraphQL API

GraphQL API

The Ontology Service exposes a GraphQL API built with Strawberry for Python. The GraphQL endpoint provides a typed, self-documenting interface for querying and mutating ontology definitions with query depth limiting for security.

Source: data-plane/ontology-service/src/api/graphql/


Configuration

PropertyValue
FrameworkStrawberry (Python GraphQL library)
Endpoint/graphql
Max query depth10 levels
IntrospectionEnabled in dev, disabled in production

Schema Definition

# data-plane/ontology-service/src/api/graphql/schema.py
schema = strawberry.Schema(
    query=Query,
    mutation=Mutation,
    extensions=[
        QueryDepthLimiter(max_depth=10),
    ],
)

Queries

Get Object Type

query GetObjectType($id: ID!) {
  objectType(id: $id) {
    id
    name
    description
    layer
    status
    governance {
      owner
      steward
      classification
      piiFields
    }
    properties {
      name
      dataType
      required
      description
    }
    relationships {
      name
      targetType
      cardinality
    }
  }
}

List Object Types

query ListObjectTypes($layer: OntologyLayer, $status: ObjectTypeStatus) {
  objectTypes(layer: $layer, status: $status) {
    id
    name
    layer
    status
    propertyCount
    relationshipCount
  }
}

Search Object Types

query SearchObjectTypes($query: String!) {
  searchObjectTypes(query: $query) {
    id
    name
    description
    relevanceScore
  }
}

Mutations

Create Object Type

mutation CreateObjectType($input: ObjectTypeInput!) {
  createObjectType(input: $input) {
    id
    name
    status
  }
}

Update Property

mutation UpdateProperty($objectTypeId: ID!, $propertyName: String!, $input: PropertyInput!) {
  updateProperty(objectTypeId: $objectTypeId, propertyName: $propertyName, input: $input) {
    name
    dataType
    required
  }
}

Add Relationship

mutation AddRelationship($objectTypeId: ID!, $input: RelationshipInput!) {
  addRelationship(objectTypeId: $objectTypeId, input: $input) {
    name
    targetType
    cardinality
  }
}

Type Definitions

Key GraphQL types are defined in data-plane/ontology-service/src/api/graphql/types.py:

TypeFields
ObjectTypeid, name, description, layer, status, governance, properties, relationships
PropertyDefinitionname, dataType, description, required, validation
RelationshipDefinitionname, targetType, cardinality, joinType, inverseName
GovernanceInfoowner, steward, classification, piiFields, retentionDays
ValidationResultvalid, errors, warnings

Security

MeasureImplementation
AuthenticationJWT token validated from Authorization header
Tenant isolationX-Tenant-ID header scopes all queries to tenant
Query depthLimited to 10 levels via QueryDepthLimiter
IntrospectionDisabled in production deployments

Related Pages