Skip to main content

buildDetectionQueryFromPersona

@fovea/server


@fovea/server / utils/queryBuilder / buildDetectionQueryFromPersona

Function: buildDetectionQueryFromPersona()

buildDetectionQueryFromPersona(personaId, prisma, options): Promise<string>

Defined in: src/utils/queryBuilder.ts:228

Builds a detection query from a persona's ontology with advanced formatting options.

This function constructs a structured query string that includes persona context and selectable ontology components (entities, events, roles, relations) with optional glosses (descriptions) for each term.

The query format is optimized for detection models and includes:

  • Persona name and information need (always included)
  • Entity types with optional descriptions
  • Event types with optional descriptions
  • Role types with optional descriptions
  • Relation types with optional descriptions

Parameters

personaId

string

UUID of the persona to build query for

prisma

PrismaClient

PrismaClient instance for database access

options

DetectionQueryOptions = DEFAULT_QUERY_OPTIONS

Options controlling what to include in the query

Returns

Promise<string>

Structured query string formatted for detection models

Throws

Error if persona not found or has no ontology

Example

// Basic query with entity types only
const query = await buildDetectionQueryFromPersona(personaId, prisma)
// Returns:
// "Analyst: Baseball Scout
// Focus: Evaluating pitcher mechanics
//
// Entity Types: pitcher, batter, baseball"

// Query with types and instances
const queryWithInstances = await buildDetectionQueryFromPersona(personaId, prisma, {
includeEntityTypes: true,
includeEntityInstances: true,
includeLocationInstances: true
})
// Returns:
// "Analyst: Baseball Scout
// Focus: Evaluating pitcher mechanics
//
// Entity Types: pitcher, batter, baseball
// Entity Instances: John Smith, Derek Jeter
// Locations: Yankee Stadium, Home Plate"

// Query with glosses for both types and instances
const queryWithGlosses = await buildDetectionQueryFromPersona(personaId, prisma, {
includeEntityTypes: true,
includeEntityGlosses: true,
includeEntityInstances: true,
includeEntityInstanceGlosses: true
})
// Returns:
// "Analyst: Baseball Scout
// Focus: Evaluating pitcher mechanics
//
// Entity Types: pitcher (throws ball), batter (at bat)
// Entity Instances: John Smith (pitcher), Derek Jeter (shortstop)"