Chapter 1: Opening Day
Dr. Helen Portbridge had been dreaming of this day for years. The sign on the door read Happy Paws Veterinary Clinic, the smell of fresh paint still lingered, and the reception desk was empty except for a brand-new laptop. Before any patient walked in, she needed a system. A way to describe every animal, every owner, every appointment that would ever pass through these doors.
She opened a text editor and typed:
Every Dolfin project begins with a package. Think of a package as the identity card of your ontology: its name, its version, who made it, and what it’s for.
package <http://happypaws.com/clinic>:
dolfin_version "1"
version "0.1.0"
author "Dr. Helen Portbridge"
description "The Happy Paws veterinary clinic data model"
Let’s unpack this line by line.
The package name
package <http://happypaws.com/clinic>:
The name uses IRI-notation. If Dr. Portbridge later builds a separate ontology for her research lab, she could call it http://happypaws.com/research and there would be no collision.
The colon (:) at the end is important. It opens an indented block. Everything that belongs to this package declaration must be indented underneath it, exactly like Python.
Metadata
dolfin_version "1"
version "0.1.0"
author "Dr. Helen Portbridge"
description "The Happy Paws veterinary clinic data model"
| Field | Required | What it does |
|---|---|---|
dolfin_version | ✅ | Which version of the Dolfin language to use |
version | ✅ | Your ontology’s own version (semver) |
author | ❌ | A human name |
description | ❌ | A sentence explaining the purpose |
dolfin_version "1" tells the parser which grammar to expect. Right now there is only version 1, but including it means your file will still work when the language evolves.
Try it
Change the author to your own name and hit Check:
package <http://happypaws.com/clinic>:
dolfin_version "1"
version "0.1.0"
author "Dr. Helen Portbridge"
description "The Happy Paws veterinary clinic data model"
Common mistakes
Forgetting the colon:
package <http://happypaws.com/clinic>
dolfin_version "1"
Dolfin will tell you: “Did you forget a : after the package name?”
Inconsistent indentation:
package <http://happypaws.com/clinic>:
dolfin_version "1"
version "0.1.0" # ← too deep!
All lines inside a block must be at the same indentation level.
Dr. Portbridge saved the file as
package.dol. A package with no concepts is like a clinic with no exam rooms, technically it exists, but it can’t do anything yet. She needed to describe the things that would populate her world.