Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
.DS_Store
semantic.cache
bin/
catalog-v001.xml

*.tmp
*.tmp.obo
Expand Down
1 change: 1 addition & 0 deletions docs/odk-workflows/RepositoryFileStructure.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ These are the current imports in OGMS
| iao | http://purl.obolibrary.org/obo/iao.owl | mirror |
| ido | http://purl.obolibrary.org/obo/ido.owl | filter |
| omo | http://purl.obolibrary.org/obo/omo.owl | mirror |
| cob | http://purl.obolibrary.org/obo/cob.owl | slme |
## Components
Components, in contrast to imports, are considered full members of the ontology. This means that any axiom in a component is also included in the ontology base - which means it is considered _native_ to the ontology. While this sounds complicated, consider this: conceptually, no component should be part of more than one ontology. If that seems to be the case, we are most likely talking about an import. Components are often not needed for ontologies, but there are some use cases:

Expand Down
12 changes: 10 additions & 2 deletions src/ontology/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
# 3. [Update repo to latest ODK](update_repo)

# Fingerprint of the configuration file when this Makefile was last generated
CONFIG_HASH= 04d4c89977807b1ad2521b6386e797df708e1d2805834dc0af9cc669ff68d53d
CONFIG_HASH= 1fc11db5bb385926b27aa9fa890f57825a32f749e19de3b6ec2c22720f272f95


# ----------------------------------------
Expand Down Expand Up @@ -194,7 +194,7 @@ all_main: $(MAIN_FILES)
# ----------------------------------------


IMPORTS = ro obi bfo iao ido omo
IMPORTS = ro obi bfo iao ido omo cob

IMPORT_ROOTS = $(patsubst %, $(IMPORTDIR)/%_import, $(IMPORTS))
IMPORT_OWL_FILES = $(foreach n,$(IMPORT_ROOTS), $(n).owl)
Expand Down Expand Up @@ -571,6 +571,14 @@ mirror-omo: | $(TMPDIR)
$(ROBOT) convert -i $(TMPDIR)/omo-download.owl -o $(TMPDIR)/$@.owl


## ONTOLOGY: cob
.PHONY: mirror-cob
.PRECIOUS: $(MIRRORDIR)/cob.owl
mirror-cob: | $(TMPDIR)
curl -L $(OBOBASE)/cob.owl --create-dirs -o $(TMPDIR)/cob-download.owl --retry 4 --max-time 200 && \
$(ROBOT) convert -i $(TMPDIR)/cob-download.owl -o $(TMPDIR)/$@.owl


$(MIRRORDIR)/%.owl: mirror-% | $(MIRRORDIR)
if [ -f $(TMPDIR)/mirror-$*.owl ]; then if cmp -s $(TMPDIR)/mirror-$*.owl $@ ; then echo "Mirror identical, ignoring."; else echo "Mirrors different, updating." &&\
cp $(TMPDIR)/mirror-$*.owl $@; fi; fi
Expand Down
1 change: 1 addition & 0 deletions src/ontology/catalog-v001.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@
<uri name="http://purl.obolibrary.org/obo/ogms/imports/iao_import.owl" uri="imports/iao_import.owl" />
<uri name="http://purl.obolibrary.org/obo/ogms/imports/ido_import.owl" uri="imports/ido_import.owl" />
<uri name="http://purl.obolibrary.org/obo/ogms/imports/omo_import.owl" uri="imports/omo_import.owl" />
<uri name="http://purl.obolibrary.org/obo/ogms/imports/cob_import.owl" uri="imports/cob_import.owl" />
</group>
</catalog>
89 changes: 87 additions & 2 deletions src/ontology/imports/bfo_import.owl

Large diffs are not rendered by default.

385 changes: 385 additions & 0 deletions src/ontology/imports/cob_import.owl

Large diffs are not rendered by default.

Empty file.
2 changes: 1 addition & 1 deletion src/ontology/imports/external_import.owl
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ Ontology(<http://purl.obolibrary.org/obo/ogms/external_import.owl>

Declaration(Class(<http://purl.obolibrary.org/obo/BFO_0000020>))
Declaration(Class(<http://purl.obolibrary.org/obo/BFO_0000040>))
Declaration(Class(<http://purl.obolibrary.org/obo/COB_0000022>))
Declaration(Class(<http://purl.obolibrary.org/obo/IAO_0000578>))
Declaration(Class(<http://purl.obolibrary.org/obo/IDO_0000504>))
Declaration(Class(<http://purl.obolibrary.org/obo/IDO_0000586>))
Declaration(Class(<http://purl.obolibrary.org/obo/IDO_0000630>))
Declaration(Class(<http://purl.obolibrary.org/obo/OBI_0000278>))
Declaration(Class(<http://purl.obolibrary.org/obo/OBI_0100026>))
Declaration(Class(<http://purl.obolibrary.org/obo/OBI_0200000>))
Declaration(Class(<http://purl.obolibrary.org/obo/OBI_0600052>))
Declaration(Class(owl:Thing))
Expand Down
4 changes: 2 additions & 2 deletions src/ontology/imports/iao_import.owl
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ Prefix(oboInOwl:=<http://www.geneontology.org/formats/oboInOwl#>)


Ontology(<http://purl.obolibrary.org/obo/ogms/imports/iao_import.owl>
<http://purl.obolibrary.org/obo/ogms/releases/2025-07-02/imports/iao_import.owl>
<http://purl.obolibrary.org/obo/ogms/releases/2026-01-31/imports/iao_import.owl>
Annotation(dc:source <http://purl.obolibrary.org/obo/iao/2022-11-07/iao.owl>)
Annotation(owl:versionInfo "2025-07-02")
Annotation(owl:versionInfo "2026-01-31")

Declaration(Class(obo:APOLLO_SV_00000008))
Declaration(Class(obo:APOLLO_SV_00000032))
Expand Down
6 changes: 4 additions & 2 deletions src/ontology/imports/ido_import.owl
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)


Ontology(<http://purl.obolibrary.org/obo/ogms/imports/ido_import.owl>
<http://purl.obolibrary.org/obo/ogms/releases/2025-07-02/imports/ido_import.owl>
<http://purl.obolibrary.org/obo/ogms/releases/2026-01-31/imports/ido_import.owl>
Annotation(<http://purl.org/dc/elements/1.1/source> <http://purl.obolibrary.org/obo/ido/2017-11-03/ido.owl>)
Annotation(owl:versionInfo "2025-07-02")
Annotation(owl:versionInfo "2026-01-31")

Declaration(Class(<http://purl.obolibrary.org/obo/BFO_0000040>))
Declaration(Class(<http://purl.obolibrary.org/obo/IDO_0000504>))
Declaration(Class(<http://purl.obolibrary.org/obo/IDO_0000586>))
Declaration(Class(<http://purl.obolibrary.org/obo/IDO_0000630>))
Declaration(Class(<http://purl.obolibrary.org/obo/OGMS_0000045>))
Declaration(AnnotationProperty(<http://purl.obolibrary.org/obo/IAO_0000115>))
Declaration(AnnotationProperty(<http://purl.obolibrary.org/obo/IAO_0000117>))
Declaration(AnnotationProperty(<http://purl.obolibrary.org/obo/IAO_0000118>))
Expand All @@ -33,6 +34,7 @@ AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000117> <http://purl.ob
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000117> <http://purl.obolibrary.org/obo/IDO_0000504> "Lindsay Cowell")
AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/IDO_0000504> "infectious disorder"@en)
SubClassOf(<http://purl.obolibrary.org/obo/IDO_0000504> <http://purl.obolibrary.org/obo/IDO_0000586>)
SubClassOf(<http://purl.obolibrary.org/obo/IDO_0000504> <http://purl.obolibrary.org/obo/OGMS_0000045>)

# Class: <http://purl.obolibrary.org/obo/IDO_0000586> (infection)

Expand Down
46 changes: 12 additions & 34 deletions src/ontology/imports/obi_import.owl
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,12 @@ Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)


Ontology(<http://purl.obolibrary.org/obo/ogms/imports/obi_import.owl>
<http://purl.obolibrary.org/obo/ogms/releases/2025-07-02/imports/obi_import.owl>
Annotation(<http://purl.org/dc/elements/1.1/source> <http://purl.obolibrary.org/obo/obi/2025-05-01/obi.owl>)
Annotation(owl:versionInfo "2025-07-02")
<http://purl.obolibrary.org/obo/ogms/releases/2026-02-10/imports/obi_import.owl>
Annotation(<http://purl.org/dc/elements/1.1/source> <http://purl.obolibrary.org/obo/obi/2025-12-18/obi.owl>)
Annotation(owl:versionInfo "2026-02-10")

Declaration(Class(<http://purl.obolibrary.org/obo/BFO_0000040>))
Declaration(Class(<http://purl.obolibrary.org/obo/OBI_0000011>))
Declaration(Class(<http://purl.obolibrary.org/obo/OBI_0000278>))
Declaration(Class(<http://purl.obolibrary.org/obo/OBI_0100026>))
Declaration(Class(<http://purl.obolibrary.org/obo/OBI_0200000>))
Declaration(Class(<http://purl.obolibrary.org/obo/OBI_0600052>))
Declaration(ObjectProperty(<http://purl.obolibrary.org/obo/OBI_0000312>))
Expand All @@ -29,6 +27,7 @@ Declaration(AnnotationProperty(<http://purl.obolibrary.org/obo/IAO_0000116>))
Declaration(AnnotationProperty(<http://purl.obolibrary.org/obo/IAO_0000117>))
Declaration(AnnotationProperty(<http://purl.obolibrary.org/obo/IAO_0000118>))
Declaration(AnnotationProperty(<http://purl.obolibrary.org/obo/IAO_0000119>))
Declaration(AnnotationProperty(<http://purl.obolibrary.org/obo/IAO_0000231>))
Declaration(AnnotationProperty(<http://purl.obolibrary.org/obo/IAO_0000232>))
Declaration(AnnotationProperty(<http://purl.org/dc/elements/1.1/source>))

Expand All @@ -40,12 +39,11 @@ Declaration(AnnotationProperty(<http://purl.org/dc/elements/1.1/source>))

AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000111> <http://purl.obolibrary.org/obo/OBI_0000312> "is specified output of")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000114> <http://purl.obolibrary.org/obo/OBI_0000312> <http://purl.obolibrary.org/obo/IAO_0000122>)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000115> <http://purl.obolibrary.org/obo/OBI_0000312> "A relation between a planned process and a continuant participating in that process. The presence of the continuant at the end of the process is explicitly specified in the objective specification which the process realizes the concretization of."@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000115> <http://purl.obolibrary.org/obo/OBI_0000312> "A relation between a completely executed planned process and a continuant participating in that process. The presence of the continuant at the end of the process is explicitly specified in the objective specification which the process realizes the concretization of."@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000117> <http://purl.obolibrary.org/obo/OBI_0000312> "Alan Ruttenberg"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000117> <http://purl.obolibrary.org/obo/OBI_0000312> "PERSON:Bjoern Peters")
AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/OBI_0000312> "is specified output of"@en)
SubObjectPropertyOf(<http://purl.obolibrary.org/obo/OBI_0000312> <http://purl.obolibrary.org/obo/RO_0000056>)
ObjectPropertyRange(<http://purl.obolibrary.org/obo/OBI_0000312> <http://purl.obolibrary.org/obo/OBI_0000011>)

# Object Property: <http://purl.obolibrary.org/obo/OBI_0000846> (is member of organization)

Expand Down Expand Up @@ -78,20 +76,20 @@ AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/OBI_0001688> "has
# Classes
############################

# Class: <http://purl.obolibrary.org/obo/OBI_0000011> (planned process)
# Class: <http://purl.obolibrary.org/obo/OBI_0000011> (obsolete planned process)

AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000111> <http://purl.obolibrary.org/obo/OBI_0000011> "planned process")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000111> <http://purl.obolibrary.org/obo/OBI_0000011> "obsolete planned process")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000112> <http://purl.obolibrary.org/obo/OBI_0000011> "Injecting mice with a vaccine in order to test its efficacy")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000114> <http://purl.obolibrary.org/obo/OBI_0000011> <http://purl.obolibrary.org/obo/IAO_0000122>)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000115> <http://purl.obolibrary.org/obo/OBI_0000011> "A process that realizes a plan which is the concretization of a plan specification."@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000116> <http://purl.obolibrary.org/obo/OBI_0000011> "'Plan' includes a future direction sense. That can be problematic if plans are changed during their execution. There are however implicit contingencies for protocols that an agent has in his mind that can be considered part of the plan, even if the agent didn't have them in mind before. Therefore, a planned process can diverge from what the agent would have said the plan was before executing it, by adjusting to problems encountered during execution (e.g. choosing another reagent with equivalent properties, if the originally planned one has run out.)")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000116> <http://purl.obolibrary.org/obo/OBI_0000011> "We are only considering successfully completed planned processes. A plan may be modified, and details added during execution. For a given planned process, the associated realized plan specification is the one encompassing all changes made during execution. This means that all processes in which an agent acts towards achieving some
objectives is a planned process.")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000116> <http://purl.obolibrary.org/obo/OBI_0000011> "We are only considering successfully completed planned processes. A plan may be modified, and details added during execution. For a given planned process, the associated realized plan specification is the one encompassing all changes made during execution. This means that all processes in which an agent acts towards achieving some objectives is a planned process.")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000117> <http://purl.obolibrary.org/obo/OBI_0000011> "Bjoern Peters")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000119> <http://purl.obolibrary.org/obo/OBI_0000011> "branch derived")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000231> <http://purl.obolibrary.org/obo/OBI_0000011> <http://purl.obolibrary.org/obo/IAO_0000228>)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000232> <http://purl.obolibrary.org/obo/OBI_0000011> "6/11/9: Edited at workshop. Used to include: is initiated by an agent")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000232> <http://purl.obolibrary.org/obo/OBI_0000011> "This class merges the previously separated objective driven process and planned process, as they the separation proved hard to maintain. (1/22/09, branch call)"@en)
AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/OBI_0000011> "planned process"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000232> <http://purl.obolibrary.org/obo/OBI_0000011> "This class merges the previously separated objective driven process and planned process, as they the separation proved hard to maintain. (1/22/09, branch call)")
AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/OBI_0000011> "obsolete planned process")

# Class: <http://purl.obolibrary.org/obo/OBI_0000278> (disease stage)

Expand All @@ -102,30 +100,12 @@ AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000115> <http://purl.ob
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000117> <http://purl.obolibrary.org/obo/OBI_0000278> "PERSON: Bjoern peters")
AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/OBI_0000278> "disease stage"@en)

# Class: <http://purl.obolibrary.org/obo/OBI_0100026> (organism)

AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000111> <http://purl.obolibrary.org/obo/OBI_0100026> "organism"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000112> <http://purl.obolibrary.org/obo/OBI_0100026> "animal"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000112> <http://purl.obolibrary.org/obo/OBI_0100026> "fungus"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000112> <http://purl.obolibrary.org/obo/OBI_0100026> "plant"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000112> <http://purl.obolibrary.org/obo/OBI_0100026> "virus"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000114> <http://purl.obolibrary.org/obo/OBI_0100026> <http://purl.obolibrary.org/obo/IAO_0000122>)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000115> <http://purl.obolibrary.org/obo/OBI_0100026> "A material entity that is an individual living system, such as animal, plant, bacteria or virus, that is capable of replicating or reproducing, growth and maintenance in the right environment. An organism may be unicellular or made up, like humans, of many billions of cells divided into specialized tissues and organs."@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000116> <http://purl.obolibrary.org/obo/OBI_0100026> "10/21/09: This is a placeholder term, that should ideally be imported from the NCBI taxonomy, but the high level hierarchy there does not suit our needs (includes plasmids and 'other organisms')")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000116> <http://purl.obolibrary.org/obo/OBI_0100026> "13-02-2009:
OBI doesn't take position as to when an organism starts or ends being an organism - e.g. sperm, foetus.
This issue is outside the scope of OBI.")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000117> <http://purl.obolibrary.org/obo/OBI_0100026> "GROUP: OBI Biomaterial Branch")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000119> <http://purl.obolibrary.org/obo/OBI_0100026> "WEB: http://en.wikipedia.org/wiki/Organism"@en)
AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/OBI_0100026> "organism"@en)
SubClassOf(<http://purl.obolibrary.org/obo/OBI_0100026> <http://purl.obolibrary.org/obo/BFO_0000040>)

# Class: <http://purl.obolibrary.org/obo/OBI_0200000> (data transformation)

AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000111> <http://purl.obolibrary.org/obo/OBI_0200000> "data transformation"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000112> <http://purl.obolibrary.org/obo/OBI_0200000> "The application of a clustering protocol to microarray data or the application of a statistical testing method on a primary data set to determine a p-value.")
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000114> <http://purl.obolibrary.org/obo/OBI_0200000> <http://purl.obolibrary.org/obo/IAO_0000122>)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000115> <http://purl.obolibrary.org/obo/OBI_0200000> "A planned process that produces output data from input data."@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000115> <http://purl.obolibrary.org/obo/OBI_0200000> "A completely executed planned process that produces output data from input data."@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000117> <http://purl.obolibrary.org/obo/OBI_0200000> "Elisabetta Manduchi"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000117> <http://purl.obolibrary.org/obo/OBI_0200000> "Helen Parkinson"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000117> <http://purl.obolibrary.org/obo/OBI_0200000> "James Malone"@en)
Expand All @@ -138,7 +118,6 @@ AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000118> <http://purl.ob
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000118> <http://purl.obolibrary.org/obo/OBI_0200000> "data processing"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000119> <http://purl.obolibrary.org/obo/OBI_0200000> "Branch editors"@en)
AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/OBI_0200000> "data transformation"@en)
SubClassOf(<http://purl.obolibrary.org/obo/OBI_0200000> <http://purl.obolibrary.org/obo/OBI_0000011>)

# Class: <http://purl.obolibrary.org/obo/OBI_0600052> (dialysis)

Expand All @@ -149,7 +128,6 @@ AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000115> <http://purl.ob
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000117> <http://purl.obolibrary.org/obo/OBI_0600052> "PERSON:Kevin Clancy"@en)
AnnotationAssertion(<http://purl.obolibrary.org/obo/IAO_0000119> <http://purl.obolibrary.org/obo/OBI_0600052> "OBI branch derived"@en)
AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/OBI_0600052> "dialysis"@en)
SubClassOf(<http://purl.obolibrary.org/obo/OBI_0600052> <http://purl.obolibrary.org/obo/OBI_0000011>)


)
4 changes: 2 additions & 2 deletions src/ontology/imports/omo_import.owl
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ Prefix(oboInOwl:=<http://www.geneontology.org/formats/oboInOwl#>)


Ontology(<http://purl.obolibrary.org/obo/ogms/imports/omo_import.owl>
<http://purl.obolibrary.org/obo/ogms/releases/2025-08-13/imports/omo_import.owl>
<http://purl.obolibrary.org/obo/ogms/releases/2026-01-31/imports/omo_import.owl>
Annotation(dc:source <http://purl.obolibrary.org/obo/omo/releases/2025-06-18/omo.owl>)
Annotation(owl:versionInfo "2025-08-13")
Annotation(owl:versionInfo "2026-01-31")

Declaration(Class(obo:IAO_0000027))
Declaration(Class(obo:IAO_0000030))
Expand Down
Loading