Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Version History

Version

Date

Comment

Lead Editor

Contributors

1

First version

William Sobel

Evan Wallace tschneider Farhad Ameri Chris Will Elisa Kendall Ana Correia Serm Kulvatunyou

2

2022-10

This version addressed a lot of experiences gained from the IOF Core V1 Beta development.

William Sobel

Evan Wallace tschneider Jim Logan Barry Smith (Unlicensed) Arkopaul Sarkar Farhad Ameri Chris Will Stephen Kahmann Elisa Kendall Ana Correia Serm Kulvatunyou Milos Drobnjakovic Pawel Garbacz Melissa Weller

2.1

2022-11

Changed grouping of FOL and semi-formal axioms to use prefix. Added versionInfo

William Sobel

Evan Wallace tschneider Jim Logan Barry Smith (Unlicensed) Arkopaul Sarkar Farhad Ameri Chris Will Stephen Kahmann Elisa Kendall Ana Correia Serm Kulvatunyou Milos Drobnjakovic Pawel Garbacz Melissa Weller

2.2

2023-02

Fixed references to purl

William Sobel

2.3

2023-05

  • Added deprecation

  • Change note must be required for ontology.

  • Removed deprecated logicalAxiom.

William Sobel

...

  1. MUST: This word means that the definition is an absolute requirement of the specification.

  2. MUST NOT: This phrase means that the definition is an absolute prohibition of the specification.

  3. SHOULD: This word means that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications MUST be understood and carefully weighed before choosing a different course.

  4. SHOULD NOT: This phrase means that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.

  5. MAY: This word means that an item is truly optional. One user may choose to include the item because a particular marketplace requires it or because the vendor feels that it enhances the product, while another vendor may omit the same item.

...

  • MUST provide non-versioned ontology IRI (See: IRI Structure and Format V2.2 )

  • When released, MUST provide version IRI(owl:VersionIRI)(See: IRI Structure and Format V2.2 )

  • MUST provide label

  • MUST provide title

  • MUST provide abstract

  • MUST provide copyright

  • MUST provide license

  • MUST provide maturity

  • MUST provide a versionInfo

  • MUST provide changeNotes for each release.

For all constructs:

  • MUST provide label

  • MUST provide natural language definition

...

  • The following rules MUST be followed when using variables in a first-order logic axiom (formalization) or definition and semi-formal natural language axiom or definition

    • MUST NOT nest variables in single quotes

      • Examples: 'instance i' ‘, 'continuant c’

    • MUST use lower case variable for particular (individual or instance) of a universal

    • Variable SHOULD use the first letter of a construct’s label when possible

    • Variable MUST only be one letter

    • MUST append numeric suffixes (x1, x2, etc.) OR one or more primes (x', x'', etc.) for multiple instances of the same construct

    • MUST reserve the use of t, t', etc., for temporal regions; expressions such as 'for all times' SHOULD be interpreted as meaning ‘for all temporal regions’

    • MUST only use r, r', s, s', etc., for spatial and spatiotemporal regions

    • MUST only the use of R, R', etc. for relations

    • MUST NOT use the character a or A

  • The definition MUST adhere to the following semantics:

    References to classes and properties MUST use the label. The label MUST be transformed where the spaces are removed and classes labels MUST use UpperCamelCase and properties MUST use lowerCamelCase.

    Examples:

    material entity

    The following rules MUST be followed in a first-order logic definition

    Jira Legacy
    showSummaryfalse
    serverSystem JIRA
    serverIde40ab0a4-b576-382d-85fc-495e1da7d966
    keyARCH-64
    iof-av:firstOrderLogicDefinition

  • Definition: formal definition of construct using predicate logic semantics

  • The syntax MUST adhere to part one of the following article: https://www.cs.ox.ac.uk/people/james.worrell/lecture9-2015.pdf

  • The first-order logic definition MUST occur exactly once if the term is not primitive (is primitive is false )

  • The definition MUST provide individually necessary and sufficient conditions

  • axiom (formalization) or definition

Symbol

Meaning

UTF-8 Code

Conjunction

U+2227

Disjunction

U+2228

¬

Negation

U+00AC

Existential Quantification

U+2203

Universal Quantification

U+27C7

Implication/Conditional

U+2192

Equivalence/Bi-Implication

U+2194

( )

Left/Right Parentheses

Left: U+0028, Right: U+0029

[ ]

Left/Right Square Brackets

Left: U+005B, Right: U+005D

{ }

Left/Right Braces

Left: U+007B, Right: U+007D

    • Examples:

      • product:

        • obo:Continuant(c) ∧ ¬(obo:SpecificallyDependentContinuant(c) ∨ Person(c) ∨ Organization(c)

        ) ∧ ∃r (ProductRole(r) ∧ obo:hasRole(c, r))
        • ) ∧ ∃r (ProductRole(r) ∧ obo:hasRole(c, r))

  • first-order logic definition

    Jira Legacy
    showSummaryfalse
    serverSystem JIRA
    serverIde40ab0a4-b576-382d-85fc-495e1da7d966
    keyARCH-64
    iof-av:firstOrderLogicDefinition

    • Definition: formal definition of construct using predicate logic semantics

    • The first-order logic definition MUST occur exactly once if the term is not primitive (is primitive is false )

    • The definition MUST provide individually necessary and sufficient conditions

  • semi-formal natural language definitioniof-av:semiFormalNaturalLanguageDefinition

    • Definition: transitional definition

      Jira Legacy
      showSummaryfalse
      serverSystem JIRA
      serverIde40ab0a4-b576-382d-85fc-495e1da7d966
      keyARCH-68
      expressing first-order logic definition using semantics
      Jira Legacy
      showSummaryfalse
      serverSystem JIRA
      serverIde40ab0a4-b576-382d-85fc-495e1da7d966
      keyARCH-66
      understandable by ontologically knowledgable domain practitioner without predicate logic semantics Jira LegacyshowSummaryfalseserverSystem JIRAserverIde40ab0a4-b576-382d-85fc-495e1da7d966keyARCH-67

    • The semi-formal natural language definition MUST be provided if the term is not primitive (is primitive is false )

    • The semi-formal natural language definition MUST only occur once

    • Variables SHOULD be removed if they do not need to be referenced later in the expression

    • Rules for writing necessary axioms, sufficient axioms, and necessary and sufficient axioms:

      • SHOULD use “every instance of {term} is defined as exactly an instance of {conditions}” for necessary and sufficient conditions

        • Agent(x) ↔ (Person(x) ∨ GroupOfAgents(x) ∨ EngineeredSystem(x)) ∧ ∃y (AgentRole(y) ∧ hasRole(x,y))

        • every instance of ‘agent’ is defined as exactly an instance of ‘person’, ‘group of agents’, or ‘engineered system’ that ‘has role’ some ‘agent role’

    • The following syntax MUST be used:

      • A construct label MUST be used and its exact syntax preserved for constructs in this or an imported ontology

      • Quotes (') MUST surround all labels

      • The words “is a” MUST NOT be used without a qualification

        • “is a subclass of” MUST be used to indicate a subclass relationship

        • “is an instance of” MUST be used to indicate an instance of a universal

      • Variables SHOULD be used where needed in formulating the definition

      • The rules for natural language definitions MUST be applied otherwise

    • Examples:

      • ‘product’: every instance of ‘product' is defined as exactly an instance of (‘continuant’ and not ‘person’ and not ‘organization’ and not ‘specifically dependent continuant’) that ‘bears' some ‘product role’

      • ‘agent’: every instance of ‘agent’ is defined as exactly an instance of ‘person’, ‘group of agents’, or ‘engineered system’ that ‘has role’ some ‘agent role’

  • first-order logic axiom

    Jira Legacy
    showSummaryfalse
    serverSystem JIRA
    serverIde40ab0a4-b576-382d-85fc-495e1da7d966
    keyARCH-65
    - iof-av:firstOrderLogicAxiom

    • Definition: axiom of construct using predicate logic semantics

    • First-order logic axiom MAY be provided if the construct is primitive or non-primitive.

      • With the implication arrow → the left is sufficient, and the right is necessary

    • A construct MAY have more than one first-order logic axiom annotation

    • A first-order logic axiom value MUST adhere to first-order logic definition syntax

    • If there is more than one axiom:

      • the axiom MUST be associated with the semi-formal natural axiom

      • The axiom MUST use a prefix consisting of a name and a colon.

        • The name MUST use LA<n>: where <n> is a monotonically increasing number starting at 1.

    • Examples:

      • Code Block
        iof-av:firstOrderLogicAxiom: "LA1: BusinessFunction(x) → Function(x) ∧ ∃o,∃i(Organization(o) ∧  ObjectiveSpecification(i) ∧ functionOf(x,o) ∧ genericallyDependsOnAtSomeTime(i,o) ∧ prescribedBy(x,i)) ∧ ∀y(hasRealization(x,y) → BusinessProcess(y))"
        iof-av:firstOrderLogicAxiom: "LA2: Function(x) ∧ ∃o,∃i,∃p(Organization(o) ∧  ObjectiveSpecification(i) ∧ BusinessProcess(p) ∧ functionOf(x,o) ∧ genericallyDependsOnAtSomeTime(i,o) ∧ prescribedBy(x,i)) ∧  hasRealization(x,p)) →  BusinessFunction(x)"
  • semi-formal natural language axiom - iof-av:semiFormalNaturalLanguageAxiom

    • Definition: transitional definition expressing first-order logic axiom using semantics understandable by ontologically knowledgable domain practitioner without predicate logic semantics

    • Semi-formal natural language axioms MAY be provided if the term is primitive (is primitive is true )

    • A construct MAY include more than one semi-formal natural language axiom annotation

    • The definition MUST adhere to semi-formal natural language definition syntax

    • If there is more than one axiom:

      • The axiom MUST be associated with the first-order logic axiom

      • The axiom MUST use a prefix consisting of a name and a colon.

        • The name MUST use LA<n>: where <n> is a monotonically increasing number starting at 1.

      • Example:

        • Code Block
          iof-av:semiFormalNaturalLanguageAxiom: "LA1: if x is a 'business function' then x is a 'function' that is 'function of' some 'organization' and that is 'prescribed by' some 'objective specification' and whenever x 'has realization' y that y must be a 'business process'"
          iof-av:semiFormalNaturalLanguageAxiom: "LA2: if x is a 'function' that is 'function of' some 'organization' and that is 'prescribed by' some 'objective specification' and that 'has realization' some 'business process' then x is a 'business function'"
    • All variables refer to instances

    • Rules for writing a necessary or sufficient axiom:

      • SHOULD use if and then to indicate the implication/conditional pattern for necessary or sufficient axiom: if antecedent, then consequent

        • AgentRole(x) → Role(x) ∧ ∃m ∃n ((MaterialEntity(m) ∧ ¬FiatObjectPart(x)) ∧ (Person(n) ∨ GroupOfAgents(n) ∨ EngineeredSystem(n)) ∧ actsOnBehalfOfAtSomeTime(m, n) ∧ roleOf(x,m))

        • 'agent role': if x is an instance of 'agent role', then x is an instance of 'role' that is the 'role of' some ('material entity' and not 'fiat object part') that 'acts on behalf of at some time' some other 'person', 'group of agents', or 'engineered system'

      • SHOULD use some type of for a universal pattern

        • InformationContentEntity(x) ∧ ∃c, ∃r ( continuant(c) ∧ RequirementSpecification(r) ∧ satisfies(x,r) ∧ prescribes(x,c)) ∧ ∀c'(prescribes(x,c') → Continuant(c')) → DesignSpecification(x)

        • if d is a ‘design specification’, then d is an ‘information content entity’ that ‘prescribes' some type of 'continuant'

      • SHOULD use whenever when representing a multi-place temporal expression

        • ∀ p,q,t (hasContinuantPart(p, q, t) ∧ instanceOf(p, MaterialEntity, t) → instanceOf(q, site, t) ∨ instanceOf(q, ContinuantFiatBoundary, t) ∨ instanceOf(q, MaterialEntity, t)

        • whenever a ‘material entity’ ‘has part’ y then y must be a ‘site’ or a ‘material entity’ or a ‘continuant fiat boundary’

    • Complete Example with more than one axiom:

      • Code Block
        iof-av:firstOrderLogicAxiom "LA1: Assembly(x) → MaterialArtifact(x) ∧ ∃c,∃c'(MaterialComponent(c) ∧ MaterialComponent(c') componentPartOfAtAllTimes(c,x) ∧ componentPartOfAtAllTimes(c',x) ∧ ¬(c=c'∨ (componentPartOfAtAllTimes(c,c') ∨ componentPartOfAtAllTimes(c',c))))"
        iof-av:semiFormalNaturalLanguageAxiom "LA1: if x is an 'assembly' then x is a 'material artifact' and there are at least two distinct 'material component' that are 'component part of at all times' x"
        iof-av:firstOrderLogicAxiom "LA2: MaterialArtifact(x) ∧ ∃p(AssemblyProcess(p)  ∧ isSpecifiedOutputOf(x,p)) → Assembly(x)"
        iof-av:semiFormalNaturalLanguageAxiom "LA2: Material Artifact x that 'is specified output of' some Assembly Process p implies x is an Assembly"

...

  • direct sourceiof-av:directSource

    • Definition: definitive source of the subject resource

  • adapted fromiof-av:adaptedFrom

    • Definition: source for the resource that was modified to create the subject resource

Deprecation

In cases where a term is removed from the ontology or is moved to another ontology, it MUST also be marked as owl:deprecated. The following annotations MUST be used in the following cases:

  • The following MUST be provided when retired/removed or moved in the source ontology annotations:

    • All construct annotations MUST be removed.

    • skos:changeNote: Rational for the deprecation–keeps the history of the rational in the header.

      • Rationale: Change note associated with the deprecated element because protege can associate with the destination term.

      • Example content of the skos:changeNote from FIBO: (Need to use IOF ref)

        • Code Block
          languagexml
          <skos:changeNote>The https://spec.pistoiaalliance.org/idmp/ontology/ISO/20230601/ISO11615-MedicinalProducts.rdf version of this ontology
          was modified to (1) make indication texts as nodes instead of literals (IDMP-591), (2) add the concept of shelf life / storage per Figure 
          11 in the ISO 11615 specification (IDMP-371), (3) add undesirable effect per Figure 14 in the ISO 11615 specification (IDMP-591), (4) 
          rename 'has medical condition' to use a more aligned label with ISO 11615 (IDMP-591), (5) add the concept of route of administration (IDMP-614), 
          and (6) integrate the refined pattern for controlled vocabularies (IDMP-533).</skos:changeNote>
  • The user MUST have the ability to choose if the constructs are equivalent to the previous terms:

    • The user MAY add the owl:equivalentClass or owl:equivalentProperty: IRI of the destination construct for the moved term.

    • OWL owl:sameAs as MAY be used for nominals as appropriate.

  • The user SHOULD change their ontology to use the new constructs.

  • To be considered for future releases: Deprecated constructs MUST be moved into a separate ontology file with the deprecated terms after a specified waiting period.

Notes

  • commentrdfs:comment

    • comment MUST NOT be used. Use one of the following instead:

      • iof-av:explanatoryNote

      • iof-av:usageNote

      • skos:scopeNote

  • explanatory noteiof-av:explanatoryNote

    • Definition: supplemental information used to clarify or describe the construct

    • explanatory note MAY be used to supplement the natural language definition of the construct

    • Example: “Item is another term semantically close to Product. But it is more general because the Item may not sellable. It is an overloaded term used by information systems to capture catalog information about real and sort of unreal (e.g., product family or option class which is a group of similar products) materials the enterprise concerns with.”

  • usage noteiof-av:usageNote

    • Definition: describes how to use the term in particular situations

    • usage note MAY be used to describe how the term is used in particular situations through an example instantiation.

    • Example: “This is how the Supplying Relation class may be used to convey who supplies what to who. SupplierRole(sr1) and BuyerRole(br1) and Product(p1) and SupplyingRelation(s1) and specificallyDependsOn(s1, sr1) and specificallyDependsOn(br1, s1) and specificallyDependsOn(p1,s1)”

  • scope noteskos:scopeNote

    • If required, scope note MUST be used to provide additional domain contextualization on the use of the term

    • From skos:

      • A note that helps to clarify the meaning and/or the use of a concept

    • Example:

  • change note - skos:changeNote: The note MUST have the following information:

    • Reference to the Jira issue related to the change

    • Brief description of the change

Synonyms and Abbreviations

...

6.2.3.2 Upper case characters, mathematical symbols, typographical signs and syntactic signs (e.g. punctuation marks, hyphens, parentheses, square brackets and other connectors or delimiters) as well as their character styles (i.e. fonts and bold, italic, bold italic, or other style conventions) shall be used in a term only if they constitute part of the normal written form of the term as conventionally used in running text. Syntactic signs shall not be used to show alternative terms. For complex terms (e.g. compounds and multiword terms), the natural word order shall be retained.

...