diff --git a/.github/deployment/README.md b/.github/deployment/README.md new file mode 100644 index 0000000..bc25c8d --- /dev/null +++ b/.github/deployment/README.md @@ -0,0 +1,11 @@ +# CCO Deployment Files + +This directory contains files used in the yml/makefile process for validation and release generation, as well as files to support translations from content in CCO to similar content in other ontologies. + +## The Contents of this Repository + +* **sparql** - This directory contains sparl files used in quality control checks during the development process. +* **ontology-diff-files** - This directory contains ontology-diff-files, which Mark can tell you more about. +* **mappings** - This directory contains mappings between content in CCO and other ontologies. + + diff --git a/documentation/ro-ero-to-bfo2020.csv b/.github/deployment/mappings/ro-ero-to-bfo2020.csv similarity index 100% rename from documentation/ro-ero-to-bfo2020.csv rename to .github/deployment/mappings/ro-ero-to-bfo2020.csv diff --git a/documentation/ontology-diff-files/agent.html b/.github/deployment/ontology-diff-files/agent.html similarity index 100% rename from documentation/ontology-diff-files/agent.html rename to .github/deployment/ontology-diff-files/agent.html diff --git a/documentation/ontology-diff-files/artifact.html b/.github/deployment/ontology-diff-files/artifact.html similarity index 100% rename from documentation/ontology-diff-files/artifact.html rename to .github/deployment/ontology-diff-files/artifact.html diff --git a/documentation/ontology-diff-files/ero.html b/.github/deployment/ontology-diff-files/ero.html similarity index 100% rename from documentation/ontology-diff-files/ero.html rename to .github/deployment/ontology-diff-files/ero.html diff --git a/documentation/ontology-diff-files/event.html b/.github/deployment/ontology-diff-files/event.html similarity index 100% rename from documentation/ontology-diff-files/event.html rename to .github/deployment/ontology-diff-files/event.html diff --git a/documentation/ontology-diff-files/geospatial.html b/.github/deployment/ontology-diff-files/geospatial.html similarity index 100% rename from documentation/ontology-diff-files/geospatial.html rename to .github/deployment/ontology-diff-files/geospatial.html diff --git a/documentation/ontology-diff-files/info.html b/.github/deployment/ontology-diff-files/info.html similarity index 100% rename from documentation/ontology-diff-files/info.html rename to .github/deployment/ontology-diff-files/info.html diff --git a/documentation/ontology-diff-files/mro.html b/.github/deployment/ontology-diff-files/mro.html similarity index 100% rename from documentation/ontology-diff-files/mro.html rename to .github/deployment/ontology-diff-files/mro.html diff --git a/documentation/ontology-diff-files/time.html b/.github/deployment/ontology-diff-files/time.html similarity index 100% rename from documentation/ontology-diff-files/time.html rename to .github/deployment/ontology-diff-files/time.html diff --git a/.github/deployment/sparql/README.md b/.github/deployment/sparql/README.md new file mode 100644 index 0000000..f0fc795 --- /dev/null +++ b/.github/deployment/sparql/README.md @@ -0,0 +1,16 @@ +# SPARQL Quality Control + +This directory contains [SPARQL](https://www.w3.org/TR/sparql11-query/) files used to automate quality control checks against updates to CCO development branches and the CCO master branch. + +## Quality Control Format + +SPARQL Quality Control files should be named in a manner that illustrates their functionality, and must take the form of: +``` +Title + (descriptive title of the query) +Constraint Description: + (description of the query functionality) +Severity: + (select "Warning" or "Error") +``` +With respect to severity, a "Warning" will be some issue that should be addressed, but is not currently required to be addressed to maintain stability of bfo-core.owl. In constrast, "Error" indicates that the bfo-core.owl file must be corrected before it is usable. \ No newline at end of file diff --git a/.github/deployment/sparql/annotation_whitespace.sparql b/.github/deployment/sparql/annotation_whitespace.sparql new file mode 100644 index 0000000..dae47d3 --- /dev/null +++ b/.github/deployment/sparql/annotation_whitespace.sparql @@ -0,0 +1,18 @@ +# Title: +# No Extra Annotation Whitespace +# Constraint Description: +# No annotation value may have leading or trailing whitespace. +# Severity: +# Error + +PREFIX owl: +PREFIX rdfs: + +SELECT DISTINCT ?entity ?property ?value +WHERE { + ?property a owl:AnnotationProperty . + ?entity ?property ?value . + FILTER (!isBlank(?entity) && (REGEX(str(?value), "^[\\s\r\n]+") || REGEX(str(?value), "[\\s\r\n]+$"))) +} +ORDER BY ?entity + diff --git a/.github/deployment/sparql/deprecated_property_reference.sparql b/.github/deployment/sparql/deprecated_property_reference.sparql new file mode 100644 index 0000000..94c9bcb --- /dev/null +++ b/.github/deployment/sparql/deprecated_property_reference.sparql @@ -0,0 +1,69 @@ +# Title: +# Deprecated Ontology Elements in Axioms +# Constraint Description: +# The use of deprecated ontology elements in axioms is not allowed. +# Severity: +# Error + +PREFIX owl: +PREFIX rdfs: +PREFIX rdf: + +SELECT DISTINCT ?entity ?property ?value +WHERE { + { + VALUES ?property {rdfs:subClassOf owl:equivalentClass owl:disjointWith owl:ObjectProperty owl:DataProperty} + ?entity a owl:Class ; + owl:deprecated true ; + ?property ?value . + FILTER ( ?value NOT IN (owl:Thing) || + ?property IN (owl:equivalentClass, owl:disjointWith, owl:ObjectProperty, owl:DataProperty)) + } + UNION + { + VALUES ?property {rdfs:subClassOf owl:equivalentClass owl:disjointWith} + ?value ?property ?entity . + ?entity a owl:Class ; + owl:deprecated true . + } + UNION + { + VALUES ?property {owl:someValuesFrom owl:allValuesFrom} + ?value a owl:Class ; + owl:deprecated true . + ?rest a owl:Restriction ; + ?property ?value . + BIND("blank node" AS ?entity) + } + UNION + { + VALUES ?property {owl:equivalentProperty rdfs:subPropertyOf owl:inverseOf + } + ?entity a owl:ObjectProperty ; + owl:deprecated true . + ?value1 ?property ?entity . + } + UNION + { + VALUES ?property {owl:equivalentProperty rdfs:subPropertyOf} + ?entity a owl:DatatypeProperty ; + owl:deprecated true . + ?value1 ?property ?entity . + } + UNION + { + ?property owl:deprecated true . + ?entity ?property ?value1 . + BIND (IF(isIRI(?value1), ?value1, "blank node") AS ?value) + } + UNION + { + ?property owl:deprecated true . + ?entity ?x ?value1 . + ?value1 a owl:Restriction ; + owl:onProperty ?property . + BIND (IF(isIRI(?value1), ?value1, "blank node") AS ?value) + } +} +ORDER BY ?entity + diff --git a/.github/deployment/sparql/duplicate_definition.sparql b/.github/deployment/sparql/duplicate_definition.sparql new file mode 100644 index 0000000..96e045c --- /dev/null +++ b/.github/deployment/sparql/duplicate_definition.sparql @@ -0,0 +1,16 @@ +# Title: +# No Duplicate Definitions +# Constraint Description: +# No two ontology elements may have the exact same definition. +# Severity: +# Error + +PREFIX cco: + +SELECT DISTINCT ?entity ?definition +WHERE { + ?entity cco:definition ?definition . + ?entity2 cco:definition ?definition . + FILTER (?entity != ?entity2) + FILTER (!isBlank(?entity)) +} \ No newline at end of file diff --git a/.github/deployment/sparql/duplicate_label.sparql b/.github/deployment/sparql/duplicate_label.sparql new file mode 100644 index 0000000..f33024b --- /dev/null +++ b/.github/deployment/sparql/duplicate_label.sparql @@ -0,0 +1,21 @@ +# Title: +# No Duplicate Labels +# Constraint Description: +# Classes shall have no more than one rdfs:label. +# Severity: +# Warning + +PREFIX owl: +PREFIX rdfs: + +SELECT DISTINCT ?entity ?property ?value WHERE { + VALUES ?property {rdfs:label} + ?entity ?property ?value . + ?entity2 ?property ?value . + FILTER (?entity != ?entity2) + FILTER (!isBlank(?entity)) + FILTER (!isBlank(?entity2)) + FILTER NOT EXISTS { ?entity owl:deprecated true . + ?entity2 owl:deprecated true } +} +ORDER BY DESC(UCASE(str(?value))) \ No newline at end of file diff --git a/.github/deployment/sparql/exactly_1_prefLabel_per_lang.sparql b/.github/deployment/sparql/exactly_1_prefLabel_per_lang.sparql new file mode 100644 index 0000000..1664552 --- /dev/null +++ b/.github/deployment/sparql/exactly_1_prefLabel_per_lang.sparql @@ -0,0 +1,31 @@ +# Title: +# Ontology Elements Shall Have at Most One SKOS prefLabel per Language +# Constraint Description: +# Each ontology element shall have at most one skos:prefLabel per language. +# Severity: +# Warning + +PREFIX owl: +PREFIX skos: + + +SELECT DISTINCT ?resource ?property ?value +WHERE +{ + VALUES ?property { skos:prefLabel } + + # Find items with different labels in the same language. + ?resource ?property ?value . + ?resource ?property ?value2 . + FILTER ((lang(?value) = lang(?value2)) && (?value != ?value2)) . + + # Ignore deprecated resources + FILTER NOT EXISTS { ?resource owl:deprecated true } + + # Ignore blank nodes + FILTER (!isBlank(?resource)) + + # Ignore labels without a language label + FILTER (lang(?value) != "") +} +ORDER BY ?resource \ No newline at end of file diff --git a/.github/deployment/sparql/min_1_eng_def.sparql b/.github/deployment/sparql/min_1_eng_def.sparql new file mode 100644 index 0000000..3b053fa --- /dev/null +++ b/.github/deployment/sparql/min_1_eng_def.sparql @@ -0,0 +1,23 @@ +# Title: +# Definition Required +# Constraint Description: +# Any class or object property must have a non-empty defintiion with an English language tag. +# Severity: +# Warning + +PREFIX owl: +PREFIX rdfs: +PREFIX cco: + +SELECT DISTINCT ?resource ?label +WHERE { +VALUES ?type {owl:Class owl:ObjectProperty} + ?resource a ?type . + OPTIONAL { + ?resource cco:definition ?englishDefinition . + FILTER (langMatches(lang(?englishDefinition), "en")) + } + FILTER(!bound(?englishDefinition)) + FILTER(!isBlank(?resource)) +} +ORDER BY ?resource diff --git a/.github/deployment/sparql/min_1_ontology_title.sparql b/.github/deployment/sparql/min_1_ontology_title.sparql new file mode 100644 index 0000000..2ec78c4 --- /dev/null +++ b/.github/deployment/sparql/min_1_ontology_title.sparql @@ -0,0 +1,17 @@ +# Title: +# Ontology Title Required +# Constraint Description: +# Any owl:Ontology must have a dcterms:title annotation property. +# Severity: +# Warning + +PREFIX rdfs: +PREFIX owl: + +SELECT DISTINCT ?resource +WHERE +{ + ?resource a owl:Ontology . + FILTER (!ISBLANK (?resource)) . + FILTER NOT EXISTS {?resource rdfs:label ?title} +} \ No newline at end of file diff --git a/.github/templates/bug-template.md b/.github/templates/bug-template.md new file mode 100644 index 0000000..ddd4a7d --- /dev/null +++ b/.github/templates/bug-template.md @@ -0,0 +1,32 @@ +--- +name: Bug Template +about: Create a report to help us improve +title: 'BUG: [TITLE SUMMARIZING ISSUE]' +labels: bug +assignees: + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. \ No newline at end of file diff --git a/.github/templates/feature-template.md b/.github/templates/feature-template.md new file mode 100644 index 0000000..88f4b9e --- /dev/null +++ b/.github/templates/feature-template.md @@ -0,0 +1,17 @@ +--- +name: Feature Template +about: Suggest updates to our repo +title: 'FEATURE: [SUMMARY TITLE OF FEATURE]' +labels: '' +assignees: + +--- + +**Describe the feature you'd like added** +A clear and concise description of changes you'd like to see, with motivation for those changes. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. \ No newline at end of file diff --git a/.github/workflows/manage_release.yml b/.github/workflows/manage_release.yml new file mode 100644 index 0000000..27eea6c --- /dev/null +++ b/.github/workflows/manage_release.yml @@ -0,0 +1,80 @@ +name: Build, Test, Draft Release + +on: + push: + branches: [ master ] + +permissions: + contents: write + +env: + cache-path: build/lib + artifacts-path: build/artifacts + release-build-content-type: application/ttl + cache-key: build-cache-dependencies + +jobs: + ontology_release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Restore cached dependencies + id: restore-cache + uses: actions/cache/restore@v3 + with: + path: ${{ env.cache-path }} + key: ${{ runner.os }}-${{ env.cache-key }} + + - name: List directory contents + run: ls -la + + - name: Build and test ontology release + run: make all + + - name: Capture release information + id: build_release + run: | + make -d all + echo "RELEASE_FILE_PATH=$(make output-release-filepath)" >> $GITHUB_OUTPUT + echo "RELEASE_NAME=$(make output-release-name)" >> $GITHUB_OUTPUT + + - name: Get basename of the release file + id: get_basename + run: echo "BASENAME=$(basename ${{ steps.build_release.outputs.RELEASE_FILE_PATH }})" >> $GITHUB_ENV + + - name: Save artifacts + uses: actions/upload-artifact@v3 + if: always() + with: + name: ontology_release_results + path: ${{ env.artifacts-path }} + + - name: Save dependencies to cache + id: save-cache + uses: actions/cache/save@v3 + if: always() && steps.restore-cache.outputs.cache-hit != 'true' + with: + path: ${{ env.cache-path }} + key: ${{ runner.os }}-${{ env.cache-key }} + + - name: Draft GitHub Release + uses: actions/create-release@v1 + id: draft_release + with: + draft: true + prerelease: false + release_name: ${{ steps.build_release.outputs.RELEASE_NAME }} + tag_name: ${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload GitHub release build + uses: actions/upload-release-asset@v1 + with: + upload_url: ${{ steps.draft_release.outputs.upload_url }} + asset_path: ${{ steps.build_release.outputs.RELEASE_FILE_PATH }} + asset_name: ${{ steps.build_release.outputs.RELEASE_FILE_PATH }} + asset_content_type: ${{ env.release-build-content-type }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/LICENSE b/LICENSE index 1278661..26826d5 100644 --- a/LICENSE +++ b/LICENSE @@ -1 +1,28 @@ -https://opensource.org/license/BSD-3-Clause +BSD 3-Clause License + +Copyright (c) 2017, CUBRC, INC + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..57c4278 --- /dev/null +++ b/Makefile @@ -0,0 +1,171 @@ +# Common Core Ontology Pipeline +# Adapted from previous works; see header comments for full attribution. +# Contact - John Beverley + +### Explanation ### +# The workflow involves two major steps: first, individual ontology files are checked and tested. +# After passing, they are merged into a single file, which is then checked and tested again. + +# ---------------------------------------- +# Project essentials +config.ONTOLOGY_PREFIX := CCO +config.BASE_IRI := http://www.ontologyrepository.com/CommonCoreOntologies/Mid/ +config.DEV_IRI := $(config.BASE_IRI)/dev +config.MODULES_IRI := $(config.DEV_IRI)/modules + +# Local project directories +config.SOURCE_DIR := src/ +config.TEMP_DIR := build/artifacts +config.RELEASE_DIR := / +config.REPORTS_DIR := $(config.TEMP_DIR) +config.QUERIES_DIR := .github/deployment/sparql +config.LIBRARY_DIR := build/lib + +# Settings +config.FAIL_ON_TEST_FAILURES := false +config.REPORT_FAIL_ON := none + +# Branch-specific configurations +BRANCH := $(shell git rev-parse --abbrev-ref HEAD) + +# File names for dev branch +DEV_FILES = \ + src/cco-modules/AgentOntology.ttl \ + src/cco-modules/ArtifactOntology.ttl \ + src/cco-modules/CurrencyUnitOntology.ttl \ + src/cco-modules/EventOntology.ttl \ + src/cco-modules/ExtendedRelationOntology.ttl \ + src/cco-modules/FacilityOntology.ttl \ + src/cco-modules/GeospatialOntology.ttl \ + src/cco-modules/QualityOntology.ttl \ + src/cco-modules/UnitsOfMeasureOntology.ttl \ + src/cco-modules/TimeOntology.ttl \ + src/cco-modules/InformationEntityOntology.ttl + +# File for combined ontology +combined-file := $(config.SOURCE_DIR)/MergedAllCoreOntology.ttl + +# Other constants +TODAY := $(shell date +%Y-%m-%d) +TIMESTAMP := $(shell date +'%Y-%m-%d %H:%M') + +# Default name for release +config.RELEASE_NAME := $(config.ONTOLOGY_PREFIX) $(TIMESTAMP) + +# Generic files +EDITOR_BUILD_FILE = $(combined-file) # "editors ontology module" + +EDITOR_REPORT_FILE = $(config.REPORTS_DIR)/$(config.ONTOLOGY_PREFIX)-edit-report.tsv + +# Generic directories to create if needed +REQUIRED_DIRS = $(config.LIBRARY_DIR) $(config.SOURCE_DIR) $(config.QUERIES_DIR) $(config.REPORTS_DIR) + +# ---------------------------------------- +#### Targets / main "goals" of this Makefile +.PHONY: all +all: setup reason-individual test-individual build-combined reason-combined test-combined + +# Setup target for creating necessary directories +.PHONY: setup +setup: + mkdir -p $(REQUIRED_DIRS) src/ .github/deployment/sparql build/artifacts + +# Targets for dev branch - QC individual files and the combined file + +# Download ROBOT JAR +ROBOT_FILE := $(config.LIBRARY_DIR)/robot.jar +$(ROBOT_FILE): setup + curl -L -o $@ https://github.com/ontodev/robot/releases/download/v1.8.4/robot.jar + chmod +x $@ + +# Reason individual files +.PHONY: reason-individual +reason-individual: $(ROBOT_FILE) + for file in $(DEV_FILES); do \ + echo "Reasoning on $$file..."; \ + java -jar $(ROBOT_FILE) reason --input $$file --reasoner HermiT; \ + done + +# Test individual files +.PHONY: test-individual +test-individual: $(ROBOT_FILE) + for file in $(DEV_FILES); do \ + echo "Testing $$file..."; \ + java -jar $(ROBOT_FILE) verify --input $$file --output-dir $(config.REPORTS_DIR) --queries $(QUERIES) --fail-on-violation false || true; \ + done + +# Build combined file after individual files pass checks +$(combined-file): $(DEV_FILES) + cat $(DEV_FILES) > $@ + +# Build and QC combined file +.PHONY: build-combined +build-combined: $(combined-file) + +.PHONY: reason-combined test-combined +reason-combined: $(combined-file) | $(ROBOT_FILE) + java -jar $(ROBOT_FILE) reason --input $(combined-file) --reasoner HermiT + +test-combined: $(combined-file) | $(ROBOT_FILE) + java -jar $(ROBOT_FILE) verify --input $(combined-file) --output-dir $(config.REPORTS_DIR) --queries $(QUERIES) --fail-on-violation false || true + +.PHONY: report-edit +report-edit: TEST_INPUT = $(EDITOR_BUILD_FILE) +report-edit: REPORT_FILE_INPUT = $(EDITOR_REPORT_FILE) +report-edit: report + +.PHONY: output-release-filepath +output-release-filepath: + @echo $(combined-file) + +.PHONY: output-release-name +output-release-name: + @echo $(config.RELEASE_NAME) + +# ---------------------------------------- +#### Test / test ontology with reasoners and queries +QUERIES = $(wildcard $(config.QUERIES_DIR)/*.sparql) + +# Check for inconsistency +.PHONY: reason +reason: $(TEST_INPUT) | $(ROBOT_FILE) + java -jar $(ROBOT_FILE) reason --input $(TEST_INPUT) --reasoner HermiT + +# Test using specific queries +.PHONY: verify +verify: $(TEST_INPUT) $(QUERIES) | $(config.QUERIES_DIR) $(config.REPORTS_DIR) $(ROBOT_FILE) +ifeq ($(QUERIES),) + $(warning No query files found in $(config.QUERIES_DIR)) +else + java -jar $(ROBOT_FILE) verify --input $(TEST_INPUT) --output-dir $(config.REPORTS_DIR) --queries $(QUERIES) --fail-on-violation false || true +endif + +# Report using built-in ROBOT queries +.PHONY: report +report: $(TEST_INPUT) | $(config.REPORTS_DIR) $(ROBOT_FILE) + java -jar $(ROBOT_FILE) report --input $(TEST_INPUT) \ + --labels true \ + --fail-on $(config.REPORT_FAIL_ON) \ + --print 10 \ + --output $(REPORT_FILE_INPUT) + +# ---------------------------------------- +#### Setup / configure Make to use with our project +MAKEFLAGS += --warn-undefined-variables +SHELL := bash +.SHELLFLAGS := -eu -o pipefail -c +.DEFAULT_GOAL := all +.DELETE_ON_ERROR: +.SUFFIXES: +.SECONDARY: + +# Create any of these directories if they don't exist +$(REQUIRED_DIRS): + mkdir -p $@ + +# Cleanup - Remove build and release files +.PHONY: clean +clean: + @[ "${config.REPORTS_DIR}" ] || ( echo ">> config.REPORTS_DIR is not set"; exit 1 ) + rm -rf $(config.REPORTS_DIR) + rm -rf $(combined-file) diff --git a/README.md b/README.md index f8a5c44..ecbf4ae 100644 --- a/README.md +++ b/README.md @@ -1,55 +1,69 @@ -# Common Core Ontologies -The Common Core Ontologies (CCO) comprise twelve ontologies that are designed to represent and integrate taxonomies of generic classes and relations across all domains of interest. +# The Common Core Ontologies (CCO) -CCO is a mid-level extension of Basic Formal Ontology (BFO), an upper-level ontology framework widely used to structure and integrate ontologies in the biomedical domain (Arp, et al., 2015). BFO aims to represent the most generic categories of entity and the most generic types of relations that hold between them, by defining a small number of classes and relations. CCO then extends from BFO in the sense that every class in CCO is asserted to be a subclass of some class in BFO, and that CCO adopts the generic relations defined in BFO (e.g., has_part) (Smith and Grenon, 2004). Accordingly, CCO classes and relations are heavily constrained by the BFO framework, from which it inherits much of its basic semantic relationships. +## What is CCO? -The CCO provide semantics for concepts and relations that are used in most domains of interest. The utility of the CCO comes from preventing BFO-compliant domain-specific ontologies from needlessly duplicating common concepts or from forcing such ontologies to include concepts outside of their domain (e.g. organization in the Ontology of Biomedical Investigations). +The Common Core Ontologies (CCO) is a widely-used suite of eleven ontologies that consist of logically well-defined generic terms and relations among them reflecting entities across all domains of interest. -This utility has been realized by a number of U.S. Government sponsored projects in which either existing BFO compliant ontologies were aligned to the CCO or domain ontologies were created by using the CCO as a starting point and adding classes and properties as needed. +These eleven ontologies constitute a [mid-level ontology](https://arxiv.org/abs/2404.17757) that extends from the [Basic Formal Ontology (BFO)](https://github.com/bfo-ontology/BFO-2020), an [ISO-standard](https://www.iso.org/standard/71954.html) top-level ontology. Whereas BFO represents only the most generic entities and relations, CCO contains classes that users will find common across data sets in many domains. Such classes include, for example, person, facility, date, employment, nickname, and measurement. -The names of a sample of these domain ontologies are provided in the list below. +Leveraging CCO makes it easier to use the top-level ontology content provided by BFO, and it prevents BFO-compliant domain-specific ontologies from duplicating common concepts. Many organizations within the U.S. Government have found this useful as they seek a coordinated strategy among independent ontology efforts. -The U.S. Government holds Government Purpose Rights on all of these domain ontologies. To obtain one or more of these domain ontologies for a government purpose it will be necessary for a government representative to contact the government sponsor of the development of the ontology. CUBRC can facilitate these connections so if interested please use the contact link at the bottom of this [page](https://www.cubrc.org/data-science-information-fusion/specialized-data-ontology-development/). +CCO itself is not intended to be extended indefinitely into particular domains. Users are encouraged to create their own domain extensions with content particular to those domains and publish these ontologies for re-use by others. -# Sample of Common Core Domain Ontology Extensions -Aircraft Ontology +## Contributing -Airforce Aircraft Maintenance Ontology +Users may find the current release files for CCO [INSERT RELEASE LINK]() -Army Universal Task List Ontology +Developers may clone this repository and directly import AllCoreOntology.ttl in an ontology editor such as [Protégé](https://protege.stanford.edu/) to generate the merged version of the eleven CCO ontologies. Those who wish to forego managing imports may find a merged version of the files at src/cco-merged/ -Atmospheric Feature Ontology +Users who wish to view the content of CCO in a web browser may view the current CCO release on the [Industrial Ontology Portal viewer](https://industryportal.enit.fr/ontologies/CCO) -Cyber Ontology +For information regarding the management of CCO, tutorials, lists of projects that extend CCO, associated research, standards activities in the IEEE, and more, please navigate to the [CCO home page](https://commoncoreontology.github.io/cco-webpage/) -Hydrographic Feature Ontology +For bug fixes, developed suggestions for improvement, or minor updates, please open an issue using the template [here](https://github.com/CommonCoreOntology/CommonCoreOntologies/issues) -Legal and Criminal Act Ontology +For more open-ended discussion, general questions, or compliments, please navigate to the discussion board [here](https://github.com/CommonCoreOntology/CommonCoreOntologies/discussions) -Marine Corps Task List Ontology +## Who Oversees CCO Today? -Military Operations Ontology +CCO is overseen by a governance board and a developers group. Our members come from academia, government, US national laboratories, and commercial industry. We offer multiple forums for feedback and discussion. -Mission Planning Ontology +For more information about the governance of CCO, please navigate to the [Common Core Ontologies home page.](https://commoncoreontology.github.io/cco-webpage/board/) -Occupation Ontology +## The Common Core Ontologies -Outerspace Ontology +- **Geospatial Ontology** - An ontology who scope is the representation of sites, spatial regions, and other entities, especially those that are located near the surface of Earth, as well as the relations that hold between them. +- **Information Entity Ontology** - An ontology who scope is the representation of generic types of information as well as the relationships between information and other entities. +- **Event Ontology** - An ontology who scope is the representation of processual entities, especially those performed by agents, that occur within multiple domains. +- **Time Ontology** - An ontology who scope is the representation of temporal regions and the relations that hold between them. +- **Agent Ontology** - An ontology who scope is the representation of represent agents, especially persons and organizations, and their roles. +- **Quality Ontology** - An ontology who scope is the representation of a range of attributes of entities especially qualities, realizable entities, and process profiles. +- **Units of Measure Ontology** - An ontology who scope is the representation of standard measurement units that are used when measuring various attributes of entities. +- **Currency Unit Ontology** - An ontology who scope is the representation of currencies that are issued and used by countries. +- **Facility Ontology** - An ontology who scope is the representation of buildings and campuses that are designed to serve some specific purpose, and which are common to multiple domains. +- **Artifact Ontology** - An ontology who scope is the representation of artifacts that are common to multiple domains along with their models, specifications, and functions. +- **Extended Relation Ontology** - An ontology who scope is the representation of the relations that hold between entities at the level of the mid-level Common Core Ontologies. -Physiographic Feature Ontology +## The Contents of this Repository -Sensor Ontology - -Spacecraft Mission Ontology - -Spacecraft Ontology - -Space Event Ontology - -Space Object Ontology - -Transportation Infrastructure Ontology - -Undersea Warfare Ontology - -Watercraft Ontology +* **documentation** - This directory contains the ModalRelationOntology.ttl. + * **archive** + * **legacy documentation** - Contains documentation concerning previous versions of CCO, a list of obsoleted terms, changefiles for releases, as well as xlsx glossaries for each previous release. + * **previous-versions** - Contains previous releases of CCO, beginning with version 1.3. + * **contributing** + * **contributing** - Contains guidance for making contributions to the CCO repository. + * **github overview** - Contains guidance for using git and Github with Visual Studio Code, command lines, and GitHub Desktop. + * **design patterns** - Contains common design patterns for CCO, motivated by specific use cases, characterized by competency questions, and accompanied by serialization in RDF. + * **images** - Contains images used in this repository. + * **user guides** - Contains user guides for: ontology developers, software developers and subject matter experts. +* **src** + * **cco-merged** - Contains the current CCO merged release file and an import file that is used to generate the merged CCO file. + * **cco-modules** - Contains versions of the 11 CCO modules. + * **cco extensions** - Contains versions of CCO extensions maintained by the governance board, such as the Modal Relations Ontology. +* **.github** - This directory contains files needed to support automated GitHub actions. + * **deployment** + * **sparql** - Contains sparl files used in quality control checks during the development process. + * **ontology-diff-files** - Contains ontology-diff-files, which Mark can tell you more about. + * **mappings** - Contains mappings between content in CCO and other ontologies. + * **templates** - Contains templates used to create issues and discussion topics. + * **workflows** - Contains release management files needed for GitHub Actions. diff --git a/catalog-v001.xml b/catalog-v001.xml deleted file mode 100644 index f9291c1..0000000 --- a/catalog-v001.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/cco-merged/README.md b/cco-merged/README.md deleted file mode 100644 index a90a132..0000000 --- a/cco-merged/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Merged All Core Ontology - -This directory contains a merged version of all eleven CCO ontologies plus BFO. The file represents a stable stand-alone snapshot release of all of CCO and its import dependancies. A sub-directory archives previous versions of Merged All Core. diff --git a/documentation/An Overview of the Common Core Ontologies.docx b/documentation/An Overview of the Common Core Ontologies.docx deleted file mode 100644 index d424293..0000000 Binary files a/documentation/An Overview of the Common Core Ontologies.docx and /dev/null differ diff --git a/documentation/Modeling Information with the Common Core Ontologies.docx b/documentation/Modeling Information with the Common Core Ontologies.docx deleted file mode 100644 index b564154..0000000 Binary files a/documentation/Modeling Information with the Common Core Ontologies.docx and /dev/null differ diff --git a/documentation/README.md b/documentation/README.md index e35a76c..ac902f8 100644 --- a/documentation/README.md +++ b/documentation/README.md @@ -1 +1,15 @@ -This folder contains user guides and supporting documents, some of which are specific to the current release. Previous versions of these documents are now stored in the Legacy subfolder. +# CCO Documentation + +This directory contains files to promote user understanding and contributions: + +## The Contents of this Repository + +* **archive** + * **legacy documentation** - Contains documentation concerning previous versions of CCO, a list of obsoleted terms, changefiles for releases, as well as xlsx glossaries for each previous release. + * **previous-versions** - Contains previous releases of CCO, beginning with version 1.3. +* **contributing** + * **contributing** - Contains guidance for making contributions to the CCO repository. + * **github overview** - Contains guidance for using git and Github with Visual Studio Code, command lines, and GitHub Desktop. +* **design patterns** - Contains common design patterns for CCO, motivated by specific use cases, characterized by competency questions, and accompanied by serialization in RDF. +* **images** - Contains images used in this repository. +* **user guides** - Contains user guides for: ontology developers, software developers and subject matter experts. diff --git a/documentation/archive/README.md b/documentation/archive/README.md new file mode 100644 index 0000000..3b6aec8 --- /dev/null +++ b/documentation/archive/README.md @@ -0,0 +1,8 @@ +# CCO Archive + +This directory serves as a home for outdated documentation regarding CCO and related projects. This documentation is not intended to be used as guidance in the development or application of current versions of CCO artifacts. + +## The Contents of this Repository + +* **legacy documentation** - This directory contains documentation concerning previous versions of CCO, a list of obsoleted terms, changefiles for releases, as well as xlsx glossaries for each previous release. +* **previous-versions** - This directory contains previous releases of CCO, beginning with version 1.3. \ No newline at end of file diff --git a/documentation/legacy documentation/An Overview of the Common Core Ontologies 1.1.docx b/documentation/archive/legacy-documentation/An Overview of the Common Core Ontologies 1.1.docx similarity index 100% rename from documentation/legacy documentation/An Overview of the Common Core Ontologies 1.1.docx rename to documentation/archive/legacy-documentation/An Overview of the Common Core Ontologies 1.1.docx diff --git a/documentation/legacy documentation/Common Core Ontology Glossary 1.3.xlsx b/documentation/archive/legacy-documentation/Common Core Ontology Glossary 1.3.xlsx similarity index 100% rename from documentation/legacy documentation/Common Core Ontology Glossary 1.3.xlsx rename to documentation/archive/legacy-documentation/Common Core Ontology Glossary 1.3.xlsx diff --git a/documentation/legacy documentation/Common Core Ontology Glossary 1.4.xlsx b/documentation/archive/legacy-documentation/Common Core Ontology Glossary 1.4.xlsx similarity index 100% rename from documentation/legacy documentation/Common Core Ontology Glossary 1.4.xlsx rename to documentation/archive/legacy-documentation/Common Core Ontology Glossary 1.4.xlsx diff --git a/documentation/legacy documentation/Common Core Ontology Glossary.xlsx b/documentation/archive/legacy-documentation/Common Core Ontology Glossary.xlsx similarity index 100% rename from documentation/legacy documentation/Common Core Ontology Glossary.xlsx rename to documentation/archive/legacy-documentation/Common Core Ontology Glossary.xlsx diff --git a/documentation/legacy documentation/Modeling Information with the Common Core Ontologies 1.0.docx b/documentation/archive/legacy-documentation/Modeling Information with the Common Core Ontologies 1.0.docx similarity index 100% rename from documentation/legacy documentation/Modeling Information with the Common Core Ontologies 1.0.docx rename to documentation/archive/legacy-documentation/Modeling Information with the Common Core Ontologies 1.0.docx diff --git a/documentation/legacy documentation/ObsoleteTerms.ttl b/documentation/archive/legacy-documentation/ObsoleteTerms.ttl similarity index 100% rename from documentation/legacy documentation/ObsoleteTerms.ttl rename to documentation/archive/legacy-documentation/ObsoleteTerms.ttl diff --git a/documentation/legacy documentation/RO-Update.xlsx b/documentation/archive/legacy-documentation/RO-Update.xlsx similarity index 100% rename from documentation/legacy documentation/RO-Update.xlsx rename to documentation/archive/legacy-documentation/RO-Update.xlsx diff --git a/documentation/legacy documentation/Version 1_1 Release Change File.xlsx b/documentation/archive/legacy-documentation/Version 1_1 Release Change File.xlsx similarity index 100% rename from documentation/legacy documentation/Version 1_1 Release Change File.xlsx rename to documentation/archive/legacy-documentation/Version 1_1 Release Change File.xlsx diff --git a/documentation/legacy documentation/Version 1_2 Release Change File.xlsx b/documentation/archive/legacy-documentation/Version 1_2 Release Change File.xlsx similarity index 100% rename from documentation/legacy documentation/Version 1_2 Release Change File.xlsx rename to documentation/archive/legacy-documentation/Version 1_2 Release Change File.xlsx diff --git a/documentation/legacy documentation/Version 1_3 Release Change File.xlsx b/documentation/archive/legacy-documentation/Version 1_3 Release Change File.xlsx similarity index 100% rename from documentation/legacy documentation/Version 1_3 Release Change File.xlsx rename to documentation/archive/legacy-documentation/Version 1_3 Release Change File.xlsx diff --git a/documentation/legacy documentation/Version 1_4 Release Change File.xlsx b/documentation/archive/legacy-documentation/Version 1_4 Release Change File.xlsx similarity index 100% rename from documentation/legacy documentation/Version 1_4 Release Change File.xlsx rename to documentation/archive/legacy-documentation/Version 1_4 Release Change File.xlsx diff --git a/cco-merged/previous-versions/MergedAllCoreOntology-v1.3-2021-03-01.ttl b/documentation/archive/previous-versions/MergedAllCoreOntology-v1.3-2021-03-01.ttl similarity index 100% rename from cco-merged/previous-versions/MergedAllCoreOntology-v1.3-2021-03-01.ttl rename to documentation/archive/previous-versions/MergedAllCoreOntology-v1.3-2021-03-01.ttl diff --git a/cco-merged/previous-versions/MergedAllCoreOntology-v1.4-2023-04-07.ttl b/documentation/archive/previous-versions/MergedAllCoreOntology-v1.4-2023-04-07.ttl similarity index 100% rename from cco-merged/previous-versions/MergedAllCoreOntology-v1.4-2023-04-07.ttl rename to documentation/archive/previous-versions/MergedAllCoreOntology-v1.4-2023-04-07.ttl diff --git a/cco-merged/previous-versions/MergedAllCoreOntology_v1.3.ttl b/documentation/archive/previous-versions/MergedAllCoreOntology_v1.3.ttl similarity index 100% rename from cco-merged/previous-versions/MergedAllCoreOntology_v1.3.ttl rename to documentation/archive/previous-versions/MergedAllCoreOntology_v1.3.ttl diff --git a/documentation/contributing/contributing.md b/documentation/contributing/contributing.md new file mode 100644 index 0000000..5df1c9c --- /dev/null +++ b/documentation/contributing/contributing.md @@ -0,0 +1,162 @@ +# Contributing Guidelines and Code of Conduct + +Branching: +`master` will always contain the latest release. +`develop` is where approved changes are merged into from patch and feature branches. + +Instructions: +- All changes shall be made on a patch/feature branch that is created from an issue. Use the feature located to the right under Development to create branch. Make sure to select "Change Branch Source" and select 'develop'. +- If the changes are not based on an existing issue, create one. +- Make sure your preferred method of editing OWL files isn't generating spurious diffs. To prevent this, make a token change (e.g., add an annotation to the ontology) to the file and save it. +- Then use your favorite diff checker to confirm only that change is being rendered. Different versions of OWL API and Protégé will sometimes cause formatting issues. +- If you can't prevent the bogus diffs, then make commit the file with a message "Bogus change to render diffs correctly". +- Better to commit often rather than not enough. Ideally your commits will be have a unified objective. E.g., "changed language tags on all properties", "updated formatting for a few definitions", "deleted class Agent Identifier & fixed related axioms". +- When you've made changes as dictated by the issue, then perform a MR on `develop`. +- A set of checks will be run. Any failures need to be addressed before it can be accepted. +- Only Lead Developers can accept MRs. + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. + +### Branching: +`master` contain the latest release +`develop` where pull requests are made from patch and feature branches + +### Instructions: +- If you do not have write privileges in the repo, then create a fork and work off that. +- All changes shall be made on an issue-specifc branch. + - Use the feature in the isseu tracker located to the right under "Development" to create the branch. Make sure to "Change Branch Source" and select 'develop'. +- If the changes are not based on an existing issue, create one first, assign yourself. +- Make sure your preferred method of editing OWL files isn't generating spurious diffs. + - To prevent this, make a token change to the file and save. E.g., add an annotation to the ontology "foo". Then use your favorite diff checker to confirm only that change is being rendered. Delete the change before making any other changes. + - If you can't prevent the bogus diffs, then make a change to the file with a message "Change to render diffs correctly." + - Delete the change and commit with message "Change for diffs deleted." +- Better to commit often rather than not enough. Ideally your commits will be have a unified objective. E.g., "changed language tags on all properties", "updated formatting for a few definitions", "deleted class Agent Identifier & fixed related axioms". +- Double check your work, make sure it loads in Protege, open All Core Ontology and confirm there are no bugs. +- Perform a PR on `develop`. Optionally, you may assign one or more reviewers, e.g., people that contributed to the issue. + + \ No newline at end of file diff --git a/documentation/contributing/github overview.md b/documentation/contributing/github overview.md new file mode 100644 index 0000000..f61b4e1 --- /dev/null +++ b/documentation/contributing/github overview.md @@ -0,0 +1,286 @@ +# Git and GitHub Overview + +## Prerequisites + +Prior to using GitHub in this repository, you will need to: + +- **GitHub account** - [Register Here](https://github.com/join?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-home) +- **Git Client** - Install a git client such as [GitHub Desktop](https://desktop.github.com/) or [Visual Studio Code](https://code.visualstudio.com/) with [necessary extensions](https://code.visualstudio.com/docs/sourcecontrol/github) + +## Objectives + +- [Introduction](#introduction) +- [Git and GitHub](#git-and-github) +- [GitHub Workflow](#github-workflow) +- [GitHub Issues](#issues) +- [GitHub Pull Requests](#pr) + +- [Ontology Development Workflows](#workflow) + + +- [Open Source Etiquette](#etiquette) +- [Further Resources](#resource) + + + + +## Introduction + +The content of this file is adapted from the Github Classroom starter assignment, which is designed to give you a brief introduction to Git and GitHub. + + + +## Git and GitHub + +**Git** is a system for tracking changes to your code, collaborating, and sharing. With Git you can track the changes you make to your project so you always have a record of what you’ve worked on and can easily revert back to an older version if need be. + +**GitHub** is a web-based platform that builds on Git, by adding an intuitive interface, automating workflow actions, and allowing for transparent communication around projects. + + + +## GitHub Workflow + +The **GitHub Flow** is a workflow that allows you to experiment and collaborate on your projects easily, without the risk of losing your previous work. + +A **repository** is where your project work happens--think of it as your project folder. It contains all of your project’s files and revision history. You can work within a repository alone or invite others to collaborate with you on those files. Repositories also contain **README**s, which are used to explain to other people why your project is useful, what they can do with your project, and how they can use it. + + +A README is a text file that introduces and explains a project. It is intended for _everyone_, not just the software or ontology developers. Ideally, the README file will include detailed information about the ontology, how to get started with using any of the files, license information and other details. The README is usually on the front page of the GitHub repository. + + +Git repositories typically have a main branch that is not directly edited. Changes are made by creating a **branch** from main, which is essentially a complete copy of the main branch along with its entire history of updates. + + + + +You can copy (fork) any GitHub repo to some other location on GitHub without having to ask permission from the owners.  If you modify some files in that repo, e.g. to fix a bug in some code, or a typo in a document, you can then suggest to the owners (via a Pull Request) that they adopt (merge) you your changes back into their repo. + +If you have permission from the owners, you can instead make a new branch. For this training, we gave you access to the repository. See the [Appendix](../howto/github-create-fork.md) for instructions on how to make a fork. + + + + +When a repository is created with GitHub, it’s stored remotely in the cloud. You can **clone** a repository to create a local copy on your computer and then use Git to sync the two. This makes it easier to fix issues, add or remove files, and push larger commits. Cloning a repository pulls down all the repository data that GitHub has at that point in time, including all versions of every file and folder for the project. This can be helpful if you experiment with your project and then realize you liked a previous version more. + +A **fork** is another way to copy a repository, but is usually used when you want to contribute to someone else’s project. Forking a repository allows you to freely experiment with changes without affecting the original project and is very popular when contributing to open source software projects. + +**Committing** and **pushing** are how you can add the changes you made on your local machine to the main course repository so that your instructor can see your latest work. You should add a helpful **commit message** to remind yourself or your teammates what work you did. Once you have a commit or multiple commits that you’re ready to add to your repository, you can use the push command to add those changes to your remote repository. + +When working with branches, you can use a **pull request** to tell others about the changes you want to make and ask for their feedback. Once a pull request is opened, you can discuss and review the potential changes with collaborators and add more changes if need be. You can add specific people as reviewers of your pull request which shows you want their feedback on your changes! Once a pull request is ready-to-go, it can be merged into your main branch. + +**Issues** are a way to track enhancements, tasks, or bugs for your work on GitHub. Issues are a great way to keep track of all the tasks you want to work on for your project and let others know what you plan to work on. + +## Github Workflow + +To illustrate, suppose you want to edit a file from the Common Core Ontologies GitHUb. You should then 'fork' the develop branch of the CCO repository on your personal Github account, so that you can make whatever changes you like. + +When you make changes to your personal Github CCO repository then go to save them in GitHub, you will be prompted to either "commit to the main branch' or "create a new branch for this request and start a pull request". You should almost always open a 'pull request'. By opening a pull request, you open the door for your peers to help you refine the submission. That in mind, when you open a pull request, it is good practice to tag others and request they review your work. Once your reviewers have 'approved' your work, you will then 'merge' your work to your personal repository. + +Once you have merged your work there, you will open another pull request - this time tagging one of the lead CCO developers - so they can review your work before merging it to the develop branch of CCO. Over time, when sufficient updates have been made to CCO, the develop branch will be merged into the main branch, triggering a new release of CCO. + +You can visualize the process as something like: + +```mermaid + gitGraph + commit id: "1" + commit id: "2" + branch Your_Work + checkout Your_Work + commit id: "3" + checkout main + commit id: "4" + checkout Your_Work + branch Your_Work_in_PR + commit id: "5" + checkout Your_Work + merge Your_Work_in_PR id: "Reviewed!" + checkout main + merge Your_Work id: "Submit Work" + commit id: "6" + checkout main + commit id: "7" + ``` +Where the numbers instances where changes have been made to a repository. The top grey line represents the main course repository. At change - or 'commit' - 2, you create a copy of the repository and begin working. You periodically check to make sure that your copy is up to date with the main branch, and this is reflected in your making commit 3 then making commit 5. This is because commit 4 occurred on the main branch, but you - good student that you are - updated your personal repository to keep up with the main course repository. Eventually, you submit your work to the main branch and it is 'merged'. Afterwards, you'll be able to see your work on the main course repository. + + + + + +### CCO Development Workflow + +The steps below describe how to make changes to Common Core Ontologies content. + +1. Clone the CCO GitHub repository. The example below describes how to clone the Mondo Disease Ontology repo, but this can be applied to any ontology that is stored in GitHub. + +#### Clone the CCO Repository + +1. Navigate to the [Common Core Ontologies repository](https://github.com/CommonCoreOntology/CommonCoreOntologies) +2. Click Code + +![image](https://user-images.githubusercontent.com/6722114/116610830-801b0480-a8ea-11eb-8567-9da0c1159954.png) + +3. Click 'Open with GitHub Desktop' + +![image]() + +4. You will be given an option as to where to save the repository. Consider creating a folder on your local device named "Git" or "Repos", which will be the home for any repositories you save locally. +5. This will open GitHub Desktop and the repo should start downloading. This could take some time depending on how big the file is and how much memory your computer has. + +#### Create a branch using GitHub Desktop + +6. Click the little arrow in Current Branch +7. Click New Branch +8. Give your branch a name: + +![image]() + + + +## GitHub Pull Requests (adapted from OBOOK) + +### Committing, Pushing and Making Pull Requests + +1. Changes made to the ontology can be viewed in GitHub Desktop. + +2. Before committing, check the diff. Examples of a diff are pasted below. Large diffs are a sign that something went wrong. In this case, do not commit the changes and ask the ontology editors for help instead. + +Example 1: + +![]() + +1. Commit: Add a meaningful message in the Commit field in the lower left, for example + +NOTE: You can use the word 'fixes' or 'closes' in the description of the commit message, followed by the corresponding ticket number (in the format #1234) - these are magic words in GitHub; when used in combination with the ticket number, it will automatically close the ticket. Learn more on this GitHub Help Documentation page about [Closing issues via commit messages](https://help.github.com/en/articles/closing-issues-using-keywords). + +1. Note: 'Fixes' and "Closes' are case-insensitive. + +2. If you don't want to close the ticket, just refer to the ticket # without the word 'Fixes' or use 'Adresses'. The commit will be associated with the correct ticket but the ticket will remain open. NOTE: It is also possible to type a longer message than allowed when using the '-m' argument; to do this, skip the -m, and a vi window (on mac) will open in which an unlimited description may be typed. + +3. Click Commit to [branch]. This will save the changes to the cl-edit.owl file. + +4. Push: To incorporate the changes into the remote repository, click Publish branch. + + + + + + +## Open Source Etiquette + +- Be respectful in your requests and comments. +- Do not include any private information. +- GitHub sends notifications to your email, and you can respond via your email client. However, responses are posted publicly. Be sure to delete your email signature if it includes personal information, such as your phone number. +- Many ontologies have limited resources and personnel for development and maintenance. Please be patient with your requests. +- If your ticket/request has been unanswered for a long period of time, you may check in by commenting on the ticket. + + + +## Resources +* [A short video explaining what GitHub is](https://www.youtube.com/watch?v=w3jLJU7DT5E&feature=youtu.be) +* [Git and GitHub learning resources](https://docs.github.com/en/github/getting-started-with-github/git-and-github-learning-resources) +* [Understanding the GitHub flow](https://guides.github.com/introduction/flow/) +* [How to use GitHub branches](https://www.youtube.com/watch?v=H5GJfcp3p4Q&feature=youtu.be) +* [Interactive Git training materials](https://githubtraining.github.io/training-manual/#/01_getting_ready_for_class) +* [GitHub's Learning Lab](https://lab.github.com/) +* [Education community forum](https://education.github.community/) +* [GitHub community forum](https://github.community/) + + + + + + + +# Merging Branches + +## Merging Branches in VS Code Using the Command Palette + +1. **Open VS Code**: Launch Visual Studio Code. + +2. **Open the Command Palette**: + - Press `Ctrl+Shift+P` (Windows/Linux) or `Cmd+Shift+P` (Mac) to open the Command Palette. + +3. **Switch to the `master` (or `main`) Branch**: + - Type `Git: Checkout to...` and select it from the dropdown. + - Choose `master` or `main` from the list of branches. + +4. **Pull the Latest Changes (Optional but Recommended)**: + - Open the Command Palette again. + - Type `Git: Pull` and select it from the dropdown. + - Choose the remote branch you want to pull changes from, typically `origin/master` or `origin/main`. + +5. **Merge the `dev` Branch into `master` (or `main`)**: + - Open the Command Palette. + - Type `Git: Merge Branch...` and select it. + - Choose `dev` from the list of branches to merge into the currently checked-out branch (`master` or `main`). + +6. **Resolve Any Merge Conflicts**: + - If there are conflicts, VS Code will show them in the editor. Open the conflicted files. + - Use the inline merge conflict resolution tools provided by VS Code to resolve the conflicts. + +7. **Commit the Merge**: + - If conflicts were resolved, go to the Source Control view to commit the merge. + +8. **Push the Changes**: + - Open the Command Palette. + - Type `Git: Push` and select it to push the changes to the remote repository. + + +## Merging Branches in VS Code Using Source Control View + +1. **Open VS Code**: Launch Visual Studio Code. + +2. **Open the Source Control View**: + - Click on the Source Control icon in the [Activity Bar](https://code.visualstudio.com/docs/getstarted/userinterface) on the side of the window, or press `Ctrl+Shift+G` (Windows/Linux) or `Cmd+Shift+G` (Mac). + +3. **Switch to the `master` (or `main`) Branch**: + - Click on the branch name in the bottom-left corner of the Status Bar. + - Select `master` or `main` from the list of branches to switch to it. + +4. **Pull the Latest Changes (Optional but Recommended)**: + - Click on the ellipsis (`...`) in the Source Control view. + - Select `Pull` from the dropdown to fetch the latest changes from the remote repository. + +5. **Merge the `dev` Branch into `master` (or `main`)**: + - Click on the ellipsis (`...`) in the Source Control view. + - Select `Merge Branch...`. + - Choose `dev` from the list of branches to merge into the currently checked-out branch (`master` or `main`). + +6. **Resolve Any Merge Conflicts**: + - If there are conflicts, VS Code will highlight them in the editor. Open the conflicted files and use the inline tools to resolve them. + +7. **Commit the Merge**: + - If conflicts were resolved, you will see the merge changes in the Source Control view. Enter a commit message and commit the merge. + +8. **Push the Changes**: + - Click on the ellipsis (`...`) in the Source Control view. + - Select `Push` to push the merged changes to the remote repository. + + +## Merging Branches Using Git in the Command Line + +1. **Open Terminal and Navigate to Your Repository**: + - cd /path/to/your/repo + +2. **Fetch the Latest Changes from Remote (Optional but Recommended)**: + - git fetch origin + +3. **Switch to the Master (or Main) Branch**: + - git checkout master (or git checkout main) + +4. **Pull the Latest Changes to Master (or Main)**: + - git pull origin master (git pull origin main) + +5. **Merge the Dev Branch into Master (or Main)**: + - git merge dev + +6. **Resolve Any Merge Conflicts (If They Arise)**: + - Open conflicted files in a text editor and resolve conflicts. + - After resolving conflicts, add the resolved files: + - git add + +7. **Complete the Merge if There Were Conflicts**: + - git commit + +8. **Push the Changes to the Remote Repository**: + - git push origin master (git push origin main) diff --git a/documentation/Best Practices of Ontology Development.docx b/documentation/user-guides/Best Practices of Ontology Development.docx similarity index 100% rename from documentation/Best Practices of Ontology Development.docx rename to documentation/user-guides/Best Practices of Ontology Development.docx diff --git a/documentation/CCO Getting Started Guide.docx b/documentation/user-guides/CCO Getting Started Guide.docx similarity index 100% rename from documentation/CCO Getting Started Guide.docx rename to documentation/user-guides/CCO Getting Started Guide.docx diff --git a/documentation/user-guides/Common Core Ontologies 2024.pdf b/documentation/user-guides/Common Core Ontologies 2024.pdf new file mode 100644 index 0000000..fdf19a9 Binary files /dev/null and b/documentation/user-guides/Common Core Ontologies 2024.pdf differ diff --git a/imports/Readme.md b/imports/Readme.md deleted file mode 100644 index 69502da..0000000 --- a/imports/Readme.md +++ /dev/null @@ -1,4 +0,0 @@ -## Important Note -The Relations Ontology is no longer used. See here (ADD LINK) - -TODO: Add brief summary diff --git a/imports/bfo-core.ttl b/imports/bfo-core.ttl deleted file mode 100644 index b58a604..0000000 --- a/imports/bfo-core.ttl +++ /dev/null @@ -1,1227 +0,0 @@ -@prefix : . -@prefix dc: . -@prefix owl: . -@prefix rdf: . -@prefix xml: . -@prefix xsd: . -@prefix dc11: . -@prefix rdfs: . -@prefix skos: . -@base . - - rdf:type owl:Ontology ; - owl:versionIRI ; - dc11:contributor "Alan Ruttenberg" , - "Albert Goldfain" , - "Barry Smith" , - "Bill Duncan" , - "Bjoern Peters" , - "Chris Mungall" , - "David Osumi-Sutherland" , - "Fabian Neuhaus" , - "James A. Overton" , - "Janna Hastings" , - "Jie Zheng" , - "John Beverley" , - "Jonathan Bona" , - "Larry Hunter" , - "Leonard Jacuzzo" , - "Ludger Jansen" , - "Mark Jensen" , - "Mark Ressler" , - "Mathias Brochhausen" , - "Mauricio Almeida" , - "Melanie Courtot" , - "Neil Otte" , - "Pierre Grenon" , - "Randall Dipert" , - "Robert Rovetto" , - "Ron Rudnicki" , - "Stefan Schulz" , - "Thomas Bittner" , - "Werner Ceusters" , - "Yongqun \"Oliver\" He" ; - dc:description "Basic Formal Ontology implemented in the Web Ontology Language (OWL 2) with direct semantics."@en ; - dc:license ; - dc:title "BFO 2020" ; - rdfs:comment "The most recent version of this file will always be in the GitHub repository https://github.com/bfo-ontology/bfo-2020" . - -################################################################# -# Annotation properties -################################################################# - -### http://purl.org/dc/elements/1.1/contributor -dc11:contributor rdf:type owl:AnnotationProperty . - - -### http://purl.org/dc/elements/1.1/identifier -dc11:identifier rdf:type owl:AnnotationProperty . - - -### http://purl.org/dc/elements/1.1/license -dc11:license rdf:type owl:AnnotationProperty . - - -### http://purl.org/dc/terms/description -dc:description rdf:type owl:AnnotationProperty . - - -### http://purl.org/dc/terms/license -dc:license rdf:type owl:AnnotationProperty . - - -### http://purl.org/dc/terms/title -dc:title rdf:type owl:AnnotationProperty . - - -### http://www.w3.org/2004/02/skos/core#altLabel -skos:altLabel rdf:type owl:AnnotationProperty . - - -### http://www.w3.org/2004/02/skos/core#definition -skos:definition rdf:type owl:AnnotationProperty . - - -### http://www.w3.org/2004/02/skos/core#example -skos:example rdf:type owl:AnnotationProperty . - - -### http://www.w3.org/2004/02/skos/core#prefLabel -skos:prefLabel rdf:type owl:AnnotationProperty . - - -### http://www.w3.org/2004/02/skos/core#scopeNote -skos:scopeNote rdf:type owl:AnnotationProperty . - - -################################################################# -# Object Properties -################################################################# - -### http://purl.obolibrary.org/obo/BFO_0000054 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "206-BFO" ; - rdfs:label "has realization"@en ; - skos:altLabel "realized in"@en ; - skos:definition "b has realization c =Def c realizes b"@en ; - skos:example "As for realizes"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000055 - rdf:type owl:ObjectProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "059-BFO" ; - rdfs:label "realizes"@en ; - skos:definition "(Elucidation) realizes is a relation between a process b and realizable entity c such that c inheres in some d & for all t, if b has participant d then c exists & the type instantiated by b is correlated with the type instantiated by c"@en ; - skos:example "A balding process realizes a disposition to go bald; a studying process realizes a student role; a process of pumping blood realizes the pumping function of a heart"@en . - -### http://purl.obolibrary.org/obo/BFO_0000056 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdfs:domain [ rdf:type owl:Class ; - owl:unionOf ( - - [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] - ) - ] ; - rdfs:range ; - dc11:identifier "250-BFO" ; - rdfs:label "participates in"@en ; - skos:definition "(Elucidation) participates in holds between some b that is either a specifically dependent continuant or generically dependent continuant or independent continuant that is not a spatial region & some process p such that b participates in p some way"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000057 - rdf:type owl:ObjectProperty ; - rdfs:domain ; - rdfs:range [ rdf:type owl:Class ; - owl:unionOf ( - - [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] - ) - ] ; - dc11:identifier "248-BFO" ; - rdfs:label "has participant"@en ; - skos:definition "p has participant c =Def c participates in p"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000058 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdfs:domain ; - rdfs:range [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] ; - dc11:identifier "258-BFO" ; - rdfs:label "is concretized by"@en ; - skos:definition "c is concretized by b =Def b concretizes c"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000059 - rdf:type owl:ObjectProperty ; - rdfs:domain [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] ; - rdfs:range ; - dc11:identifier "256-BFO" ; - rdfs:label "concretizes"@en ; - skos:definition "b concretizes c =Def b is a process or a specifically dependent continuant & c is a generically dependent continuant & there is some time t such that c is the pattern or content which b shares at t with actual or potential copies"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000062 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdf:type owl:TransitiveProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "213-BFO" ; - rdfs:label "preceded by"@en ; - skos:definition "b preceded by c =Def b precedes c"@en ; - skos:example "The temporal region occupied by the second half of the match is preceded by the temporal region occupied by the first half of the match"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000063 - rdf:type owl:ObjectProperty , - owl:TransitiveProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "270-BFO" ; - rdfs:label "precedes"@en ; - skos:definition "(Elucidation) precedes is a relation between occurrents o, o' such that if t is the temporal extent of o & t' is the temporal extent of o' then either the last instant of o is before the first instant of o' or the last instant of o is the first instant of o' & neither o nor o' are temporal instants"@en ; - skos:example "The temporal region occupied by Mary's birth precedes the temporal region occupied by Mary's death."@en ; - skos:scopeNote "Each temporal region is its own temporal extent. The temporal extent of a spatiotemporal region is the temporal region it temporally projects onto. The temporal extent of a process or process boundary that occupies temporal region t is t." , - "Precedes defines a strict partial order on occurrents." . - - -### http://purl.obolibrary.org/obo/BFO_0000066 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdfs:domain [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] ; - rdfs:range [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] ; - dc11:identifier "143-BFO" ; - rdfs:label "occurs in"@en ; - skos:definition "b occurs in c =Def b is a process or a process boundary & c is a material entity or site & there exists a spatiotemporal region r & b occupies spatiotemporal region r & for all time t, if b exists at t then c exists at t & there exist spatial regions s and s' where b spatially projects onto s at t & c occupies spatial region s' at t & s is a continuant part of s' at t"@en ; - skos:example "A process of digestion occurs in the interior of an organism; a process of loading artillery rounds into a tank cannon occurs in the interior of the tank"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000084 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdfs:domain ; - rdfs:range [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] ; - dc11:identifier "252-BFO" ; - rdfs:label "generically depends on"@en ; - skos:altLabel "g-depends on"@en ; - skos:definition "b generically depends on c =Def b is a generically dependent continuant & c is an independent continuant that is not a spatial region & at some time t there inheres in c a specifically dependent continuant which concretizes b at t"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000101 - rdf:type owl:ObjectProperty ; - rdfs:domain [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] ; - rdfs:range ; - dc11:identifier "254-BFO" ; - rdfs:label "is carrier of"@en ; - skos:definition "b is carrier of c =Def there is some time t such that c generically depends on b at t"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000108 - rdf:type owl:ObjectProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "118-BFO" ; - rdfs:label "exists at"@en ; - skos:definition "(Elucidation) exists at is a relation between a particular and some temporal region at which the particular exists"@en ; - skos:example "First World War exists at 1914-1916; Mexico exists at January 1, 2000"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000115 - rdf:type owl:ObjectProperty ; - rdfs:subPropertyOf ; - owl:inverseOf ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "230-BFO" ; - rdfs:label "has member part"@en ; - skos:definition "b has member part c =Def c member part of b"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000117 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdf:type owl:TransitiveProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "202-BFO" ; - rdfs:label "has occurrent part"@en ; - skos:definition "b has occurrent part c =Def c occurrent part of b"@en ; - skos:example "Mary's life has occurrent part Mary's 5th birthday"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000121 - rdf:type owl:ObjectProperty ; - rdfs:subPropertyOf ; - owl:inverseOf ; - rdf:type owl:TransitiveProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "211-BFO" ; - rdfs:label "has temporal part"@en ; - skos:definition "b has temporal part c =Def c temporal part of b"@en ; - skos:example "Your life has temporal part the first year of your life"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000124 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdfs:domain [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] ; - rdfs:range [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] ; - dc11:identifier "236-BFO" ; - rdfs:label "location of"@en ; - skos:definition "b location of c =Def c located in b"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000127 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "244-BFO" ; - rdfs:label "material basis of"@en ; - skos:definition "b material basis of c =Def c has material basis b"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000129 - rdf:type owl:ObjectProperty ; - rdfs:subPropertyOf ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "228-BFO" ; - rdfs:label "member part of"@en ; - skos:definition "b member part of c =Def b is an object & c is a material entity & there is some time t such that b continuant part of c at t & there is a mutually exhaustive and pairwise disjoint partition of c into objects x1, ..., xn (for some n ≠ 1) with b = xi (for some 1 <= i <= n)"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000132 - rdf:type owl:ObjectProperty , - owl:TransitiveProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "003-BFO" ; - rdfs:label "occurrent part of"@en ; - skos:definition "(Elucidation) occurrent part of is a relation between occurrents b and c when b is part of c"@en ; - skos:example "Mary's 5th birthday is an occurrent part of Mary's life; the first set of the tennis match is an occurrent part of the tennis match"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000139 - rdf:type owl:ObjectProperty ; - rdfs:subPropertyOf ; - rdf:type owl:TransitiveProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "078-BFO" ; - rdfs:label "temporal part of"@en ; - skos:definition "b temporal part of c =Def b occurrent part of c & (b and c are temporal regions) or (b and c are spatiotemporal regions & b temporally projects onto an occurrent part of the temporal region that c temporally projects onto) or (b and c are processes or process boundaries & b occupies a temporal region that is an occurrent part of the temporal region that c occupies)"@en ; - skos:example "Your heart beating from 4pm to 5pm today is a temporal part of the process of your heart beating; the 4th year of your life is a temporal part of your life, as is the process boundary which separates the 3rd and 4th years of your life; the first quarter of a game of football is a temporal part of the whole game"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000153 - rdf:type owl:ObjectProperty , - owl:FunctionalProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "080-BFO" ; - rdfs:label "temporally projects onto"@en ; - skos:definition "(Elucidation) temporally projects onto is a relation between a spatiotemporal region s and some temporal region which is the temporal extent of s"@en ; - skos:example "The world line of a particle temporally projects onto the temporal region extending from the beginning to the end of the existence of the particle"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000171 - rdf:type owl:ObjectProperty ; - rdfs:domain [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] ; - rdfs:range [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] ; - dc11:identifier "234-BFO" ; - rdfs:label "located in"@en ; - skos:definition "b located in c =Def b is an independent continuant & c is an independent & neither is a spatial region & there is some time t such that the spatial region which b occupies at t is continuant part of the spatial region which c occupies at t"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000176 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "221-BFO" ; - rdfs:label "continuant part of"@en ; - skos:definition "b continuant part of c =Def b and c are continuants & there is some time t such that b and c exist at t & b continuant part of c at t"@en ; - skos:example "Milk teeth continuant part of human; surgically removed tumour continuant part of organism"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000178 - rdf:type owl:ObjectProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "271-BFO" ; - rdfs:label "has continuant part"@en ; - skos:definition "b has continuant part c =Def c continuant part of b"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000183 - rdf:type owl:ObjectProperty ; - rdfs:domain [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] ; - rdfs:range [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] ; - dc11:identifier "267-BFO" ; - rdfs:label "environs"@en ; - skos:altLabel "contains process"@en ; - skos:definition "b environs c =Def c occurs in b"@en ; - skos:example "Mouth environs process of mastication; city environs traffic"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000184 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdf:type owl:FunctionalProperty , - owl:InverseFunctionalProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "144-BFO" ; - rdfs:label "history of"@en ; - skos:definition "(Elucidation) history of is a relation between history b and material entity c such that b is the unique history of c"@en ; - skos:example "This life is the history of this organism"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000185 - rdf:type owl:ObjectProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "145-BFO" ; - rdfs:label "has history"@en ; - skos:definition "b has history c =Def c history of b"@en ; - skos:example "This organism has history this life"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000194 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdfs:domain [ rdf:type owl:Class ; - owl:unionOf ( - [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] - ) - ] ; - rdfs:range ; - dc11:identifier "260-BFO" ; - rdfs:label "specifically depended on by"@en ; - skos:altLabel "s-depended on by"@en ; - skos:definition "b specifically depended on by c =Def c specifically depends on b"@en ; - skos:example "Coloured object specifically depended on by colour"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000195 - rdf:type owl:ObjectProperty ; - rdfs:domain ; - rdfs:range [ rdf:type owl:Class ; - owl:unionOf ( - [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] - ) - ] ; - dc11:identifier "012-BFO" ; - rdfs:label "specifically depends on"@en ; - skos:altLabel "s-depends on"@en ; - skos:definition "(Elucidation) specifically depends on is a relation between a specifically dependent continuant b and specifically dependent continuant or independent continuant that is not a spatial region c such that b and c share no parts in common & b is of a nature such that at all times t it cannot exist unless c exists & b is not a boundary of c"@en ; - skos:example "A shape specifically depends on the shaped object; hue, saturation and brightness of a colour sample specifically depends on each other"@en ; - skos:scopeNote "The analogue of specifically depends on for occurrents is has participant."@en . - - -### http://purl.obolibrary.org/obo/BFO_0000196 - rdf:type owl:ObjectProperty ; - rdfs:subPropertyOf ; - owl:inverseOf ; - rdfs:domain [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] ; - rdfs:range ; - dc11:identifier "053-BFO" ; - rdfs:label "bearer of"@en ; - skos:definition "b bearer of c =Def c inheres in b"@en ; - skos:example "A patch of ink is the bearer of a colour quality; an organism is the bearer of a temperature quality"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000197 - rdf:type owl:ObjectProperty ; - rdfs:subPropertyOf ; - rdfs:domain ; - rdfs:range [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] ; - dc11:identifier "051-BFO" ; - rdfs:label "inheres in"@en ; - skos:definition "b inheres in c =Def b is a specifically dependent continuant & c is an independent continuant that is not a spatial region & b specifically depends on c"@en ; - skos:example "A shape inheres in a shaped object; a mass inheres in a material entity"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000199 - rdf:type owl:ObjectProperty , - owl:FunctionalProperty ; - rdfs:domain [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] ; - rdfs:range ; - dc11:identifier "132-BFO" ; - rdfs:label "occupies temporal region"@en ; - skos:definition "p occupies temporal region t =Def p is a process or process boundary & the spatiotemporal region occupied by p temporally projects onto t"@en ; - skos:example "The Second World War occupies the temporal region September 1, 1939 - September 2, 1945"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000200 - rdf:type owl:ObjectProperty , - owl:FunctionalProperty ; - rdfs:domain [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] ; - rdfs:range ; - dc11:identifier "082-BFO" ; - rdfs:label "occupies spatiotemporal region"@en ; - skos:definition "(Elucidation) occupies spatiotemporal region is a relation between a process or process boundary p and the spatiotemporal region s which is its spatiotemporal extent"@en ; - skos:example "A particle emitted by a nuclear reactor occupies the spatiotemporal region which is its trajectory"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000210 - rdf:type owl:ObjectProperty ; - rdfs:domain [ owl:intersectionOf ( - [ rdf:type owl:Class ; - owl:complementOf - ] - ) ; - rdf:type owl:Class - ] ; - rdfs:range ; - dc11:identifier "232-BFO" ; - rdfs:label "occupies spatial region"@en ; - skos:definition "b occupies spatial region r =Def b is an independent continuant that is not a spatial region & r is a spatial region & there is some time t such that every continuant part of b occupies some continuant part of r at t and no continuant part of b occupies any spatial region that is not a continuant part of r at t"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000216 - rdf:type owl:ObjectProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "246-BFO" ; - rdfs:label "spatially projects onto"@en ; - skos:definition "(Elucidation) spatially projects onto is a relation between some spatiotemporal region b and spatial region c such that at some time t, c is the spatial extent of b at t"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000218 - rdf:type owl:ObjectProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "242-BFO" ; - rdfs:label "has material basis"@en ; - skos:definition "b has material basis c =Def b is a disposition & c is a material entity & there is some d bearer of b & there is some time t such that c is a continuant part of d at t & d has disposition b because c is a continuant part of d at t"@en ; - skos:scopeNote "Users that require more sophisticated representations of time are encouraged to import a temporal extension of BFO-Core provided by the BFO development team. See documentation for guidance: "@en . - - -### http://purl.obolibrary.org/obo/BFO_0000221 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "268-BFO" ; - rdfs:label "first instant of"@en ; - skos:definition "t first instant of t' =Def t is a temporal instant & t' is a temporal region t' & t precedes all temporal parts of t' other than t"@en ; - skos:example "An hour starting at midnight yesterday has first instant midnight yesterday"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000222 - rdf:type owl:ObjectProperty , - owl:FunctionalProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "261-BFO" ; - rdfs:label "has first instant"@en ; - skos:definition "t has first instant t' =Def t' first instant of t"@en ; - skos:example "The first hour of a year has first instant midnight on December 31"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000223 - rdf:type owl:ObjectProperty ; - owl:inverseOf ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "269-BFO" ; - rdfs:label "last instant of"@en ; - skos:definition "t last instant of t' =Def t is a temporal instant & t' is a temporal region & all temporal parts of t' other than t precede t"@en ; - skos:example "Last midnight is the last instant of yesterday"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000224 - rdf:type owl:ObjectProperty , - owl:FunctionalProperty ; - rdfs:domain ; - rdfs:range ; - dc11:identifier "215-BFO" ; - rdfs:label "has last instant"@en ; - skos:definition "t has last instant t' =Def t' last instant of t"@en ; - skos:example "The last hour of a year has last instant midnight December 31"@en . - - -################################################################# -# Classes -################################################################# - -### http://purl.obolibrary.org/obo/BFO_0000001 - rdf:type owl:Class ; - dc11:identifier "001-BFO" ; - rdfs:label "entity"@en ; - skos:definition "(Elucidation) An entity is anything that exists or has existed or will exist"@en ; - skos:example "Julius Caesar; the Second World War; your body mass index; Verdi's Requiem"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000002 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - owl:disjointWith ; - dc11:identifier "008-BFO" ; - rdfs:label "continuant"@en ; - skos:definition "(Elucidation) A continuant is an entity that persists, endures, or continues to exist through time while maintaining its identity"@en ; - skos:example "A human being; a tennis ball; a cave; a region of space; someone's temperature"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000003 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "077-BFO" ; - rdfs:label "occurrent"@en ; - skos:definition "(Elucidation) An occurrent is an entity that unfolds itself in time or it is the start or end of such an entity or it is a temporal or spatiotemporal region"@en ; - skos:example "As for process, history, process boundary, spatiotemporal region, zero-dimensional temporal region, one-dimensional temporal region, temporal interval, temporal instant."@en . - - -### http://purl.obolibrary.org/obo/BFO_0000004 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "017-BFO" ; - rdfs:label "independent continuant"@en ; - skos:definition "b is an independent continuant =Def b is a continuant & there is no c such that b specifically depends on c or b generically depends on c"@en ; - skos:example "An atom; a molecule; an organism; a heart; a chair; the bottom right portion of a human torso; a leg; the interior of your mouth; a spatial region; an orchestra"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000006 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "035-BFO" ; - rdfs:label "spatial region"@en ; - skos:definition "(Elucidation) A spatial region is a continuant entity that is a continuant part of the spatial projection of a portion of spacetime at a given time"@en ; - skos:example "As for zero-dimensional spatial region, one-dimensional spatial region, two-dimensional spatial region, three-dimensional spatial region"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000008 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "100-BFO" ; - rdfs:label "temporal region"@en ; - skos:definition "(Elucidation) A temporal region is an occurrent over which processes can unfold"@en ; - skos:example "As for zero-dimensional temporal region and one-dimensional temporal region"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000009 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom [ rdf:type owl:Class ; - owl:unionOf ( - - - ) - ] - ] ; - dc11:identifier "039-BFO" ; - rdfs:label "two-dimensional spatial region"@en ; - skos:definition "(Elucidation) A two-dimensional spatial region is a spatial region that is a whole consisting of a surface together with zero or more surfaces which may have spatial regions of lower dimension as parts"@en ; - skos:example "The surface of a sphere-shaped part of space; an infinitely thin plane in space"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000011 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "095-BFO" ; - rdfs:label "spatiotemporal region"@en ; - skos:definition "(Elucidation) A spatiotemporal region is an occurrent that is an occurrent part of spacetime"@en ; - skos:example "The spatiotemporal region occupied by the development of a cancer tumour; the spatiotemporal region occupied by an orbiting satellite"@en ; - skos:scopeNote "'Spacetime' here refers to the maximal instance of the universal spatiotemporal region."@en . - - -### http://purl.obolibrary.org/obo/BFO_0000015 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "083-BFO" ; - rdfs:label "process"@en ; - skos:altLabel "event"@en ; - skos:definition "(Elucidation) p is a process means p is an occurrent that has some temporal proper part and for some time t, p has some material entity as participant"@en ; - skos:example "An act of selling; the life of an organism; a process of sleeping; a process of cell-division; a beating of the heart; a process of meiosis; the taxiing of an aircraft; the programming of a computer"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000016 - rdf:type owl:Class ; - rdfs:subClassOf ; - owl:disjointWith ; - dc11:identifier "062-BFO" ; - rdfs:label "disposition"@en ; - skos:altLabel "internally-grounded realizable entity"@en ; - skos:definition "(Elucidation) A disposition b is a realizable entity such that if b ceases to exist then its bearer is physically changed & b's realization occurs when and because this bearer is in some special physical circumstances & this realization occurs in virtue of the bearer's physical make-up"@en ; - skos:example "An atom of element X has the disposition to decay to an atom of element Y; the cell wall is disposed to transport cellular material through endocytosis and exocytosis; certain people have a predisposition to colon cancer; children are innately disposed to categorize objects in certain ways"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000017 - rdf:type owl:Class ; - rdfs:subClassOf ; - owl:disjointWith ; - dc11:identifier "058-BFO" ; - rdfs:label "realizable entity"@en ; - skos:definition "(Elucidation) A realizable entity is a specifically dependent continuant that inheres in some independent continuant which is not a spatial region & which is of a type some instances of which are realized in processes of a correlated type"@en ; - skos:example "The role of being a doctor; the role of this boundary to delineate where Utah and Colorado meet; the function of your reproductive organs; the disposition of your blood to coagulate; the disposition of this piece of metal to conduct electricity"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000018 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "037-BFO" ; - rdfs:label "zero-dimensional spatial region"@en ; - skos:definition "(Elucidation) A zero-dimensional spatial region is one or a collection of more than one spatially disjoint points in space"@en ; - skos:example "The spatial region occupied at some time instant by the North Pole"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000019 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "055-BFO" ; - rdfs:label "quality"@en ; - skos:definition "(Elucidation) A quality is a specifically dependent continuant that, in contrast to roles and dispositions, does not require any further process in order to be realized"@en ; - skos:example "The colour of a tomato; the ambient temperature of this portion of air; the length of the circumference of your waist; the shape of your nose; the shape of your nostril; the mass of this piece of gold"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000020 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "050-BFO" ; - rdfs:label "specifically dependent continuant"@en ; - skos:definition "b is a specifically dependent continuant =Def b is a continuant & there is some independent continuant c which is not a spatial region & which is such that b specifically depends on c"@en ; - skos:example "(with 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 , - "(with one bearer) The mass of this tomato; the pink colour of a medium rare piece of grilled filet mignon at its centre; the smell of this portion of mozzarella; the disposition of this fish to decay; the role of being a doctor; the function of this heart to pump blood; the shape of this hole"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000023 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "061-BFO" ; - rdfs:label "role"@en ; - skos:altLabel "externally-grounded realizable entity"@en ; - skos:definition "(Elucidation) A role b is a realizable entity such that b exists because there is some single bearer that is in some special physical, social, or institutional set of circumstances in which this bearer does not have to be & b is not such that, if it ceases to exist, then the physical make-up of the bearer is thereby changed"@en ; - skos:example "The priest role; the student role; the role of subject in a clinical trial; the role of a stone in marking a property boundary; the role of a boundary to demarcate two neighbouring administrative territories; the role of a building in serving as a military target"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000024 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "027-BFO" ; - rdfs:label "fiat object part"@en ; - skos:definition "(Elucidation) A fiat object part b is a material entity & such that if b exists then it is continuant part of some object c & demarcated from the remainder of c by one or more fiat surfaces"@en ; - skos:example "The upper and lower lobes of the left lung; the dorsal and ventral surfaces of the body; the Western hemisphere of the Earth; the FMA:regional parts of an intact human body"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000026 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] - ] ; - dc11:identifier "038-BFO" ; - rdfs:label "one-dimensional spatial region"@en ; - skos:definition "(Elucidation) A one-dimensional spatial region is a whole consisting of a line together with zero or more lines which may have points as parts"@en ; - skos:example "An edge of a cube-shaped portion of space; a line connecting two points; two parallel lines extended in space"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000027 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "025-BFO" ; - rdfs:label "object aggregate"@en ; - skos:definition "(Elucidation) An object aggregate is a material entity consisting exactly of a plurality (≥1) of objects as member parts which together form a unit"@en ; - skos:example "The aggregate of the musicians in a symphony orchestra and their instruments; the aggregate of bearings in a constant velocity axle joint; the nitrogen atoms in the atmosphere; a collection of cells in a blood biobank"@en ; - skos:scopeNote "'Exactly' means that there are no parts of the object aggregate other than its member parts." , - "The unit can, at certain times, consist of exactly one object, for example, when a wolf litter loses all but one of its pups, but it must at some time have a plurality of member parts." . - - -### http://purl.obolibrary.org/obo/BFO_0000028 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "040-BFO" ; - rdfs:label "three-dimensional spatial region"@en ; - skos:definition "(Elucidation) A three-dimensional spatial region is a whole consisting of a spatial volume together with zero or more spatial volumes which may have spatial regions of lower dimension as parts"@en ; - skos:example "A cube-shaped region of space; a sphere-shaped region of space; the region of space occupied by all and only the planets in the solar system at some point in time"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000029 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "034-BFO" ; - rdfs:label "site"@en ; - skos:definition "(Elucidation) A site is a three-dimensional immaterial entity whose boundaries either (partially or wholly) coincide with the boundaries of one or more material entities or have locations determined in relation to some material entity"@en ; - skos:example "A hole in a portion of cheese; a rabbit hole; the Grand Canyon; the Piazza San Marco; the kangaroo-joey-containing hole of a kangaroo pouch; your left nostril (a fiat part - the opening - of your left nasal cavity); the lumen of your gut; the hold of a ship; the interior of the trunk of your car; hole in an engineered floor joist"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000030 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "024-BFO" ; - rdfs:label "object"@en ; - skos:definition "(Elucidation) An object is a material entity which manifests causal unity & is of a type instances of which are maximal relative to the sort of causal unity manifested"@en ; - skos:example "An organism; a fish tank; a planet; a laptop; a valve; a block of marble; an ice cube"@en ; - skos:scopeNote "A description of three primary sorts of causal unity is provided in Basic Formal Ontology 2.0. Specification and User Guide"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000031 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "074-BFO" ; - rdfs:label "generically dependent continuant"@en ; - skos:altLabel "g-dependent continuant"@en ; - skos:definition "(Elucidation) A generically dependent continuant is an entity that exists in virtue of the fact that there is at least one of what may be multiple copies which is the content or the pattern that multiple copies would share"@en ; - skos:example "The pdf file on your laptop; the pdf file that is a copy thereof on my laptop; the sequence of this protein molecule; the sequence that is a copy thereof in that protein molecule; the content that is shared by a string of dots and dashes written on a page and the transmitted Morse code signal; the content of a sentence; an engineering blueprint"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000034 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "064-BFO" ; - rdfs:label "function"@en ; - skos:definition "(Elucidation) A function is a disposition that exists in virtue of its bearer's physical make-up & this physical make-up is something the bearer possesses because it came into being either through evolution (in the case of natural biological entities) or through intentional design (in the case of artefacts) in order to realize processes of a certain sort"@en ; - skos:example "The function of a hammer to drive in nails; the function of a heart pacemaker to regulate the beating of a heart through electricity"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000035 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] - ] ; - dc11:identifier "084-BFO" ; - rdfs:label "process boundary"@en ; - skos:definition "p is a process boundary =Def p is a temporal part of a process & p has no proper temporal parts"@en ; - skos:example "The boundary between the 2nd and 3rd year of your life"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000038 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - owl:disjointWith ; - dc11:identifier "103-BFO" ; - rdfs:label "one-dimensional temporal region"@en ; - skos:definition "(Elucidation) A one-dimensional temporal region is a temporal region that is a whole that has a temporal interval and zero or more temporal intervals and temporal instants as parts"@en ; - skos:example "The temporal region during which a process occurs"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000040 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom [ rdf:type owl:Class ; - owl:unionOf ( - - - ) - ] - ] ; - owl:disjointWith ; - dc11:identifier "019-BFO" ; - rdfs:label "material entity"@en ; - skos:definition "(Elucidation) A material entity is an independent continuant has some portion of matter as continuant part"@en ; - skos:example "A human being; the undetached arm of a human being; an aggregate of human beings"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000140 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "029-BFO" ; - rdfs:label "continuant fiat boundary"@en ; - skos:definition "(Elucidation) A continuant fiat boundary b is an immaterial entity that is of zero, one or two dimensions & such that there is no time t when b has a spatial region as continuant part & whose location is determined in relation to some material entity"@en ; - skos:example "As for fiat point, fiat line, fiat surface"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000141 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "028-BFO" ; - rdfs:label "immaterial entity"@en ; - skos:definition "b is an immaterial entity =Def b is an independent continuant which is such that there is no time t when it has a material entity as continuant part"@en ; - skos:example "As for fiat point, fiat line, fiat surface, site"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000142 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom [ rdf:type owl:Class ; - owl:unionOf ( - - ) - ] - ] ; - dc11:identifier "032-BFO" ; - rdfs:label "fiat line"@en ; - skos:definition "(Elucidation) A fiat line is a one-dimensional continuant fiat boundary that is continuous"@en ; - skos:example "The Equator; all geopolitical boundaries; all lines of latitude and longitude; the median sulcus of your tongue; the line separating the outer surface of the mucosa of the lower lip from the outer surface of the skin of the chin"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000145 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "057-BFO" ; - rdfs:label "relational quality"@en ; - skos:definition "b is a relational quality =Def b is a quality & there exists c and d such that c and d are not identical & b specifically depends on c & b specifically depends on d"@en ; - skos:example "A marriage bond; an instance of love; an obligation between one person and another"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000146 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "033-BFO" ; - rdfs:label "fiat surface"@en ; - skos:definition "(Elucidation) A fiat surface is a two-dimensional continuant fiat boundary that is self-connected"@en ; - skos:example "The surface of the Earth; the plane separating the smoking from the non-smoking zone in a restaurant"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000147 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "031-BFO" ; - rdfs:label "fiat point"@en ; - skos:definition "(Elucidation) A fiat point is a zero-dimensional continuant fiat boundary that consists of a single point"@en ; - skos:example "The geographic North Pole; the quadripoint where the boundaries of Colorado, Utah, New Mexico and Arizona meet; the point of origin of some spatial coordinate system"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000148 - rdf:type owl:Class ; - rdfs:subClassOf , - [ rdf:type owl:Restriction ; - owl:onProperty ; - owl:allValuesFrom - ] ; - dc11:identifier "102-BFO" ; - rdfs:label "zero-dimensional temporal region"@en ; - skos:definition "(Elucidation) A zero-dimensional temporal region is a temporal region that is a whole consisting of one or more separated temporal instants as parts"@en ; - skos:example "A temporal region that is occupied by a process boundary; the moment at which a finger is detached in an industrial accident"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000182 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "138-BFO" ; - rdfs:label "history"@en ; - skos:definition "(Elucidation) A history is a process that is the sum of the totality of processes taking place in the spatiotemporal region occupied by the material part of a material entity"@en ; - skos:example "The life of an organism from the beginning to the end of its existence"@en . - - -### http://purl.obolibrary.org/obo/BFO_0000202 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "155-BFO" ; - rdfs:label "temporal interval"@en ; - skos:definition "(Elucidation) A temporal interval is a one-dimensional temporal region that is continuous, thus without gaps or breaks"@en ; - skos:example "The year 2018."@en ; - skos:scopeNote "A one-dimensional temporal region can include as parts not only temporal intervals but also temporal instants separated from other parts by gaps."@en . - - -### http://purl.obolibrary.org/obo/BFO_0000203 - rdf:type owl:Class ; - rdfs:subClassOf ; - dc11:identifier "209-BFO" ; - rdfs:label "temporal instant"@en ; - skos:definition "(Elucidation) A temporal instant is a zero-dimensional temporal region that has no proper temporal part"@en ; - skos:example "The millennium"@en . - - -################################################################# -# General axioms -################################################################# - -[ rdf:type owl:AllDisjointClasses ; - owl:members ( - - - ) -] . - - -[ rdf:type owl:AllDisjointClasses ; - owl:members ( - - - ) -] . - - -[ rdf:type owl:AllDisjointClasses ; - owl:members ( - - - - ) -] . - - -[ rdf:type owl:AllDisjointClasses ; - owl:members ( - - - - ) -] . - - -[ rdf:type owl:AllDisjointClasses ; - owl:members ( - - - ) -] . - - -### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..208cfbe --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: /documentation/images/ +Disallow: /archive/ +Disallow: /workflow/ \ No newline at end of file diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..5fb8c49 --- /dev/null +++ b/src/README.md @@ -0,0 +1,23 @@ +# CCO Source Files + +This directory contains versions of CCO, its modules, and extensions. + +## The Contents of this Repository + +* **cco-merged** - Contains the current CCO merged release file and an import file that is used to generate the merged CCO file. +* **cco extensions** - Contains versions of CCO extensions maintained by the governance board, such as the Modal Relations Ontology. +* **cco-modules** - Contains versions of the 11 CCO modules listed below: + +| Ontology Name | Description | +|------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------| +| **Geospatial Ontology** | An ontology whose scope is the representation of sites, spatial regions, and other entities, especially those that are located near the surface of Earth, as well as the relations that hold between them. | +| **Information Entity Ontology** | An ontology whose scope is the representation of generic types of information as well as the relationships between information and other entities. | +| **Event Ontology** | An ontology whose scope is the representation of processual entities, especially those performed by agents, that occur within multiple domains. | +| **Time Ontology** | An ontology whose scope is the representation of temporal regions and the relations that hold between them. | +| **Agent Ontology** | An ontology whose scope is the representation of agents, especially persons and organizations, and their roles. | +| **Quality Ontology** | An ontology whose scope is the representation of a range of attributes of entities especially qualities, realizable entities, and process profiles. | +| **Units of Measure Ontology** | An ontology whose scope is the representation of standard measurement units that are used when measuring various attributes of entities. | +| **Currency Unit Ontology** | An ontology whose scope is the representation of currencies that are issued and used by countries. | +| **Facility Ontology** | An ontology whose scope is the representation of buildings and campuses that are designed to serve some specific purpose, and which are common to multiple domains. | +| **Artifact Ontology** | An ontology whose scope is the representation of artifacts that are common to multiple domains along with their models, specifications, and functions. | +| **Extended Relations Ontology** | An ontology whose scope is the representation of the relations that hold between entities at the level of the mid-level Common Core Ontologies. | diff --git a/ModalRelationOntology.ttl b/src/cco-extensions/ModalRelationOntology.ttl similarity index 99% rename from ModalRelationOntology.ttl rename to src/cco-extensions/ModalRelationOntology.ttl index bddbf3c..dd539de 100644 --- a/ModalRelationOntology.ttl +++ b/src/cco-extensions/ModalRelationOntology.ttl @@ -2921,4 +2921,4 @@ cco:InformationBearingEntity rdf:type owl:Class . cco:InformationContentEntity rdf:type owl:Class . -### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi +### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi \ No newline at end of file diff --git a/src/cco-extensions/README.md b/src/cco-extensions/README.md new file mode 100644 index 0000000..5bc5033 --- /dev/null +++ b/src/cco-extensions/README.md @@ -0,0 +1,7 @@ +# CCO Extensions + +This directory contains extensions of CCO. + +## The Contents of this Repository + +* **Modal Relations Ontology** - The file contains modal counterparts to the object and data properties contained in CCO files and the bfo-core file. \ No newline at end of file diff --git a/AllCoreOntology.ttl b/src/cco-merged/AllCoreOntology.ttl similarity index 100% rename from AllCoreOntology.ttl rename to src/cco-merged/AllCoreOntology.ttl diff --git a/cco-merged/MergedAllCoreOntology-v1.5-2024-02-14.ttl b/src/cco-merged/MergedAllCoreOntology-v1.5-2024-02-14.ttl similarity index 100% rename from cco-merged/MergedAllCoreOntology-v1.5-2024-02-14.ttl rename to src/cco-merged/MergedAllCoreOntology-v1.5-2024-02-14.ttl diff --git a/AgentOntology.ttl b/src/cco-modules/AgentOntology.ttl similarity index 99% rename from AgentOntology.ttl rename to src/cco-modules/AgentOntology.ttl index fcf7925..dcc6c40 100644 --- a/AgentOntology.ttl +++ b/src/cco-modules/AgentOntology.ttl @@ -2259,4 +2259,4 @@ cco:Village rdf:type owl:Class ; rdfs:label "Village"@en . -### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi +### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi \ No newline at end of file diff --git a/ArtifactOntology.ttl b/src/cco-modules/ArtifactOntology.ttl similarity index 99% rename from ArtifactOntology.ttl rename to src/cco-modules/ArtifactOntology.ttl index 06c47e1..d620f09 100644 --- a/ArtifactOntology.ttl +++ b/src/cco-modules/ArtifactOntology.ttl @@ -5077,4 +5077,4 @@ cco:XRayTelescope rdf:type owl:Class ; rdfs:label "X-ray Telescope"@en . -### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi +### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi \ No newline at end of file diff --git a/CurrencyUnitOntology.ttl b/src/cco-modules/CurrencyUnitOntology.ttl similarity index 100% rename from CurrencyUnitOntology.ttl rename to src/cco-modules/CurrencyUnitOntology.ttl diff --git a/EventOntology.ttl b/src/cco-modules/EventOntology.ttl similarity index 99% rename from EventOntology.ttl rename to src/cco-modules/EventOntology.ttl index e474080..2e16cee 100644 --- a/EventOntology.ttl +++ b/src/cco-modules/EventOntology.ttl @@ -3134,4 +3134,4 @@ cco:XrayFrequency rdf:type owl:Class ; rdfs:label "X-ray Frequency"@en . -### Generated by the OWL API (version 4.5.26.2023-07-17T20:34:13Z) https://github.com/owlcs/owlapi +### Generated by the OWL API (version 4.5.26.2023-07-17T20:34:13Z) https://github.com/owlcs/owlapi \ No newline at end of file diff --git a/ExtendedRelationOntology.ttl b/src/cco-modules/ExtendedRelationOntology.ttl similarity index 99% rename from ExtendedRelationOntology.ttl rename to src/cco-modules/ExtendedRelationOntology.ttl index 36c63ab..7ddb6d7 100644 --- a/ExtendedRelationOntology.ttl +++ b/src/cco-modules/ExtendedRelationOntology.ttl @@ -653,4 +653,4 @@ cco:role_of_aggregate rdf:type owl:ObjectProperty ; rdfs:label "role of aggregate"@en . -### Generated by the OWL API (version 4.5.25.2023-02-15T19:15:49Z) https://github.com/owlcs/owlapi +### Generated by the OWL API (version 4.5.25.2023-02-15T19:15:49Z) https://github.com/owlcs/owlapi \ No newline at end of file diff --git a/FacilityOntology.ttl b/src/cco-modules/FacilityOntology.ttl similarity index 99% rename from FacilityOntology.ttl rename to src/cco-modules/FacilityOntology.ttl index e8b69ca..e4dfaf5 100644 --- a/FacilityOntology.ttl +++ b/src/cco-modules/FacilityOntology.ttl @@ -842,4 +842,4 @@ cco:WindFarm rdf:type owl:Class ; rdfs:label "Wind Farm"@en . -### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi +### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi \ No newline at end of file diff --git a/GeospatialOntology.ttl b/src/cco-modules/GeospatialOntology.ttl similarity index 99% rename from GeospatialOntology.ttl rename to src/cco-modules/GeospatialOntology.ttl index 3a824a8..29bc56e 100644 --- a/GeospatialOntology.ttl +++ b/src/cco-modules/GeospatialOntology.ttl @@ -660,4 +660,4 @@ cco:zAxis rdf:type owl:Class ; rdfs:label "z-Axis"@en . -### Generated by the OWL API (version 4.5.25.2023-02-15T19:15:49Z) https://github.com/owlcs/owlapi +### Generated by the OWL API (version 4.5.25.2023-02-15T19:15:49Z) https://github.com/owlcs/owlapi \ No newline at end of file diff --git a/InformationEntityOntology.ttl b/src/cco-modules/InformationEntityOntology.ttl similarity index 100% rename from InformationEntityOntology.ttl rename to src/cco-modules/InformationEntityOntology.ttl diff --git a/QualityOntology.ttl b/src/cco-modules/QualityOntology.ttl similarity index 99% rename from QualityOntology.ttl rename to src/cco-modules/QualityOntology.ttl index f5d694c..82c9f11 100644 --- a/QualityOntology.ttl +++ b/src/cco-modules/QualityOntology.ttl @@ -965,4 +965,4 @@ cco:Yellow rdf:type owl:Class ; rdfs:label "Yellow"@en . -### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi +### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi \ No newline at end of file diff --git a/TimeOntology.ttl b/src/cco-modules/TimeOntology.ttl similarity index 100% rename from TimeOntology.ttl rename to src/cco-modules/TimeOntology.ttl diff --git a/UnitsOfMeasureOntology.ttl b/src/cco-modules/UnitsOfMeasureOntology.ttl similarity index 100% rename from UnitsOfMeasureOntology.ttl rename to src/cco-modules/UnitsOfMeasureOntology.ttl