Skip to main content
This workshop decides the shape of the knowledge graph: which things Experio tracks, what it records about each one, and how they connect. That shape is the ontology. Extraction can only fill in what the ontology defines, and chat can only answer questions whose nouns, verbs and filters exist in it. If a golden question needs “who led the project” and the ontology has no way to record a role on an assignment, no prompt tuning will fix the answer later. You build the ontology from the questions, not from the documents.

At a glance

Before the workshop

FFE and Experio SMEs
  • Print or share the golden questions from Workshop 1, grouped by use case.
  • Open Model & Define > Ontology and review the default ontology. Note which types fit the client (Client, Employee, Project, Proposal, Contract, Skill often do) and which do not (for example TimeEntry or ProductCatalog for a consulting firm).
  • Pre-mark each question: underline nouns, circle verbs, box filters and sorts. You will redo this with the room, but a draft keeps the session moving.
  • Pull the column headers of each structured export from the data inventory. The keys there (employee_id, project_code, account_id) become attributes and match keys.
Client homework (super user)
  • Confirm the golden questions are final for the pilot. Adding questions later is fine; changing their meaning mid-workshop is not.
  • Bring the headers of every structured export and one real example row.
  • Bring any existing picklists you already know about (industries, service lines, skills). They feed Workshop 4.

Agenda

Running the workshop

1. Walk each question

Put one question on screen at a time and mark it up with the room. Write every candidate down, even duplicates. Consolidate afterwards.

2. Consolidate entity types

  • Use singular PascalCase names: Client, Project, Employee, Obligation. Not Clients, not client_account.
  • Merge synonyms into one type. “Customer”, “account” and “client” are one Client. Record the other words as synonyms on the entity type; chat uses them to map informal terms to the right type.
  • Start from the default ontology where it fits. Keep its types and attributes when they match, rename when only the name differs (for example Division to Practice), and delete what no question needs.
  • Aim for 8–15 entity types for a pilot. More than that usually means you are modelling the documents rather than the questions.
Ask: “Which question breaks if we drop this type?” If none does, drop it or put it on the parking list.

3. Decide attributes

For each entity type, list only the attributes a question filters on, sorts on, returns, or needs as a key. Write an extraction instruction for every attribute a document will fill. Say where the value usually appears, what to do when it is missing, and the format you want. Put the format in the instruction itself, for example “Format: YYYY-MM-DD” or “Number in US dollars, no currency symbol”. Long lists of allowed values belong in a taxonomy; reference it with @TaxonomyName (see Workshop 4).
The visual editor’s type list offers Text, Number, Date and List. Set boolean and enum attributes in the JSON view; an enum needs an options array. Enum options are validated when you save but are not sent to the extraction model, so also list the allowed values in the extraction instruction (“One of: MSA, SOW, amendment.”). Values are stored as text.

4. Decide relationships

  • Name relationships as UPPER_SNAKE verbs that read left to right: Employee WORKS_ON_PROJECT Project, Contract IMPOSES Obligation.
  • Model one direction only. Chat can follow a relationship either way, so do not add inverse pairs like HAS_EMPLOYEE and WORKS_FOR.
  • Put facts about the connection on the relationship, not on either end. The role someone played on a project belongs on WORKS_ON_PROJECT {role, start_date, end_date, hours}, because the same person has different roles on different projects.
  • Mark a relationship Required upstream relationship only when the child cannot be created correctly without its parent. The flag treats the relationship’s source as the parent, so the relationship must point parent to child, and the source type must have a vector index. See Workshop 5 for how artifact types use it.
Ask: “When this appears in a document, which end is the thing the document is about?“

5. Decide keys and vector indexes

For each entity type, agree the match key: the attribute that identifies one real-world thing across sources. Record it now; you enter it later in data mappings (Workshop 6) and matching strategies (Workshop 7). The ontology itself has no “key” field, but the key must exist as an attribute. Turn on a vector index for entity types that users mention by name in questions, and for types that documents must match by similarity. Chat resolves names in a question (“Lakeshore”, “Bob Chen”) through exact matches and these indexes, and document matching can only use Vector Similarity on an indexed type. Small closed lists (Practice) rarely need one.

6. Trace and cut

Fill in the question-to-model trace table (see the worked example). Every golden question must map to types, relationships and attributes that exist. Anything in the model that no question uses goes to a parking list for after the pilot.

Worked example: Northbridge Consulting

Marcus Lee (super user), Dana Ortiz, Sam Whitfield and Helen Park walked the nine golden questions. They kept Client, Employee, Project, Proposal, Contract, Skill and Obligation from the default ontology, renamed Division to Practice, and deleted the rest. Sample extraction instructions Helen agreed for Contract:

Question to model trace

Q7 showed that expiration_date must be a date, not text, or “next 90 days” cannot be computed. Q1 showed that “who led” needs role on the relationship, not a lead attribute on Project.

Accelerate with AI

In development — availability depends on your release.
The knowledge-model copilot can draft a starting ontology. Attach 3–5 sample documents, the structured export headers and the golden questions file (questions.md). It proposes entity types, attributes and relationships as cards. Treat the draft as pre-reading: review each card in the workshop, apply the ones the room agrees, and save on the Ontology page. The manual path above always works and is the one to use when the copilot is not in your release. Admin Copilot (⌘J) is available today and can answer “how do I” questions about the ontology editor from these docs.

Entering it in Experio

1

Open the editor

Go to Model & Define > Ontology. Use the Canvas view to add entity types and draw relationships, or the Json view to edit the schema directly (needed for boolean and enum attributes).
2

Add entity types

For each type, fill Node Name, Semantic Intent (one sentence on what it means) and Synonyms on the Details tab, then add attributes with type and extraction instructions on the Attributes tab.
3

Add relationships

Choose source entity, relation type and target entity. Add relationship attributes (for example role). Tick Required upstream relationship only where agreed.
4

Turn on vector indexes

Select the entity type and open the Indexes tab. Enable the name index (the expression defaults to name) and any attribute indexes on text or list attributes.
5

Save a revision

Click Save. If the change renames or deletes anything, a confirmation lists the impact. Each save creates a new revision you can compare or roll back from Revision History.
6

Check compatibility

Open Model & Define > Compatibility and fix anything invalid before the next scan.

Revisions and compatibility

Every save publishes a revision, and Experio re-checks everything that depends on the ontology: artifact types, data mappings, enrichment rules and matching strategies. See ontology compatibility. Deleting from the ontology does not delete nodes already in the graph. Early in the project, before artifact types and mappings exist, changes are cheap. After pilot ingestion, prefer renames and additions, and plan deletes together with the fixes to dependents. Detail: Ontology and Ontology Compatibility.

Common pitfalls

  • Modelling the documents. A Resume entity type with an experience blob answers nothing. Model the person, skills and projects the resume describes.
  • Facts on the wrong end. A role, date range or proficiency that depends on the pair belongs on the relationship.
  • Dates and money as text. Filters like “since 2023” and “below $1M” need date and number types.
  • Enum values only in options. The extraction model does not see them; repeat them in the instruction.
  • No key. If two sources describe the same client and there is no agreed key, you will get duplicates. Decide keys now.
  • Inverse relationships. HAS_PROJECT and FOR_CLIENT side by side confuse extraction and chat. Keep one.
  • Keeping unused default types. Every extra type is something extraction may try to fill. Delete what no question needs, and remove any seeded artifact types that reference deleted types so they do not show as invalid.

Exit criteria

  • Every golden question appears in the trace table with types, relationships and attributes that exist in the saved ontology
  • 8–15 entity types, singular PascalCase; relationships UPPER_SNAKE, one direction each
  • Every filter or sort attribute has the right type (date, number, boolean, enum)
  • Extraction instructions written for every attribute documents will fill, including format and allowed values
  • Match key agreed for every entity type and present as an attribute
  • Vector indexes enabled on the types users name in questions
  • Taxonomies needed (@Industry, @ServiceLine …) listed for Workshop 4
  • Ontology saved; Model & Define > Compatibility shows no invalid configs
  • Super user can explain the model to a colleague using the diagram

Next

Workshop 4: Taxonomies builds or imports the controlled lists the ontology references.