Term reference · v0.5.0
XEO ontology — 177 terms
The whole vocabulary on one page, because XEO is a hash namespace: every
term IRI https://xeoontology.org/xeo# resolves to a section below.
Classes, object properties, datatype properties, annotation properties,
individuals and the module records — grouped, searchable, and typed by
epistemic layer.
Source files, served from this site: xeo-core.ttl · xeo-visibility.ttl · xeo-engagement.ttl · xeo-decision.ttl · xeo-strategy.ttl · xeo-delivery.ttl · xeo-schemes.ttl · xeo-align.ttl · context.jsonld · schemes.json · schema.cypher
The six epistemic layers (badge legend)
- norm — a standing rule over a class of cases
- interpretation — a labeled claim
- derivation — a model's output — method, model, confidence
- observation — a measured fact, grounded in a standard
- episode — happened at a time, immutable
- entity — a durable identity
Classes
36https://xeoontology.org/xeo#AnswerEngine Assistants that answer with web search and citations (the AEO surface).
- subclass of
- xeo:Engine
https://xeoontology.org/xeo#Brand A named market identity that engines may mention, cite, or recommend. Distinct from Website: a brand can be visible on the whole web, not only its own origin.
- closeMatch
- schema:Brand
https://xeoontology.org/xeo#CallToAction - subclass of
- xeo:ConversionPoint
https://xeoontology.org/xeo#Campaign A body of work inside a Project against one Topic: the URLs and Terms it covers, and the single Objective it is measured by. Recommendations are issuedFor a campaign, and it is the unit an operator plans a cycle around. Soft-deleted like its Project.
https://xeoontology.org/xeo#Capability A lever or strength a party can bring to bear (content, technical, PR, brand, ...). The unit of the scope gate: a Tactic is in reach only when every Capability it requires is approved. Specific capabilities are instances, not subclasses.
https://xeoontology.org/xeo#ConversationalAgent Multi-turn agents and voice surfaces acting on a user's behalf.
- subclass of
- xeo:Engine
https://xeoontology.org/xeo#ConversionEvent A submission/click/unlock that happened at a time. Immutable once recorded.
- subclass of
- prov:Activity
https://xeoontology.org/xeo#ConversionPoint A durable on-page mechanism that turns attention into a pipeline event.
https://xeoontology.org/xeo#Crawl One crawl run over one Website: time-bounded, agent-attributed, immutable once finished.
- subclass of
- prov:Activity
https://xeoontology.org/xeo#Diagnostic A named, reusable check or framework that reads observations and reveals gaps (e.g. a waterfall-position assessment). The framework is durable; each finding it produces is a Gap.
https://xeoontology.org/xeo#Engine A system that mediates between a person's question and web content. The taxonomy below is operational, not doctrinal — subclass as engines evolve.
- subclass of
- prov:SoftwareAgent
https://xeoontology.org/xeo#Experiment A test of a tactic that ran over a time window: immutable once concluded, method-attributed. The precedent record the decision layer learns from.
- subclass of
- prov:Activity
https://xeoontology.org/xeo#Gap A diagnosed deficit between current and desired visibility. First-order, but a claim: asserted by a Diagnostic from evidence, never observed directly. Its kind (gapType) is a slotted-in skos:Concept — e.g. a Citation-Waterfall stage — not a subclass baked into the ontology.
https://xeoontology.org/xeo#GatedAsset Content exchanged for contact information.
- subclass of
- xeo:ConversionPoint
https://xeoontology.org/xeo#GenerativeEngine Search-integrated generated answers — AI overviews and AI modes (the GEO surface).
- subclass of
- xeo:Engine
https://xeoontology.org/xeo#Intervention A category of tactic in a controlled vocabulary you bring. A skos:Concept, so a whole intervention taxonomy slots in without touching the ontology.
- subclass of
- skos:Concept
https://xeoontology.org/xeo#LeadCaptureForm - subclass of
- xeo:ConversionPoint
https://xeoontology.org/xeo#LLMResponse One captured response from one engine/model for one Prompt at a moment: time-bounded, source-attributed, immutable once captured. The visibility sibling of SerpSnapshot.
- subclass of
- prov:Entity
https://xeoontology.org/xeo#MetricTarget One measurable target of an Objective: metric X should reach targetValue, read as absolute or as a percent lift from a captured baseline. Named a target and never a key result: xeo:Outcome is 'the measured result an experiment produced', an observation, and a goal must not share a name with a reading. Each target is its own node so the experiment loop can hang observations off it; a target dropped on edit is stamped deletedAt, never destroyed, because its id is what measured history is anchored to.
https://xeoontology.org/xeo#Objective What a Campaign intends to move: an operator-written statement in prose (carried verbatim — the recommendation agent reads it as the goal), a resultsWindowDays every target is measured over, and one or more MetricTargets of which exactly one isPrimary. An intent set at creation. A campaign has one reporting horizon, distinct from the Project's work window: a two-month engagement can carry a six-month results window.
https://xeoontology.org/xeo#Outcome The measured result an experiment produced (lift, delta, significance). The measurement is an observation; any claim that the tactic CAUSED it is an interpretation, carried on the Recommendation, not asserted here.
- subclass of
- prov:Entity
https://xeoontology.org/xeo#Playbook A reusable, discipline-scoped bundle of Diagnostics, Tactics, and Practices — an 'SEO playbook', an 'AEO playbook', a 'local playbook'. Durable and named, like a Diagnostic. Its scope is the DISCIPLINE, not the account: a Playbook is authored once (by the community or an agency) and reused across every client. What varies per client or campaign is which Playbooks a tenancy activates and which Practices it overrides — never the Playbook itself.
https://xeoontology.org/xeo#Practice A standing rule that governs how recommendations are made under stated conditions. Best-practices, SOPs, and lessons-learned are all Practices, distinguished by source, not by class. A Practice does one of three things (practiceKind): veto a candidate (guardrail), reorder it (preference), or attach a caveat (guidance). Revisable and versioned (supersedes); scoped to the concepts it appliesToConcept; audited on the recommendations it fired on (appliedPractice).
https://xeoontology.org/xeo#Project The contractual container for a body of work on one Website. Declares its engagementType (retainer or one-off), an interventionQuota (a scope of work with no ceiling is not a scope), a cadence the quota resets over (retainer) or a durationDays it runs for (one-off), and the Interventions and Tactics inScope under the contract. Never destroyed: its campaigns, objectives and targets are the substrate the end-of-campaign report and the experiment loop read, so it is stamped deletedAt and filtered, not deleted.
- closeMatch
- schema:Project
https://xeoontology.org/xeo#Prompt A tracked natural-language question posed to engines. Distinct from Term: a prompt is what a person asks; the engine's retrieval fans out into Terms.
https://xeoontology.org/xeo#Recommendation The labeled claim the whole chain exists to produce: deploy this Tactic to close this Gap, supported by these Experiments, at a given priority. An interpretation — carries method, confidence, and who/what issued it.
https://xeoontology.org/xeo#SearchEngine Classic ranked-results retrieval (the SEO surface).
- subclass of
- xeo:Engine
https://xeoontology.org/xeo#SearchIntent Why the person is asking. Modeled as named individuals, not free strings.
- grounded in
- Broder (2002), 'A taxonomy of web search', as extended in common practice
https://xeoontology.org/xeo#SearchPerformanceFact The atomic ground-truth metric row for one (websiteId, address, term, date [, device, country]) tuple. Never instantiated as graph relationships; the graph carries windowed ranksFor rollups whose datasetUri points back to the authoritative table.
- closeMatch
- schema:Observation
- grounded in
- Google Search Console Search Analytics API
- canonical store
- bigquery
https://xeoontology.org/xeo#SerpSnapshot One observation of a search results page for a Term at a moment, for a stated engine, locale, and device.
- subclass of
- prov:Entity
https://xeoontology.org/xeo#Tactic A durable, named approach that can address gaps. Categorized by a slotted-in intervention taxonomy (inIntervention), scored on slotted-in dimensions (assessedAs -> TacticAssessment), and gated by the Capabilities it requires.
https://xeoontology.org/xeo#TacticAssessment A scored estimate of a tactic on ONE dimension (onDimension), carrying score, method, and confidence. The dimension set (impact / risk / time-to-value, or ICE, or your own) and how dimensions are weighted are a strategy-layer concern; this class only records that an assessment was made, on what dimension, and by what method.
https://xeoontology.org/xeo#Term A search query string, unique by name. Data sources are attributed on observations that mention the term, never as subtypes of the term.
https://xeoontology.org/xeo#Topic A named grouping of Terms produced by a clustering or labeling process. Site-scoped. Assignments carry method, model, and confidence.
- subclass of
- skos:Concept
https://xeoontology.org/xeo#URL A resource address within a Website. Durable identity; the state of the resource at a time is recorded by Fetch observations.
- closeMatch
- schema:WebPage
- grounded in
- WHATWG URL Standard
https://xeoontology.org/xeo#Website A site under observation, identified by its origin. The tenancy scope for URLs, crawls, and topics.
- closeMatch
- schema:WebSite
- grounded in
- WHATWG URL Standard (origin)
Object properties
61https://xeoontology.org/xeo#aboutTopic The topic cluster this campaign works. Topics are site-scoped derivations in core; a campaign binds to one.
- domain
- xeo:Campaign
- range
- xeo:Topic
https://xeoontology.org/xeo#activates A tenancy context puts a Playbook into effect for a body of work. Domain left open: model your own tenancy node (agency, client, engagement, campaign) and point it here — this module stays agnostic about the account hierarchy, which is expressed through appliesAtScope.
- range
- xeo:Playbook
https://xeoontology.org/xeo#addressableBy A candidate tactic for closing this gap — a claim, made before the scope gate is applied.
- domain
- xeo:Gap
- range
- xeo:Tactic
https://xeoontology.org/xeo#appliedPractice Audit edge: this Practice was evaluated against this recommendation and fired. Carries method and confidence — the application is a computed derivation, not itself a norm. The transparent record of why a candidate was blocked, demoted, or flagged.
- domain
- xeo:Recommendation
- range
- xeo:Practice
https://xeoontology.org/xeo#appliesAtScope The tenancy level at which a Practice (or activation or override) applies, as a slotted-in concept. A recommended hierarchy is default < agency < client < engagement < campaign < user. Domain left open so it can annotate any strategy-layer assertion. Resolution is most-specific-wins: a client-level Practice overrides an agency default, which overrides the shipped default. This is the 'customization' axis — not a lens, a specificity ladder.
- range
- skos:Concept
https://xeoontology.org/xeo#appliesToConcept Binds a Practice to the slotted-in concepts it applies to — a page role (hasRole), an Intervention, a gapType, a Capability. Bring your own schemes; the Practice fires only where a candidate carries a matching concept.
- domain
- xeo:Practice
- range
- skos:Concept
https://xeoontology.org/xeo#assessedAs Links a tactic to a per-dimension scored estimate.
- domain
- xeo:Tactic
- range
- xeo:TacticAssessment
https://xeoontology.org/xeo#atPriority Priority as a slotted-in concept — bring your own scheme (P0/P1/P2, now/next/later, ...).
- domain
- xeo:Recommendation
- range
- skos:Concept
https://xeoontology.org/xeo#attributedResponse The claim that this conversion traces to engine visibility captured in this response episode. Multi-engine attribution is inherently inferential: this edge MUST carry method and confidence, and honest implementations will leave it sparse.
- domain
- xeo:ConversionEvent
- range
- xeo:LLMResponse
https://xeoontology.org/xeo#authoredBy The party that authored a Practice (or an activation or override). Range left open — a person, an agency, the system, or a prov:Agent in your own graph. One half of the customization axis: with appliesAtScope, it decides whose rule wins.
- domain
- xeo:Practice
https://xeoontology.org/xeo#capturedBy - domain
- xeo:ConversionEvent
- range
- xeo:ConversionPoint
https://xeoontology.org/xeo#childOf Topic childOf Topic: the child points to its broader parent, matching skos:broader.
- domain
- xeo:Topic
- range
- xeo:Topic
- subproperty of
- skos:broader
https://xeoontology.org/xeo#cites The response grounded on this URL, per the engine's own citation annotations. Carries citationRank where the engine orders its sources. The visibility sibling of hasResult.
- domain
- xeo:LLMResponse
- range
- xeo:URL
- grounded in
- Engine response citation annotations (per-provider API contract)
https://xeoontology.org/xeo#closesGap The gap this recommendation aims to close.
- domain
- xeo:Recommendation
- range
- xeo:Gap
https://xeoontology.org/xeo#constrains The Practice governs recommendations matching its conditions — vetoing, reordering, or caveating per its practiceKind. Which recommendations 'match' is set by appliesToConcept.
- domain
- xeo:Practice
- range
- xeo:Recommendation
https://xeoontology.org/xeo#coversTerm A term inside the campaign's cluster — the queries its objective is measured against.
- domain
- xeo:Campaign
- range
- xeo:Term
https://xeoontology.org/xeo#coversUrl A page inside the campaign's cluster. May carry a priority flag marking the pages the campaign is really about.
- domain
- xeo:Campaign
- range
- xeo:URL
https://xeoontology.org/xeo#effortEstimate How long executing the recommendation is expected to take, as a slotted-in concept (hours, days, weeks, a quarter — see xeo-schemes). A categorical horizon for planning a cycle, not a scored dimension: impact, risk and time-to-value belong on a TacticAssessment via onDimension.
- domain
- xeo:Recommendation
- range
- skos:Concept
https://xeoontology.org/xeo#evidencedBy The observed facts a gap was derived from — a Prompt's visibilityFor rollup, a URL's ranksFor, a SerpSnapshot. The seam tying the interpretation tier back down to the substrate. Range left open: any observation-bearing term.
- domain
- xeo:Gap
- subproperty of
- prov:wasDerivedFrom
https://xeoontology.org/xeo#execution Who does the work, as a slotted-in concept: ours (spends the project's intervention allowance) or advised (the client executes; not agency capacity). The half of the scope gate that says whose hours a recommendation costs.
- domain
- xeo:Recommendation
- range
- skos:Concept
https://xeoontology.org/xeo#fansOutTo A retrieval query the engine reported issuing while answering this prompt. Fan-out queries ARE Terms — the join between the xEO layer and classic rank data. Carries the reporting engine and capture episode.
- domain
- xeo:Prompt
- range
- xeo:Term
- grounded in
- Engine-reported retrieval queries (per-provider API contract)
https://xeoontology.org/xeo#fetched An HTTP fetch of a URL within a crawl. In the property graph this relationship carries statusCode, contentType, title, metaDescription, robotsMeta, contentHash, fetchedAt.
https://xeoontology.org/xeo#gapType The kind of gap, as a slotted-in concept (e.g. a Citation-Waterfall stage). Bring your own scheme.
- domain
- xeo:Gap
- range
- skos:Concept
https://xeoontology.org/xeo#hasCampaign - domain
- xeo:Project
- range
- xeo:Campaign
https://xeoontology.org/xeo#hasCanonical https://xeoontology.org/xeo#hasConversionPoint Observed presence of a conversion point on a page (crawl-attributed, bitemporal like linksTo).
- domain
- xeo:URL
- range
- xeo:ConversionPoint
https://xeoontology.org/xeo#hasCrawl - domain
- xeo:Website
- range
- xeo:Crawl
https://xeoontology.org/xeo#hasObjective Exactly one per campaign.
- domain
- xeo:Campaign
- range
- xeo:Objective
https://xeoontology.org/xeo#hasProject The projects contracted against this website. Tenancy rides on websiteId, as everywhere.
- domain
- xeo:Website
- range
- xeo:Project
https://xeoontology.org/xeo#hasResponse - domain
- xeo:Prompt
- range
- xeo:LLMResponse
https://xeoontology.org/xeo#hasResult A result observed on the SERP. Carries position and resultType.
- domain
- xeo:SerpSnapshot
- range
- xeo:URL
https://xeoontology.org/xeo#hasRole The structural role a URL plays on its site, as a slotted-in concept. A recommended starter scheme is coarse and purpose-based: brand-core (home, about), commercial (services, products, sales), content (articles, marketing), infrastructure (pagination, archives, tag and category indexes). Assignment is a DERIVATION from graph and crawl structure — inbound link_position, index-vs-leaf link patterns, template similarity — not URL-string matching; it carries method and confidence, and 'unknown' is a valid, conservative state. Parallels core's inTopic. Norms bind to these roles via appliesToConcept, so 'never redirect an infrastructure page for ranking' is a rule over a role, not a growing list of regexes.
- domain
- xeo:URL
- range
- skos:Concept
https://xeoontology.org/xeo#hasSnapshot - domain
- xeo:Term
- range
- xeo:SerpSnapshot
https://xeoontology.org/xeo#hasTarget The objective's measurable targets. Non-empty; exactly one target isPrimary — what the recommendation agent optimises for. The rest are the secondary metrics an impact-radius check widens to.
- domain
- xeo:Objective
- range
- xeo:MetricTarget
https://xeoontology.org/xeo#includes A Diagnostic, Tactic, or Practice bundled into this Playbook. Range left open across the three decision/norm terms it may hold.
- domain
- xeo:Playbook
https://xeoontology.org/xeo#inContext The gap the experiment was run against. The precedent-similarity key: 'has this tactic worked on a gap like mine?' is a match on gapType through this edge.
- domain
- xeo:Experiment
- range
- xeo:Gap
https://xeoontology.org/xeo#inIntervention The intervention category this tactic belongs to. Parallels core's inTopic.
- domain
- xeo:Tactic
- range
- xeo:Intervention
https://xeoontology.org/xeo#inScope What the contract covers: an Intervention (a whole category of work, including tactics added to the catalogue later) or a specific Tactic within one. Range left open across those two terms. The contractual half of the scope gate — requiresCapability + approved asks whether the lever exists; this asks whether it was bought.
- domain
- xeo:Project
https://xeoontology.org/xeo#inTopic Process-attributed topic assignment. Carries method, model, confidence, assignedAt.
- domain
- xeo:Term
- range
- xeo:Topic
- closeMatch
- schema:about
https://xeoontology.org/xeo#issuedFor The campaign a recommendation was issued into. Its execution lifecycle (xeo:status), effortEstimate and execution live here: a recommendation is a decision-tier call until it lands in a campaign, and delivery state from then on.
- domain
- xeo:Recommendation
- range
- xeo:Campaign
https://xeoontology.org/xeo#linksTo An observed hyperlink. Carries anchorText, rel, firstSeenAt, lastSeenAt, lastSeenCrawlId.
https://xeoontology.org/xeo#magnitudeUnit The unit magnitude is read in, as a slotted-in concept (impressions, clicks, referring_domains, words, ... — see xeo-schemes). A unit that names its own provenance, like sessions_estimated, is how a derived figure is kept from rendering as a measured one.
- domain
- xeo:Gap
- range
- skos:Concept
https://xeoontology.org/xeo#measures The target an experiment's Outcome is read against. Carries a role — primary or secondary — matching the target's standing in its objective, and a basis saying which pages were measured (the ones the recommendation applied to, the gap's evidence, or the pages actually changed).
- domain
- xeo:Experiment
- range
- xeo:MetricTarget
https://xeoontology.org/xeo#mentions The brand's name appears in the response text. Carries mentionRank (order of first appearance) — high mention counts at poor ranks are the 'named among twelve, championed never' pattern. Extraction method (string match, NER model) must be recorded; model-extracted mentions are derivations, not observations.
- domain
- xeo:LLMResponse
- range
- xeo:Brand
https://xeoontology.org/xeo#onDimension The dimension being scored, as a slotted-in concept (impact, risk, time-to-value, ICE, RICE, ...). Bring your own dimension scheme.
- domain
- xeo:TacticAssessment
- range
- skos:Concept
https://xeoontology.org/xeo#onEngine Which engine (and, via model/modelVersion properties, which model) produced this response.
- domain
- xeo:LLMResponse
- range
- xeo:Engine
- subproperty of
- prov:wasAttributedTo
https://xeoontology.org/xeo#partOf - domain
- xeo:URL
- range
- xeo:Website
https://xeoontology.org/xeo#producedOutcome The measured result this experiment generated.
- domain
- xeo:Experiment
- range
- xeo:Outcome
- subproperty of
- prov:generated
https://xeoontology.org/xeo#ranksFor Windowed rollup projection of SearchPerformanceFacts for a (page, query) pair. Carries clicks, impressions, ctr, avgPosition, periodStart, periodEnd, source, datasetUri, syncedAt.
https://xeoontology.org/xeo#recommends The tactic this recommendation puts forward.
- domain
- xeo:Recommendation
- range
- xeo:Tactic
https://xeoontology.org/xeo#redirectsTo https://xeoontology.org/xeo#requiresCapability A capability that must be approved for this tactic to be in reach. The scope-gate edge: a tactic whose required capabilities are all approved is deployable; otherwise it stays advisory.
- domain
- xeo:Tactic
- range
- xeo:Capability
https://xeoontology.org/xeo#reveals A diagnostic asserts this gap. Carries the assessment method.
- domain
- xeo:Diagnostic
- range
- xeo:Gap
https://xeoontology.org/xeo#scopedTo Topics are scoped to a Website rather than a free-standing ConceptScheme; skos:inScheme is the analogous grouping.
- domain
- xeo:Topic
- range
- xeo:Website
- seeAlso
- skos:inScheme
https://xeoontology.org/xeo#supersedes This Practice replaces an earlier version. Editing a rule mints a new Practice that supersedes the old (retired to status 'deprecated', never deleted) — the version chain that makes the norms layer revisable and auditable.
- domain
- xeo:Practice
- range
- xeo:Practice
https://xeoontology.org/xeo#supportedBy The precedent experiments backing this recommendation — the earned trust behind the pick.
- domain
- xeo:Recommendation
- range
- xeo:Experiment
- subproperty of
- prov:wasDerivedFrom
https://xeoontology.org/xeo#targetsIntent A URL or Prompt is aimed at this intent. A strategist's or model's claim — carries method and confidence.
- range
- xeo:SearchIntent
https://xeoontology.org/xeo#tests The tactic this experiment put to the test.
- domain
- xeo:Experiment
- range
- xeo:Tactic
https://xeoontology.org/xeo#tracksPrompt This tenant tracks this prompt. Tenancy is data, not schema.
- domain
- xeo:Website
- range
- xeo:Prompt
https://xeoontology.org/xeo#verdict The operator's disposition on a diagnosed gap, as a slotted-in concept (attack, fix_first, defend, hold, ignore — see xeo-schemes). Distinct from gapType, which says what KIND of deficit it is; the verdict says what we intend to do about it. Carried by one finding per topic per analysis: it is a property of the topic's scoreboard row, not of every finding beneath it.
- domain
- xeo:Gap
- range
- skos:Concept
https://xeoontology.org/xeo#visibilityFor Windowed rollup of response-level observations for a (prompt, brand) pair: mentionRate, citationRate, responses, periodStart, periodEnd, source, datasetUri. Mirrors the ranksFor rollup pattern — raw responses are the authoritative record; this is the traversal-friendly projection.
- domain
- xeo:Prompt
- range
- xeo:Brand
- canonical store
- neo4j
Datatype properties
65https://xeoontology.org/xeo#address The serialized absolute URL is a schema:url value.
- domain
- xeo:URL
- range
- xsd:string
- subproperty of
- schema:url
- grounded in
- WHATWG URL Standard (serialized absolute URL)
https://xeoontology.org/xeo#anchorText - range
- xsd:string
- grounded in
- WHATWG HTML §4.5.1
https://xeoontology.org/xeo#approved Whether this capability is approved for the engagement — the live state of the scope gate. Tenancy-scoped like everything else.
- domain
- xeo:Capability
- range
- xsd:boolean
https://xeoontology.org/xeo#assignedAt When a derivation edge was written (e.g. a topic assignment). Carried on inTopic alongside method, model and confidence.
- range
- xsd:dateTime
https://xeoontology.org/xeo#avgPosition - range
- xsd:decimal
- grounded in
- GSC Search Analytics API
https://xeoontology.org/xeo#baseline The metric's value when the target was set — the anchor 'how far beyond target' is measured from. An observation captured onto an interpretation; baselineCapturedAt says when, because it is not the same instant as the target's creation.
- domain
- xeo:MetricTarget
- range
- xsd:decimal
https://xeoontology.org/xeo#baselineCapturedAt - domain
- xeo:MetricTarget
- range
- xsd:dateTime
https://xeoontology.org/xeo#cadence 'monthly' or 'quarterly' — the period a retainer's quota resets over. Set for retainer, absent for one-off.
- domain
- xeo:Project
- range
- xsd:string
https://xeoontology.org/xeo#capturedAt The response record was generated at capture time.
- domain
- xeo:LLMResponse
- range
- xsd:dateTime
- subproperty of
- prov:generatedAtTime
https://xeoontology.org/xeo#citationRank 1-based order of a cited source where the engine orders its citations. Carried on cites; absent where the engine reports an unordered set.
- range
- xsd:integer
https://xeoontology.org/xeo#citationRate Share of captured responses in the window that cite the brand's owned URLs. Cited and mentioned diverge — a page can ground an answer that names someone else.
- range
- xsd:decimal
https://xeoontology.org/xeo#clicks - range
- xsd:integer
- grounded in
- GSC Search Analytics API
https://xeoontology.org/xeo#concludedAt When the experiment concluded and its outcome became immutable.
- domain
- xeo:Experiment
- range
- xsd:dateTime
- subproperty of
- prov:endedAtTime
https://xeoontology.org/xeo#confidence 0-1 confidence attached to a derivation edge.
- range
- xsd:decimal
https://xeoontology.org/xeo#crmRecordRef Identity-key pointer to the CRM object (form id, contact id, deal id) in whatever system runs the pipeline. The join contract to the post-click world — the graph never mirrors the CRM's schema.
- range
- xsd:string
- canonical store
- crm
https://xeoontology.org/xeo#ctr Clickthrough rate over the rollup window. Carried on ranksFor.
- range
- xsd:decimal
- grounded in
- GSC Search Analytics API
https://xeoontology.org/xeo#datasetUri Pointer to the authoritative table a windowed rollup was projected from (e.g. a BigQuery table URI). The provenance contract for ranksFor and visibilityFor: the graph keeps the traversable projection, this says where the ground truth lives.
- range
- xsd:string
https://xeoontology.org/xeo#deletedAt Soft-delete stamp. XEO never destroys a node something else was derived from — xeo-strategy states the rule for a Practice (destroying it destroys the record of what it vetoed) and it holds here for a Project, a Campaign, or a MetricTarget that measured history hangs off. Absent on a live node; domain left open so any revisable term can carry it.
- range
- xsd:dateTime
https://xeoontology.org/xeo#direction 'up' or 'down' — which way is better for this metric. DERIVED from metric, never client input: position and rank are 1-based, so a shared '+20%' would silently ask for a rank 20% worse.
- domain
- xeo:MetricTarget
- range
- xsd:string
https://xeoontology.org/xeo#durationDays Fixed run length of a one-off project. Set for oneoff, absent for retainer.
- domain
- xeo:Project
- range
- xsd:integer
https://xeoontology.org/xeo#embeddingModel - domain
- xeo:Term
- range
- xsd:string
https://xeoontology.org/xeo#embeddingRef Pointer (collection + id) to the vector in the external store. The geometry lives where ANN search happens; the graph keeps the claim and its provenance.
- domain
- xeo:Term
- range
- xsd:string
- canonical store
- vector-store
https://xeoontology.org/xeo#engagementType 'retainer' or 'oneoff' — the discriminator for how scope is expressed. A retainer caps interventions per cadence period; a one-off caps them over durationDays. Sending both cadence and durationDays is a contradiction and is rejected at the edge.
- domain
- xeo:Project
- range
- xsd:string
https://xeoontology.org/xeo#fetchedAt When the fetch observation was made. Carried on fetched.
- range
- xsd:dateTime
https://xeoontology.org/xeo#firstSeenAt When an observed edge (a link, typically) was first seen. Half of the bitemporal pair that makes link liveness answerable.
- range
- xsd:dateTime
https://xeoontology.org/xeo#halfLife Optional decay window for a Practice whose source is 'claimed': how long the assertion is trusted absent supporting Outcomes. Encodes the reality that today's answer-engine tactics may not survive the year — a claim nobody's experiments confirm ages out on its own.
- domain
- xeo:Practice
- range
- xsd:duration
https://xeoontology.org/xeo#impressions - range
- xsd:integer
- grounded in
- GSC Search Analytics API
https://xeoontology.org/xeo#interventionQuota Ceiling on interventions this project may deploy per period (retainer) or in total (one-off). Always present. Recommendations in an open status — pending, in_progress, blocked — consume it; advised work does not.
- domain
- xeo:Project
- range
- xsd:integer
https://xeoontology.org/xeo#isPrimary Exactly one target per objective. The one the agent optimises for.
- domain
- xeo:MetricTarget
- range
- xsd:boolean
https://xeoontology.org/xeo#lastSeenAt When an observed edge was most recently seen. With lastSeenCrawlId this is how a link is known to be live rather than merely once-observed.
- range
- xsd:dateTime
https://xeoontology.org/xeo#lift The measured change the experiment recorded on its target metric.
- domain
- xeo:Outcome
- range
- xsd:decimal
https://xeoontology.org/xeo#magnitude How big the gap is, where the finding IS a size. Required together with magnitudeUnit and never alone: a magnitude with no unit is an uninterpretable number, a unit with no magnitude is noise.
- domain
- xeo:Gap
- range
- xsd:decimal
https://xeoontology.org/xeo#mentionRank 1-based order of the brand's first appearance in the response text. Carried on mentions edges.
- range
- xsd:integer
https://xeoontology.org/xeo#mentionRate Share of captured responses in the window that mention the brand. Carried on visibilityFor rollups.
- range
- xsd:decimal
https://xeoontology.org/xeo#metaDescription The meta description observed on a fetch. Carried on the fetched edge.
- range
- xsd:string
- grounded in
- WHATWG HTML (meta name=description)
https://xeoontology.org/xeo#method How an interpretation or derivation was produced (model, rule, human analyst). Expected on reveals, assessedAs, and every Recommendation.
- range
- xsd:string
https://xeoontology.org/xeo#metric Which metric the target is set on — clicks, impressions, ctr, position, rank_absolute, etv (see xeo-schemes objectiveMetric). The value vocabulary is the consumer's; the reference scheme records each metric's direction and unit.
- domain
- xeo:MetricTarget
- range
- xsd:string
https://xeoontology.org/xeo#model Model identifier + version as reported at capture time. Without this the episode is not comparable across time.
- domain
- xeo:LLMResponse
- range
- xsd:string
https://xeoontology.org/xeo#modelVersion The model build reported at capture time, where the engine distinguishes it from the model name. Without model + modelVersion an episode is not comparable across time.
- range
- xsd:string
https://xeoontology.org/xeo#name The identifying name of a Term, Topic, Brand, or Capability. Unique within its scope; see schema.cypher for the per-class identity keys.
- range
- xsd:string
https://xeoontology.org/xeo#occurredAt - domain
- xeo:ConversionEvent
- range
- xsd:dateTime
https://xeoontology.org/xeo#origin - domain
- xeo:Website
- range
- xsd:string
- grounded in
- WHATWG URL Standard (origin serialization)
https://xeoontology.org/xeo#periodEnd Inclusive last day of a rollup window. Carried on ranksFor and visibilityFor.
- range
- xsd:date
https://xeoontology.org/xeo#periodStart Inclusive first day of a rollup window. Carried on ranksFor and visibilityFor; never pool across windows silently.
- range
- xsd:date
https://xeoontology.org/xeo#position 1-based rank of a result within a SERP snapshot. Carried on hasResult. Distinct from avgPosition, which is a windowed rollup, not a single observation.
- range
- xsd:integer
https://xeoontology.org/xeo#practiceKind How the Practice acts: 'guardrail' (veto a matching candidate), 'preference' (reorder it), or 'guidance' (attach a caveat, change nothing). The mechanism, kept as a small controlled string rather than a subclass.
- domain
- xeo:Practice
- range
- xsd:string
https://xeoontology.org/xeo#practiceOutcome Carried on an appliedPractice edge: 'vetoed' (a guardrail removed the candidate), 'reranked' (a preference moved it), or 'caveated' (guidance flagged it and changed nothing). One value per practiceKind. Domain left open because it rides on the edge, not on a node.
- range
- xsd:string
https://xeoontology.org/xeo#rationale Why the rule exists — surfaced to a user when the Practice fires, so a veto or demotion is explained, never silent.
- domain
- xeo:Practice
- range
- xsd:string
https://xeoontology.org/xeo#rel The rel attribute of an observed hyperlink (nofollow, sponsored, ugc, ...). Carried on linksTo.
- range
- xsd:string
- grounded in
- WHATWG HTML (link types)
https://xeoontology.org/xeo#responses How many captured responses the rollup window covers — the denominator behind mentionRate and citationRate. Carried on visibilityFor; a rate without it cannot be weighted.
- range
- xsd:integer
https://xeoontology.org/xeo#result 'significant', 'no_change' or 'inconclusive'. Answers DID THIS MOVE; lift's sign answers which way. A regression is significant — the value never smuggles a direction in.
- domain
- xeo:Outcome
- range
- xsd:string
https://xeoontology.org/xeo#resultReason Why an outcome was inconclusive, from a small controlled set (window_incomplete, co_intervention, confounded_external, baseline_unavailable, ...). The two confounder reasons differ on purpose: a co-intervention keeps its lift and shares attribution; an external confounder records none.
- domain
- xeo:Outcome
- range
- xsd:string
https://xeoontology.org/xeo#resultsWindowDays The measurement window every target in this objective is read over. One horizon per campaign; per-target windows are deliberately not modelled.
- domain
- xeo:Objective
- range
- xsd:integer
https://xeoontology.org/xeo#resultType The kind of SERP result observed (organic, featured snippet, local pack, ...). Carried on hasResult; the vocabulary is per-engine and belongs to the consumer.
- range
- xsd:string
https://xeoontology.org/xeo#score The value assigned on the assessed dimension. Scale is defined by the dimension scheme, not fixed here.
- domain
- xeo:TacticAssessment
- range
- xsd:decimal
https://xeoontology.org/xeo#source Provenance of an assertion. The value vocabulary is subject-specific. On a Practice: 'authored' (a human SOP or best-practice — high standing, durable), 'learned' (earned from the experiment ledger — confidence ratchets with Outcomes), or 'claimed' (an unproven assertion, e.g. a current answer-engine tactic — ships low-confidence with a halfLife and decays unless experiments promote it); this lets one class hold a firm SOP and a fragile claim without conflating their trust. On a ranksFor or visibilityFor rollup: the data source the window was built from. DOMAIN LEFT OPEN deliberately — rdfs:domain is an entailment rule, not a constraint, so naming xeo:Practice here would silently type every rollup edge carrying a source as a Practice.
- range
- xsd:string
https://xeoontology.org/xeo#statement The rule in plain language, as a human authored or confirmed it — e.g. 'Never 301 a paginated archive URL for ranking purposes.' The canonical human-facing form; the structural fields (practiceKind, appliesToConcept, constrains) make it executable.
- domain
- xeo:Practice
- range
- xsd:string
https://xeoontology.org/xeo#status Lifecycle state of a revisable term. The value vocabulary is subject-specific. On a Practice: 'proposed', 'active', or 'deprecated' — a proposed Practice is visible but does not fire, and superseding one deprecates it. DOMAIN LEFT OPEN deliberately, so another revisable term (the execution lifecycle of a Recommendation, say) can carry a lifecycle without being entailed a Practice.
- range
- xsd:string
https://xeoontology.org/xeo#statusCode - range
- xsd:integer
- grounded in
- RFC 9110 §15 (Status Codes)
https://xeoontology.org/xeo#targetKind 'absolute' (targetValue is a value of the metric) or 'percent' (a relative change from baseline in the metric's better direction).
- domain
- xeo:MetricTarget
- range
- xsd:string
https://xeoontology.org/xeo#targetValue The value the metric should reach, interpreted per targetKind. Bounded per metric and kind at the edge — a percentage, a count, a rank and a currency do not share a range.
- domain
- xeo:MetricTarget
- range
- xsd:decimal
https://xeoontology.org/xeo#text The natural-language body of a Prompt as posed to the engine. Part of a Prompt's identity together with websiteId.
- range
- xsd:string
https://xeoontology.org/xeo#title The document title observed on a fetch. Carried on the fetched edge, not on the URL: the address is durable, the title is what one crawl saw.
- range
- xsd:string
- grounded in
- WHATWG HTML (the title element)
https://xeoontology.org/xeo#webSearchEnabled Whether the engine could search the web for this response. Citation behavior differs sharply with this flag; never pool across it silently.
- domain
- xeo:LLMResponse
- range
- xsd:boolean
https://xeoontology.org/xeo#websiteId The tenancy key. Scope lives in this property on every scoped node and edge, never in a dynamic label — the identity half of 'tenancy is data, not schema'.
- range
- xsd:string
Annotation properties
4https://xeoontology.org/xeo#canonicalStore Where this term's instances authoritatively live: neo4j, bigquery, vector-store, crm. The ontology is storage-agnostic; identity keys (websiteId, address, term name, date) join across stores.
https://xeoontology.org/xeo#epistemicLayer One of: entity, episode, observation, derivation, interpretation, norm. Types every term by the kind of claim it makes. Core terms stay at entity/episode/observation/derivation; extension modules may introduce interpretation- or norm-layer terms and must mark them.
https://xeoontology.org/xeo#fillsSlot Names the XEO property whose skos:Concept range (or controlled-string value) this scheme is a reference filling for — xeo:gapType, xeo:atPriority, xeo:inIntervention, xeo:status. A consumer reading a slot property can follow this to a published default; nothing in the ontology requires it.
https://xeoontology.org/xeo#groundedIn The primary standard or API contract that defines this term's meaning.
Individuals
4https://xeoontology.org/xeo#CommercialInvestigation https://xeoontology.org/xeo#Informational https://xeoontology.org/xeo#Transactional Modules
7https://xeoontology.org/xeo#align-module Optional crosswalk from XEO terms to foundational web vocabularies. Alignments, not imports: XEO is self-contained without them.
- creator
- Inbound Found
- version
- 0.5.0
https://xeoontology.org/xeo#decision-module The top stratum of the core sample: where an observed condition becomes a diagnosed Gap, a Gap becomes candidate Tactics, the capability gate filters them to what is in reach, prior Experiments say which tactic has earned trust, and a Recommendation is issued — labeled, honestly, as an interpretation. Ships CLASSES, never VALUES: the dimensions, weights, and governing rules live one layer higher, in xeo-strategy.
- creator
- Inbound Found
- version
- 0.5.0
https://xeoontology.org/xeo#delivery-module The container work is delivered in: a Project (the contract — type, quota, scope), its Campaigns (a body of work against one Topic), the Objective each campaign is measured by, and the MetricTargets an Experiment is read against. Lifted from a production implementation; fills the layer the decision and norms tiers left open.
- creator
- Inbound Found
- version
- 0.5.0
https://xeoontology.org/xeo#engagement-module DRAFT v0. The seam between web-engine visibility and the pipeline: intents, conversion points, conversion events, and identity-key pointers into whatever CRM you run.
- creator
- Inbound Found
- version
- 0.5.0
https://xeoontology.org/xeo#schemes-module SKOS concept schemes filling the slots the XEO ontology leaves open — gap types, verdicts, priorities, the intervention catalogue, lifecycles, metrics. Published reference values, not part of the ontology's class vocabulary; adopt, extend, or replace.
- creator
- Inbound Found
- version
- 0.5.0
https://xeoontology.org/xeo#strategy-module The layer xeo-decision deliberately left open: the standing rules — best practices, SOPs, lessons learned — that veto, reorder, or caveat a Recommendation before it reaches a human, the reusable Playbooks those rules travel in, and the tenancy axis that decides whose rules win. Introduces the norm stratum: a claim about what SHOULD govern a choice, as opposed to what is or is inferred to be.
- creator
- Inbound Found
- version
- 0.5.0
https://xeoontology.org/xeo#visibility-module Extends XEO Core with the terms needed once the engine stops being a results page and starts being an answer: engines, prompts, captured responses, citations, mentions, and the visibility rollups over them.
- creator
- Inbound Found
- version
- 0.5.0