Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Classes and Hierarchy

This chapter applies Step 4 of Ontology Development 101 (Noy & McGuinness, 2001) to scimantic.

Noy & McGuinness 2001 — §Step 4

There are several possible approaches in developing a class hierarchy (Uschold and Gruninger 1996): A top-down development process starts with the definition of the most general concepts in the domain and subsequent specialization of the concepts. A bottom-up development process starts with the definition of the most specific classes, the leaves of the hierarchy, with subsequent grouping of these classes into more general concepts. A combination development process […] defines the more salient concepts first and then generalizes and specializes them appropriately.

ch04 produced the salient concepts bottom-up, by reading the competency questions. This chapter places them top-down, under the BFO and CCO categories Chapter 3 committed to. That is N&M’s combination approach, and it is where the schema starts to grow: ch04 was nearly free of code, but Step 4 turns the vocabulary into classes.

The work of the chapter is the ledger ch04 left unsettled. Those decisions are not independent, so the chapter takes them in dependency order: first the scaffold under BFO/CCO, then the claim spine (the core of the method), then method and act, then the reification questions, and last the higher-level layer that depends on all of them. Two decisions are slot-shaped rather than hierarchy-shaped (which named relations become real slots, and which are stored versus derived); those belong to Step 5 and wait for Chapter 6.

Anchoring to BFO and CCO

Every scimantic class ultimately subclasses one of the foundational kinds Chapter 3 committed to. Placing the harvest under them is mostly mechanical:

  • Artifacts are information content entities (CCO Information Content Entity, under BFO continuant), falling into a few of CCO’s ICE kinds. The claims — hypotheses, evidence, results, conclusions — are Descriptive ICEs: content asserting what is or might be the case. A question is an ICE too, but interrogative rather than descriptive (it asks, it does not assert), so it grounds in the general ICE. The methods are Prescriptive ICEs (CCO’s directive branch): content prescribing what to do. Datasets and annotations are ICEs alongside them.
  • Acts — the formations, searches, assessments, experiments, analyses — are planned acts (CCO Planned Act, under BFO occurrent).
  • States are conditions grounded in CCO Stasis (the subject of the next section).
  • Qualities (credibility, the uncertainty facets) are BFO qualities.
  • Agents are CCO Agents.
  • Temporal regions locate the occurrents in time (BFO temporal region).

Two placements here are forced by the questions, not chosen, and the chapter records them rather than deliberating them. CQ 10, 14, and 15 quantify over acts generically — what act produced this dataset, the acts in the lineage — so Act has to be a real shared supertype over the nine act classes, not a reading-group label. And CQ 14’s “when” is an interval: acts are occurrents that unfold over time, so an act is located at a TemporalInterval, not stamped with a single createdAt instant, which would be false for an experiment that runs for days. These are the scaffold the contested decisions hang on.

Grounding vs reuse: subclass_of and class_uri

LinkML’s is_a links classes within a schema; it cannot point at an external term. So each anchor grounds in its BFO/CCO category with subclass_of, LinkML’s rdfs:subClassOf to an external CURIE, and the domain classes that is_a the anchor inherit it (the pattern Biolink uses to anchor in BFO). That is how scimantic specializes a category. A class it reuses wholesale instead sets class_uri to the external term directly, co-identifying with it rather than subclassing: Dataset is dcat:Dataset, Annotation is oa:Annotation. (LinkML marks subclass_of deprecated in favor of is_a, but is_a cannot reach an external IRI, so it stays the tool for cross-ontology grounding.)

Dataset and Annotation make the class_uri side of that distinction concrete 5.1.1:

Listing 5.1 — Dataset and Annotation, reused wholesale
# scimantic-yaml-v3.yaml
# @@ 274,286 @@
  Dataset:
    class_uri: dcat:Dataset
    description: >-
      A dataset reused from W3C DCAT: the input to an analysis or
      experiment, or the output a result is drawn from.

  Annotation:
    class_uri: oa:Annotation
    description: >-
      An annotation on a source document, reused from the W3C Web
      Annotation model; an EvidenceExtraction draws a piece of
      Evidence from one.

The remaining foundational kinds and artifacts take their places — Agent grounded in CCO Agent 5.2.1 and an act’s TemporalInterval in BFO’s one-dimensional temporal region 5.2.2, Question under the general ICE 5.2.3, Result a Descriptive ICE 5.2.4, and SourceDocument a CCO Document 5.2.5 — the bearer evidence is drawn from, not the content — leaving the contested decisions the rest of the chapter settles:

Listing 5.2 — Foundational kinds and artifacts
# scimantic-yaml-v3.yaml
# @@ 189,223 @@
  Agent:
    subclass_of: cco:ont00001017
    description: >-
      A material entity that performs acts and bears responsibility
      for them — a researcher, group, or institution.

  TemporalInterval:
    subclass_of: obo:BFO_0000038
    description: >-
      The stretch of time an act occupies, with a beginning and an
      end rather than a single instant.

  Question:
    subclass_of: cco:ont00000958
    description: >-
      An information content entity expressing what an inquiry seeks
      to answer; the output of a QuestionFormation and the start of
      a provenance chain.

  Result:
    subclass_of: cco:ont00000853
    description: >-
      A finding produced by an Analysis; the input a ResultAssessment
      weighs in drawing a conclusion.

  SourceDocument:
    subclass_of: cco:ont00001298
    description: >-
      A document a LiteratureSearch surfaces and an Annotation marks
      up; the bearer a piece of Evidence is extracted from.

The claim spine

The core of the method is the chain from a question, through evidence and premises, to a hypothesis and a conclusion. Three of ch04’s open decisions shape it, and they lock together: how standing is modeled, what distinguishes evidence from a premise, and whether a hypothesis is mandatory. They are taken in that order because each constrains the next.

Standing as state, not status

v0.2 recorded an act’s lifecycle phase as an enum value on a status slot. The rebuild does not. An enum value is a scalar: it can say a premise is accepted, but it carries no interval over which the acceptance holds and no trace of the act that conferred it. Every standing the competency questions ask about is temporal and provenanced. CQ 4 returns evidence an assessment accepted; the second pass’s gaps questions ask whether a premise is still accepted or has been retracted, a question about an interval closed by a later act.

So scimantic models standing as a reified State, grounded in CCO’s Stasis: a condition that obtains over a TemporalInterval and points back to the act that established it and the agent who performed it. OpenState, AcceptedState, and RetractedState are subtypes of State, each attached to the entity it qualifies. They are kind-agnostic: the standing lives in the act that confers it and the interval it holds over, not in a class per claim type, so three adjudication standings cover every entity rather than one state each. This is the cross-cutting decision of the cluster: once standing is a state, the same three carry an open question, an accepted or retracted premise, a conclusion accepted in review and standing until refuted, and a method validated by execution. The next two decisions spend it.

In the schema, that is State and its three standings, each grounded in CCO Stasis 5.3.1:

Listing 5.3 — The three standings
# scimantic-yaml-v3.yaml
# @@ 160,187 @@
  State:
    abstract: true
    subclass_of: cco:ont00000819
    description: >-
      A condition that obtains over a temporal interval,
      established by an act. scimantic models standing as state
      rather than as an enum value.

  OpenState:
    is_a: State
    description: >-
      The standing of a claim awaiting adjudication: a question not
      yet answered, or a conclusion submitted but not yet accepted.

  AcceptedState:
    is_a: State
    description: >-
      The standing of a claim or method endorsed by an establishing
      act — evidence accepted as a premise, a conclusion accepted in
      review, or a method validated by a successful execution —
      holding until any retraction.

  RetractedState:
    is_a: State
    description: >-
      The standing of a claim or method whose acceptance has been
      withdrawn.

Evidence and Premise: one claim, two standings

When assessed evidence becomes a premise, is that a new class, a status on the old one, or a derivation? ch04 settled the framing: evidence and premise are the same claim at two epistemic stages, not one claim derived from another. With standing now modeled as state, the resolution is direct.

A piece of evidence is an information content entity: a claim about the world, under CCO’s Descriptive Information Content Entity. An EvidenceAssessment weighs it for credibility and, if it passes, confers an AcceptedState. The premise is that same claim, now bearing the accepted state. There is no second class and no derivedFrom edge 5.4.3; promotedFrom is identity-preserving, a transition in standing rather than the creation of a new node. CQ 4 then filters evidence by a queryable state, and CQ 5 — which needs a premise to be a node you can traverse from into HypothesisFormation — is satisfied because the premise is the evidence node itself, reached with no indirection.

Step 4 places the pieces — the Evidence claim, the AcceptedState it comes to bear, and the EvidenceAssessment that confers it — but the promotion between them is relational: a claim bearing a state, an act conferring it. Those are slots, so the wiring that makes the promotion queryable, and promotedFrom a transition rather than a phrase, is Step 5 work that lands in Chapter 6. The listings here show the participating classes; the slots that carry a promotion come with the rest of the slot work. This is also why the three pieces sit in three different listings below — the claim layer, the states, and the acts — rather than in one place: nothing yet binds them into a single view.

One distinction still earns a name. Accepted is a state, the outcome of assessment. Premise is better read as a role, in BFO’s sense of a realizable entity: a claim plays the premise role when it serves as an input to a particular hypothesis formation, and the same claim can be a premise in one argument and not in another. scimantic models acceptance as the Stasis state and premise-hood as the role an accepted claim realizes when a HypothesisFormation takes it as input. The claim is one node; its acceptance and its use are recorded without cloning it.

Hypothesis is optional

Does the chain require a hypothesis? The seeded vocabulary runs Question → Hypothesis → Evidence → Conclusion, which reads as though every conclusion descends from a hypothesis. Chapter 2’s scope says otherwise: it admits a literature-only meta-analysis, and the lesson scimantic took from EXPO — the experiment ontology Chapter 4 declined to reuse, because it builds on SUMO rather than the BFO/CCO base — is that some inquiry is exploratory, with no prior hypothesis to test. Forcing a Hypothesis node into every lineage would mismodel exactly the inquiry the domain claims to cover.

So a Conclusion may trace to its premises and evidence with or without an intervening Hypothesis. The hypothesis is a node that can sit in a lineage, not a required link in it.

This leaves a consequence for the higher-level layer to collect. If the spine must carry supports, contradicts, and refines whether or not a hypothesis is present, those relations cannot range on Hypothesis alone; they need a shared parent over everything a claim relation can touch — hypothesis, premise, conclusion alike. The pressure for a Claim superclass starts here, and the chapter settles it when it reaches that layer.

The claim layer is a single abstract Claim, grounded in CCO’s Descriptive Information Content Entity 5.4.2 by subclass_of 5.4.1, over Hypothesis, Evidence, and Conclusion:

Listing 5.4 — The claim layer
# scimantic-yaml-v3.yaml
# @@ 45,78 @@
  Claim:
    abstract: true
    subclass_of: cco:ont00000853
    slots:
      - supports
      - contradicts
      - refines
    description: >-
      An information content entity that asserts something about the
      world. The shared parent of the claim relations, so supports,
      contradicts, and refines apply whether or not a hypothesis is
      present.

  Hypothesis:
    is_a: Claim
    description: >-
      A conjectured claim a study may be designed to test. Optional
      in the chain, since exploratory inquiry has none.

  Evidence:
    is_a: Claim
    description: >-
      A claim offered as bearing on another. It becomes a Premise
      once an EvidenceAssessment accepts it, the same node now
      carrying an AcceptedState.

  Conclusion:
    is_a: Claim
    description: >-
      A claim drawn from premises and evidence, with or without an
      intervening hypothesis.

It carries the three claim relations, mapped to CiTO and bound for reification into an EvidentialRelation when this chapter reaches it 5.5.1:

Listing 5.5 — The claim relations
# scimantic-yaml-v3.yaml
# @@ 288,307 @@
slots:

  supports:
    range: Claim
    exact_mappings:
      - cito:supports
    description: Asserts that one claim bears positively on another.

  contradicts:
    range: Claim
    exact_mappings:
      - cito:disputes
    description: Asserts that one claim bears negatively on another.

  refines:
    range: Claim
    exact_mappings:
      - cito:extends
    description: Asserts that one claim refines or extends another.

With the spine fixed, the next cluster turns to method and act.

Method and act

Three questions (CQ 8, 9, and 10) turn on a single decision: is an experimental method a reusable template, or a thing made fresh for each study? ch04 named this the chapter’s biggest single tension. It resolves the way Evidence and Premise did, by dissolving the dichotomy.

A method is a plan specification: a Prescriptive information content entity (CCO’s directive branch) that prescribes how to carry out an act. As an ICE it is a continuant, existing independently of any particular run, and an act realizes it. Experimentation realizes an ExperimentalMethod; Analysis realizes an AnalyticalMethod. That is the reusable, one-to-many shape CQ 9 (“what experiments executed a given method”) and CQ 10 (“what act applied a method”) require: a method is executed by many acts, and “act” generalizes across experimentation and analysis, which pushes ExperimentalMethod up under a general Method. A generic template and a study-specific protocol are then both plan specifications at different grain, not two classes, and the template-versus-instance framing falls away.

What does not live on the method is intent. A reusable method cannot itself be “designed to test hypothesis H,” because the same method serves different hypotheses in different studies. The thing designed to test H is the act that designed it. So tests, the prospective intent CQ 8 asks for, attaches to DesignOfExperiment, not to Method. CQ 8’s “methods designed to test H” becomes a traversal: from the hypothesis, back along tests to the design act, forward to the method it produced. The method’s type-level capability (the kind of hypothesis it can test) is a separate affordance no question demands, so it waits.

Placing tests on the design act keeps it the distinct verb ch04 insisted on. tests is prospective intent, carried by a design act before the evidence is in; supports and contradicts are retrospective verdicts, carried by the evidence after. They never collapse, because they sit on different nodes: an act and a claim.

Two threads from the spine run through here. A method is realized by an act exactly as a premise’s role is realized by a hypothesis formation: the schema leans on BFO’s one machinery for realizable entities in both places. And the State pattern reaches methods too, a method gaining an AcceptedState when a successful execution validates it, as a premise gains one when an assessment accepts it.

Which CCO relation executes should map to, rather than a freshly minted slot, is a Step 5 question that waits with the other slot decisions for Chapter 6.

Both halves are in the schema now. The Method plan specifications, grounded in CCO’s Prescriptive ICE 5.6.1, with ExperimentalMethod and AnalyticalMethod under the general Method:

Listing 5.6 — The method layer
# scimantic-yaml-v3.yaml
# @@ 139,158 @@
  Method:
    abstract: true
    subclass_of: cco:ont00000965
    description: >-
      A prescriptive information content entity that prescribes how
      to carry out an act, realized by the acts that execute it.
      Exists independently of any single run.

  ExperimentalMethod:
    is_a: Method
    description: >-
      A method prescribing how to carry out an experiment; realized
      by an Experimentation act and designed by a DesignOfExperiment.

  AnalyticalMethod:
    is_a: Method
    description: >-
      A method prescribing how to analyze data to produce a result;
      realized by an Analysis act.

And the nine acts that realize them, under the Act supertype 5.7.1:

Listing 5.7 — The nine acts
# scimantic-yaml-v3.yaml
# @@ 80,137 @@
  Act:
    abstract: true
    subclass_of: cco:ont00000228
    description: >-
      An agentive planned process that produces or transforms
      artifacts. The shared supertype CQ 10, 14, and 15 quantify
      over.

  EvidenceAssessment:
    is_a: Act
    description: >-
      Weighs a piece of evidence for credibility and, on
      acceptance, confers an AcceptedState on it.

  QuestionFormation:
    is_a: Act
    description: >-
      The act of forming a question; its output an open Question.

  LiteratureSearch:
    is_a: Act
    description: >-
      A search over source documents that addresses motivating
      questions and may surface new ones.

  EvidenceExtraction:
    is_a: Act
    description: >-
      The act of extracting a piece of Evidence from an annotation
      on a source document.

  HypothesisFormation:
    is_a: Act
    description: The act of synthesizing a Hypothesis from its premises.

  DesignOfExperiment:
    is_a: Act
    description: >-
      The act of designing an experimental method to test a
      hypothesis; the bearer of the prospective tests intent.

  Experimentation:
    is_a: Act
    description: >-
      The act that executes an experimental method, realizing its
      plan.

  Analysis:
    is_a: Act
    description: >-
      The act that applies a method to data to produce a result.

  ResultAssessment:
    is_a: Act
    description: >-
      The act of assessing a result and drawing a conclusion from
      it.

With method and act placed, the next cluster asks when a value or an edge should become a node of its own: the reification questions behind uncertainty and the evidential relation.

Reification: when an edge becomes a node

Some of what the questions ask for is not a thing but a relationship, and a relationship can be modeled two ways: as a bare edge between two nodes, or as a node of its own that both endpoints point to. Promoting an edge to a node is reification, and it has a cost, an extra node on every instance of the relationship. So the rule is not to reify everything, nor nothing, but to reify on demand: a relationship becomes a node exactly when a question asks for a property of the relationship itself, not just of its endpoints.

scimantic has already reified its core relationships without naming it. Every transformation in the method is an act, and an act is a node that carries its own agent, time, inputs, and outputs, so the deriving of a result, the forming of a hypothesis, and the assessing of evidence are nodes already. The reification question is only about the relationships the act model leaves as edges.

One of them earns a node. supports, contradicts, and refines are edges from a claim to the claim it bears on, and for most purposes that is enough. But the second pass asks more: for a given support, which act and agent established it, when, and with what strength. Those are properties of the support itself, which a bare edge has nowhere to hold. So the support becomes an EvidentialRelation, a node reifying a cito-typed link between two claims and carrying its polarity (the cito mapping), a strength, the asserting act, and the agent. It is a Descriptive ICE in its own right: a recorded claim that one claim bears a given relation to another.

The other relationships stay edges. derivedFrom runs between artifacts, but every derivation already has an act behind it that holds the agent and the inputs, and reifying the edge as well would record the same provenance twice. The evidence line, which groups several pieces of evidence under one strength, is a reification too, but it belongs to the higher-level layer — the chapter’s capstone — so it is introduced there, not here.

In the schema, that reified node is the EvidentialRelation 5.8.1:

Listing 5.8 — The reified evidential relation
# scimantic-yaml-v3.yaml
# @@ 225,231 @@
  EvidentialRelation:
    subclass_of: cco:ont00000853
    description: >-
      A reified claim-to-claim relation: a Descriptive ICE carrying a
      cito-typed polarity, a strength, the asserting act, and the
      agent.

Uncertainty as a model, not a number

The starting vocabulary carried uncertainty as a number on a result. CQ 12 asks for more than a number: what is the uncertainty model for a given result, and how was it derived? A model is a family (Gaussian, bootstrap, posterior), its parameters, a confidence level, and a nature (aleatory or epistemic). A scalar slot cannot hold that bundle. So uncertainty is a class, the same reification move the last section made: a value the questions interrogate becomes a node.

Two things hide in that class, and keeping them apart is the decision. The uncertainty is a quality of the result: the result is uncertain, and that quality inheres in it.

Jargon: inheres in

A dependence relation: a quality (or any specifically dependent entity) inheres in a bearer, meaning it cannot exist on its own, only as a quality of something. A result’s uncertainty inheres in the result and cannot exist without it. Inherence is that tie between a quality and the thing that has it.

The model is information that quantifies the quality: the choice of family and the fitted parameters are content about the uncertainty, not the uncertainty itself. So scimantic models an UncertaintyModel, a Descriptive ICE that quantifies the result’s uncertainty quality, rather than loading structure onto a bare quality. The quality stays a BFO Quality, as Chapter 3 grounded it; the model is the ICE that describes it.

Chapter 3 committed to URREF in principle for exactly this: the model’s nature facet, aleatory versus epistemic, is URREF’s distinction. But nothing binds in this chapter. nature is itself a Step-5 slot (Chapter 6), and URREF’s namespace is still the provisional placeholder Chapter 3 flagged — so the UncertaintyModel carries no urref: mapping here. scimantic adopts the distinction now and defers its encoding — a urref: mapping, or a plain enum if URREF’s IRIs never settle — to Chapter 6. And it would be a mapping target, not a grounding: scimantic stays grounded in BFO/CCO and points out to URREF the way the claim relations point to CiTO, on the deferred footing Chapter 3 set.

CQ 12’s second half, how was it derived, is a relationship the reification policy sends to an act. By what statistical method were the result’s uncertainty and credibility computed, from what inputs, by which agent? Those are properties of a derivation, so the derivation is an act: a deriving act applying a StatisticalMethod, which is a Method in the sense the last cluster fixed, a Prescriptive ICE realized by the act that carries it out. Credibility is the simpler sibling of uncertainty, a graded quality whose provenance is the EvidenceAssessment that produced it, with no structured model of its own.

In the schema, the uncertainty cluster is two BFO qualities 5.9.1Uncertainty and Credibility — the UncertaintyModel 5.9.2 that quantifies the first, and the StatisticalMethod that derives them:

Listing 5.9 — The uncertainty cluster
# scimantic-yaml-v3.yaml
# @@ 233,258 @@
  Uncertainty:
    subclass_of: obo:BFO_0000019
    description: >-
      A quality of a result quantifying how much it could vary;
      borne by the result, quantified by an UncertaintyModel.

  Credibility:
    subclass_of: obo:BFO_0000019
    description: >-
      A graded quality of a piece of evidence expressing how far it
      can be relied on; conferred by an EvidenceAssessment.

  UncertaintyModel:
    subclass_of: cco:ont00000853
    description: >-
      A Descriptive ICE that quantifies a result's uncertainty
      quality: a family, its parameters, a confidence level, and a
      nature (aleatory or epistemic).

  StatisticalMethod:
    is_a: AnalyticalMethod
    description: >-
      An analytical method prescribing how to derive a result's
      uncertainty and credibility from data.

With reification settled, what remains is the layer above the individual artifacts: whether the evidence line, the Claim superclass the spine pressed for, and a Study container earn a place. That is the higher-level layer, and it is the last cluster.

The higher-level layer

The last cluster asks whether anything sits above the individual artifacts, or whether the flatter, artifact-by-artifact vocabulary is enough. ch04 surfaced three candidates from the neighbors questions. One — the Claim superclass — the spine already settled and the schema already has: the neighbors question (given any claim, hypothesis, premise, or conclusion, what supports and what challenges it?) only confirms why a queryable parent had to exist, and Claim is the parent an EvidentialRelation links. The other two are new, and each is demanded.

An EvidenceLine. The reification section deferred this grouping to here. The neighbors ask how many independent lines of evidence back a conclusion, and how strong is each? A query cannot count lines or weigh them unless a line is a thing. So an EvidenceLine is the reified grouping the policy pointed to: a Descriptive ICE collecting several pieces of evidence under one strength, asserting their joint bearing on a claim. This is the closest scimantic comes to an off-the-shelf model. SEPIO names an evidence line for exactly this, and Micropublications reifies evidence the same way; both become mapping targets on the deferred footing Chapter 3 set for SEPIO, citing the pattern and binding the IRIs once they settle.

A Study. The neighbors ask which acts and artifacts belong to the same study? That needs a study to be a node the rest belong to. So a Study, or Investigation, is a container over one question-to-conclusion cycle. Unlike the other two it sits on the act side, not the artifact side: a planned process whose parts are the formations, searches, experiments, and analyses of one inquiry, grounded in CCO’s planned-process layer. OBI offers an investigation class for the same idea, and OBCS or STATO a home for the StatisticalMethod the reification section named; both stay candidate mappings, deferred until scimantic mints the classes, as the second pass left them.

Each was forced by a neighbors question rather than chosen for elegance: EvidenceLine discharges the reification the earlier section deferred, and Study gives the acts and artifacts of one inquiry a container to belong to. With them placed — and Claim already settled — the structural work of Step 4 is done.

In the schema, the higher-level layer adds EvidenceLine 5.10.1 and the Study container 5.10.2 (the Claim superclass the spine pressed for is already in place):

Listing 5.10 — The higher-level layer
# scimantic-yaml-v3.yaml
# @@ 260,272 @@
  EvidenceLine:
    subclass_of: cco:ont00000853
    description: >-
      A Descriptive ICE grouping several pieces of evidence under
      one strength and asserting their joint bearing on a claim.

  Study:
    subclass_of: cco:ont00000228
    description: >-
      A planned process whose parts are the formations, searches,
      experiments, and analyses of one question-to-conclusion cycle.

Next

Step 4 is settled. Every term has a class, and every class a place under BFO and CCO. The decisions ch04 left open have answers, the forced placements are made, and the higher-level layer is in.

What remains is slot work, and it is Step 5. Chapter 6 settles three questions this chapter left to it:

  • which of the named relations become real slots, and which are a generic relation with a typed range;
  • whether each inverse is stored or derived by the reasoner;
  • whether scimantic renames its claim relations to CiTO’s, or keeps its own and maps them with skos:closeMatch.

That is where the classes this chapter shaped get their properties.