PREFIX pattern: <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 xsd: <http://www.w3.org/2001/XMLSchema#>

pattern:Bucket a rdfs:Class ;
  rdfs:label "bucket element"@en ;
  rdfs:comment "An element that can contain other elements but no text nodes."@en ;
  rdfs:subClassOf pattern:NonTextual , pattern:Structured .

pattern:contains a rdf:Property ;
  rdfs:label "contains"@en ;
  rdfs:comment "The relation between a structured element containing another generic element, and that other element."@en ;
  rdfs:domain pattern:Structured ;
  rdfs:range <https://w3id.org/linkml/Any> .

pattern:canContainHeteronymousElements a rdf:Property ;
  rdfs:label "can contain heteronymous elements"@en ;
  rdfs:comment "An indication whether a hierarchical-based entity contains al least two entities having different names or not."@en ;
  rdfs:domain pattern:Structured ;
  rdfs:range xsd:boolean .

pattern:canContainHomonymousElements a rdf:Property ;
  rdfs:label "can contain homonymous elements"@en ;
  rdfs:comment "An indication whether a hierarchical-based entity contains al least two entities that share the same name or not."@en ;
  rdfs:domain pattern:Structured ;
  rdfs:range xsd:boolean .

pattern:Atom a rdfs:Class ;
  rdfs:label "atom element"@en ;
  rdfs:comment "Literal text that is part of the document body."@en .

pattern:isContainedBy a rdf:Property ;
  rdfs:label "is contained by"@en ;
  rdfs:comment "An element that is contained by another structured element."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

pattern:Flat a rdfs:Class ;
  rdfs:label "flat element"@en ;
  rdfs:comment "An element that can contain text nodes but no elements."@en ;
  rdfs:subClassOf pattern:NonStructured , pattern:Textual .

pattern:Pattern a rdfs:Class ;
  rdfs:label "pattern-based element"@en ;
  rdfs:comment """
An atomic component of a document that is able to capture a recurrent and well knwon structure of a document.
"""@en .

<http://www.w3.org/2003/11/swrl#Variable> a rdfs:Class .

pattern:Inline a rdfs:Class ;
  rdfs:label "inline element"@en ;
  rdfs:comment "An element that organises the document content as a sequence of nestable elements and text nodes, and that can contain other elements compliant with the same pattern."@en .

pattern:Meta a rdfs:Class ;
  rdfs:label "meta element"@en ;
  rdfs:comment "An element that contains neither other elements nor textual content."@en .

pattern:Container a rdfs:Class ;
  rdfs:label "container element"@en ;
  rdfs:comment "An element concerning the structural organization of a document."@en .

pattern:Popup a rdfs:Class ;
  rdfs:label "popup element"@en ;
  rdfs:comment "A bucket element that is only present within block and inline elements."@en .

pattern:Structured a rdfs:Class ;
  rdfs:label "structured element"@en ;
  rdfs:comment "An element that can contain other elements."@en ;
  rdfs:subClassOf pattern:Pattern .

pattern:Record a rdfs:Class ;
  rdfs:label "record element"@en ;
  rdfs:comment "A container element that can only contain heterogeneous and non repeatable elements."@en .

pattern:Table a rdfs:Class ;
  rdfs:label "table element"@en ;
  rdfs:comment "A container element that must contain only homogeneous elements (but they can be repeated)."@en .

pattern:NonTextual a rdfs:Class ;
  rdfs:label "non-textual element"@en ;
  rdfs:comment "An element that cannot have textual content in its content model."@en ;
  rdfs:subClassOf pattern:Pattern .

pattern:Milestone a rdfs:Class ;
  rdfs:label "milestone element"@en ;
  rdfs:comment """
An elements that contains neither other elements nor textual content.
"""@en .

pattern:NonStructured a rdfs:Class ;
  rdfs:label "non-structured element"@en ;
  rdfs:comment "An element that cannot contain other elements."@en ;
  rdfs:subClassOf pattern:Pattern .

pattern:Marker a rdfs:Class ;
  rdfs:label "marker element"@en ;
  rdfs:comment "An element that can contain neither text nodes nor elements."@en ;
  rdfs:subClassOf pattern:NonStructured , pattern:NonTextual .

pattern:Field a rdfs:Class ;
  rdfs:label "field element"@en ;
  rdfs:comment "Literal metadata or text that is not really part of the document body."@en .

pattern:Mixed a rdfs:Class ;
  rdfs:label "mixed element"@en ;
  rdfs:comment "An element that can contain other elements and text nodes."@en ;
  rdfs:subClassOf pattern:Structured , pattern:Textual .

pattern:HeadedContainer a rdfs:Class ;
  rdfs:label "headed-container element"@en ;
  rdfs:comment "A container element whose content model needs to begin with one or more block elements (the heading)."@en .

pattern:containsAsHeader a rdf:Property ;
  rdfs:label "contains as header"@en ;
  rdfs:comment "The relation between a structured element, containing another generic element as part of its header, and that other element."@en ;
  rdfs:domain pattern:Structured ;
  rdfs:range pattern:Block ;
  rdfs:subPropertyOf pattern:contains .

pattern:Block a rdfs:Class ;
  rdfs:label "block element"@en ;
  rdfs:comment "An element that organises the document content as a sequence of nestable elements and text nodes."@en .

<https://w3id.org/linkml/Any> a rdfs:Class ;
  rdfs:comment "An unconstrained type or object"@en .

pattern:Textual a rdfs:Class ;
  rdfs:label "textual element"@en ;
  rdfs:comment "An element that can have textual content in their content models."@en ;
  rdfs:subClassOf pattern:Pattern .

pattern:hasName a rdf:Property ;
  rdfs:label "has name"@en ;
  rdfs:comment "The name of a particular element."@en ;
  rdfs:range xsd:string .

pattern:isContainedByAsHeader a rdf:Property ;
  rdfs:label "is contained by as header"@en ;
  rdfs:comment "The relation between an element, contained by another structured element as part of its header, and that other element."@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf pattern:isContainedBy .
