The Pattern Ontology Describing documents by means of their structural components
type: Ontology
creator: Angelo Di Iorio
creator: Fabio Vitali
creator: Silvio Peroni
date: 2013-07-16
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.
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.
label: pattern ontology
backward compatible with: Pattern-1 4.owl
prior version: Pattern-1 4.owl
version info: 1.4.2

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

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

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

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

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

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

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

Imp
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
  argument1: http://www.essepuntato.it/2008/12/pattern#x
  argument2: http://www.essepuntato.it/2008/12/pattern#s
body: DatavaluedPropertyAtom
  property predicate: has name
  argument1: http://www.essepuntato.it/2008/12/pattern#y
  argument2: http://www.essepuntato.it/2008/12/pattern#t
body: BuiltinAtom
  builtin: notEqual
  arguments: http://www.essepuntato.it/2008/12/pattern#s
  arguments: http://www.essepuntato.it/2008/12/pattern#t
head: DatavaluedPropertyAtom
  property predicate: can contain heteronymous elements
  argument1: http://www.essepuntato.it/2008/12/pattern#p
  argument2: true

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