PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX BFO: <http://purl.obolibrary.org/obo/BFO_>
PREFIX CL: <http://purl.obolibrary.org/obo/CL_>
PREFIX RO: <http://purl.obolibrary.org/obo/RO_>
PREFIX UBERON: <http://purl.obolibrary.org/obo/UBERON_>
PREFIX WIKIDATA: <http://www.wikidata.org/entity/>
PREFIX biolink: <https://w3id.org/biolink/vocab/>
PREFIX linkml: <https://w3id.org/linkml/>
PREFIX mianct: <https://w3.org/mianct/>
PREFIX sdo: <https://schema.org/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX pav: <http://purl.org/pav/>
PREFIX sh: <http://www.w3.org/ns/shacl#>
PREFIX vann: <http://purl.org/vocab/vann/>

<https://w3.org/mianct> a owl:Ontology ;
  rdfs:label "Minimal Information About a new Cell Type" ;
  rdfs:comment """
This schema is CJM's attempt to translate Tiago's [minimal info doc](https://docs.google.com/document/d/1EVgs2Z5dpJs7cbuSBwWlg1xOWQEqMtbSKRGgdneXnU8/edit#) into a LinkML schema

The schema is fairly minimal and is in the form of a \"checklist\" style schema. It is a set of fields mostly associated with this class:

  * [CellType](CellType.md)

There are a set of examples here:

  * [tests/input](https://github.com/cmungall/mianct-schema/tree/main/tests/input)

Currently the examples are YAML, but the YAML is deliberately flat as this is a \"checklist\" schema, and we could have TSV/CSV/xlsx here

TODO:

  - include \"packages\" and \"checklists\"; e.g.
      - a neuron package would have the enum for morphologies constrained
      - a transcriptomics package would make it required to enter the set of marker genes
      - see [MIxS schema](https://cmungall.github.io/mixs-source/) for example of how this might work
  - document how this relates to dosdp/robot templates
  
When should one provide an entry for a cell type in a MIANCT sheet?

 - When there is a claim of a new cell class (type or state) that has not been described before
 - When new information is discovered for a previously cataloged type that might influence its cataloguing (i.e. description of the presence in a different species or in a new location)
 - When a cell type mentioned in the article has been described before, but is not yet catalogued on an authoritative source like the Cell Ontology.""" ;
  rdfs:seeAlso <https://docs.google.com/document/d/1EVgs2Z5dpJs7cbuSBwWlg1xOWQEqMtbSKRGgdneXnU8/edit#> ;
  dcterms:license <https://creativecommons.org/publicdomain/zero/1.0/> ;
  pav:version "0.0.1" ;
  vann:preferredNamespacePrefix "mianct" ;
  vann:preferredNamespaceUri "https://w3.org/mianct/"^^xsd:anyURI ;
  sh:declare [
    sh:prefix "BFO" ;
    sh:namespace "http://purl.obolibrary.org/obo/BFO_"^^xsd:anyURI
  ] , [
    sh:prefix "CL" ;
    sh:namespace "http://purl.obolibrary.org/obo/CL_"^^xsd:anyURI
  ] , [
    sh:prefix "RO" ;
    sh:namespace "http://purl.obolibrary.org/obo/RO_"^^xsd:anyURI
  ] , [
    sh:prefix "UBERON" ;
    sh:namespace "http://purl.obolibrary.org/obo/UBERON_"^^xsd:anyURI
  ] , [
    sh:prefix "WIKIDATA" ;
    sh:namespace "http://www.wikidata.org/entity/"^^xsd:anyURI
  ] , [
    sh:prefix "biolink" ;
    sh:namespace "https://w3id.org/biolink/vocab/"^^xsd:anyURI
  ] , [
    sh:prefix "linkml" ;
    sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI
  ] , [
    sh:prefix "mianct" ;
    sh:namespace "https://w3.org/mianct/"^^xsd:anyURI
  ] , [
    sh:prefix "sdo" ;
    sh:namespace "https://schema.org/"^^xsd:anyURI
  ] .

CL:0000000 a owl:Class ;
  rdfs:comment "Minimal information about a cell type" ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty rdfs:label ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty rdfs:label ;
    owl:cardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty BFO:0000050 ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty BFO:0000050 ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty RO:0002162 ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty RO:0002162 ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:major_life_stage ;
    owl:allValuesFrom mianct:MajorLifeStageEnum
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:major_life_stage ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:major_class ;
    owl:allValuesFrom mianct:MajorClassEnum
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:major_class ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:diagnostic_description ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:diagnostic_description ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:morphology ;
    owl:allValuesFrom mianct:MorphologyEnum
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:morphology ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:develops_from ;
    owl:allValuesFrom CL:0000000
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:develops_from ;
    owl:maxCardinality "1"^^xsd:nonNegativeInteger
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:develops_into ;
    owl:allValuesFrom CL:0000000
  ] , [
    a owl:Restriction ;
    owl:onProperty mianct:previous_observations ;
    owl:allValuesFrom xsd:string
  ] .

biolink:OrganismTaxon a owl:Class ;
  rdfs:comment "A classification of a set of organisms. Example instances: NCBITaxon:9606 (Homo sapiens), NCBITaxon:2 (Bacteria). Can also be used to represent strains or subspecies." ;
  skos:altLabel "taxon" , "taxonomic classification" ;
  skos:exactMatch WIKIDATA:Q16521 ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty rdfs:label ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty rdfs:label ;
    owl:cardinality "1"^^xsd:nonNegativeInteger
  ] .

mianct:develops_from a owl:ObjectProperty ;
  rdfs:range CL:0000000 ;
  a owl:FunctionalProperty .

mianct:develops_into a owl:ObjectProperty ;
  rdfs:range CL:0000000 .

mianct:diagnostic_description a owl:DatatypeProperty ;
  rdfs:range xsd:string ;
  a owl:FunctionalProperty .

rdfs:label a owl:DatatypeProperty ;
  rdfs:comment "The main label used to refer to a cell type" ;
  rdfs:range xsd:string ;
  a owl:FunctionalProperty .

mianct:major_class a owl:ObjectProperty ;
  rdfs:range mianct:MajorClassEnum ;
  a owl:FunctionalProperty .

mianct:major_life_stage a owl:ObjectProperty ;
  rdfs:comment "Cells of this type were identified at this stage" ;
  rdfs:range mianct:MajorLifeStageEnum ;
  a owl:FunctionalProperty .

mianct:morphology a owl:ObjectProperty ;
  rdfs:range mianct:MorphologyEnum ;
  a owl:FunctionalProperty .

BFO:0000050 a owl:DatatypeProperty ;
  rdfs:comment "Cells of this type were identified in an organ of this kind." ;
  rdfs:range xsd:string ;
  a owl:FunctionalProperty .

mianct:previous_observations a owl:DatatypeProperty ;
  rdfs:range xsd:string .

RO:0002162 a owl:DatatypeProperty ;
  rdfs:comment "Cells of this type were identified in an individual of this taxon. If the cell type is thought to be exclusive for that cell type, note it on the additional information field." ;
  rdfs:range xsd:string ;
  a owl:FunctionalProperty .

mianct:MajorClassEnum a owl:Class ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( CL:0000125 CL:0000738 CL:0000540 mianct:MajorClassEnum.OTHER )
  ] .

CL:0000125 a owl:NamedIndividual ;
  skos:notation "gial cell" ;
  a mianct:MajorClassEnum .

CL:0000738 a owl:NamedIndividual ;
  skos:notation "leukocyte" ;
  a mianct:MajorClassEnum .

CL:0000540 a owl:NamedIndividual ;
  skos:notation "neuron" ;
  a mianct:MajorClassEnum .

mianct:MajorClassEnum.OTHER a owl:NamedIndividual ;
  skos:notation "other" ;
  a mianct:MajorClassEnum .

mianct:MajorLifeStageEnum a owl:Class ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( UBERON:0000068 UBERON:0000069 UBERON:0000092 )
  ] .

UBERON:0000068 a owl:NamedIndividual ;
  skos:notation "embryonic or fetal" ;
  a mianct:MajorLifeStageEnum .

UBERON:0000069 a owl:NamedIndividual ;
  skos:notation "larval stage" ;
  a mianct:MajorLifeStageEnum .

UBERON:0000092 a owl:NamedIndividual ;
  skos:notation "post-embryonic" ;
  a mianct:MajorLifeStageEnum .

mianct:MorphologyEnum a owl:Class ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( mianct:MorphologyEnum.BASKET mianct:MorphologyEnum.OTHER mianct:MorphologyEnum.STELLATE )
  ] .

mianct:MorphologyEnum.BASKET a owl:NamedIndividual ;
  skos:notation "basket" ;
  a mianct:MorphologyEnum .

mianct:MorphologyEnum.OTHER a owl:NamedIndividual ;
  skos:notation "other" ;
  a mianct:MorphologyEnum .

mianct:MorphologyEnum.STELLATE a owl:NamedIndividual ;
  skos:notation "stellate" ;
  a mianct:MorphologyEnum .

dcterms:license a owl:AnnotationProperty .

pav:version a owl:AnnotationProperty .

vann:preferredNamespacePrefix a owl:AnnotationProperty .

vann:preferredNamespaceUri a owl:AnnotationProperty .

skos:altLabel a owl:AnnotationProperty .

skos:exactMatch a owl:AnnotationProperty .

skos:notation a owl:AnnotationProperty .

sh:declare a owl:AnnotationProperty .

sh:prefix a owl:AnnotationProperty .

sh:namespace a owl:AnnotationProperty .
