The FLINT Frame Model¶
Everything the Norm Editor produces is built from frames. A frame is a structured interpretation of a piece of text. The editor supports three frame types, mirroring the FLINT ontology: Fact, Act, and Claim-duty.
Frame types¶
graph TB
subgraph "Relations"
ACT[Act<br/>who may do what]
CD[Claim-duty<br/>who owes what to whom]
end
subgraph "Facts"
FACT[Fact]
AGENT[Agent]
ACTION[Action]
OBJECT[Object]
DUTY[Duty]
COND[Condition]
end
ACT -->|action| ACTION
ACT -->|actor / recipient| AGENT
ACT -->|object| OBJECT
CD -->|duty| DUTY
CD -->|claimant / holder| AGENT
style ACT fill:#c0b3ff
style CD fill:#c0b3ff
style FACT fill:#b3d9ff
style AGENT fill:#ffdd80
style ACTION fill:#80fff3
style OBJECT fill:#f4b3ff
style DUTY fill:#80e9ff
style COND fill:#a8ffbd
Fact¶
A Fact is the basic building block — a concept extracted from the text, such as personal data or free movement. A fact has:
- a short name (the label shown on its chip),
- an optional full name / description,
- zero or more subtypes, and
- an optional subdivision — a boolean construct that defines the fact in terms of other facts.
A fact can carry more than one subtype at the same time (for example a fragment that is both an Agent and a Duty). The available subtypes are:
| Subtype | Typical meaning |
|---|---|
| Agent | An actor — a person, body, or organisation |
| Action | A verb / activity |
| Object | The thing an action is performed on |
| Duty | An obligation |
| Condition | A circumstance that must hold |
Act¶
An Act is a relation describing who may (or must) do what, under which conditions, with which effect. It has the following named roles:
| Role | Holds | Cardinality |
|---|---|---|
| Action | a fact (subtype action) | one |
| Actor | a fact (subtype agent) | one |
| Object | a fact (subtype object) | one |
| Recipient | a fact (subtype agent) | one |
| Precondition | a boolean construct over facts | one tree |
| Creates | facts (subtype agent, action, or object) | many |
| Terminates | facts (subtype agent, action, or object) | many |
An act's label is generated automatically in the form
[action] [object] [actor] [recipient], with placeholders such as <actor> shown for roles
that are not yet filled. The interpreter can switch off automatic labelling and type a custom
label.
Claim-duty¶
A Claim-duty is a relation expressing an obligation between parties:
| Role | Holds |
|---|---|
| Duty | a fact (subtype duty) |
| Claimant | a fact (subtype agent) — the party that can claim |
| Holder | a fact (subtype agent) — the party that bears the duty |
How roles are filled¶
A role is filled by attaching a fact to it. The editor offers two ways to do this:
- From the source — with a role active, highlight a fragment in the text. A fact of the correct subtype is created automatically and slotted into the role.
- From an existing frame — click an existing fact chip to reuse it in the role.
When a role expects exactly one subtype (for example the action role only accepts action facts), the editor assigns that subtype to the new fact for you.
Frame identity and reuse¶
Each frame has a stable unique identifier. Because roles reference facts by identity, the same fact can appear in several frames, and deleting a fact automatically removes every reference to it across all acts, claim-duties, and boolean constructs. This keeps an interpretation internally consistent as it grows.
Comments¶
Any frame can carry comments — free-text notes recording why an interpretation choice was
made. Comments are stored with the frame (as rdfs:comment in the RDF output) and are visible
to reviewers. The NLP assistant also writes its recommended role as a comment when it creates
an agent fact.
See the Frame Types & Roles reference for the exact icon, colour, and allowed-subtype matrix used throughout the interface.