# The classification pattern in use: Linnaean species concepts classifying the specimens and the
# trees a herbarium looks after. Sheet 1998-0123 is classified by two concepts that carry the same
# name in different revisions, which is why this pattern makes a concept an individual, not a class.

@prefix classification: <http://www.ontologydesignpatterns.org/cp/owl/classification.owl#> .
@prefix ex:             <https://w3id.org/ontoboard/example/classification#> .
@prefix owl:            <http://www.w3.org/2002/07/owl#> .
@prefix rdfs:           <http://www.w3.org/2000/01/rdf-schema#> .

ex:QuercusRoburStace a owl:NamedIndividual , classification:Concept ;
    rdfs:label "the species concept Quercus robur sensu Stace (2019)" ;
    classification:classifies ex:HerbariumSheet0123 , ex:ArboretumOak .

ex:QuercusRoburFloraEuropaea a owl:NamedIndividual , classification:Concept ;
    rdfs:label "the species concept Quercus robur sensu Flora Europaea (1964)" ;
    classification:classifies ex:HerbariumSheet0123 .

ex:FagusSylvaticaStace a owl:NamedIndividual , classification:Concept ;
    rdfs:label "the species concept Fagus sylvatica sensu Stace (2019)" ;
    classification:classifies ex:HerbariumSheet0456 .

ex:HerbariumSheet0123 a owl:NamedIndividual , classification:Entity ;
    rdfs:label "herbarium sheet 1998-0123: an oak twig with acorns, Windsor Great Park" ;
    rdfs:comment "Classified by two species concepts at once. The determination is disputed, not duplicated: a later revision reads the same specimen differently." ;
    classification:isClassifiedBy ex:QuercusRoburStace , ex:QuercusRoburFloraEuropaea .

ex:HerbariumSheet0456 a owl:NamedIndividual , classification:Entity ;
    rdfs:label "herbarium sheet 2003-0456: a beech twig in leaf, Burnham Beeches" ;
    classification:isClassifiedBy ex:FagusSylvaticaStace .

ex:ArboretumOak a owl:NamedIndividual , classification:Entity ;
    rdfs:label "the living pedunculate oak in the arboretum, tree tag 412" ;
    classification:isClassifiedBy ex:QuercusRoburStace .

# Both directions are asserted here, and that is not a duplicate: this pattern declares classifies
# and isClassifiedBy with opposite domains and ranges but does NOT declare them owl:inverseOf, so
# neither one follows from the other and a reasoner adds nothing.
