@prefix bibo: <http://purl.org/ontology/bibo/> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix deo: <http://purl.org/spar/deo/> .
@prefix doco: <http://purl.org/spar/doco/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix po: <http://www.essepuntato.it/2008/12/pattern#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix reg: <http://purl.org/linked-data/registry#> .
@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

dc:contributor a owl:AnnotationProperty .

dc:creator a owl:AnnotationProperty .

dc:date a owl:AnnotationProperty .

dc:description a owl:AnnotationProperty .

dc:rights a owl:AnnotationProperty .

dc:title a owl:AnnotationProperty .

dcterms:abstract a owl:AnnotationProperty .

dcterms:bibliographicCitation a owl:AnnotationProperty .

dcterms:created a owl:AnnotationProperty .

dcterms:description a owl:AnnotationProperty .

dcterms:issued a owl:AnnotationProperty .

dcterms:license a owl:AnnotationProperty .

dcterms:modified a owl:AnnotationProperty .

dcterms:publisher a owl:AnnotationProperty .

dcterms:source a owl:AnnotationProperty .

bibo:doi a owl:AnnotationProperty .

<http://purl.org/spar/doco> a owl:Ontology ;
    rdfs:label "Document Components Ontology (DoCO)"@en ;
    dc:contributor "Sebastian Barzaghi (https://orcid.org/0000-0002-0799-1527)" ;
    dc:creator "David Shotton (https://orcid.org/0000-0001-5506-523X)",
        "Silvio Peroni (https://orcid.org/0000-0003-0530-4305)" ;
    dc:date "2026-06-25" ;
    dc:title "The Document Components Ontology (DoCO)"@en ;
    dcterms:bibliographicCitation "Constantin, A., Peroni, S., Pettifer, S., Shotton, D., Vitali, F. (2016). The Document Components Ontology (DoCO). In Semantic Web, 7 (2): 167-181. DOI: http://doi.org/10.3233/SW-150177" ;
    dcterms:created "2015-07-03" ;
    dcterms:description """
The **_Document Components Ontology (DoCO)_** is an OWL 2 DL ontology that provides a general-purpose structured vocabulary of document elements. 
DoCO has been designed as a general unifying ontological framework for describing different aspects related to the content of scientific and other scholarly texts. 
Its primary goal has been to improve the interoperability and shareability of academic documents (and related services) when multiple formats are actually used for their storage.

The creation of DoCO was undertaken by studying different corpora of documents (mainly scientific literature and web documents on different topics) and publishers' guidelines, from two perspectives – the structural and the rhetorical. 
In addition, some informal interviews have been done with researchers in different fields and with academic publishers, in order to gather as much information as possible about document components and their use.

DoCO imports the [Pattern Ontology](http://www.essepuntato.it/2008/12/pattern) that describes structural patterns (introduced in the paper entitled [_Dealing with structural patterns of XML documents_](http://doi.org/10.1002/asi.23088)), and the [_Discourse Element Ontology_](https://www.sparontologies.net/ontologies/deo) (DEO), which was developed with DoCO and describes rhetorical components. 
Additionally, it also defines hybrid classes describing elements that are both structural and rhetorical in nature, such as _paragraph_ (`doco:Paragraph`), _section_ (`doco:Section`) or _list_ (`doco:List`). DoCO is also aligned with the [SALT Rhetorical Ontology](http://lov.okfn.org/dataset/lov/vocabs/sro) and the [Ontology of Rhetorical Blocks](http://www.w3.org/2001/sw/hcls/notes/orb/) (ORB).
A concise summary of the main DoCO classes and its imported ontologies is shown in the following figure.

![DoCO's architecture, with its mail classes distributed accoridng to the ontologies they have been imported from.](doco.png)

## Examples of use

In the following subsections, we introduce some examples to showcase how to use DoCO. 

The prefixes that are used in all the examples provided below are defined as follows:

    @prefix : <http://www.sparontologies.net/example/> .
    @prefix doco: <http://purl.org/spar/doco/> .
    @prefix deo: <http://purl.org/spar/deo/> .
    @prefix po: <http://www.essepuntato.it/2008/12/pattern#> .
    @prefix dcterms: <http://purl.org/dc/terms/> .
    @prefix fabio: <http://purl.org/spar/fabio/> .
    @prefix co: <http://purl.org/co/> .
    @prefix c4o: <http://purl.org/spar/c4o> .

### Describing the structure of an article 

DoCO can be used for describing several parts of a document such as a journal article (defined through the [FaBiO](https://www.sparontologies.net/ontologies/fabio) class `fabio:JournalArticle`) connecting then by means of the object property `po:contains`. 
It can be also used in combination with [C4O](https://www.sparontologies.net/ontologies/c4o) and the [Collections Ontology](http://purl.org/co) (CO) for describing its textual content and the particular order in which the various components appear. 
In particular, the actual textual content of each component can be specified through the property `c4o:hasContent`, while the order can be described by using the entities related with the class `co:List`.

    :paper a fabio:JournalArticle ;
        po:contains
            :front-matter ,
            :body-matter ,
            :back-matter ;
        co:firstItem [
            co:itemContent :front-matter ;
            co:nextItem [
                co:itemContent :body-matter ;
                co:nextItem [
                    co:itemContent :back-matter ] ] ] .

    :body-matter a doco:BodyMatter ;
        po:contains
            :section-introduction ,
            :section-related-work ,
            :section-document-components ,
            :section-adoption ,
            :section-conclusions ;
        co:firstItem [
            co:itemContent :section-introduction ;
            co:nextItem [
                co:itemContent :section-related-work ;
                co:nextItem [
                    co:itemContent :section-document-components ;
                    co:nextItem [
                        co:itemContent :section-adoption ;
                        co:nextItem [
                            co:itemContent :section-conclusions ] ] ] ] ] .

    :section-introduction a doco:Section , deo:Introduction ;
        po:containsAsHeader :section-introduction-title ;
        po:contains
            :paragraph-1 ,
            :paragraph-2 ,
            :paragraph-3 ,
            :paragraph-4 ;
        co:firstItem [
            co:itemContent :section-introduction-title ;
            co:nextItem [
                co:itemContent :paragraph-1 ;
                co:nextItem [
                    co:itemContent :paragraph-2 ;
                    co:nextItem [
                        co:itemContent :paragraph-3 ;
                        co:nextItem [
                            co:itemContent :paragraph-4 ] ] ] ] ] .

    :section-introduction-title a doco:SectionTitle ;
        c4o:hasContent 'Introduction' .

    :paragraph-1 a doco:Paragraph ;
        po:contains
            :sentence-1 ,
            :sentence-2 ,
            :sentence-3 ,
            :sentence-4 ,
            :sentence-5 ,
            :sentence-6 ,
            :sentence-7 ;
        co:firstItem [
            co:itemContent :sentence-1 ;
            co:nextItem [
                co:itemContent :sentence-2 ;
                co:nextItem [
                    co:itemContent :sentence-3 ;
                    co:nextItem [
                        co:itemContent :sentence-4 ;
                        co:nextItem [
                            co:itemContent :sentence-5 ;
                            co:nextItem [
                                co:itemContent :sentence-6 ] ] ] ] ] ] .

    :sentence-1 a doco:Sentence ;
        c4o:hasContent 'One of the most important criteria for the
            evaluation of a scientific contribution is the coherent
            organisation of the textual narrative that describes it,
            most often published as a scientific article or book.' .

### Sentences containing references to bibliographic items

Among the various parts of a paper, describing references to other objects of the paper, such as bibliographic references, can be of some interest for keeping track, for instance, the number of times a particular publication is actually cited within a paper. 
DoCO allows one to describe all these parts and to link them together.

    :sentence a doco:Sentence ;
        c4o:hasContent 'For instance, a recent report by Beck [3]
            explains the requirements for an XML vocabulary of
            scientific journals to be acceptable for inclusion
            in PubMed Central.' ;
        po:contains :reference-to-3 .

    :reference-to-3 a deo:Reference ;
        c4o:hasContent '[3]' ;
        dcterms:references :bibliographic-reference-3 .

    :bibliographic-reference-3 a deo:BibliographicReference ;
        c4o:hasContent '[3]	Beck, J. (2010). Report from the Field:
            PubMed Central, an XML-based Archive of Life Sciences
            Journal Articles. In Proceedings of the International
            Symposium on XML for the Long Haul: Issues in the Long-term
            Preservation of XML.
            OA at http://dx.doi.org/10.4242/BalisageVol6.Beck01.' .

## Competency Questions

DoCO can be used for answering several questions related to documents and their structural and rethorical elements.

In the following subsections, some of them are introduced together with their respective SPARQL queries. 

The prefixes that are used in all the SPARQL queries provided below are defined as follows:

    PREFIX : <http://www.sparontologies.net/example/> 
    PREFIX doco: <http://purl.org/spar/doco/>
    PREFIX deo: <http://purl.org/spar/deo/>
    PREFIX po: <http://www.essepuntato.it/2008/12/pattern#>
    PREFIX dcterms: <http://purl.org/dc/terms/>
    PREFIX fabio: <http://purl.org/spar/fabio/>
    PREFIX co: <http://purl.org/co/>
    PREFIX c4o: <http://purl.org/spar/c4o>

### CQ1

What are all the sections contained within the article's body matter, and in which sequential order do they appear?

    SELECT ?section ?sectionType
    WHERE {
        ?bodyMatter a doco:BodyMatter ;
                    co:firstItem ?item .
        
        ?item co:itemContent ?section .
        ?item co:nextItem* ?next .
        ?next co:itemContent ?section .
        
        OPTIONAL { ?section a ?sectionType . }
    }

### CQ2

What is the literal textual content of the first sentence belonging to the first paragraph of the introduction section?

    SELECT ?sentenceText
    WHERE {
        ?introSection a deo:Introduction .
        
        ?introSection co:firstItem ?headerItem .
        ?headerItem co:nextItem ?firstParagraphItem .
        ?firstParagraphItem co:itemContent ?firstParagraph .
        ?firstParagraph a doco:Paragraph .
        
        ?firstParagraph co:firstItem ?firstSentenceItem .
        ?firstSentenceItem co:itemContent ?firstSentence .
        
        ?firstSentence c4o:hasContent ?sentenceText .
    }

### CQ3

Which in-text references are contained within a specific sentence, and what are their literal textual markers?

    SELECT ?reference ?textMarker
    WHERE {
        ?sentence a doco:Sentence ;
                po:contains ?reference .
        
        ?reference c4o:hasContent ?textMarker .
    }

### CQ4

What is the full bibliographic text of the reference cited by a specific inline citation marker?

    SELECT ?inlineMarker ?fullBibliographicText
    WHERE {
        ?reference a deo:Reference ;
                c4o:hasContent ?inlineMarker ;
                dcterms:references ?bibReference .
        
        ?bibReference a deo:BibliographicReference ;
                    c4o:hasContent ?fullBibliographicText .
    }
    """@en ;
    dcterms:issued "2015-07-03" ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/legalcode> ;
    dcterms:modified "2026-06-25" ;
    dcterms:publisher <https://ror.org/00wb4mk85> ;
    dcterms:source <https://github.com/SPAROntologies/doco/tree/master/docs> ;
    bibo:doi "https://doi.org/10.25504/FAIRsharing.162003" ;
    bibo:status <http://purl.org/ontology/bibo/status/published> ;
    vann:preferredNamespacePrefix "doco" ;
    vann:preferredNamespaceUri "http://purl.org/spar/doco/"^^xsd:anyURI ;
    rdfs:seeAlso <http://www.sparontologies.net/ontologies/doco> ;
    owl:backwardCompatibleWith doco:2015-07-03 ;
    owl:imports <http://purl.org/spar/deo>,
        <http://purl.org/spar/po> ;
    owl:priorVersion doco:2015-07-03 ;
    owl:versionIRI doco:2026-06-25 ;
    owl:versionInfo "1.4.0" ;
    foaf:logo <https://github.com/SPAROntologies/doco/blob/master/spar.png> ;
    schema:codeRepository <https://github.com/SPAROntologies/doco> ;
    schema:image <https://github.com/SPAROntologies/doco/blob/master/docs/current/doco.png> ;
    schema:includedInDataCatalog <https://fairsharing.org/> ;
    schema:keywords "bibliometrics"@en,
        "document components"@en,
        "scholarly publishing"@en,
        "scientometrics"@en,
        "semantic publishing"@en .

doco:BibliographicReferenceList a owl:Class ;
    rdfs:label "bibliographic reference list"@en ;
    vann:example """
    :my-bibliographic-reference-list a doco:BibliographicReferenceList ; 
        pattern:contains :my-bibliographic-reference-01, :my-bibliographic-reference-02 .
    """ ;
    rdfs:comment "A list, usually within a bibliography, of all the references within the citing document that refer to  journal articles, books, book chapters, Web sites or similar publications."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:ListOfReferences [ a owl:Restriction ;
                        owl:onProperty po:contains ;
                        owl:someValuesFrom deo:BibliographicReference ] ) ] ;
    vs:term_status reg:statusStable .

doco:Bibliography a owl:Class ;
    rdfs:label "bibliography"@en ;
    vann:example """
    :my-bibliography a doco:Bibliography ; 
        dcterms:hasPart :my-bibliographic-reference-01 .
    """ ;
    rdfs:comment "A document section containing a list of bibliographic references."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( [ a owl:Class ;
                        owl:unionOf ( doco:Chapter doco:Section ) ] [ a owl:Restriction ;
                        owl:onProperty dcterms:hasPart ;
                        owl:someValuesFrom deo:BibliographicReference ] ) ] ;
    vs:term_status reg:statusStable .

doco:BlockQuotation a owl:Class ;
    rdfs:label "block quotation"@en ;
    vann:example """
    :my-block-quotation a doco:BlockQuotation ; 
        c4o:hasContent '''
            Now, in reality, the world have paid too great a compliment to critics, and 
            have imagined them men of much greater profundity than they really are. 
            From this complaisance the critics have been emboldened to assume a dictatorial 
            power, and have so far succeeded that they are now become the masters, and have 
            the assurance to give laws to those authors from whose predecessors they 
            originally received them.
        '''@en .
    """ ;
    rdfs:comment "A block quotation (also known as a long quotation or extract) is a quotation in a written document which is set off from the main text as a container for distinct paragraphs, which is typically distinguished visually using indentation, a different font, or smaller size. Block quotations are used for longer passages than run-in quotations (which are set off with quotation marks)."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf po:Container ;
    vs:term_status reg:statusStable .

doco:ChapterLabel a owl:Class ;
    rdfs:label "chapter label"@en ;
    vann:example """
    :my-chapter-label a doco:ChapterLabel ; 
        c4o:hasContent 'Chapter 1'@en ;
        dcterms:isPartOf :my-chapter .
    """ ;
    rdfs:comment "A block containing a label for the chapter, that may include the chapter number."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:Label [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom doco:Chapter ] ) ] ;
    owl:disjointWith doco:SectionLabel ;
    vs:term_status reg:statusStable .

doco:ChapterSubtitle a owl:Class ;
    rdfs:label "chapter subtitle"@en ;
    vann:example """
    :my-chapter-subtitle a doco:ChapterSubtitle ;
        c4o:hasContent 'Or: The beginning of this book'@en ;
        dcterms:isPartOf :my-chapter .
    """ ;
    rdfs:comment "The subtitle of a chapter."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty dcterms:isPartOf ;
            owl:someValuesFrom doco:Chapter ],
        doco:Subtitle ;
    owl:disjointWith doco:SectionSubtitle ;
    vs:term_status reg:statusStable .

doco:ChapterTitle a owl:Class ;
    rdfs:label "chapter title"@en ;
    vann:example """
    :my-title a doco:ChapterTitle ;
        c4o:hasContent 'The First Chapter'@en ;
        pattern:isContainedByAsHeader :my-chapter .
    """ ;
    rdfs:comment "The title of a chapter."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty po:isContainedByAsHeader ;
            owl:someValuesFrom doco:Chapter ],
        doco:Title ;
    owl:disjointWith doco:SectionTitle ;
    vs:term_status reg:statusStable .

doco:FigureLabel a owl:Class ;
    rdfs:label "figure label"@en ;
    vann:example """
    :my-figure-label a doco:FigureLabel ;
        c4o:hasContent 'Figure 1'@en ;
        dcterms:isPartOf :my-figure-box .
    """ ;
    rdfs:comment "A block containing a label for the figure box, that may include the figure number."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:Label [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom doco:FigureBox ] ) ] ;
    vs:term_status reg:statusStable .

doco:Stanza a owl:Class ;
    rdfs:label "stanza"@en ;
    vann:example """
    :my-stanza a doco:Stanza ; 
        pattern:contains :my-line-01, :my-line-02 .
    """ ;
    rdfs:comment "A unit within a larger poem. A stanza consists of a grouping of lines, set off by a vertical space from other stanzas, that usually has a set pattern of meter and rhyme."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( [ a owl:Class ;
                        owl:intersectionOf ( deo:DiscourseElement po:Container ) ] [ a owl:Restriction ;
                        owl:allValuesFrom doco:Line ;
                        owl:onProperty po:contains ] ) ] ;
    vs:term_status reg:statusStable .

doco:TableLabel a owl:Class ;
    rdfs:label "table label"@en ;
    vann:example """
    :my-table-label a doco:TableLabel ;
        c4o:hasContent 'Table 1'@en ;
        dcterms:isPartOf :my-table-box .
    """ ;
    rdfs:comment "A block containing a label for the table box, that may include the table number."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:Label [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom doco:TableBox ] ) ] ;
    vs:term_status reg:statusStable .

doco:TextBox a owl:Class ;
    rdfs:label "text box"@en ;
    vann:example """
    :my-text-box a doco:TextBox ;
        c4o:hasContent 'Using a text box, you can create a block of text that appears above, below, or around pictures, charts, or other objects.'@en .
    """ ;
    rdfs:comment "A space within a document that contains textual content relating to, quoting from or expanding upon the main text. Usually a textbox is delimited by a border or use of a background colour distinct from that of the main text."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf deo:DiscourseElement,
        po:Container ;
    vs:term_status reg:statusStable .

vann:example a owl:AnnotationProperty .

vann:preferredNamespacePrefix a owl:AnnotationProperty .

vann:preferredNamespaceUri a owl:AnnotationProperty .

vs:term_status a owl:AnnotationProperty .

skos:note a owl:AnnotationProperty .

foaf:logo a owl:AnnotationProperty .

schema:codeRepository a owl:AnnotationProperty .

schema:includedInDataCatalog a owl:AnnotationProperty .

deo:Caption a owl:Class ;
    rdfs:label "caption"@en ;
    rdfs:comment "Text accompanying another item, such as a picture."@en ;
    rdfs:isDefinedBy deo: .

deo:Reference a owl:Class ;
    rdfs:label "reference"@en ;
    rdfs:comment "A reference to a specific part of the document, or to another publication."@en ;
    rdfs:isDefinedBy deo: .

doco:Abstract a owl:Class ;
    rdfs:label "abstract" ;
    vann:example """
    :my-abstract a doco:Abstract ;
        c4o:hasContent 'The history of abstracting dates back to the point when it was felt necessary to summarise the content of documents in order to make the information contained in them more accessible.'@en ;
        dcterms:isPartOf :my-front-matter .
    """ ;
    rdfs:comment "A brief summary of a book, a research article, thesis, review, conference proceeding or any in-depth analysis of a particular subject or discipline, the purpose of which is to help the reader quickly ascertain the publication's purpose." ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( [ a owl:Class ;
                        owl:unionOf ( doco:Chapter doco:Section ) ] [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom [ a owl:Class ;
                                owl:unionOf ( doco:BodyMatter doco:FrontMatter ) ] ] ) ] ;
    vs:term_status reg:statusStable .

doco:Afterword a owl:Class ;
    rdfs:label "afterword"@en ;
    vann:example """
    :my-afterword a doco:Afterword ; 
        dcterms:isPartOf :my-back-matter .
    """ ;
    rdfs:comment "A literary device that is often found at the end of a piece of literature. It generally covers the story of how the book came into being, or how the idea for the book was developed. Alternatively, it may be written by someone other than the author of the book, and may discuss the work's historical or cultural context, if the work is being reissued many years after its original publication."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:Section [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom doco:BackMatter ] ) ] ;
    vs:term_status reg:statusStable .

doco:Appendix a owl:Class ;
    rdfs:label "appendix"@en ;
    vann:example """
    :my-appendix a doco:Appendix ; 
        dcterms:isPartOf :my-back-matter .
    """ ;
    rdfs:comment "A supplemental addition to the main work. It may contain data, more detailed information about methods and materials, or provide additional detail concerning the information found in the main work."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( [ a owl:Class ;
                        owl:intersectionOf ( doco:Section po:HeadedContainer ) ] [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom doco:BackMatter ] ) ] ;
    vs:term_status reg:statusStable .

doco:Colophon a owl:Class ;
    rdfs:label "colophon"@en ;
    vann:example """
    :my-colophon a doco:Colophon ;
        c4o:hasContent 'O most gracious reader, wash your hands and touch the book only like this: turn the pages softly and keep your fingers far away from the text'@en ;
        dcterms:isPartOf :my-back-matter .
    """ ;
    rdfs:comment "A brief description of publication or production notes relevant to the document."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:Section [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom [ a owl:Class ;
                                owl:unionOf ( doco:BackMatter doco:FrontMatter ) ] ] ) ] ;
    vs:term_status reg:statusStable .

doco:ComplexRunInQuotation a owl:Class ;
    rdfs:label "complex run-in quotation"@en ;
    vann:example """
    :my-complex-run-in-quotation a doco:ComplexRunInQuotation ;
        c4o:hasContent 'Carol said “Go ahead“ when I asked her if the launcher was ready.'@en .
    """ ;
    rdfs:comment "A quotation with a complex structure, that is included inline and is usually enclosed within quotation marks."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf deo:DiscourseElement,
        po:Popup ;
    vs:term_status reg:statusStable .

doco:Figure a owl:Class ;
    rdfs:label "figure"@en ;
    vann:example """
    :my-figure a doco:Figure .
    """ ;
    rdfs:comment "A communication object comprising one or more graphics, drawings, images, or other visual representations.."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:unionOf ( po:Meta po:Milestone ) ],
        deo:DiscourseElement ;
    vs:term_status reg:statusStable .

doco:Footnote a owl:Class ;
    rdfs:label "footnote"@en ;
    vann:example """
    :my-footnote a doco:Footnote ;
        c4o:hasContent '1. ^ Hayes, Andrea (2011). Language Toolkit for New Zealand 2. Cambridge University Press. p. 17. ISBN 9781107624702.'@en .
    """ ;
    rdfs:comment "A structure within a sentence that permits the author to make a comment or to cite another publication in support of the text, or both. A footnote is normally flagged by a superscript number immediately following that portion of the text to which it relates. For convenience of reading, the text of the footnote is usually printed at the bottom of the page or at the end of a text."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:unionOf ( po:Container po:Popup ) ],
        deo:DiscourseElement ;
    vs:term_status reg:statusStable .

doco:Foreword a owl:Class ;
    rdfs:label "foreword"@en ;
    vann:example """
    :my-foreword a doco:Foreword ; 
        dcterms:isPartOf :my-front-matter .
    """ ;
    rdfs:comment "A section in a book or report, usually written by someone other than the author, that introduces or commends the document to the reader. It may include description of the interaction between the writer of the foreword and the author."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:Section [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom doco:FrontMatter ] ) ] ;
    vs:term_status reg:statusStable .

doco:FormulaBox a owl:Class ;
    rdfs:label "formula box"@en ;
    vann:example """
    :my-formula-box a doco:FormulaBox ; 
        dcterms:hasPart :my-formula .
    """ ;
    rdfs:comment "A space within a document that contains one or more formulae."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( [ a owl:Class ;
                        owl:intersectionOf ( deo:DiscourseElement po:Container ) ] [ a owl:Restriction ;
                        owl:onProperty dcterms:hasPart ;
                        owl:someValuesFrom doco:Formula ] ) ] ;
    vs:term_status reg:statusStable .

doco:Glossary a owl:Class ;
    rdfs:label "glossary"@en ;
    vann:example """
    :my-glossary a doco:Glossary ; 
        dcterms:isPartOf :my-back-matter .
    """ ;
    rdfs:comment "A set of definitions of words or phrases of importance to the work, normally alphabetized. In longer works of fiction, the entries may contains places and characters."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:Section [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom [ a owl:Class ;
                                owl:unionOf ( doco:BackMatter doco:FrontMatter ) ] ] ) ] ;
    vs:term_status reg:statusStable .

doco:Index a owl:Class ;
    rdfs:label "index"@en ;
    vann:example """
    :my-index a doco:Index ; 
        dcterms:isPartOf :my-back-matter ;
        pattern:contains :my-list-of-references .
    """ ;
    rdfs:comment "A section containing a list of references to information on the named topic of importance to the content of the document. The references may be to page numbers, paragraph numbers, section numbers or chapter numbers within the document."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( [ a owl:Class ;
                        owl:intersectionOf ( doco:Section po:HeadedContainer ) ] [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom doco:BackMatter ] ) ],
        [ a owl:Restriction ;
            owl:onProperty dcterms:hasPart ;
            owl:someValuesFrom [ a owl:Class ;
                    owl:intersectionOf ( doco:ListOfReferences [ a owl:Restriction ;
                                owl:allValuesFrom [ a owl:Restriction ;
                                        owl:onProperty dcterms:relation ;
                                        owl:someValuesFrom doco:TextChunk ] ;
                                owl:onProperty po:contains ] ) ] ] ;
    vs:term_status reg:statusStable .

doco:Line a owl:Class ;
    rdfs:label "line"@en ;
    vann:example """
    :my-line a doco:Line ;
        c4o:hasContent 'Tyger Tyger, burning bright,'@en .
    """ ;
    rdfs:comment """A line in poetry is a unit of language into which a poem is divided which operates on principles which are distinct from and not necessarily coincident with grammatical structures, such as the sentence or clauses in sentences.

A distinct numbered group of lines in verse is normally called a stanza."""@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf deo:DiscourseElement,
        po:Block ;
    vs:term_status reg:statusStable .

doco:ListOfAuthors a owl:Class ;
    rdfs:label "list of authors"@en ;
    vann:example """
    :my-list-of-authors a doco:ListOfAuthors .
    """ ;
    rdfs:comment "A list of items each denoting an author of a particular publication."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf doco:ListOfAgents ;
    vs:term_status reg:statusStable .

doco:ListOfContributors a owl:Class ;
    rdfs:label "list of contributors"@en ;
    vann:example """
    :my-list-of-contributors a doco:ListOfContributors .
    """ ;
    rdfs:comment "A list of items, each denoting a contributor to a publication such as an encyclopedia or a text book, where such contributions are insufficient to warrant classification as author."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf doco:ListOfAgents ;
    vs:term_status reg:statusStable .

doco:ListOfFigures a owl:Class ;
    rdfs:label "list of figures"@en ;
    vann:example """
    :my-list-of-figures a doco:ListOfFigures ; 
        dcterms:isPartOf :my-front-matter ;
        pattern:contains :my-list-of-references .
    """ ;
    rdfs:comment "A section of the document listing all the figures, identified by their titles and referenced to their locations in the document. May also be referred to as 'List of illustrations'."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( [ a owl:Class ;
                        owl:intersectionOf ( doco:Section po:HeadedContainer ) ] [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom [ a owl:Class ;
                                owl:unionOf ( doco:BackMatter doco:FrontMatter ) ] ] ) ],
        [ a owl:Restriction ;
            owl:onProperty dcterms:hasPart ;
            owl:someValuesFrom [ a owl:Class ;
                    owl:intersectionOf ( doco:ListOfReferences [ a owl:Restriction ;
                                owl:allValuesFrom [ a owl:Restriction ;
                                        owl:onProperty dcterms:relation ;
                                        owl:someValuesFrom doco:FigureBox ] ;
                                owl:onProperty po:contains ] ) ] ] ;
    vs:term_status reg:statusStable .

doco:ListOfOrganizations a owl:Class ;
    rdfs:label "list of organizations"@en ;
    vann:example """
    :my-list-or-organizations a doco:ListOfOrganizations .
    """ ;
    rdfs:comment "A list of items, each denoting an organization or institution related to the publication, for example the authors' affiliations, or the suppliers of information, software, equipment or consumables used in the work described in the publication."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf doco:ListOfAgents ;
    vs:term_status reg:statusStable .

doco:ListOfTables a owl:Class ;
    rdfs:label "list of tables"@en ;
    vann:example """
    :my-list-of-tables a doco:ListOfTables ; 
        dcterms:isPartOf :my-front-matter ;
        pattern:contains :my-list-of-references .
    """ ;
    rdfs:comment "A section of the document listing all the tables, identified by their titles and referenced to their locations in the document."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( [ a owl:Class ;
                        owl:intersectionOf ( doco:Section po:HeadedContainer ) ] [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom [ a owl:Class ;
                                owl:unionOf ( doco:BackMatter doco:FrontMatter ) ] ] ) ],
        [ a owl:Restriction ;
            owl:onProperty dcterms:hasPart ;
            owl:someValuesFrom [ a owl:Class ;
                    owl:intersectionOf ( doco:ListOfReferences [ a owl:Restriction ;
                                owl:allValuesFrom [ a owl:Restriction ;
                                        owl:onProperty dcterms:relation ;
                                        owl:someValuesFrom doco:TableBox ] ;
                                owl:onProperty po:contains ] ) ] ] ;
    vs:term_status reg:statusStable .

doco:Part a owl:Class ;
    rdfs:label "part"@en ;
    vann:example """
    :my-part a doco:Part ; 
        pattern:contains :my-chapter-01 , :my-chapter-02 .
    """ ;
    rdfs:comment "A container of a semantic subdivision of a document. For example, chapters of a novel may be grouped into distinct parts that may be named 'Part 1', 'Part 2', etc., 'Book 1', 'Book 2', etc., or 'Genesis', 'Exodus', etc."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( deo:DiscourseElement po:Container ) ] ;
    vs:term_status reg:statusStable .

doco:Preface a owl:Class ;
    rdfs:label "preface"@en ;
    vann:example """
    :my-preface a doco:Preface ; 
        dcterms:isPartOf :my-front-matter .
    """ ;
    rdfs:comment "A section describing how the document came into being, or how the idea for it was developed. The preface may contains acknowledgements. The preface to a later edition of the work often explains in what respect that edition differs from previous ones."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:Section [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom doco:FrontMatter ] ) ] ;
    vs:term_status reg:statusStable .

doco:SectionLabel a owl:Class ;
    rdfs:label "section label"@en ;
    vann:example """
    :my-section-label a doco:SectionLabel ; 
        c4o:hasContent 'Section 1'@en ;
        dcterms:isPartOf :my-section .
    """ ;
    rdfs:comment "A block containing a label for the section, that may include the section number."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty dcterms:isPartOf ;
            owl:someValuesFrom doco:Section ],
        doco:Label ;
    vs:term_status reg:statusStable .

doco:SectionSubtitle a owl:Class ;
    rdfs:label "section subtitle"@en ;
    vann:example """
    :my-section-subtitle a doco:SectionSubtitle ;
        c4o:hasContent 'The first section of the book'@en ;
        dcterms:isPartOf :my-section .
    """ ;
    rdfs:comment "The subtitle of a section."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty dcterms:isPartOf ;
            owl:someValuesFrom doco:Section ],
        doco:Subtitle ;
    vs:term_status reg:statusStable .

doco:SectionTitle a owl:Class ;
    rdfs:label "section title"@en ;
    vann:example """
    :my-section-title a doco:SectionTitle ; 
        c4o:hasContent 'Another Beginning'@en ;
        pattern:isContainedByAsHeader :my-section .
    """ ;
    rdfs:comment "The title of a section."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty po:isContainedByAsHeader ;
            owl:someValuesFrom doco:Section ],
        doco:Title ;
    vs:term_status reg:statusStable .

doco:SimpleRunInQuotation a owl:Class ;
    rdfs:label "simple run-in quotation"@en ;
    vann:example """
    :my-simple-run-in-quotation a doco:SimpleRunInQuotation ;
        c4o:hasContent 'The Minister said, “Prospects for growth are not good.”'@en .
    """ ;
    rdfs:comment "A textual quotation that is included inline and is usually enclosed within quotation marks."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf po:Inline ;
    vs:term_status reg:statusStable .

doco:TableOfContents a owl:Class ;
    rdfs:label "table of contents"@en ;
    vann:example """
    :my-table-of-contents a doco:TableOfContents ; 
        dcterms:isPartOf :my-front-matter .
    """ ;
    rdfs:comment "A section of the document listing all the chapters and sections, identified by their titles and referenced to their locations in the document. The table of contents may include a list of the front-matter and back-matter items, in addition to the body-matter items.  Where the document is a journal or magazine issue, the table of content lists the constituent items contained in that issue, typically by title, authors and first page number."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:Section [ a owl:Restriction ;
                        owl:onProperty dcterms:isPartOf ;
                        owl:someValuesFrom [ a owl:Class ;
                                owl:unionOf ( doco:BackMatter doco:FrontMatter ) ] ] ) ],
        [ a owl:Restriction ;
            owl:onProperty dcterms:hasPart ;
            owl:someValuesFrom [ a owl:Class ;
                    owl:intersectionOf ( doco:ListOfReferences [ a owl:Restriction ;
                                owl:allValuesFrom [ a owl:Restriction ;
                                        owl:onProperty dcterms:relation ;
                                        owl:someValuesFrom doco:Section ] ;
                                owl:onProperty po:contains ] ) ] ] ;
    vs:term_status reg:statusStable .

po:Meta a owl:Class ;
    rdfs:label "meta element"@en ;
    rdfs:comment "A document content nestable element."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    skos:note """
This class describes elements that contain neither other elements nor textual content. 
Contrarily to the pattern Milestone, which was meant to describe markup elements that impact the document because of their location, the main feature of its disjoint sibling is the mere existence, independently from the position it has within the document. 

Meta elements convey metadata information about the document or part of it, independently of where they are. 
Thus, meta elements can be contained only within container elements.
  """@en .

po:Milestone a owl:Class ;
    rdfs:label "milestone element"@en ;
    rdfs:comment "A document content nestable element."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    skos:note """
This class describe elements that contain neither other elements nor textual content. 
Moreover, similarly to Inline, elements following the Milestone pattern can only be contained within block or inline elements (and consequently they also cannot be used as root elements of documents).

The distinctive characteristic of the pattern Milestone is the location it assumes within the document.
  """@en .

po:Pattern a owl:Class ;
    rdfs:label "pattern-based element"@en ;
    rdfs:comment "A document content nestable element."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    skos:note """
Any entity belonging to this class is compliant with exactly one structural pattern.
"""@en .

po:containsAsHeader a owl:ObjectProperty ;
    rdfs:label "contains as header"@en ;
    rdfs:comment "A structured element contains another generic element as part of its header."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    rdfs:subProperyOf po:contains .

deo:BibliographicReference a owl:Class ;
    rdfs:label "bibliographic reference"@en ;
    rdfs:comment "A reference, usually contained in a footnote or a bibliographic reference list, that refer to another publication, such as a journal article, a book, a book chapter or a Web site. The inclusion of the bibliographic reference in a publication constitutes the performative act of bibliographic citation."@en ;
    rdfs:isDefinedBy deo: .

doco:FigureBox a owl:Class ;
    rdfs:label "figure box"@en ;
    vann:example """
    :my-figure-box a doco:FigureBox ; 
        dcterms:hasPart :my-figure, :my-caption .
    """ ;
    rdfs:comment "A space within a document that contains a figure and its caption."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:CaptionedBox [ a owl:Restriction ;
                        owl:onProperty dcterms:hasPart ;
                        owl:someValuesFrom doco:Figure ] ) ] ;
    owl:disjointWith doco:TableBox ;
    vs:term_status reg:statusStable .

doco:Formula a owl:Class ;
    rdfs:label "formula"@en ;
    vann:example """
    :my-formula a doco:Formula ;
        c4o:hasContent 'a^2 * b^2 = a^2b^2' .
    """ ;
    rdfs:comment "A unit of information expressed in mathematical, chemical or logical symbols and language."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf deo:DiscourseElement,
        po:Popup ;
    vs:term_status reg:statusStable .

doco:Sentence a owl:Class ;
    rdfs:label "sentence"@en ;
    vann:example """
    :my-sentence a doco:Sentence ;
        c4o:hasContent 'The most straightforward and widely adopted approach reduces the concept of an identifier to a simple literal string or an URI, attaching it directly to the described resource.'@en .
    """ ;
    rdfs:comment "An expression in natural language forming a single grammatical unit. A sentence minimally consists of a subject and an intransitive verb, or a subject, a transitive verb and an object, and may include additional dependent clauses. In written text, a sentence is always terminated by a full stop. A sentence can include words grouped meaningfully to express a statement, a question, an exclamation, a request or a command."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf deo:DiscourseElement,
        po:Inline ;
    vs:term_status reg:statusStable .

doco:Table a owl:Class ;
    rdfs:label "table"@en ;
    vann:example """
    :my-table a doco:Table ;
        pattern:contains :my-container .
    """ ;
    rdfs:comment "A set of data arranged in cells within rows and columns."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty po:contains ;
            owl:someValuesFrom po:Container ],
        deo:DiscourseElement,
        po:Table ;
    vs:term_status reg:statusStable .

doco:TextChunk a owl:Class ;
    rdfs:label "text chunk"@en ;
    vann:example """
    :my-text-chunk a doco:TextChunk ;
        c4o:hasContent 'The most straightforward and widely adopted approach reduces the concept of an identifier [...]'@en .
    """ ;
    rdfs:comment "A piece of text defined by a start point and an end point."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf po:Inline ;
    vs:term_status reg:statusStable .

po:Field a owl:Class ;
    rdfs:label "field element"@en ;
    rdfs:comment "A document content nestable element."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    skos:note """
This class is defined to describe literal metadata or text that is not really part of the document body, contrarily to its disjointed sibling Atom. 
Its main difference with Meta is that Field can contain textual content.
  """@en .

doco:CaptionedBox a owl:Class ;
    rdfs:label "captioned box"@en ;
    vann:example """
    :my-captioned-box a doco:CaptionedBox ; 
        dcterms:hasPart :my-caption .
    """ ;
    rdfs:comment "A rectangle space within a page that contains an object and its related caption."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( [ a owl:Class ;
                        owl:intersectionOf ( deo:DiscourseElement po:Container ) ] [ a owl:Restriction ;
                        owl:onProperty dcterms:hasPart ;
                        owl:someValuesFrom deo:Caption ] ) ] ;
    vs:term_status reg:statusStable .

doco:List a owl:Class ;
    rdfs:label "list"@en ;
    vann:example """
    :my-list a doco:List ; 
        pattern:contains :my-item .
    """ ;
    rdfs:comment "An enumeration of items."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( po:Table [ a owl:Restriction ;
                        owl:onProperty po:contains ;
                        owl:someValuesFrom po:Pattern ] ) ],
        [ a owl:Restriction ;
            owl:allValuesFrom [ a owl:Class ;
                    owl:unionOf ( po:Block po:Field [ a owl:Class ;
                                owl:intersectionOf ( po:Container [ a owl:Class ;
                                            owl:complementOf [ a owl:Class ;
                                                    owl:unionOf ( po:HeadedContainer po:Table ) ] ] ) ] ) ] ;
            owl:onProperty po:contains ],
        deo:DiscourseElement ;
    vs:term_status reg:statusStable .

doco:ListOfAgents a owl:Class ;
    rdfs:label "list of agents"@en ;
    vann:example """
    :my-list-of-agents a doco:ListOfAgents .
    """ ;
    rdfs:comment "A list of items each denoting an agent, such as an author, a contributor or an organization, related to a particular publication."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf doco:List ;
    owl:disjointWith doco:ListOfReferences ;
    vs:term_status reg:statusStable .

doco:Paragraph a owl:Class ;
    rdfs:label "paragraph"@en ;
    vann:example """
    :my-paragraph a doco:Paragraph ;
        pattern:contains :my-sentence .
    """ ;
    rdfs:comment "A self-contained unit of discourse that deals with a particular point or idea. Paragraphs contains one or more sentences. The start of a paragraph is indicated by beginning on a new line, which may be indented or separated by a small vertical space by the preceding paragraph. "@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( [ a owl:Class ;
                        owl:intersectionOf ( deo:DiscourseElement po:Block ) ] [ a owl:Restriction ;
                        owl:onProperty po:contains ;
                        owl:someValuesFrom doco:Sentence ] ) ] ;
    vs:term_status reg:statusStable .

doco:Subtitle a owl:Class ;
    rdfs:label "subtitle"@en ;
    vann:example """
    :my-subtitle a doco:Subtitle ;
        c4o:hasContent 'The Modern Prometheus'@en .
    """ ;
    rdfs:comment "An explanatory or alternative title of a publication."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf deo:DiscourseElement,
        po:Block ;
    vs:term_status reg:statusStable ;
    skos:note "For example, Mary Shelley uses the alternative title 'The Modern Prometheus' to hint at the theme of her most famous novel 'Frankenstein'; Nick Efford uses the subtitle 'a practical introduction using Java' to qualify the title of his book 'Digital Image Processing'"@en .

doco:TableBox a owl:Class ;
    rdfs:label "table box"@en ;
    vann:example """
    :my-table-box a doco:TableBox ; 
        dcterms:hasPart :my-table .
    """ ;
    rdfs:comment "A space within a document that contains a table and its caption."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:CaptionedBox [ a owl:Restriction ;
                        owl:onProperty dcterms:hasPart ;
                        owl:someValuesFrom doco:Table ] ) ] ;
    vs:term_status reg:statusStable .

doco:Title a owl:Class ;
    rdfs:label "title"@en ;
    vann:example """
    :my-title a doco:Title ;
        c4o:hasContent 'Frankenstein'@en ;
        pattern:isContainedByAsHeader :my-header-container .
    """ ;
    rdfs:comment "A word, phrase or sentence that precedes and indicates the subject of a document or a document component - e.g., a book, a report, a news article, a chapter, a section or a table."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:unionOf ( po:Block po:Field ) ],
        [ a owl:Restriction ;
            owl:onProperty po:isContainedByAsHeader ;
            owl:someValuesFrom po:HeadedContainer ],
        deo:DiscourseElement ;
    vs:term_status reg:statusStable .

po:Inline a owl:Class ;
    rdfs:label "inline element"@en ;
    rdfs:comment "A document content nestable element."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    skos:note """
This class has the same use and content model of the pattern Block, but differing primarily because a) inline elements can contain other elements compliant with the same pattern while block elements cannot, and b) inline elements must always be contained by other block or inline elements and by no other type of element.

These constraints also imply that inline elements cannot be used as root elements of documents and that the class Block is disjoint with the class Inline (i.e., a markup element cannot be a block and an inline at the same time).
  """@en .

po:Popup a owl:Class ;
    rdfs:label "popup element"@en ;
    rdfs:comment "A bucket element that is only present within block and inline elements."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    skos:note """
Popup elements are used whenever complex structures need to be placed within content elements such as paragraphs.
"""@en .

po:Table a owl:Class ;
    rdfs:label "table element"@en ;
    rdfs:comment "A container element that must contain only homogeneous elements (but they can be repeated)."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> .

po:isContainedByAsHeader a owl:ObjectProperty ;
    rdfs:label "is contained by as header"@en ;
    rdfs:comment "An element is contained by another structured element as part of its header."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    rdfs:subProperyOf po:isContainedBy ;
    owl:inverseOf po:containsAsHeader .

doco:BodyMatter a owl:Class ;
    rdfs:label "body matter"@en ;
    vann:example """
    :my-body-matter a doco:BodyMatter ; 
        pattern:contains :my-chapter .
    """ ;
    rdfs:comment "The central principle part of a document, that contains the real content. It may be subdivided hierarchically by the use of chapters and sections."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( deo:DiscourseElement po:Container ) ],
        [ a owl:Restriction ;
            owl:allValuesFrom [ a owl:Class ;
                    owl:complementOf [ a owl:Class ;
                            owl:unionOf ( doco:BackMatter doco:BodyMatter doco:FrontMatter ) ] ] ;
            owl:onProperty po:isContainedBy ] ;
    vs:term_status reg:statusStable .

doco:Label a owl:Class ;
    rdfs:label "label"@en ;
    vann:example """
    :my-label a doco:Label ;
        c4o:hasContent 'Chapter One'@en .
    """ ;
    rdfs:comment "A block containing text, that may include a number (e.g., \"Chapter Three\", \"3.2\", \"Figure 1\", \"Table\"), used to identify an item within the document, for example a chapter, a figure, a section or a table."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Restriction ;
            owl:onProperty po:isContainedBy ;
            owl:someValuesFrom [ a owl:Class ;
                    owl:unionOf ( po:Block po:Container ) ] ],
        deo:DiscourseElement ;
    vs:term_status reg:statusStable .

po:isContainedBy a owl:ObjectProperty ;
    rdfs:label "is contained by"@en ;
    rdfs:comment "A structured element is contained by another generic element."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    owl:inverseOf po:contains .

dcterms:relation a owl:ObjectProperty ;
    rdfs:label "relation"@en ;
    rdfs:comment "A related resource."@en ;
    rdfs:isDefinedBy dcterms: .

doco:ListOfReferences a owl:Class ;
    rdfs:label "list of references"@en ;
    vann:example """
    :my-list-of-references a doco:ListOfReferences ;
        pattern:contains :my-reference-01 , :my-reference-02 .
    """ ;
    rdfs:comment "A list of items each representing a reference to a specific part of the same document, or to another publication."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( doco:List [ a owl:Restriction ;
                        owl:allValuesFrom deo:Reference ;
                        owl:onProperty po:contains ] ) ] ;
    vs:term_status reg:statusStable .

po:Block a owl:Class ;
    rdfs:label "block element"@en ;
    rdfs:comment "A document content nestable element."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    skos:note """
This class organise the document content as a sequence of nestable elements and text nodes. In particular, elements following this pattern can contain text and other elements compliant with the patterns Inline, Atom, Milestones and Popup, which will be introduced in the following. 
Furthermore, it is a requirement that block elements are contained only by container and popup elements
  """@en .

doco:Chapter a owl:Class ;
    rdfs:label "chapter"@en ;
    vann:example """
    :my-chapter a doco:Chapter ; 
        pattern:contains :my-section .
    """ ;
    rdfs:comment "A principle division of the body matter of a large document, such as a book, a report or a legislative document."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( deo:DiscourseElement po:HeadedContainer ) ],
        [ a owl:Restriction ;
            owl:onProperty po:contains ;
            owl:someValuesFrom [ a owl:Class ;
                    owl:unionOf ( doco:Paragraph doco:Section ) ] ],
        [ a owl:Restriction ;
            owl:onProperty po:contains ;
            owl:someValuesFrom [ a owl:Class ;
                    owl:complementOf doco:Chapter ] ] ;
    vs:term_status reg:statusStable .

po:HeadedContainer a owl:Class ;
    rdfs:label "headed-container element"@en ;
    rdfs:comment "A document content nestable element."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    skos:note """
This class describes container elements whose content model need to begin with one or more block elements (the heading), specified through the property `po:containsAsHeader`.
  """@en .

dcterms:hasPart a owl:ObjectProperty ;
    rdfs:label "has part"@en ;
    rdfs:comment "A related resource that is included either physically or logically in the described resource."@en ;
    rdfs:isDefinedBy dcterms: ;
    rdfs:subPropertyOf dcterms:relation .

doco:BackMatter a owl:Class ;
    rdfs:label "back matter"@en ;
    vann:example """
    :my-back-matter a doco:BackMatter ; 
        pattern:contains :my-bibliography .
    """ ;
    rdfs:comment "The final principle part of a document, in which is usually found the bibliography, index, appendixes, etc."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( deo:DiscourseElement po:Container ) ],
        [ a owl:Restriction ;
            owl:allValuesFrom [ a owl:Class ;
                    owl:complementOf [ a owl:Class ;
                            owl:unionOf ( doco:BackMatter doco:BodyMatter doco:FrontMatter ) ] ] ;
            owl:onProperty po:isContainedBy ] ;
    vs:term_status reg:statusStable .

doco:FrontMatter a owl:Class ;
    rdfs:label "front matter"@en ;
    vann:example """
    :my-front-matter a doco:FrontMatter ; 
        pattern:contains :my-table-of-contents .
    """ ;
    rdfs:comment "The initial principle part of a document, usually containing self-referential metadata. In a book, this typically includes its title, authors, publisher, publication date, ISBN and copyright declaration, together with the preface, foreword, table of content, etc. In a journal article, the front matter is normally restricted to the title, authors and the authors' affiliation details, although the latter may alternatively be included in a footnote or the back matter. In books, the front matter pages may be numbered in lowercase Roman numerals."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( deo:DiscourseElement po:Container ) ],
        [ a owl:Restriction ;
            owl:allValuesFrom [ a owl:Class ;
                    owl:complementOf [ a owl:Class ;
                            owl:unionOf ( doco:BackMatter doco:BodyMatter doco:FrontMatter ) ] ] ;
            owl:onProperty po:isContainedBy ] ;
    vs:term_status reg:statusStable .

po:Container a owl:Class ;
    rdfs:label "container element"@en ;
    rdfs:comment "A document content nestable element."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> ;
    skos:note """
This class concerns the structural organization of a document. 
Elements following this pattern contain no textual content and contain only elements compliant with the patterns: Meta, Field, Block and any subtype of Container. 
It is disjointed with the pattern Popup, although they share the same content model.
  """@en .

dcterms:isPartOf a owl:ObjectProperty ;
    rdfs:label "is part of"@en ;
    rdfs:comment "A related resource in which the described resource is physically or logically included."@en ;
    rdfs:isDefinedBy dcterms: ;
    rdfs:subPropertyOf dcterms:relation ;
    owl:inverseOf dcterms:hasPart .

po:contains a owl:ObjectProperty ;
    rdfs:label "contains"@en ;
    rdfs:comment "A structured element contains another generic element."@en ;
    rdfs:isDefinedBy <http://purl.org/spar/po/> .

doco:Section a owl:Class ;
    rdfs:label "section"@en ;
    vann:example """
    :my-section a doco:Section ; 
        pattern:contains :my-paragraph .
    """ ;
    rdfs:comment "A logical division of the text, usually numbered and/or titled, which may contain subsections."@en ;
    rdfs:isDefinedBy doco: ;
    rdfs:subClassOf [ a owl:Class ;
            owl:intersectionOf ( deo:DiscourseElement po:HeadedContainer ) ],
        [ a owl:Restriction ;
            owl:onProperty po:contains ;
            owl:someValuesFrom [ a owl:Class ;
                    owl:unionOf ( doco:Paragraph doco:Section ) ] ],
        [ a owl:Restriction ;
            owl:onProperty po:contains ;
            owl:someValuesFrom [ a owl:Class ;
                    owl:complementOf doco:Chapter ] ] ;
    vs:term_status reg:statusStable .

deo:DiscourseElement a owl:Class ;
    rdfs:label "discourse element"@en ;
    rdfs:comment "An element of a document that carries out a rhetorical function."@en ;
    rdfs:isDefinedBy deo: .

[] a owl:AllDisjointClasses ;
    owl:members ( doco:Abstract doco:Afterword doco:Appendix doco:Colophon doco:Foreword doco:Glossary doco:Index doco:ListOfFigures doco:ListOfTables doco:Preface doco:TableOfContents ) .

[] a owl:AllDisjointClasses ;
    owl:members ( doco:BackMatter doco:BodyMatter doco:CaptionedBox doco:Chapter doco:ComplexRunInQuotation doco:Footnote doco:Formula doco:FormulaBox doco:FrontMatter doco:List doco:Part doco:Section doco:Table ) .

[] a owl:AllDisjointClasses ;
    owl:members ( doco:Label doco:Paragraph doco:Subtitle doco:Title ) .

[] a owl:AllDisjointClasses ;
    owl:members ( doco:ListOfAuthors doco:ListOfContributors doco:ListOfOrganizations ) .

[] a owl:AllDisjointClasses ;
    owl:members ( doco:Sentence doco:SimpleRunInQuotation doco:TextChunk ) .

