Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated explain command #779

Merged
merged 11 commits into from
Jan 20, 2021
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
- robot explain updates: explanations for inconsistent and unsatisfiable classes [#779]

## [1.7.2] - 2020-11-18

Expand Down
779 changes: 779 additions & 0 deletions docs/examples/uvula_inconsistent.ofn

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions docs/examples/uvula_inconsistent_explanation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
## [Thing](http://www.w3.org/2002/07/owl#Thing) SubClassOf [Nothing](http://www.w3.org/2002/07/owl#Nothing) ##

- [uvular muscle](http://purl.obolibrary.org/obo/UBERON_0010235) SubClassOf [palatal muscle](http://purl.obolibrary.org/obo/UBERON_0003682)
- [inconsistent_entity](http://purl.obolibrary.org/obo/CL_0017514) Type [uvular muscle](http://purl.obolibrary.org/obo/UBERON_0010235)
- [palatal muscle](http://purl.obolibrary.org/obo/UBERON_0003682) DisjointWith [uvular muscle](http://purl.obolibrary.org/obo/UBERON_0010235)

# Axiom Impact
## Axioms used 1 times
- [uvular muscle](http://purl.obolibrary.org/obo/UBERON_0010235) SubClassOf [palatal muscle](http://purl.obolibrary.org/obo/UBERON_0003682) [uberon-base.owl]
- [palatal muscle](http://purl.obolibrary.org/obo/UBERON_0003682) DisjointWith [uvular muscle](http://purl.obolibrary.org/obo/UBERON_0010235) [uberon-base.owl]
- [inconsistent_entity](http://purl.obolibrary.org/obo/CL_0017514) Type [uvular muscle](http://purl.obolibrary.org/obo/UBERON_0010235) [uberon-base.owl]



# Ontologies used:
- uberon-base.owl (http://purl.obolibrary.org/obo/uberon/uberon-base.owl)
41 changes: 41 additions & 0 deletions docs/examples/uvula_inconsistent_explanation.ofn
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
Prefix(:=<https://github.com/ontodev/robot/examples/uvula_inconsistent_explanation.ofn#>)
Prefix(owl:=<http://www.w3.org/2002/07/owl#>)
Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)
Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)
Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)


Ontology(<https://github.com/ontodev/robot/examples/uvula_inconsistent_explanation.ofn>

Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0003682>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0010235>))
Declaration(NamedIndividual(<http://purl.obolibrary.org/obo/CL_0017514>))


############################
# Classes
############################

# Class: <http://purl.obolibrary.org/obo/UBERON_0003682> (palatal muscle)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0003682> "palatal muscle"^^xsd:string)
DisjointClasses(<http://purl.obolibrary.org/obo/UBERON_0003682> <http://purl.obolibrary.org/obo/UBERON_0010235>)

# Class: <http://purl.obolibrary.org/obo/UBERON_0010235> (uvular muscle)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0010235> "uvular muscle"^^xsd:string)
SubClassOf(<http://purl.obolibrary.org/obo/UBERON_0010235> <http://purl.obolibrary.org/obo/UBERON_0003682>)


############################
# Named Individuals
############################

# Individual: <http://purl.obolibrary.org/obo/CL_0017514> (inconsistent_entity)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/CL_0017514> "inconsistent_entity")
ClassAssertion(<http://purl.obolibrary.org/obo/UBERON_0010235> <http://purl.obolibrary.org/obo/CL_0017514>)


)
11 changes: 11 additions & 0 deletions docs/examples/uvula_multiple_list.ofn
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Prefix(:=<https://github.com/ontodev/robot/examples/uvula_multiple_list.ofn#>)
Prefix(owl:=<http://www.w3.org/2002/07/owl#>)
Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)
Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)
Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)


Ontology(<https://github.com/ontodev/robot/examples/uvula_multiple_list.ofn>

)
6 changes: 6 additions & 0 deletions docs/examples/uvula_multiple_list.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
UBERON:0001134
UBERON:0003682
UBERON:0010235
UBERON:0011822
UBERON:0011899
UBERON:0014892
768 changes: 768 additions & 0 deletions docs/examples/uvula_multiple_unsat.ofn

Large diffs are not rendered by default.

44 changes: 44 additions & 0 deletions docs/examples/uvula_multiple_unsat_2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
## [skeletal muscle tissue](http://purl.obolibrary.org/obo/UBERON_0001134) SubClassOf [Nothing](http://www.w3.org/2002/07/owl#Nothing) ##

- [skeletal muscle tissue](http://purl.obolibrary.org/obo/UBERON_0001134) SubClassOf [part of](http://purl.obolibrary.org/obo/BFO_0000050) some [skeletal muscle organ](http://purl.obolibrary.org/obo/UBERON_0014892)
- [skeletal muscle organ](http://purl.obolibrary.org/obo/UBERON_0014892) EquivalentTo [muscle organ](http://purl.obolibrary.org/obo/UBERON_0001630) and ([develops_from](http://purl.obolibrary.org/obo/RO_0002202) some [myotome](http://purl.obolibrary.org/obo/UBERON_0003082)) and ([surrounded_by](http://purl.obolibrary.org/obo/RO_0002219) some [epimysium](http://purl.obolibrary.org/obo/UBERON_0011899)) and ([composed primarily of](http://purl.obolibrary.org/obo/RO_0002473) some [skeletal muscle tissue](http://purl.obolibrary.org/obo/UBERON_0001134)) and ([synapsed by](http://purl.obolibrary.org/obo/uberon/core#synapsed_by) some [motor neuron](http://purl.obolibrary.org/obo/CL_0000100))
- [epimysium](http://purl.obolibrary.org/obo/UBERON_0011899) SubClassOf [dense irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011822)
- [dense irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011822) SubClassOf [irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011821)
- [irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011821) SubClassOf [connective tissue](http://purl.obolibrary.org/obo/UBERON_0002384)
- [connective tissue](http://purl.obolibrary.org/obo/UBERON_0002384) SubClassOf [tissue](http://purl.obolibrary.org/obo/UBERON_0000479)
- [tissue](http://purl.obolibrary.org/obo/UBERON_0000479) SubClassOf [multicellular anatomical structure](http://purl.obolibrary.org/obo/UBERON_0010000)
- [dense irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011822) SubClassOf [dense connective tissue](http://purl.obolibrary.org/obo/UBERON_0011823)
- DisjointClasses: [multicellular anatomical structure](http://purl.obolibrary.org/obo/UBERON_0010000), [dense connective tissue](http://purl.obolibrary.org/obo/UBERON_0011823), [developing mesenchymal structure](http://purl.obolibrary.org/obo/UBERON_0017650)


## [palatal muscle](http://purl.obolibrary.org/obo/UBERON_0003682) SubClassOf [Nothing](http://www.w3.org/2002/07/owl#Nothing) ##

- [palatal muscle](http://purl.obolibrary.org/obo/UBERON_0003682) EquivalentTo [skeletal muscle organ](http://purl.obolibrary.org/obo/UBERON_0014892) and ([part of](http://purl.obolibrary.org/obo/BFO_0000050) some [soft palate](http://purl.obolibrary.org/obo/UBERON_0001733))
- [skeletal muscle organ](http://purl.obolibrary.org/obo/UBERON_0014892) EquivalentTo [muscle organ](http://purl.obolibrary.org/obo/UBERON_0001630) and ([develops_from](http://purl.obolibrary.org/obo/RO_0002202) some [myotome](http://purl.obolibrary.org/obo/UBERON_0003082)) and ([surrounded_by](http://purl.obolibrary.org/obo/RO_0002219) some [epimysium](http://purl.obolibrary.org/obo/UBERON_0011899)) and ([composed primarily of](http://purl.obolibrary.org/obo/RO_0002473) some [skeletal muscle tissue](http://purl.obolibrary.org/obo/UBERON_0001134)) and ([synapsed by](http://purl.obolibrary.org/obo/uberon/core#synapsed_by) some [motor neuron](http://purl.obolibrary.org/obo/CL_0000100))
- [epimysium](http://purl.obolibrary.org/obo/UBERON_0011899) SubClassOf [dense irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011822)
- [dense irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011822) SubClassOf [irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011821)
- [irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011821) SubClassOf [connective tissue](http://purl.obolibrary.org/obo/UBERON_0002384)
- [connective tissue](http://purl.obolibrary.org/obo/UBERON_0002384) SubClassOf [tissue](http://purl.obolibrary.org/obo/UBERON_0000479)
- [tissue](http://purl.obolibrary.org/obo/UBERON_0000479) SubClassOf [multicellular anatomical structure](http://purl.obolibrary.org/obo/UBERON_0010000)
- [dense irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011822) SubClassOf [dense connective tissue](http://purl.obolibrary.org/obo/UBERON_0011823)
- DisjointClasses: [multicellular anatomical structure](http://purl.obolibrary.org/obo/UBERON_0010000), [dense connective tissue](http://purl.obolibrary.org/obo/UBERON_0011823), [developing mesenchymal structure](http://purl.obolibrary.org/obo/UBERON_0017650)

# Axiom Impact
## Axioms used 2 times
- [skeletal muscle organ](http://purl.obolibrary.org/obo/UBERON_0014892) EquivalentTo [muscle organ](http://purl.obolibrary.org/obo/UBERON_0001630) and ([develops_from](http://purl.obolibrary.org/obo/RO_0002202) some [myotome](http://purl.obolibrary.org/obo/UBERON_0003082)) and ([surrounded_by](http://purl.obolibrary.org/obo/RO_0002219) some [epimysium](http://purl.obolibrary.org/obo/UBERON_0011899)) and ([composed primarily of](http://purl.obolibrary.org/obo/RO_0002473) some [skeletal muscle tissue](http://purl.obolibrary.org/obo/UBERON_0001134)) and ([synapsed by](http://purl.obolibrary.org/obo/uberon/core#synapsed_by) some [motor neuron](http://purl.obolibrary.org/obo/CL_0000100)) [uberon-base.owl]
- [tissue](http://purl.obolibrary.org/obo/UBERON_0000479) SubClassOf [multicellular anatomical structure](http://purl.obolibrary.org/obo/UBERON_0010000) [uberon-base.owl]
- [connective tissue](http://purl.obolibrary.org/obo/UBERON_0002384) SubClassOf [tissue](http://purl.obolibrary.org/obo/UBERON_0000479) [uberon-base.owl]
- [irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011821) SubClassOf [connective tissue](http://purl.obolibrary.org/obo/UBERON_0002384) [uberon-base.owl]
- [dense irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011822) SubClassOf [irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011821) [uberon-base.owl]
- [dense irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011822) SubClassOf [dense connective tissue](http://purl.obolibrary.org/obo/UBERON_0011823) [uberon-base.owl]
- [epimysium](http://purl.obolibrary.org/obo/UBERON_0011899) SubClassOf [dense irregular connective tissue](http://purl.obolibrary.org/obo/UBERON_0011822) [uberon-base.owl]
- DisjointClasses: [multicellular anatomical structure](http://purl.obolibrary.org/obo/UBERON_0010000), [dense connective tissue](http://purl.obolibrary.org/obo/UBERON_0011823), [developing mesenchymal structure](http://purl.obolibrary.org/obo/UBERON_0017650) [uberon-base.owl]

## Axioms used 1 times
- [palatal muscle](http://purl.obolibrary.org/obo/UBERON_0003682) EquivalentTo [skeletal muscle organ](http://purl.obolibrary.org/obo/UBERON_0014892) and ([part of](http://purl.obolibrary.org/obo/BFO_0000050) some [soft palate](http://purl.obolibrary.org/obo/UBERON_0001733)) [uberon-base.owl]
- [skeletal muscle tissue](http://purl.obolibrary.org/obo/UBERON_0001134) SubClassOf [part of](http://purl.obolibrary.org/obo/BFO_0000050) some [skeletal muscle organ](http://purl.obolibrary.org/obo/UBERON_0014892) [uberon-base.owl]



# Ontologies used:
- uberon-base.owl (http://purl.obolibrary.org/obo/uberon/uberon-base.owl)
133 changes: 133 additions & 0 deletions docs/examples/uvula_multiple_unsat_2.ofn
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
Prefix(:=<https://github.com/ontodev/robot/examples/uvula_multiple_unsat_2.ofn#>)
Prefix(owl:=<http://www.w3.org/2002/07/owl#>)
Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)
Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)
Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)


Ontology(<https://github.com/ontodev/robot/examples/uvula_multiple_unsat_2.ofn>

Declaration(Class(<http://purl.obolibrary.org/obo/CL_0000100>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0000479>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0001134>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0001630>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0001733>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0002384>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0003082>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0003682>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0010000>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0011821>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0011822>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0011823>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0011899>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0014892>))
Declaration(Class(<http://purl.obolibrary.org/obo/UBERON_0017650>))
Declaration(ObjectProperty(<http://purl.obolibrary.org/obo/BFO_0000050>))
Declaration(ObjectProperty(<http://purl.obolibrary.org/obo/RO_0002202>))
Declaration(ObjectProperty(<http://purl.obolibrary.org/obo/RO_0002219>))
Declaration(ObjectProperty(<http://purl.obolibrary.org/obo/RO_0002473>))
Declaration(ObjectProperty(<http://purl.obolibrary.org/obo/uberon/core#synapsed_by>))

############################
# Object Properties
############################

# Object Property: <http://purl.obolibrary.org/obo/BFO_0000050> (part of)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/BFO_0000050> "part of"^^xsd:string)

# Object Property: <http://purl.obolibrary.org/obo/RO_0002202> (develops_from)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/RO_0002202> "develops_from"^^xsd:string)

# Object Property: <http://purl.obolibrary.org/obo/RO_0002219> (surrounded_by)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/RO_0002219> "surrounded_by"^^xsd:string)

# Object Property: <http://purl.obolibrary.org/obo/RO_0002473> (composed primarily of)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/RO_0002473> "composed primarily of"^^xsd:string)

# Object Property: <http://purl.obolibrary.org/obo/uberon/core#synapsed_by> (synapsed by)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/uberon/core#synapsed_by> "synapsed by")



############################
# Classes
############################

# Class: <http://purl.obolibrary.org/obo/CL_0000100> (motor neuron)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/CL_0000100> "motor neuron")

# Class: <http://purl.obolibrary.org/obo/UBERON_0000479> (tissue)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0000479> "tissue"^^xsd:string)
SubClassOf(<http://purl.obolibrary.org/obo/UBERON_0000479> <http://purl.obolibrary.org/obo/UBERON_0010000>)

# Class: <http://purl.obolibrary.org/obo/UBERON_0001134> (skeletal muscle tissue)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0001134> "skeletal muscle tissue"^^xsd:string)
SubClassOf(<http://purl.obolibrary.org/obo/UBERON_0001134> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/BFO_0000050> <http://purl.obolibrary.org/obo/UBERON_0014892>))

# Class: <http://purl.obolibrary.org/obo/UBERON_0001630> (muscle organ)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0001630> "muscle organ"^^xsd:string)

# Class: <http://purl.obolibrary.org/obo/UBERON_0001733> (soft palate)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0001733> "soft palate"^^xsd:string)

# Class: <http://purl.obolibrary.org/obo/UBERON_0002384> (connective tissue)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0002384> "connective tissue"^^xsd:string)
SubClassOf(<http://purl.obolibrary.org/obo/UBERON_0002384> <http://purl.obolibrary.org/obo/UBERON_0000479>)

# Class: <http://purl.obolibrary.org/obo/UBERON_0003082> (myotome)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0003082> "myotome"^^xsd:string)

# Class: <http://purl.obolibrary.org/obo/UBERON_0003682> (palatal muscle)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0003682> "palatal muscle"^^xsd:string)
EquivalentClasses(<http://purl.obolibrary.org/obo/UBERON_0003682> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/UBERON_0014892> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/BFO_0000050> <http://purl.obolibrary.org/obo/UBERON_0001733>)))

# Class: <http://purl.obolibrary.org/obo/UBERON_0010000> (multicellular anatomical structure)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0010000> "multicellular anatomical structure"^^xsd:string)

# Class: <http://purl.obolibrary.org/obo/UBERON_0011821> (irregular connective tissue)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0011821> "irregular connective tissue"^^xsd:string)
SubClassOf(<http://purl.obolibrary.org/obo/UBERON_0011821> <http://purl.obolibrary.org/obo/UBERON_0002384>)

# Class: <http://purl.obolibrary.org/obo/UBERON_0011822> (dense irregular connective tissue)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0011822> "dense irregular connective tissue"^^xsd:string)
SubClassOf(<http://purl.obolibrary.org/obo/UBERON_0011822> <http://purl.obolibrary.org/obo/UBERON_0011821>)
SubClassOf(<http://purl.obolibrary.org/obo/UBERON_0011822> <http://purl.obolibrary.org/obo/UBERON_0011823>)

# Class: <http://purl.obolibrary.org/obo/UBERON_0011823> (dense connective tissue)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0011823> "dense connective tissue"^^xsd:string)

# Class: <http://purl.obolibrary.org/obo/UBERON_0011899> (epimysium)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0011899> "epimysium"^^xsd:string)
SubClassOf(<http://purl.obolibrary.org/obo/UBERON_0011899> <http://purl.obolibrary.org/obo/UBERON_0011822>)

# Class: <http://purl.obolibrary.org/obo/UBERON_0014892> (skeletal muscle organ)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0014892> "skeletal muscle organ"^^xsd:string)
EquivalentClasses(<http://purl.obolibrary.org/obo/UBERON_0014892> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/UBERON_0001630> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/RO_0002202> <http://purl.obolibrary.org/obo/UBERON_0003082>) ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/RO_0002219> <http://purl.obolibrary.org/obo/UBERON_0011899>) ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/RO_0002473> <http://purl.obolibrary.org/obo/UBERON_0001134>) ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/uberon/core#synapsed_by> <http://purl.obolibrary.org/obo/CL_0000100>)))

# Class: <http://purl.obolibrary.org/obo/UBERON_0017650> (developing mesenchymal structure)

AnnotationAssertion(rdfs:label <http://purl.obolibrary.org/obo/UBERON_0017650> "developing mesenchymal structure"^^xsd:string)


DisjointClasses(<http://purl.obolibrary.org/obo/UBERON_0010000> <http://purl.obolibrary.org/obo/UBERON_0011823> <http://purl.obolibrary.org/obo/UBERON_0017650>)
)
Loading