/
Before release #1

Before release #1

1. Ontology diagram

This diagram is generated directly from the .owl file and therefore reflects the actual state of the ontology (this version is accurate as of 4 February 2025). It shows classes with their subclasses radiating out from them, as well as the object properties relating classes. It does not show datatype properties (that is, properties where the value is a datatype, instead of an instance of a class in the ontology).

This diagram was generated with WebVOWL. To generate your own:

  1. Upload the ontology file: Ontology > Custom Ontology > Select ontology file in the tabs at the bottom of the page.

  2. Organise the diagram neatly by selecting Modes > Pick and pin and dragging the class nodes to the desired area.

  3. Export the diagram: Export > Export as SVG.

You can adjust the level of detail shown in the diagram with Filter > Degree of collapsing. If you wish to exclude Object- or Datatype Properties, check the box next to Filter > Object properties/Datatype properties respectively.

diagram04-02.svg
Figure 1 - The state of the ontology on 04-02-2025

2. Classes

Considerations pertaining to classes before release #1:

  1. Class inconsistencies

  2. Annotation practices

1. Inconsistencies

The following is a list of class for which there are inconsistencies between the .owl ontology file, the core ontology class list and the table of definitions (the latter two as per this page). The list below has the class name and a brief description of the problem; accurate as of 04-02-2025.

Class

Reason

Status

Solution

Class

Reason

Status

Solution

1

Agent:LegalPerson

In .owl, but not in ontology list

INcomplete

 

2

Agent:NaturalPerson

In .owl, but not in ontology list

INcomplete

 

3

Agent:CyberPersona

In .owl, but not in ontology list

INcomplete

 

4

Claim:Report

In table, but not in ontology list

INcomplete

 

5

Control:DataFormat

In .owl but greyed out in table; is this definitely not for version 1?

INcomplete

 

6

Indicator:Location

In list, but no definition in table

INcomplete

 

7

Indicator:Position

In list, but no definition in table

INcomplete

 

8

Indicator:Reputation

In .owl but greyed out in table; is this definitely not for version 1?

INcomplete

 

9

SpatialMeasurementSystem:GeocentricDatum

In .owl, but not in ontology list. Possible addition? Or are we not being that specific?

INcomplete

 

10

SpatialMeasurementSystem:GeodeticDatum

In .owl, but not in ontology list. Possible addition? Or are we not being that specific?

INcomplete

 

11

SpatialParameter:Extent and subclasses

In .owl, but greyed out in table

INcomplete

 

12

SpatialParameter:Location

In .owl, but greyed out in table

INcomplete

 

13

SpatialParameter:Position

In table, but not in list

INcomplete

 

14

TemporalParameter:Duration

In .owl, but greyed out in table

INcomplete

 

15

TemporalParameter:Instant

In .owl and table, but not in list

INcomplete

 

16

TemporalParameter:Period and subclasses

In .owl and table, but not in list

INcomplete

 

17

TemporalParameter:TimePosition

In .owl, but greyed out in table

INcomplete

 

18

Role:ProjectDeveloper

In .owl, but greyed out in table

INcomplete

 

19

Activity:Reporting

In list and .owl, but no definition in table

INcomplete

 

20

Instrument:MeasurementInstrument

In .owl, but not in list. Possible addition? Or are we not being that specific?

INcomplete

 

21

Medium

In list and .owl, but no definition in table

INcomplete

 

22

Medium:ClaimMedium

In .owl, but greyed out in table; is this definitely not for version 1?

INcomplete

 

23

Medium:AttestationMedium

Greyed out in table; is this definitely not for version 1?

INcomplete

 

24

Process

Subclass of Event in table, but not in list

INcomplete

 

25

Process:NaturalProcess

In .owl, but not in list and greyed out in table. Definitely excluded?

INcomplete

 

26

Project

Subclass of Activity in table, subclass of Process in list

INcomplete

 

27

Substantiation

Greyed out in table

INcomplete

 

Where definitions and annotations for these classes are present in the .owl file, they may be assumed outdated and possibly incorrect.

2. Annotations

Currently, each class has a definition (skos:definition) and a “name“ (a human-readable label; rdfs:label).

incomplete

The table of definitions on this wiki page contains synonyms, notes, and considerations for use in addition to the definition. How many, if any, of these notes should be added to the ontology as comments or explanations (with rdfs:comment)?

3. Predicates

The predicates relate classes to one another and are, to a large extent, what makes the ontology usable; they warrant careful consideration and review before release of the ontology.

1. Object properties

As of 05-02-2025, the ontology contains 24 object properties. The majority of the 13 fundamental axioms of the ontology are explicitly encoded as predicates. Some, like #4 and #13 do not (or not yet) have equivalent properties.

incomplete

This list of predicates is not sufficient to make the ontology fully operational. Working through some concrete examples may be a good starting point for identifying which additional predicates are needed.

Axiom

Property (Inverse property)

Status

Solution

Axiom

Property (Inverse property)

Status

Solution

  1. An agent engages in an activity

engagesIn (isPerformedBy)

for review

 

  1. An activity impacts an environment

activityImpacts (impactedByActivity)

for review

 

  1. An environment is defined by interrelated parameters

isDefinedBy (belongsToEnvironment)

for review

 

  1. A state is the value of a parameter P at time t

No explicit property; definition inferred by structure of actual data. For an example, see the state1 definition here.

for review

 

  1. An activity is performed by an instrument

hasInstrument (usedToPerform)

for review

 

  1. An activity has at least one thing as input

hasInput

for review

 

  1. An activity has at least one thing as output

hasOutput

for review

 

  1. A claim is a statement about a (some specific) thing

isStatementAbout

for review

 

  1. A claim is expressed in a claim medium

expressedInMedium

for review

 

  1. An agent enacts a role

enacts

for review

 

  1. An event impacts a state

eventImpacts (impactedByEvent)

for review

 

  1. A control limits or directs a thing

hasSubject (hasControl)

for review

 

  1. A claim can be substantiated by another thing

No property yet

incomplete

 

In addition to these properties, the ontology contains a number of additional properties:

Property (Inverse Property)

Rationale for inclusion

Considerations

Status

Solution

Property (Inverse Property)

Rationale for inclusion

Considerations

Status

Solution

comprises

For many classes, instances of that class can contain “subinstances“ of the same class. For example, an organisation (which is an Agent), can have many employees (themselves Agents)

Is this necessary to define explicitly?

incomplete

 

makesClaim (hasClaimant)

Agents make Claims

 

for review

 

hasLocation

Useful property to have

Better practice to link aia-o with existing ontology and use their properties instead of defining our own.

Possible alternatives:

  1. schema.org's Place

  2. W3C Basic Geo Vocab for simple lat/long/alt locations

  3. GeoSPARQL (more complex/technical)

incomplete

 

hasStateDiff

To quantify state differences

What is the domain and range? How exactly is a state difference defined (see axiom 4 in the previous table)

incomplete

 

hasAttribute (isAttributeOf)

To identify attributes of an entity

 

for review

 

hasProvenance

Answer to the question “What caused this?“. Not yet included in ontology, but may be useful to include.

 

INcomplete

 

hasSubstantiation (isSubstantiationFor)

Not yet included in ontology, but may be useful to include, once the Substantiation class is formalised

 

incomplete

 

2. Datatype properties

incomplete

Constructing these is not related explicitly to fundamental axioms. It is therefore harder to decide which properties are needed.

None of the current datatype properties should be viewed as final, fundamental, or indispensable. In fact, one approach may be to provide only a small handful of datatype properties in the ontology, and leave the rest to be defined by users in their own schemas as needed.

As a starting point for the discussion, the current datatype properties (05-02-2025) are listed below.

Property

Domain

Range

Property

Domain

Range

1

hasAccuracy

MeasurementInstrument

xsd:float

2

hasConfidenceLevel

State

xsd:float

3

hasConfUpperBound

State

xsd:float

4

hasConfLowerBound

State

xsd:float

5

hasLogicalOperator

Control

xsd:string

6

hasMake

Instrument

xsd:string

7

hasModel

Instrument

xsd:string

8

hasModality

 

xsd:boolean

9

hasPrecision

MeasurementInstrument

xsd:float

10

hasRationale

 

xsd:string

11

hasUnitOfMeasure

Parameter, Indicator

xsd:string

12

isBinding

Control

xsd:boolean

13

wasCalibratedOn

MeasurementInstrument

xsd:dateTime

14

wasManufacturedOn

Instrument

xsd:date

4. Enforcing data correctness

It is important to realise that OWL only ensures logical consistency, i.e. that the axioms of an ontology do not lead to contradictions. OWL does not automatically enforce the constraints (domain constraints, range constraints, etc.) in the ontology on instance data.

Ensuring that data actually adheres to the constraints and restrictions implied by the ontology requires the use of additional tools, like SHACL.

Why? Using SHACL helps ensure data of high quality. It forces data to adhere to the constraints and requirements of the ontology.

What? SHACL (Shapes Constraint Language) is “a language for validating RDF graphs against a set of conditions“.

When? Data can be checked against the defined shapes before being entered into a knowledge graph or triple store.

How? SHACL validators check the data against the defined shapes and generate a report if any violations are found.

Below is a small example for clarification.

Where can we use SHACL?

A good use case for SHACL in our ontology is the Role class.

Role is defined as “A control that specifies the scope of and/or requirements for an agent's relation to an activity.“ That is, given that an agent engages in a certain activity, there may be a collection of requirements the agent must adhere to.

Roles can be adjusted according to the needs of the application at hand. For example, the set of requirements for agents who own things (the set is collectively referred to as an Owner role) may differ between applications.

As an example, consider the following:

  1. Define the Role: Verifier (Turtle code)

@prefix aia: <http://purl.org/aiaontology> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . <verifier-id> rdf:type aia:Verifier ; aia:hasRequirements "The agent must have a qualification.", "The agent must have more than 2 years of experience" .

2. Define the shape (SHACL)

@prefix sh: <http://www.w3.org/ns/shacl#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix aia: <http://purl.org/aiaontology#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . # The verifier role only applies to agents who verify something aia:VerifyingAgentShape a sh:NodeShape ; sh:targetSubjectsOf aia:verifies ; # Requirement 1 sh:property [ sh:path aia:hasQualification ; sh:datatype xsd:boolean ; sh:hasValue true ; sh:message "The agent must have a qualification." ; ] ; # Requirement 2 sh:property [ sh:path aia:yearsOfExperience ; sh:datatype xsd:integer ; sh:minInclusive 3 ; sh:message "The agent must have more than 2 years of experience." ; ] . # courtesy of ChatGPT
  1. Input data. To experiment with SHACL yourself, you can use a SHACL playground like this one (note that you will need to structure your data as JSON-LD for this playground).

# Data will be checked and pass :aiaAgent1 a aia:Agent ; aia:verifies <something> aia:hasQualification true ; aia:yearsOfExperience 4 .
# Data will be checked and fail :aiaAgent2 a aia:Agent ; aia:verifies <something> ; aia:hasQualification false ; aia:yearsOfExperience 2 .
# Data will not be checked :aiaAgent3 a aia:Agent ; aia:hasQualification false ; aia:yearsOfExperience 3 .

Related content