Skip to main content
OWL 2 · W3C standard · CC-BY-4.0

The AEO Ontology

Most AEO tools give you numbers. We give you structured data. Our ontology is modelled using OWL 2, the W3C standard used by compliance-grade data systems worldwide. Every entity in our product (brands, pages, AI engines, citations) has a formal definition your enterprise knowledge graph can consume directly.

Class diagram

A live, force-directed view of every class in the ontology and how they relate. Hover a node for its definition. Click a node to jump to its entry in the class reference below.

AEO classes (aeo:)Imported classes (schema:, prov:, skos:)Edge = object propertyDashed = rdfs:subClassOf (inheritance)

Class reference

Every class in the aeo: namespace, generated directly from the Turtle source. Imported classes from schema.org, PROV-O and SKOS are listed at the end for reference.

AEO Compliance Check

aeo:AEOComplianceCheck

A named rule or heuristic used to evaluate whether a page complies with AEO best practices (e.g. schema markup, Q&A structure, factual grounding). Modelled as a skos:Concept to allow hierarchical taxonomies of checks.

Sub-class of
skos:ConceptConcept
Incoming properties
  • aeo:Page → aeo:failsCheck
  • aeo:Page → aeo:passesCheck

AI Engine

aeo:AIEngine

A generative answer engine or large language model service that produces answers to prompts. Examples: ChatGPT, Gemini, Perplexity, Claude, Google AI Overview.

Sub-class of
schema:SoftwareApplicationSoftwareApplication
Incoming properties
  • aeo:Page → aeo:sourceFor
  • aeo:Citation → aeo:citedInAnswer

Brand

aeo:Brand

A commercial, non-profit or personal brand tracked for answer-engine visibility. Extends schema:Organization with AEO-specific semantics (monitored prompts, AI visibility, citations).

Sub-class of
schema:OrganizationOrganization
Outgoing properties
  • aeo:competesWith → aeo:Brand
Incoming properties
  • aeo:Mention → aeo:mentions
  • aeo:Brand → aeo:competesWith
  • aeo:VisibilityReport → aeo:forBrand

Citation

aeo:Citation

A reference in an AI engine's answer that links to, quotes from, or attributes information to a source (typically a web page). Modelled as a prov:Entity so that its derivation chain can be tracked.

Sub-class of
prov:EntityEntity
Outgoing properties
  • aeo:cites → aeo:Page
  • aeo:citedInAnswer → aeo:AIEngine

Competitor

aeo:Competitor

A brand identified as competing with the tracked brand for the same prompts, queries, or answer-engine share of voice. Every Competitor is a Brand.

Sub-class of
aeo:BrandBrand

Mention

aeo:Mention

An occurrence of a brand name or brand entity inside an AI engine's answer text, regardless of whether it is linked or cited.

Outgoing properties
  • aeo:mentions → aeo:Brand

Opportunity

aeo:Opportunity

A detected actionable insight — for example an unranked keyword, a missing citation, or a declining mention trend — that represents a chance to improve visibility.

Optimisation Score

aeo:OptimisationScore

A numerical assessment of how well a page is optimised for answer engines, composed of weighted compliance check outcomes.

Outgoing properties
  • aeo:scoreValue → xsd:decimal
Incoming properties
  • aeo:Page → aeo:hasScore

Page

aeo:Page

A web page indexed, crawled, or evaluated by the AEO platform. Extends schema:WebPage with AEO-specific annotations such as optimisation scores and compliance checks.

Sub-class of
schema:WebPageWebPage
Outgoing properties
  • aeo:answersPrompt → aeo:Prompt
  • aeo:ranksFor → aeo:Query
  • aeo:targetsQuery → aeo:Query
  • aeo:failsCheck → aeo:AEOComplianceCheck
  • aeo:passesCheck → aeo:AEOComplianceCheck
  • aeo:sourceFor → aeo:AIEngine
  • aeo:partOfCluster → aeo:Page
  • aeo:linksTo → aeo:Page
  • aeo:hasScore → aeo:OptimisationScore
Incoming properties
  • aeo:Citation → aeo:cites
  • aeo:Page → aeo:partOfCluster
  • aeo:Page → aeo:linksTo

Prompt

aeo:Prompt

A natural-language input issued to a generative AI engine (e.g. ChatGPT, Gemini, Perplexity, Claude). A specialisation of aeo:Query focused on conversational or answer-engine interactions.

Sub-class of
aeo:QueryQuery
Incoming properties
  • aeo:Page → aeo:answersPrompt

Query

aeo:Query

A user-issued information-seeking expression directed at a search or answer engine. Specialisation of schema:SearchAction capturing both classical search queries and answer-engine prompts.

Sub-class of
schema:SearchActionSearchAction
Incoming properties
  • aeo:Page → aeo:ranksFor
  • aeo:Page → aeo:targetsQuery

Visibility Report

aeo:VisibilityReport

A periodic aggregation of a brand's AI visibility metrics across engines and prompts, including mention rate, citation rate, share of voice, and rank.

Outgoing properties
  • aeo:forBrand → aeo:Brand
  • aeo:coveringPeriod → schema:DateTime
  • aeo:mentionCount → xsd:nonNegativeInteger
  • aeo:citationCount → xsd:nonNegativeInteger

Imported classes

  • skos:Concept
    Concept
  • schema:DateTime
    DateTime
  • prov:Entity
    Entity
  • schema:Organization
    Organization
  • schema:SearchAction
    SearchAction
  • schema:SoftwareApplication
    SoftwareApplication
  • schema:WebPage
    WebPage

Downloads

The same ontology, three serialisations. All served from the canonical endpoint with HTTP content negotiation: you can also request the endpoint directly and send an Accept header.

The endpoint at /ontology/aeo/v1/ honours the Accept header and returns the matching serialisation: the links above set the right extension for convenience.

Example SPARQL queries

Because the ontology is standard OWL, you can query any instance graph with SPARQL. The queries below are illustrative: run them against your own triple store once your knowledge graph is exported.

Which AI engines cited my brand in the last 30 days?

Pulls every aeo:Citation attached to the given brand and groups by the answering AI engine.

PREFIX aeo: <https://prismdiscovery.ai/ontology/aeo#>
PREFIX schema: <https://schema.org/>

SELECT ?engine (COUNT(?citation) AS ?cites) WHERE {
  ?brand a aeo:Brand ;
         schema:name "Acme Ltd" .
  ?page  aeo:forBrand ?brand .
  ?citation aeo:cites ?page ;
            aeo:citedInAnswer ?engine ;
            schema:dateCreated ?when .
  FILTER (?when >= (NOW() - "P30D"^^xsd:duration))
}
GROUP BY ?engine
ORDER BY DESC(?cites)

Pages that fail a schema-markup compliance check

Surfaces aeo:Page instances failing any aeo:AEOComplianceCheck whose skos:broader taxonomy is "structured-data".

PREFIX aeo: <https://prismdiscovery.ai/ontology/aeo#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT ?page ?check WHERE {
  ?page  a aeo:Page ;
         aeo:failsCheck ?check .
  ?check a aeo:AEOComplianceCheck ;
         skos:broader aeo:StructuredDataChecks .
}

Competitor share of voice on a single prompt

Counts distinct mentions per brand for pages answering a given aeo:Prompt over the current reporting period.

PREFIX aeo: <https://prismdiscovery.ai/ontology/aeo#>

SELECT ?brand (COUNT(DISTINCT ?mention) AS ?mentions) WHERE {
  ?prompt a aeo:Prompt ;
          schema:name "best crm for smb" .
  ?page aeo:answersPrompt ?prompt .
  ?mention aeo:mentions ?brand ;
           aeo:citedInAnswer ?engine .
}
GROUP BY ?brand
ORDER BY DESC(?mentions)

Pages ranking for a query but missing optimisation score

Finds pages that already rank for a query but have no aeo:OptimisationScore: candidates for a rapid AEO audit.

PREFIX aeo: <https://prismdiscovery.ai/ontology/aeo#>

SELECT ?page ?query WHERE {
  ?page a aeo:Page ;
        aeo:ranksFor ?query .
  FILTER NOT EXISTS { ?page aeo:hasScore ?score }
}

Versioning and licence

AEO Ontology v1.0.0 · CC-BY-4.0 · Published 2026-04-23.

The ontology follows Semantic Versioning at the document level. Major releases are reserved for backward-incompatible changes (removing a class or property, narrowing a domain or range, renaming an IRI) and mint a new namespace, older versions remain served for at least twelve months after a major bump. Minor releases are additive and backward-compatible, new classes, new properties, new annotations. Patch releases cover documentation-only fixes (typos, clarified comments) without semantic impact.

Terms are never silently removed: deprecations are flagged with owl:deprecated true in a minor release and only purged in the next major one. External parties are encouraged to extend the vocabulary in their own namespaces with rdfs:subClassOf rather than redefining terms under aeo:, and to propose promotions upstream when an extension generalises.

Build on the same vocabulary the search web already uses.

Import the ontology, hook it into your own triple store, and start reasoning over AI visibility today.

Get Started