pattern ontology
type: Ontology
version info: 1.4.2
creator: Angelo Di Iorio
creator: Fabio Vitali
creator: Silvio Peroni
date: 2013-07-16
comment: An ontology defining formally patterns for segmenting a document into atomic components, in order to be manipulated independently and re-flowed in different contexts.
title: The Pattern Ontology Describing documents by means of their structural components
description: The idea of using patterns to produce reusable and high-quality assets is not new in the literature. Software engineers, architects (as Alexander who first introduced this term) and designers very often use – or rather reuse – patterns to handle problems which recur over and over. Patterns have also been studied to modularize and customize web ontologies (http://ontologydesignpatterns.org). They guarantee the flexibility and maintainability of concepts and solutions in several heterogeneous scenarios. We've been investigating patterns for XML documents for some time. The overall goal of this research is to understand how the structure of digital documents can be segmented into atomic components, that can be manipulated independently and re-flowed in different contexts. Instead of defining a large number of complex and diversified structures, we have identified a small number of structures/patterns that are sufficient to express what most users need. Our idea is that a low number of patterns are enough to capture the most relevant document structures.
prior version: Pattern-1 4.owl
backward compatible with: Pattern-1 4.owl

contains
type: ObjectProperty
comment: A structured element contains another generic element.
domain: structured element
inverse of: is contained by

contains as header
type: ObjectProperty
comment: A structured element contains another generic element as part of its header.
sub property of: contains
inverse of: is contained by as header

is contained by
type: ObjectProperty
comment: An element that is contained by another structured element.

is contained by as header
type: ObjectProperty
comment: An element is contained by another structured element as part of its header.
sub property of: is contained by

can contain heteronymous elements
type: DatatypeProperty
type: FunctionalProperty
comment: A hierarchical-based entity contains al least two entities having different names.
domain: structured element
range: boolean

can contain homonymous elements
type: DatatypeProperty
type: FunctionalProperty
comment: A hierarchical-based entity contains al least two entities that share the same name.
domain: structured element
range: boolean

has name
type: DatatypeProperty
type: FunctionalProperty
comment: The name of a particular element.
range: string

atom element
type: Class
equivalent class: Class
  intersection of: flat element
  intersection of: Restriction
    on property: is contained by
    all values from: Class
      union of: block element
      union of: inline element
subclass of: Restriction
  on property: is contained by
  some values from: Class
    union of: block element
    union of: inline element
disjoint with: field element
comment: This class is defined to describe literal text that is part of the document body. Moreover, similarly to Inline, elements following the Atom pattern can only be contained within block or inline elements (and consequently they also cannot be used as root elements of documents). It can contain textual content and no other elements.

block element
type: Class
equivalent class: Class
  intersection of: mixed element
  intersection of: Restriction
    on property: is contained by
    all values from: Class
      union of: container element
      union of: popup element
subclass of: Restriction
  on property: contains
  all values from: Class
    union of: atom element
    union of: inline element
    union of: milestone element
    union of: popup element
disjoint with: inline element
comment: 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

bucket element
type: Class
subclass of: non-textual element
subclass of: structured element
disjoint with: marker element
comment: The class of elements that can contain other elements but no text nodes.

container element
type: Class
equivalent class: Class
  intersection of: bucket element
  intersection of: Restriction
    on property: is contained by
    all values from: Class
      union of: container element
      union of: popup element
subclass of: Restriction
  on property: contains
  all values from: Class
    union of: block element
    union of: container element
    union of: field element
    union of: meta element
disjoint with: popup element
comment: 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.

field element
type: Class
equivalent class: Class
  intersection of: flat element
  intersection of: Restriction
    on property: is contained by
    all values from: Class
      union of: container element
      union of: popup element
comment: 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.

flat element
type: Class
subclass of: non-structured element
subclass of: textual element
disjoint with: mixed element
comment: The class of elements that can contain text nodes but no elements.

headed-container element
type: Class
subclass of: Class
  intersection of: container element
  intersection of: Restriction
    on property: contains as header
    all values from: block element
comment: This class describes container elements whose content model need to begin with one or more block elements (the heading), specified through the property containsAsHeader.

inline element
type: Class
equivalent class: Class
  intersection of: mixed element
  intersection of: Restriction
    on property: is contained by
    all values from: Class
      union of: block element
      union of: inline element
subclass of: Restriction
  on property: is contained by
  some values from: Class
    union of: block element
    union of: inline element
subclass of: Restriction
  on property: contains
  all values from: Class
    union of: atom element
    union of: inline element
    union of: milestone element
    union of: popup element
comment: 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).

marker element
type: Class
subclass of: non-structured element
subclass of: non-textual element
comment: The class of elements that can contain neither text nodes nor elements.

meta element
type: Class
equivalent class: Class
  intersection of: marker element
  intersection of: Restriction
    on property: is contained by
    some values from: Class
      union of: container element
      union of: popup element
disjoint with: milestone element
comment: 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.

milestone element
type: Class
equivalent class: Class
  intersection of: marker element
  intersection of: Restriction
    on property: is contained by
    all values from: Class
      union of: block element
      union of: inline element
subclass of: Restriction
  on property: is contained by
  some values from: Class
    union of: block element
    union of: inline element
comment: 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.

mixed element
type: Class
subclass of: structured element
subclass of: textual element
comment: The class of elements that can contain other elements and text nodes.

non-structured element
type: Class
equivalent class: Class
  complement of: structured element
subclass of: pattern-based element
disjoint with: structured element
comment: The class of elements that cannot contain other elements.

non-textual element
type: Class
equivalent class: Class
  complement of: textual element
subclass of: pattern-based element
disjoint with: textual element
comment: The class of elements that cannot have textual content in their content models.

pattern-based element
type: Class
subclass of: Thing
comment: A structural pattern is an atomic component of a document, that is able to capture a recurrent and well knwon structure of a document. Any entity belonging to this class is compliant with exactly one structural pattern.

popup element
type: Class
equivalent class: Class
  intersection of: bucket element
  intersection of: Restriction
    on property: is contained by
    all values from: Class
      union of: block element
      union of: inline element
subclass of: Restriction
  on property: is contained by
  some values from: Class
    union of: block element
    union of: inline element
subclass of: Restriction
  on property: contains
  all values from: Class
    union of: block element
    union of: container element
    union of: field element
    union of: meta element
comment: This class defines bucket elements that are only present within block and inline elements. Popup elements are used whenever complex structures need to be placed within content elements such as paragraphs.

record element
type: Class
equivalent class: Class
  intersection of: container element
  intersection of: Restriction
    on property: can contain heteronymous elements
    has value: true
  intersection of: Restriction
    on property: can contain homonymous elements
    has value: false
comment: This class describes container elements that can only contain heterogeneous and non repeatable elements.

structured element
type: Class
subclass of: pattern-based element
comment: The class of elements that can contain other elements.

table element
type: Class
equivalent class: Class
  intersection of: container element
  intersection of: Restriction
    on property: can contain heteronymous elements
    has value: false
  intersection of: Restriction
    on property: can contain homonymous elements
    has value: true
comment: This class describes container elements that must contain only homogeneous elements (but they can be repeated).

textual element
type: Class
subclass of: pattern-based element
comment: The class of elements that can have textual content in their content models.

Imp
body: ClassAtom
  class predicate: record element
  argument1: http://www.essepuntato.it/2008/12/pattern#x
head: DatavaluedPropertyAtom
  argument2: false
  property predicate: can contain homonymous elements
  argument1: http://www.essepuntato.it/2008/12/pattern#x

Imp
head: DatavaluedPropertyAtom
  argument2: true
  property predicate: can contain heteronymous elements
  argument1: http://www.essepuntato.it/2008/12/pattern#p
body: IndividualPropertyAtom
  property predicate: contains
  argument1: http://www.essepuntato.it/2008/12/pattern#p
  argument2: http://www.essepuntato.it/2008/12/pattern#x
body: IndividualPropertyAtom
  property predicate: contains
  argument1: http://www.essepuntato.it/2008/12/pattern#p
  argument2: http://www.essepuntato.it/2008/12/pattern#y
body: DatavaluedPropertyAtom
  property predicate: has name
  argument2: http://www.essepuntato.it/2008/12/pattern#s
  argument1: http://www.essepuntato.it/2008/12/pattern#x
body: DatavaluedPropertyAtom
  property predicate: has name
  argument2: http://www.essepuntato.it/2008/12/pattern#t
  argument1: http://www.essepuntato.it/2008/12/pattern#y
body: BuiltinAtom
  builtin: notEqual
  arguments: http://www.essepuntato.it/2008/12/pattern#s
  arguments: http://www.essepuntato.it/2008/12/pattern#t

Imp
head: DatavaluedPropertyAtom
  argument2: true
  property predicate: can contain homonymous elements
  argument1: p
body: IndividualPropertyAtom
  property predicate: contains
  argument1: p
  argument2: x
body: IndividualPropertyAtom
  property predicate: contains
  argument1: p
  argument2: y
body: DatavaluedPropertyAtom
  property predicate: has name
  argument2: s
  argument1: x
body: DatavaluedPropertyAtom
  property predicate: has name
  argument2: s
  argument1: y

Imp
body: ClassAtom
  class predicate: table element
  argument1: http://www.essepuntato.it/2008/12/pattern#x
head: DatavaluedPropertyAtom
  argument2: false
  property predicate: can contain heteronymous elements
  argument1: http://www.essepuntato.it/2008/12/pattern#x