From bc1913a1e49806aa8233f70194778568de1fadbf Mon Sep 17 00:00:00 2001 From: Adel Bouhraoua Date: Tue, 21 Apr 2026 19:13:57 +0200 Subject: [PATCH] changes import strategy to base module approach. replace RO import with ro-base add GO import with go-base add IAO import updates repo to odk v1.6.1 --- .github/workflows/qc.yml | 2 +- docs/odk-workflows/RepositoryFileStructure.md | 2 + src/ontology/Makefile | 61 +- src/ontology/catalog-v001.xml | 4 +- src/ontology/idpo-edit.owl | 4 +- src/ontology/idpo-odk.yaml | 7 + src/ontology/imports/go_terms.txt | 5 + src/ontology/imports/iao_terms.txt | 1 + src/ontology/imports/merged_import.owl | 830 ++++++++++++++++++ 9 files changed, 890 insertions(+), 26 deletions(-) create mode 100644 src/ontology/imports/go_terms.txt create mode 100644 src/ontology/imports/iao_terms.txt create mode 100644 src/ontology/imports/merged_import.owl diff --git a/.github/workflows/qc.yml b/.github/workflows/qc.yml index 6ad5c84..bcd67b0 100644 --- a/.github/workflows/qc.yml +++ b/.github/workflows/qc.yml @@ -19,7 +19,7 @@ jobs: ontology_qc: # The type of runner that the job will run on runs-on: ubuntu-latest - container: obolibrary/odkfull:v1.6 + container: obolibrary/odkfull:v1.6.1 # Steps represent a sequence of tasks that will be executed as part of the job steps: diff --git a/docs/odk-workflows/RepositoryFileStructure.md b/docs/odk-workflows/RepositoryFileStructure.md index b12b8b0..5c34042 100644 --- a/docs/odk-workflows/RepositoryFileStructure.md +++ b/docs/odk-workflows/RepositoryFileStructure.md @@ -19,6 +19,8 @@ These are the current imports in IDPO | ro | http://purl.obolibrary.org/obo/ro.owl | slme | | omo | http://purl.obolibrary.org/obo/omo.owl | slme | | bfo | http://purl.obolibrary.org/obo/bfo.owl | slme | +| go | http://purl.obolibrary.org/obo/go.owl | slme | +| iao | http://purl.obolibrary.org/obo/iao.owl | slme | ## Components Components, in contrast to imports, are considered full members of the ontology. This means that any axiom in a component is also included in the ontology base - which means it is considered _native_ to the ontology. While this sounds complicated, consider this: conceptually, no component should be part of more than one ontology. If that seems to be the case, we are most likely talking about an import. Components are often not needed for ontologies, but there are some use cases: diff --git a/src/ontology/Makefile b/src/ontology/Makefile index ff93f2c..38c93ce 100644 --- a/src/ontology/Makefile +++ b/src/ontology/Makefile @@ -1,7 +1,7 @@ # ---------------------------------------- # Makefile for idpo # Generated using ontology-development-kit -# ODK Version: v1.6 +# ODK Version: v1.6.1 # ---------------------------------------- # IMPORTANT: DO NOT EDIT THIS FILE. To override default make goals, use idpo.Makefile instead @@ -10,7 +10,7 @@ # More information: https://github.com/INCATools/ontology-development-kit/ # Fingerprint of the configuration file when this Makefile was last generated -CONFIG_HASH= 85e84f816ca42dc77e6261e6ed6f9b757a7fd91496e00b26a9312398d2e403b9 +CONFIG_HASH= 98b52c17665ae96ff0faa9ab8d0db7ef77748df8fe2cf20122e9cab3604e090b # ---------------------------------------- @@ -49,7 +49,7 @@ REPORT_PROFILE_OPTS = --profile $(ROBOT_PROFILE) OBO_FORMAT_OPTIONS = --clean-obo "strict drop-untranslatable-axioms" SPARQL_VALIDATION_CHECKS = owldef-self-reference iri-range label-with-iri multiple-replaced_by SPARQL_EXPORTS = basic-report class-count-by-prefix edges xrefs obsoletes synonyms -ODK_VERSION_MAKEFILE = v1.6 +ODK_VERSION_MAKEFILE = v1.6.1 RELAX_OPTIONS = --include-subclass-of true REDUCE_OPTIONS = --include-subproperties true @@ -188,9 +188,9 @@ all_main: $(MAIN_FILES) # ---------------------------------------- -IMPORTS = ro omo bfo +IMPORTS = ro omo bfo go iao -IMPORT_ROOTS = $(patsubst %, $(IMPORTDIR)/%_import, $(IMPORTS)) +IMPORT_ROOTS = $(IMPORTDIR)/merged_import IMPORT_OWL_FILES = $(foreach n,$(IMPORT_ROOTS), $(n).owl) IMPORT_FILES = $(IMPORT_OWL_FILES) @@ -274,10 +274,10 @@ endif # ---------------------------------------- $(REPORTDIR)/$(SRC)-obo-report.tsv: $(SRCMERGED) | $(REPORTDIR) - $(ROBOT) report -i $< $(REPORT_LABEL) $(REPORT_PROFILE_OPTS) --fail-on $(REPORT_FAIL_ON) --print 5 -o $@ + $(ROBOT) report -i $< $(REPORT_LABEL) $(REPORT_PROFILE_OPTS) --fail-on $(REPORT_FAIL_ON) --base-iri $(URIBASE)/IDPO_ --base-iri $(URIBASE)/idpo --print 5 -o $@ $(REPORTDIR)/%-obo-report.tsv: % | $(REPORTDIR) - $(ROBOT) report -i $< $(REPORT_LABEL) $(REPORT_PROFILE_OPTS) --fail-on $(REPORT_FAIL_ON) --print 5 -o $@ + $(ROBOT) report -i $< $(REPORT_LABEL) $(REPORT_PROFILE_OPTS) --fail-on $(REPORT_FAIL_ON) --base-iri $(URIBASE)/IDPO_ --base-iri $(URIBASE)/idpo --print 5 -o $@ check_for_robot_updates: @cut -f2 "/tools/templates/src/ontology/profile.txt" | sort > $(TMPDIR)/sorted_tsv2.txt @@ -403,25 +403,23 @@ ANNOTATION_PROPERTIES=rdfs:label IAO:0000115 OMO:0002000 ifeq ($(IMP),true) -## Default module type (slme) -$(IMPORTDIR)/%_import.owl: $(MIRRORDIR)/%.owl $(IMPORTDIR)/%_terms.txt \ - $(IMPORTSEED) | all_robot_plugins - $(ROBOT) annotate --input $< --remove-annotations \ - odk:normalize --add-source true \ - extract --term-file $(IMPORTDIR)/$*_terms.txt $(T_IMPORTSEED) \ - --force true --copy-ontology-annotations true \ - --individuals include \ +ALL_TERMS = $(foreach imp, $(IMPORTS), $(IMPORTDIR)/$(imp)_terms.txt) + +$(IMPORTDIR)/merged_import.owl: $(MIRRORDIR)/merged.owl $(ALL_TERMS) \ + $(IMPORTSEED) | all_robot_plugins + $(ROBOT) merge --input $< \ + extract $(foreach f, $(ALL_TERMS), --term-file $(f)) $(T_IMPORTSEED) \ + --force true --copy-ontology-annotations false \ + --individuals exclude \ --method BOT \ remove $(foreach p, $(ANNOTATION_PROPERTIES), --term $(p)) \ - --term-file $(IMPORTDIR)/$*_terms.txt $(T_IMPORTSEED) \ + $(foreach f, $(ALL_TERMS), --term-file $(f)) $(T_IMPORTSEED) \ --select complement --select annotation-properties \ odk:normalize --base-iri http://purl.obolibrary.org/obo \ --subset-decls true --synonym-decls true \ repair --merge-axiom-annotations true \ $(ANNOTATE_CONVERT_FILE) -.PRECIOUS: $(IMPORTDIR)/%_import.owl - endif # IMP=true .PHONY: refresh-imports @@ -459,7 +457,7 @@ ifeq ($(MIR),true) .PHONY: mirror-ro .PRECIOUS: $(MIRRORDIR)/ro.owl mirror-ro: | $(TMPDIR) - curl -L $(OBOBASE)/ro.owl --create-dirs -o $(TMPDIR)/ro-download.owl --retry 4 --max-time 200 && \ + curl -L $(OBOBASE)/ro/ro-base.owl --create-dirs -o $(TMPDIR)/ro-download.owl --retry 4 --max-time 200 && \ $(ROBOT) convert -i $(TMPDIR)/ro-download.owl -o $(TMPDIR)/$@.owl @@ -479,6 +477,31 @@ mirror-bfo: | $(TMPDIR) $(ROBOT) convert -i $(TMPDIR)/bfo-download.owl -o $(TMPDIR)/$@.owl +## ONTOLOGY: go +.PHONY: mirror-go +.PRECIOUS: $(MIRRORDIR)/go.owl +mirror-go: | $(TMPDIR) + curl -L $(OBOBASE)/go/go-base.owl --create-dirs -o $(TMPDIR)/go-download.owl --retry 4 --max-time 200 && \ + $(ROBOT) convert -i $(TMPDIR)/go-download.owl -o $(TMPDIR)/$@.owl + + +## ONTOLOGY: iao +.PHONY: mirror-iao +.PRECIOUS: $(MIRRORDIR)/iao.owl +mirror-iao: | $(TMPDIR) + curl -L $(OBOBASE)/iao.owl --create-dirs -o $(TMPDIR)/iao-download.owl --retry 4 --max-time 200 && \ + $(ROBOT) convert -i $(TMPDIR)/iao-download.owl -o $(TMPDIR)/$@.owl + +ALL_MIRRORS = $(patsubst %, $(MIRRORDIR)/%.owl, $(IMPORTS)) +MERGE_MIRRORS = true + +ifeq ($(MERGE_MIRRORS),true) +$(MIRRORDIR)/merged.owl: $(ALL_MIRRORS) + $(ROBOT) merge $(patsubst %, -i %, $^) -o $@ +.PRECIOUS: $(MIRRORDIR)/merged.owl +endif + + $(MIRRORDIR)/%.owl: mirror-% | $(MIRRORDIR) if [ -f $(TMPDIR)/mirror-$*.owl ]; then if cmp -s $(TMPDIR)/mirror-$*.owl $@ ; then echo "Mirror identical, ignoring."; else echo "Mirrors different, updating." &&\ cp $(TMPDIR)/mirror-$*.owl $@; fi; fi diff --git a/src/ontology/catalog-v001.xml b/src/ontology/catalog-v001.xml index 1c11d49..59ae2b9 100644 --- a/src/ontology/catalog-v001.xml +++ b/src/ontology/catalog-v001.xml @@ -1,8 +1,6 @@ - - - + \ No newline at end of file diff --git a/src/ontology/idpo-edit.owl b/src/ontology/idpo-edit.owl index e399aff..833aead 100644 --- a/src/ontology/idpo-edit.owl +++ b/src/ontology/idpo-edit.owl @@ -7,9 +7,7 @@ Prefix(rdfs:=) Ontology( -Import() -Import() -Import() +Import() Annotation( ) Annotation( ) Annotation( ) diff --git a/src/ontology/idpo-odk.yaml b/src/ontology/idpo-odk.yaml index dbc6b03..1a84cb3 100644 --- a/src/ontology/idpo-odk.yaml +++ b/src/ontology/idpo-odk.yaml @@ -13,14 +13,21 @@ export_formats: - obo - json import_group: + use_base_merging: TRUE + slme_individuals: exclude products: - id: ro + use_base: TRUE - id: omo - id: bfo + - id: go + use_base: TRUE + - id: iao documentation: documentation_system: mkdocs robot_java_args: "-Xmx8G" robot_report: + use_base_iris: TRUE use_labels: TRUE fail_on: ERROR custom_profile: TRUE diff --git a/src/ontology/imports/go_terms.txt b/src/ontology/imports/go_terms.txt new file mode 100644 index 0000000..77764cf --- /dev/null +++ b/src/ontology/imports/go_terms.txt @@ -0,0 +1,5 @@ +GO:0003674 +GO:0016301 +GO:0003824 +GO:0016740 +GO:0016772 \ No newline at end of file diff --git a/src/ontology/imports/iao_terms.txt b/src/ontology/imports/iao_terms.txt new file mode 100644 index 0000000..a3aa68a --- /dev/null +++ b/src/ontology/imports/iao_terms.txt @@ -0,0 +1 @@ +IAO:0000030 \ No newline at end of file diff --git a/src/ontology/imports/merged_import.owl b/src/ontology/imports/merged_import.owl new file mode 100644 index 0000000..6a47fab --- /dev/null +++ b/src/ontology/imports/merged_import.owl @@ -0,0 +1,830 @@ +Prefix(:=) +Prefix(owl:=) +Prefix(rdf:=) +Prefix(xml:=) +Prefix(xsd:=) +Prefix(rdfs:=) + + +Ontology( + +Annotation(owl:versionInfo "2026-04-21") + +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(Class()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(ObjectProperty()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(NamedIndividual()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty()) +Declaration(AnnotationProperty(rdfs:label)) +############################ +# Annotation Properties +############################ + +# Annotation Property: (example of usage) + +AnnotationAssertion( "A phrase describing how a term should be used and/or a citation to a work which uses it. May also include other kinds of examples that facilitate immediate understanding, such as widely know prototypes or instances of a class, or cases where a relation is said to hold."@en) +AnnotationAssertion( "GROUP:OBI:"@en) +AnnotationAssertion(rdfs:label "example of usage"@en) + +# Annotation Property: (definition) + +AnnotationAssertion( "The official definition, explaining the meaning of a class or property. Shall be Aristotelian, formalized and normalized. Can be augmented with colloquial definitions."@en) +AnnotationAssertion( "GROUP:OBI:"@en) +AnnotationAssertion(rdfs:label "definition"@en) + +# Annotation Property: (definition source) + +AnnotationAssertion( "Formal citation, e.g. identifier in external database to indicate / attribute source(s) for the definition. Free text indicate / attribute source(s) for the definition. EXAMPLE: Author Name, URI, MeSH Term C04, PUBMED ID, Wiki uri on 31.01.2007"@en) +AnnotationAssertion( "Discussion on obo-discuss mailing-list, see http://bit.ly/hgm99w"@en) +AnnotationAssertion( "GROUP:OBI:"@en) +AnnotationAssertion(rdfs:label "definition source"@en) + +# Annotation Property: (has ontology root term) + +AnnotationAssertion( "Ontology annotation property. Relates an ontology to a term that is a designated root term of the ontology. Display tools like OLS can use terms annotated with this property as the starting point for rendering the ontology class hierarchy. There can be more than one root."@en) +AnnotationAssertion(rdfs:label "has ontology root term"@en) + +# Annotation Property: (abbreviation) + +AnnotationAssertion( "CHEBI:26523 (reactive oxygen species) has an exact synonym (ROS), which is of type OMO:0003000 (abbreviation)") +AnnotationAssertion( "A synonym type for describing abbreviations or initialisms") +AnnotationAssertion( ) +AnnotationAssertion(rdfs:label "abbreviation") + +# Annotation Property: (has_broad_synonym) + +AnnotationAssertion( "An alternative label for a class or property which has a more general meaning than the preferred name/primary label.") +AnnotationAssertion(rdfs:label "has broad synonym"@en) +AnnotationAssertion(rdfs:label "has_broad_synonym") + +# Annotation Property: (database_cross_reference) + +AnnotationAssertion( "disease characteristic (MONDO:0021125) has cross-reference (http://www.geneontology.org/formats/oboInOwl#hasDbXref) \"NCIT:C41009\"^^xsd:string") +AnnotationAssertion( "An annotation property that links an ontology entity or a statement to a prefixed identifier or URI.") +AnnotationAssertion( ) +AnnotationAssertion(rdfs:label "database_cross_reference") +AnnotationAssertion(rdfs:label "has cross-reference") + +# Annotation Property: (has exact synonym) + +AnnotationAssertion( "An alternative label for a class or property which has the exact same meaning than the preferred name/primary label.") +AnnotationAssertion(rdfs:label "has exact synonym"@en) + +# Annotation Property: (has narrow synonym) + +AnnotationAssertion( "An alternative label for a class or property which has a more specific meaning than the preferred name/primary label.") +AnnotationAssertion(rdfs:label "has narrow synonym"@en) + +# Annotation Property: (has related synonym) + +AnnotationAssertion( "An alternative label for a class or property that has been used synonymously with the primary term name, but the usage is not strictly correct.") +AnnotationAssertion(rdfs:label "has related synonym"@en) + + +############################ +# Object Properties +############################ + +# Object Property: (preceded by) + +AnnotationAssertion( "x is preceded by y if and only if the time point at which y ends is before or equivalent to the time point at which x starts. Formally: x preceded by y iff ω(y) <= α(x), where α is a function that maps a process to a start point, and ω is a function that maps a process to an end point."@en) +AnnotationAssertion(rdfs:label "preceded by"@en) +SubObjectPropertyOf( ) +InverseObjectProperties( ) +TransitiveObjectProperty() +ObjectPropertyDomain( ) +ObjectPropertyRange( ) + +# Object Property: (precedes) + +AnnotationAssertion( "x precedes y if and only if the time point at which x ends is before or equivalent to the time point at which y starts. Formally: x precedes y iff ω(x) <= α(y), where α is a function that maps a process to a start point, and ω is a function that maps a process to an end point."@en) +AnnotationAssertion(rdfs:label "precedes"@en) +SubObjectPropertyOf( ) +TransitiveObjectProperty() +ObjectPropertyDomain( ) +ObjectPropertyRange( ) + +# Object Property: (is about) + +AnnotationAssertion( "This document is about information artifacts and their representations"@en) +AnnotationAssertion( "A (currently) primitive relation that relates an information artifact to an entity."@en) +AnnotationAssertion( "Smith, Ceusters, Ruttenberg, 2000 years of philosophy"@en) +AnnotationAssertion(rdfs:label "is about"@en) +ObjectPropertyDomain( ) + +# Object Property: (characteristic of) + +AnnotationAssertion( "this fragility is a characteristic of this vase"@en) +AnnotationAssertion( "this red color is a characteristic of this apple"@en) +AnnotationAssertion( "a relation between a specifically dependent continuant (the characteristic) and any other entity (the bearer), in which the characteristic depends on the bearer for its existence."@en) +AnnotationAssertion(rdfs:label "characteristic of"@en) +SubObjectPropertyOf( ) +InverseObjectProperties( ) +FunctionalObjectProperty() + +# Object Property: (has characteristic) + +AnnotationAssertion( "this apple is bearer of this red color"@en) +AnnotationAssertion( "this vase is bearer of this fragility"@en) +AnnotationAssertion( "Inverse of characteristic_of"@en) +AnnotationAssertion(rdfs:label "has characteristic"@en) +InverseFunctionalObjectProperty() +ObjectPropertyRange( ) + +# Object Property: (participates in) + +AnnotationAssertion( "this blood clot participates in this blood coagulation"@en) +AnnotationAssertion( "this input material (or this output material) participates in this process"@en) +AnnotationAssertion( "this investigator participates in this investigation"@en) +AnnotationAssertion( "a relation between a continuant and a process, in which the continuant is somehow involved in the process"@en) +AnnotationAssertion(rdfs:label "participates in"@en) +InverseObjectProperties( ) +ObjectPropertyDomain( ) +ObjectPropertyRange( ) + +# Object Property: (has participant) + +AnnotationAssertion( "this blood coagulation has participant this blood clot"@en) +AnnotationAssertion( "this investigation has participant this investigator"@en) +AnnotationAssertion( "this process has participant this input material (or this output material)"@en) +AnnotationAssertion( "a relation between a process and a continuant, in which the continuant is somehow involved in the process"@en) +AnnotationAssertion( "RO:0000057") +AnnotationAssertion( "has_participant") +AnnotationAssertion(rdfs:label "has participant"@en) +ObjectPropertyDomain( ) +ObjectPropertyRange( ) + +# Object Property: (function of) + +AnnotationAssertion( "this catalysis function is a function of this enzyme"@en) +AnnotationAssertion( "a relation between a function and an independent continuant (the bearer), in which the function specifically depends on the bearer for its existence"@en) +AnnotationAssertion(rdfs:label "function of"@en) +SubObjectPropertyOf( ) +InverseObjectProperties( ) +ObjectPropertyDomain( ) + +# Object Property: (quality of) + +AnnotationAssertion( "this red color is a quality of this apple"@en) +AnnotationAssertion( "a relation between a quality and an independent continuant (the bearer), in which the quality specifically depends on the bearer for its existence"@en) +AnnotationAssertion(rdfs:label "quality of"@en) +SubObjectPropertyOf( ) +InverseObjectProperties( ) + +# Object Property: (role of) + +AnnotationAssertion( "this investigator role is a role of this person"@en) +AnnotationAssertion( "a relation between a role and an independent continuant (the bearer), in which the role specifically depends on the bearer for its existence"@en) +AnnotationAssertion(rdfs:label "role of"@en) +SubObjectPropertyOf( ) +InverseObjectProperties( ) + +# Object Property: (has function) + +AnnotationAssertion( "this enzyme has function this catalysis function (more colloquially: this enzyme has this catalysis function)"@en) +AnnotationAssertion( "a relation between an independent continuant (the bearer) and a function, in which the function specifically depends on the bearer for its existence"@en) +AnnotationAssertion(rdfs:label "has function"@en) +SubObjectPropertyOf( ) +ObjectPropertyDomain( ) +ObjectPropertyRange( ) + +# Object Property: (has quality) + +AnnotationAssertion( "this apple has quality this red color"@en) +AnnotationAssertion( "a relation between an independent continuant (the bearer) and a quality, in which the quality specifically depends on the bearer for its existence"@en) +AnnotationAssertion(rdfs:label "has quality"@en) +SubObjectPropertyOf( ) +ObjectPropertyRange( ) + +# Object Property: (has role) + +AnnotationAssertion( "this person has role this investigator role (more colloquially: this person has this role of investigator)"@en) +AnnotationAssertion( "a relation between an independent continuant (the bearer) and a role, in which the role specifically depends on the bearer for its existence"@en) +AnnotationAssertion(rdfs:label "has role"@en) +SubObjectPropertyOf( ) +ObjectPropertyDomain( ) +ObjectPropertyRange( ) + +# Object Property: (has disposition) + +AnnotationAssertion( "a relation between an independent continuant (the bearer) and a disposition, in which the disposition specifically depends on the bearer for its existence"@en) +AnnotationAssertion(rdfs:label "has disposition"@en) +SubObjectPropertyOf( ) +InverseObjectProperties( ) +ObjectPropertyDomain( ) +ObjectPropertyRange( ) + +# Object Property: (disposition of) + +AnnotationAssertion( "inverse of has disposition") +AnnotationAssertion(rdfs:label "disposition of"@en) +SubObjectPropertyOf( ) + +# Object Property: (ends after) + +AnnotationAssertion(rdfs:label "ends after"@en) +SubObjectPropertyOf( ) +TransitiveObjectProperty() + +# Object Property: (immediately preceded by) + +AnnotationAssertion(rdfs:label "immediately preceded by"@en) +SubObjectPropertyOf( ) +InverseObjectProperties( ) + +# Object Property: (immediately precedes) + +AnnotationAssertion(rdfs:label "immediately precedes"@en) +SubObjectPropertyOf( ) + +# Object Property: (temporally related to) + +AnnotationAssertion( ) +AnnotationAssertion(rdfs:label "temporally related to"@en) +ObjectPropertyDomain( ) +ObjectPropertyRange( ) + +# Object Property: (has input) + +AnnotationAssertion( "p has input c iff: p is a process, c is a material entity, c is a participant in p, c is present at the start of p, and the state of c is modified during p.") +AnnotationAssertion(rdfs:label "has input"@en) +SubObjectPropertyOf( ) +InverseObjectProperties( ) +ObjectPropertyDomain( ) + +# Object Property: (has output) + +AnnotationAssertion( "p has output c iff c is a participant in p, c is present at the end of p, and c is not present in the same state at the beginning of p.") +AnnotationAssertion(rdfs:label "has output"@en) +SubObjectPropertyOf( ) +InverseObjectProperties( ) + +# Object Property: (characteristic of part of) + +AnnotationAssertion( "q characteristic of part of w if and only if there exists some p such that q inheres in p and p part of w.") +AnnotationAssertion( ) +AnnotationAssertion(rdfs:label "characteristic of part of"@en) +SubObjectPropertyOf( ) + +# Object Property: (functionally related to) + +AnnotationAssertion( "A grouping relationship for any relationship directly involving a function, or that holds because of a function of one of the related entities.") +AnnotationAssertion(rdfs:label "functionally related to"@en) + +# Object Property: (input of) + +AnnotationAssertion( "inverse of has input") +AnnotationAssertion(rdfs:label "input of"@en) +SubObjectPropertyOf( ) +SubObjectPropertyOf( ) + +# Object Property: (output of) + +AnnotationAssertion( "inverse of has output") +AnnotationAssertion(rdfs:label "output of"@en) +SubObjectPropertyOf( ) +SubObjectPropertyOf( ) + +# Object Property: (causally downstream of) + +AnnotationAssertion( "inverse of upstream of") +AnnotationAssertion(rdfs:label "causally downstream of"@en) +SubObjectPropertyOf( ) +SubObjectPropertyOf( ) +InverseObjectProperties( ) + +# Object Property: (immediately causally downstream of) + +AnnotationAssertion(rdfs:label "immediately causally downstream of"@en) +SubObjectPropertyOf( ) +SubObjectPropertyOf( ) +InverseObjectProperties( ) + +# Object Property: (causally related to) + +AnnotationAssertion(Annotation( "https://en.wikipedia.org/wiki/Causality") "relation that links two events, processes, states, or objects such that one event, process, state, or object (a cause) contributes to the production of another event, process, state, or object (an effect) where the cause is partly or wholly responsible for the effect, and the effect is partly or wholly dependent on the cause.") +AnnotationAssertion(rdfs:label "causally related to"@en) + +# Object Property: (causally upstream of) + +AnnotationAssertion( "p is causally upstream of q iff p is causally related to q, the end of p precedes the end of q, and p is not an occurrent part of q.") +AnnotationAssertion(rdfs:label "causally upstream of"@en) +SubObjectPropertyOf( ) +SubObjectPropertyOf( ) +TransitiveObjectProperty() + +# Object Property: (immediately causally upstream of) + +AnnotationAssertion( "p is immediately causally upstream of q iff p is causally upstream of q, and the end of p is coincident with the beginning of q.") +AnnotationAssertion(rdfs:label "immediately causally upstream of"@en) +SubObjectPropertyOf( ) +SubObjectPropertyOf( ) + +# Object Property: (provides input for) + +AnnotationAssertion( "p provides input for q iff p is immediately causally upstream of q, and there exists some c such that p has_output c and q has_input c.") +AnnotationAssertion( ) +AnnotationAssertion(rdfs:label "provides input for"@en) +SubObjectPropertyOf( ) +SubObjectPropertyOf( ) + +# Object Property: (transitively provides input for) + +AnnotationAssertion( "transitive form of directly_provides_input_for") +AnnotationAssertion(rdfs:label "transitively provides input for"@en) +SubObjectPropertyOf( ) +TransitiveObjectProperty() +ObjectPropertyDomain( ) +ObjectPropertyRange( ) + +# Object Property: (causally upstream of or within) + +AnnotationAssertion( "p is 'causally upstream or within' q iff p is causally related to q, and the end of p precedes, or is coincident with, the end of q.") +AnnotationAssertion( "affects") +AnnotationAssertion(rdfs:label "causally upstream of or within") +SubObjectPropertyOf( ) +InverseObjectProperties( ) +TransitiveObjectProperty() + +# Object Property: (causally downstream of or within) + +AnnotationAssertion( "inverse of causally upstream of or within") +AnnotationAssertion( ) +AnnotationAssertion(rdfs:label "causally downstream of or within") +SubObjectPropertyOf( ) +TransitiveObjectProperty() + +# Object Property: (helper property (not for use in curation)) + +AnnotationAssertion(rdfs:label "helper property (not for use in curation)") + +# Object Property: (is kinase activity) + +AnnotationAssertion(rdfs:label "is kinase activity") +SubObjectPropertyOf( ) + +# Object Property: (causal relation between processes) + +AnnotationAssertion( "p is causally related to q if and only if p or any part of p and q or any part of q are linked by a chain of events where each event pair is one where the execution of p influences the execution of q. p may be upstream, downstream, part of, or a container of q.") +AnnotationAssertion( ) +AnnotationAssertion(rdfs:label "causal relation between processes") +SubObjectPropertyOf( ) +ObjectPropertyDomain( ) +ObjectPropertyRange( ) + +# Object Property: (depends on) + +AnnotationAssertion(rdfs:label "depends on") + +# Object Property: (interaction relation helper property) + +AnnotationAssertion(rdfs:label "interaction relation helper property") +SubObjectPropertyOf( ) + +# Object Property: (molecular interaction relation helper property) + +AnnotationAssertion(rdfs:label "molecular interaction relation helper property") +SubObjectPropertyOf( ) + +# Object Property: (causally upstream of or within, positive effect) + +AnnotationAssertion(rdfs:label "causally upstream of or within, positive effect") +SubObjectPropertyOf( ) + + + +############################ +# Classes +############################ + +# Class: (entity) + +AnnotationAssertion( "Julius Caesar"@en) +AnnotationAssertion( "Verdi’s Requiem"@en) +AnnotationAssertion( "the Second World War"@en) +AnnotationAssertion( "your body mass index"@en) +AnnotationAssertion(rdfs:label "entity"@en) + +# Class: (continuant) + +AnnotationAssertion( "An entity that exists in full at any time in which it exists at all, persists through time while maintaining its identity and has no temporal parts."@en) +AnnotationAssertion(rdfs:label "continuant"@en) +SubClassOf( ) +DisjointClasses( ) + +# Class: (occurrent) + +AnnotationAssertion( "An entity that has temporal parts and that happens, unfolds or develops through time."@en) +AnnotationAssertion(rdfs:label "occurrent"@en) +SubClassOf( ) + +# Class: (independent continuant) + +AnnotationAssertion( "a chair"@en) +AnnotationAssertion( "a heart"@en) +AnnotationAssertion( "a leg"@en) +AnnotationAssertion( "a molecule"@en) +AnnotationAssertion( "a spatial region"@en) +AnnotationAssertion( "an atom"@en) +AnnotationAssertion( "an orchestra."@en) +AnnotationAssertion( "an organism"@en) +AnnotationAssertion( "the bottom right portion of a human torso"@en) +AnnotationAssertion( "the interior of your mouth"@en) +AnnotationAssertion(rdfs:label "independent continuant"@en) +SubClassOf( ) +DisjointClasses( ) +DisjointClasses( ) + +# Class: (process) + +AnnotationAssertion( "a process of cell-division, \\ a beating of the heart"@en) +AnnotationAssertion( "a process of meiosis"@en) +AnnotationAssertion( "a process of sleeping"@en) +AnnotationAssertion( "the course of a disease"@en) +AnnotationAssertion( "the flight of a bird"@en) +AnnotationAssertion( "the life of an organism"@en) +AnnotationAssertion( "your process of aging."@en) +AnnotationAssertion(rdfs:label "process"@en) +SubClassOf( ) + +# Class: (disposition) + +AnnotationAssertion( "an atom of element X has the disposition to decay to an atom of element Y"@en) +AnnotationAssertion( "certain people have a predisposition to colon cancer"@en) +AnnotationAssertion( "children are innately disposed to categorize objects in certain ways."@en) +AnnotationAssertion( "the cell wall is disposed to filter chemicals in endocytosis and exocytosis"@en) +AnnotationAssertion(rdfs:label "disposition"@en) +SubClassOf( ) +DisjointClasses( ) + +# Class: (realizable entity) + +AnnotationAssertion( "the disposition of this piece of metal to conduct electricity."@en) +AnnotationAssertion( "the disposition of your blood to coagulate"@en) +AnnotationAssertion( "the function of your reproductive organs"@en) +AnnotationAssertion( "the role of being a doctor"@en) +AnnotationAssertion( "the role of this boundary to delineate where Utah and Colorado meet"@en) +AnnotationAssertion( "A specifically dependent continuant that inheres in continuant entities and are not exhibited in full at every time in which it inheres in an entity or group of entities. The exhibition or actualization of a realizable entity is a particular manifestation, functioning or process that occurs under certain circumstances."@en) +AnnotationAssertion(rdfs:label "realizable entity"@en) +SubClassOf( ) +DisjointClasses( ) + +# Class: (quality) + +AnnotationAssertion( "the ambient temperature of this portion of air"@en) +AnnotationAssertion( "the color of a tomato"@en) +AnnotationAssertion( "the length of the circumference of your waist"@en) +AnnotationAssertion( "the mass of this piece of gold."@en) +AnnotationAssertion( "the shape of your nose"@en) +AnnotationAssertion( "the shape of your nostril"@en) +AnnotationAssertion(rdfs:label "quality"@en) +SubClassOf( ) + +# Class: (specifically dependent continuant) + +AnnotationAssertion( "Reciprocal specifically dependent continuants: the function of this key to open this lock and the mutually dependent disposition of this lock: to be opened by this key"@en) +AnnotationAssertion( "of one-sided specifically dependent continuants: the mass of this tomato"@en) +AnnotationAssertion( "of relational dependent continuants (multiple bearers): John’s love for Mary, the ownership relation between John and this statue, the relation of authority between John and his subordinates."@en) +AnnotationAssertion( "the disposition of this fish to decay"@en) +AnnotationAssertion( "the function of this heart: to pump blood"@en) +AnnotationAssertion( "the mutual dependence of proton donors and acceptors in chemical reactions [79"@en) +AnnotationAssertion( "the mutual dependence of the role predator and the role prey as played by two organisms in a given interaction"@en) +AnnotationAssertion( "the pink color of a medium rare piece of grilled filet mignon at its center"@en) +AnnotationAssertion( "the role of being a doctor"@en) +AnnotationAssertion( "the shape of this hole."@en) +AnnotationAssertion( "the smell of this portion of mozzarella"@en) +AnnotationAssertion(rdfs:label "specifically dependent continuant"@en) +SubClassOf( ) +DisjointClasses( ) + +# Class: (role) + +AnnotationAssertion( "John’s role of husband to Mary is dependent on Mary’s role of wife to John, and both are dependent on the object aggregate comprising John and Mary as member parts joined together through the relational quality of being married."@en) +AnnotationAssertion( "the priest role"@en) +AnnotationAssertion( "the role of a boundary to demarcate two neighboring administrative territories"@en) +AnnotationAssertion( "the role of a building in serving as a military target"@en) +AnnotationAssertion( "the role of a stone in marking a property boundary"@en) +AnnotationAssertion( "the role of subject in a clinical trial"@en) +AnnotationAssertion( "the student role"@en) +AnnotationAssertion( "A realizable entity the manifestation of which brings about some result or end that is not essential to a continuant in virtue of the kind of thing that it is but that can be served or participated in by that kind of continuant in some kinds of natural, social or institutional contexts."@en) +AnnotationAssertion(rdfs:label "role"@en) +SubClassOf( ) + +# Class: (generically dependent continuant) + +AnnotationAssertion( "The entries in your database are patterns instantiated as quality instances in your hard drive. The database itself is an aggregate of such patterns. When you create the database you create a particular instance of the generically dependent continuant type database. Each entry in the database is an instance of the generically dependent continuant type IAO: information content entity."@en) +AnnotationAssertion( "the pdf file on your laptop, the pdf file that is a copy thereof on my laptop"@en) +AnnotationAssertion( "the sequence of this protein molecule; the sequence that is a copy thereof in that protein molecule."@en) +AnnotationAssertion(rdfs:label "generically dependent continuant"@en) +SubClassOf( ) + +# Class: (function) + +AnnotationAssertion( "the function of a hammer to drive in nails"@en) +AnnotationAssertion( "the function of a heart pacemaker to regulate the beating of a heart through electricity"@en) +AnnotationAssertion( "the function of amylase in saliva to break down starch into sugar"@en) +AnnotationAssertion(rdfs:label "function"@en) +SubClassOf( ) + +# Class: (molecular_function) + +AnnotationAssertion(Annotation( "GOC:pdt") "A molecular process that can be carried out by the action of a single macromolecular machine, usually via direct physical interactions with other molecular entities. Function in this sense denotes an action, or activity, that a gene product (or a complex) performs.") +AnnotationAssertion( "molecular function") +AnnotationAssertion( "molecular_function") +AnnotationAssertion( "GO:0003674") +AnnotationAssertion(rdfs:label "molecular_function") +SubClassOf( ) + +# Class: (catalytic activity) + +AnnotationAssertion(Annotation( "GOC:vw") Annotation( "ISBN:0198506732") "Catalysis of a biochemical reaction at physiological temperatures. In biologically catalyzed reactions, the reactants are known as substrates, and the catalysts are naturally occurring macromolecular substances known as enzymes. Enzymes possess specific binding sites for substrates, and are usually composed wholly or largely of protein, but RNA that has catalytic activity (ribozyme) is often also regarded as enzymatic.") +AnnotationAssertion( "Wikipedia:Enzyme") +AnnotationAssertion(Annotation( "GOC:dph") Annotation( "GOC:tb") "enzyme activity") +AnnotationAssertion( "molecular_function") +AnnotationAssertion( "GO:0003824") +AnnotationAssertion(rdfs:label "catalytic activity") +SubClassOf( ) + +# Class: (kinase activity) + +AnnotationAssertion(Annotation( "ISBN:0198506732") "Catalysis of the transfer of a phosphate group, usually from ATP, to a substrate molecule.") +AnnotationAssertion(Annotation(rdfs:label "FN3KRP phosphorylates PsiAm, RibAm") "Reactome:R-HSA-6788855") +AnnotationAssertion(Annotation(rdfs:label "FN3K phosphorylates ketosamines") "Reactome:R-HSA-6788867") +AnnotationAssertion( "phosphokinase activity") +AnnotationAssertion( "molecular_function") +AnnotationAssertion( "GO:0016301") +AnnotationAssertion(rdfs:label "kinase activity") +SubClassOf( ) +SubClassOf( ObjectHasSelf()) + +# Class: (transferase activity) + +AnnotationAssertion(Annotation( "EC:2.-.-.-") "Catalysis of the transfer of a group, e.g. a methyl group, glycosyl group, acyl group, phosphorus-containing, or other groups, from one compound (generally regarded as the donor) to another compound (generally regarded as the acceptor). Transferase is the systematic name for any enzyme of EC class 2.") +AnnotationAssertion( "EC:2.-.-.-") +AnnotationAssertion(Annotation(rdfs:label "PE is converted to PS by PTDSS2") "Reactome:R-HSA-1483089") +AnnotationAssertion(Annotation(rdfs:label "PC is converted to PS by PTDSS1") "Reactome:R-HSA-1483186") +AnnotationAssertion(Annotation(rdfs:label "GSSeH combines with bGalNAc derivative to form GSSebGalNac") "Reactome:R-HSA-5333607") +AnnotationAssertion(Annotation(rdfs:label "TRAF2 ubiquitinates cIAP1,2 in cIAP1,2:TRAF1:TRAF2:TRAF3:NIK") "Reactome:R-HSA-5668414") +AnnotationAssertion(Annotation(rdfs:label "TSR3 transfers aminocarboxypropyl group from S-adenosylmethionine to N(1)-methylpseudouridine-1248 of 18SE rRNA yielding N(1)-methyl-N(3)-aminocarboxypropylpseudouridine-1248") "Reactome:R-HSA-8868783") +AnnotationAssertion( "molecular_function") +AnnotationAssertion( "GO:0016740") +AnnotationAssertion(rdfs:label "transferase activity") +SubClassOf( ) + +# Class: (transferase activity, transferring phosphorus-containing groups) + +AnnotationAssertion(Annotation( "EC:2.7.-.-") "Catalysis of the transfer of a phosphorus-containing group from one compound (donor) to another (acceptor).") +AnnotationAssertion( "EC:2.7.-.-") +AnnotationAssertion(Annotation(rdfs:label "BcsG transfers pEtN from PE onto cellulose") "Reactome:R-HSA-9932322") +AnnotationAssertion( "molecular_function") +AnnotationAssertion( "GO:0016772") +AnnotationAssertion(rdfs:label "transferase activity, transferring phosphorus-containing groups") +SubClassOf( ) + +# Class: (data entity) + +AnnotationAssertion( "Data items include counts of things, analyte concentrations, and statistical summaries."@en) +AnnotationAssertion( "An information content entity that is intended to be one or more truthful statement(s) about something (modulo, e.g., measurement precision or other systematic errors) and is constructed/acquired by a method which reliably tends to produce (approximately) truthful statements."@en) +AnnotationAssertion(rdfs:label "data entity"@en) +SubClassOf( ) + +# Class: (information content entity) + +AnnotationAssertion( "Examples of information content entites include journal articles, data, graphical layouts, and graphs."@en) +AnnotationAssertion( "A generically dependent continuant that is about some thing."@en) +AnnotationAssertion( "OBI_0000142"@en) +AnnotationAssertion(rdfs:label "information content entity"@en) +SubClassOf( ) +SubClassOf( ObjectSomeValuesFrom( )) + +# Class: (curation status specification) + +AnnotationAssertion( "The curation status of the term. The allowed values come from an enumerated list of predefined terms. See the specification of these instances for more detailed definitions of each enumerated value."@en) +AnnotationAssertion( "GROUP:OBI:"@en) +AnnotationAssertion( "OBI_0000266"@en) +AnnotationAssertion(rdfs:label "curation status specification"@en) +EquivalentClasses( ObjectOneOf( )) +SubClassOf( ) + +# Class: (data about an ontology part) + +AnnotationAssertion( "Data about an ontology part is a data item about a part of an ontology, for example a term"@en) +AnnotationAssertion(rdfs:label "data about an ontology part"@en) +SubClassOf( ) + +# Class: (obsolescence reason specification) + +AnnotationAssertion( "The reason for which a term has been deprecated. The allowed values come from an enumerated list of predefined terms. See the specification of these instances for more detailed definitions of each enumerated value."@en) +AnnotationAssertion(rdfs:label "obsolescence reason specification"@en) +EquivalentClasses( ObjectOneOf( )) +SubClassOf( ) + +# Class: (denotator type) + +AnnotationAssertion( "The Basic Formal Ontology ontology makes a distinction between Universals and defined classes, where the formal are \"natural kinds\" and the latter arbitrary collections of entities."@en) +AnnotationAssertion( "A denotator type indicates how a term should be interpreted from an ontological perspective."@en) +AnnotationAssertion( "Barry Smith, Werner Ceusters"@en) +AnnotationAssertion(rdfs:label "denotator type"@en) +EquivalentClasses( ObjectOneOf( )) +SubClassOf( ) + + +############################ +# Named Individuals +############################ + +# Individual: (example to be eventually removed) + +AnnotationAssertion(rdfs:label "example to be eventually removed"@en) + +# Individual: (failed exploratory term) + +AnnotationAssertion( "The term was initially used in an attempt to structure part of the ontology, but in retrospect failed to do a good job."@en) +AnnotationAssertion(rdfs:label "failed exploratory term"@en) + +# Individual: (metadata complete) + +AnnotationAssertion( "Class has all its metadata, but is either not guaranteed to be in its final location in the asserted IS_A hierarchy or refers to another class that is not complete."@en) +AnnotationAssertion(rdfs:label "metadata complete"@en) + +# Individual: (organizational term) + +AnnotationAssertion( "The term was created to ease viewing/sorting terms for development purposes, but will not be included in a release."@en) +AnnotationAssertion(rdfs:label "organizational term"@en) + +# Individual: (ready for release) + +AnnotationAssertion( "Class has undergone final review, is ready for use, and will be included in the next release. Any class lacking \"ready_for_release\" should be considered likely to change place in hierarchy, have its definition refined, or be obsoleted in the next release. Those classes deemed \"ready_for_release\" will also derived from a chain of ancestor classes that are also \"ready_for_release.\""@en) +AnnotationAssertion(rdfs:label "ready for release"@en) + +# Individual: (metadata incomplete) + +AnnotationAssertion( "Class is being worked on; however, the metadata (including definition) are not complete or sufficiently clear to the branch editors."@en) +AnnotationAssertion(rdfs:label "metadata incomplete"@en) + +# Individual: (uncurated) + +AnnotationAssertion( "Nothing done yet beyond assigning a unique class ID and proposing a preferred term."@en) +AnnotationAssertion(rdfs:label "uncurated"@en) + +# Individual: (pending final vetting) + +AnnotationAssertion( "All definitions, placement in the asserted IS_A hierarchy and required minimal metadata are complete. The class is awaiting a final review by someone other than the term editor."@en) +AnnotationAssertion(rdfs:label "pending final vetting"@en) + +# Individual: (placeholder removed) + +AnnotationAssertion( "The term was created to temporarily stand in for a semantic purpose, but is no longer needed, typically due to another permanent term being defined."@en) +AnnotationAssertion(rdfs:label "placeholder removed"@en) + +# Individual: (terms merged) + +AnnotationAssertion( "The term has been combined with one or more other terms to create a more encompassing (merged) term."@en) +AnnotationAssertion(rdfs:label "terms merged"@en) + +# Individual: (term imported) + +AnnotationAssertion( "The term has been replaced by a term imported from another ontology."@en) +AnnotationAssertion(rdfs:label "term imported"@en) + +# Individual: (term split) + +AnnotationAssertion( "The term has been split into two or more new terms."@en) +AnnotationAssertion(rdfs:label "term split"@en) + +# Individual: (universal) + +AnnotationAssertion( "A Formal Theory of Substances, Qualities, and Universals, http://ontology.buffalo.edu/bfo/SQU.pdf"@en) +AnnotationAssertion(rdfs:label "universal"@en) + +# Individual: (defined class) + +AnnotationAssertion( "A defined class is a class that is defined by a set of logically necessary and sufficient conditions but is not a universal"@en) +AnnotationAssertion(rdfs:label "defined class"@en) + +# Individual: (named class expression) + +AnnotationAssertion( "A named class expression is a logical expression that is given a name. The name can be used in place of the expression."@en) +AnnotationAssertion(rdfs:label "named class expression"@en) + +# Individual: (to be replaced with external ontology term) + +AnnotationAssertion( "Terms with this status should eventually replaced with a term from another ontology."@en) +AnnotationAssertion( "group:OBI"@en) +AnnotationAssertion(rdfs:label "to be replaced with external ontology term"@en) + +# Individual: (requires discussion) + +AnnotationAssertion( "A term that is metadata complete, has been reviewed, and problems have been identified that require discussion before release. Such a term requires editor note(s) to identify the outstanding issues."@en) +AnnotationAssertion( "group:OBI"@en) +AnnotationAssertion(rdfs:label "requires discussion"@en) + +# Individual: (out of scope) + +AnnotationAssertion( "The term was added to the ontology on the assumption it was in scope, but it turned out later that it was not."@en) +AnnotationAssertion(rdfs:label "out of scope") + + +SubObjectPropertyOf(ObjectPropertyChain( ) ) +DLSafeRule(Body(ClassAtom( Variable()) ObjectPropertyAtom( Variable() Variable()))Head(ObjectPropertyAtom( Variable() Variable()))) +DLSafeRule(Body(ClassAtom( Variable()) ObjectPropertyAtom( Variable() Variable()))Head(ObjectPropertyAtom( Variable() Variable()))) +DLSafeRule(Body(ClassAtom( Variable()) ObjectPropertyAtom( Variable() Variable()))Head(ObjectPropertyAtom( Variable() Variable()))) +DLSafeRule(Body(ClassAtom( Variable()) ObjectPropertyAtom( Variable() Variable()))Head(ObjectPropertyAtom( Variable() Variable()))) +) \ No newline at end of file