Skip to main content

FOVEA

Overview

FOVEA is a video annotation system built around persona-based ontology construction, rich temporal and spatial modeling, entity/situation world models, claim extraction, and collaborative annotation with role-based access control. Layers was directly inspired by FOVEA's persona and ontology system.

Type-by-Type Mapping

Ontology System

FOVEA TypeLayers EquivalentNotes
Personapub.layers.persona (record)Direct mapping. name, description, domain all transfer. FOVEA's role and informationNeed map to features. ontologyRefs links to specific ontologies this persona uses.
EntityTypepub.layers.ontology#typeDef with typeKind="entity-type"namename; glossgloss; constraintsfeatures; wikidataIdknowledgeRefs[].identifier with source="wikidata".
EventTypepub.layers.ontology#typeDef with typeKind="situation-type"rolesallowedRoles (array of roleSlot references). parentEventIdparentTypeRef.
RoleTypepub.layers.ontology#typeDef with typeKind="role-type"allowedFillerTypesallowedValues or features.
EventRolepub.layers.ontology#roleSlotroleTypeIdroleSlot reference; optionalrequired (inverted); minOccurrences/maxOccurrencesfeatures.
RelationTypepub.layers.ontology#typeDef with typeKind="relation-type"sourceTypes/targetTypesfeatures (standardized keys: domain, range); symmetric/transitive/reflexivefeatures (standardized boolean keys); inversefeatures (AT-URI of the inverse relation typeDef).
OntologyRelationpub.layers.graph#graphEdgeInstance of a typed relation between ontology-level objects.
TypeConstraintpub.layers.ontology#typeDef.allowedValues + featuresallowedTypes, requiredProperties, valueRange all expressible via features.
GlossItempub.layers.ontology#typeDef.gloss (string) + knowledgeRefsFOVEA's rich-text gloss with embedded references to types/objects is represented as a string gloss plus structured knowledgeRefs for cross-references. For richer inline markup, features can store structured gloss data.

World Model (Domain Objects)

FOVEA separates ontology types (what kinds of things exist) from world instances (specific entities/situations discovered in data). Layers handles world instances differently:

FOVEA TypeLayers EquivalentNotes
Entity (world object)pub.layers.graph#graphNode with nodeType="entity" + pub.layers.annotation#clusterSetFOVEA's world-level entities are modeled in Layers as: (1) graphNode records representing the entity in the property graph, with label, properties, and knowledgeRefs for grounding to external KBs (Wikidata, etc.); (2) clusterSet records that group all mentions of an entity across annotations; (3) graphEdge records linking mentions to graph nodes via edgeType="grounding" or edgeType="instance-of".
Event (world object)pub.layers.graph#graphNode with nodeType="situation" + pub.layers.annotation#clusterSet with kind="situation-coreference"Same pattern as entities. Situation instances are graphNode records; annotations link to them via graphEdge.
EntityTypeAssignmentpub.layers.annotation#annotation.ontologyTypeRefPersona-specific type assignments are handled by creating separate annotationLayer records per persona, each with its own ontologyRef.
EventInterpretationpub.layers.annotation#annotation with ontologyTypeRef + argumentsPer-persona situation interpretation with typed participants via argumentRef.
Locationpub.layers.defs#spatialExpression with type="location" or pub.layers.defs#boundingBoxGeographic coordinates (GPS, cartesian) use spatialExpression with spatialEntity.geometry as WKT POINT and crs="wgs84". For spatial annotations in images/video, Layers uses boundingBox and spatioTemporalAnchor.
EntityCollectionpub.layers.annotation#clusterSet with appropriate kindFOVEA's collection types (group, kind, functional, stage, portion, variant) map to clusterSet.kind (community-expandable via kindUri). aggregatePropertiesfeatures.
EventCollectionpub.layers.annotation#clusterSet + featuresSituation groupings with structure. EventStructureNode hierarchies can be represented via nested features or graph relations.

Temporal Model

FOVEA TypeLayers EquivalentNotes
Time (instant/interval)pub.layers.defs#temporalEntity (for calendar time) or pub.layers.defs#temporalSpan (for media time)FOVEA's TimeInstant maps to temporalEntity.instant; TimeInterval maps to temporalEntity.intervalStart/intervalEnd. For media-anchored time, temporalSpan with start/ending in milliseconds.
Time.videoReferencespub.layers.defs#temporalSpanDirect mapping — frame numbers convert to milliseconds via frame rate.
Time.vaguenesspub.layers.defs#temporalModifier + pub.layers.defs#temporalEntity.earliest/latestTemporal vagueness maps to temporalModifier.mod (approximate, early, late, etc.) and uncertainty bounds (earliest/latest). granularity is a first-class field on temporalEntity.
Time.deicticpub.layers.defs#temporalExpression.anchorRefDeictic temporal references use anchorRef pointing to the deictic center (document creation time, speech time, etc.).
RecurrenceRule (RFC 5545)pub.layers.defs#temporalEntity.recurrenceISO 8601 repeating intervals (e.g., R/P1W for weekly). More complex RFC 5545 rules use features.
HabitualPatternpub.layers.defs#temporalEntity.recurrence + featuresHabitual frequency as repeating interval; typicality in features.
CyclicalPatternpub.layers.defs#temporalEntity.recurrence + featuresPhase-based temporal patterns. Recurrence captures the cycle; phase metadata in features.
TimeCollectionpub.layers.annotation#clusterSet + featuresCollections of temporal references with pattern metadata.

Spatial Model and Video Annotation

FOVEA TypeLayers EquivalentNotes
BoundingBoxpub.layers.defs#boundingBoxDirect mapping: x, y, width, height. FOVEA adds frameNumber, confidence, isKeyframe — Layers handles frame number via keyframe.timeMs (converted from frame number) and confidence via annotation.confidence.
BoundingBoxSequencepub.layers.defs#spatioTemporalAnchorboxeskeyframes (each keyframe has timeMs and bbox); interpolationSegmentsinterpolation (linear, step, cubic); visibilityRanges → representable via features.
InterpolationSegmentpub.layers.defs#spatioTemporalAnchor.interpolation + featuresLayers supports linear, step, and cubic interpolation. FOVEA's bezier, ease-in, ease-out, parametric are representable as cubic with control points in features, or via community-defined interpolationUri values.
ObjectAnnotationpub.layers.annotation#annotation with anchor.spatioTemporalAnchorLinks a spatial region to a world object. linkedEntityIdannotation.knowledgeRefs or clusterSet membership.
TypeAnnotationpub.layers.annotation#annotation with ontologyTypeRefAssigns an ontology type to a spatial region. Persona-specificity is achieved by having separate annotation layers per persona.

Claims and Propositions

FOVEA TypeLayers EquivalentNotes
Claimpub.layers.annotation#annotation with kind="span" and appropriate subkindClaims are text spans with structured metadata. The subkind can be community-defined (e.g., "claim", "proposition", "hypothesis"). textannotation.text; glossannotation.features; confidenceannotation.confidence.
Claim.parentClaimIdannotation.parentId + annotation.childIdsClaim hierarchies use the same tree structure as constituency parses.
Claim.claimerType/claimerGlossannotation.arguments with role="claimer"The claimer is a semantic argument of the claim, modeled via argumentRef.
Claim.textSpans (discontiguous)anchor.tokenRefSequenceDiscontiguous spans use tokenRefSequence.tokenIndexes.
Claim (as graph node)pub.layers.graph#graphNode with nodeType="claim"Claims can also be modeled as standalone graph nodes when they represent propositions that exist independently of specific text spans. Properties store claim metadata.
ClaimRelationpub.layers.graph#graphEdge or pub.layers.annotation#annotation with kind="relation"Typed relations between claims (supports, contradicts, refines, generalizes) map to graph edges or relation-type annotations. Edge types include supports, contradicts, and community-defined types via edgeTypeUri.
VideoSummarypub.layers.expression + pub.layers.annotation layersA summary is itself an expression with annotations linking it to the source video and extracted claims.

Collaboration Model

FOVEA TypeLayers EquivalentNotes
UserATProto DIDDecentralized identity. No centralized user database.
ProjectCorpus (pub.layers.corpus)A project is a named collection of expressions with shared ontologies.
ProjectMembershipATProto social graphAccess control is handled by ATProto's decentralized identity layer, not by Layers records.
ResourceShareATProto record permissionsSharing is native to ATProto — records are public by default in user PDSes.
RBACAppview-level access controlLayers delegates access control to the appview implementation, not the data model.

Features Not in FOVEA (Layers Extensions)

  • Text annotation: FOVEA is video-first; Layers provides full stand-off text annotation (character spans, tokenizations, linguistic layers)
  • Interlinear glossing: Multiple tokenizations + alignment records
  • Syntactic parsing: Constituency, dependency, CCG parse representations
  • Discourse annotation: RST, PDTB, SDRT relation types
  • Linguistic judgment experiments: Structured experiment framework with agreement metrics
  • Eprint linkage: Academic paper references
  • W3C Web Annotation interoperability: Selector types for web annotation ecosystem
  • Community-expandable enums: URI+slug pattern across all fields