├── .gitignore ├── Documentation ├── figures │ ├── 02-ARB.pdf │ ├── agentrole.pdf │ ├── aggregation.pdf │ ├── event.pdf │ ├── explicit.pdf │ ├── figure_sources │ │ ├── agentrole.graphml │ │ ├── aggregation.graphml │ │ ├── event.graphml │ │ ├── explicit.graphml │ │ ├── identifier.graphml │ │ ├── name.graphml │ │ ├── participantrole.graphml │ │ ├── partonymy.graphml │ │ ├── provenance.graphml │ │ ├── quantities.graphml │ │ ├── reification.graphml │ │ ├── sequence.graphml │ │ ├── spatial.graphml │ │ ├── ste.graphml │ │ ├── stubs.graphml │ │ ├── temporal.graphml │ │ ├── trajectory.graphml │ │ └── tree.graphml │ ├── identifier.pdf │ ├── name.pdf │ ├── participantrole.pdf │ ├── partonymy.pdf │ ├── placeholder.png │ ├── provenance.pdf │ ├── quantities.pdf │ ├── reification.pdf │ ├── sequence.pdf │ ├── spatial.pdf │ ├── ste.pdf │ ├── stubs.pdf │ ├── temporal.pdf │ ├── trajectory.pdf │ └── tree.pdf ├── introduction.tex ├── lit.bib ├── main.tex ├── patterns.tex ├── patterns │ ├── agentrole.tex │ ├── aggregation.tex │ ├── event.tex │ ├── explicit.tex │ ├── identifier.tex │ ├── name.tex │ ├── participantrole.tex │ ├── partonymy.tex │ ├── provenance.tex │ ├── quantities.tex │ ├── reification.tex │ ├── sequence.tex │ ├── spatial.tex │ ├── ste.tex │ ├── stubs.tex │ ├── temporal.tex │ ├── trajectory.tex │ └── tree.tex ├── preamble.tex ├── prelims.tex └── scripts │ └── pattern.py ├── MODL 1.0 ├── MODL_Documentation.pdf └── MODL_v1.0.zip ├── MODL.owl ├── MODL ├── agentrole.owl ├── aggregation.owl ├── event.owl ├── explicittyping.owl ├── identifier.owl ├── name.owl ├── participantrole.owl ├── provenance.owl ├── quantities.owl ├── reification.owl ├── sequence.owl ├── spatialextent.owl ├── spatiotemporalextent.owl ├── stub.owl ├── temporalextent.owl ├── trajectory.owl └── tree.owl ├── README.md └── license.txt /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | *.aux 3 | *.bibl 4 | *.bbl 5 | *.blg 6 | *.out 7 | *.synctex* 8 | *.toc 9 | *.lof 10 | Documentation/main.pdf -------------------------------------------------------------------------------- /Documentation/figures/02-ARB.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/02-ARB.pdf -------------------------------------------------------------------------------- /Documentation/figures/agentrole.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/agentrole.pdf -------------------------------------------------------------------------------- /Documentation/figures/aggregation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/aggregation.pdf -------------------------------------------------------------------------------- /Documentation/figures/event.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/event.pdf -------------------------------------------------------------------------------- /Documentation/figures/explicit.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/explicit.pdf -------------------------------------------------------------------------------- /Documentation/figures/figure_sources/agentrole.graphml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Agent 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | AgentRole 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | Thing 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | TemporalExtent 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | performsAgentRole 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | providesAgentRole 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | hasTemporalExtent 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /Documentation/figures/figure_sources/aggregation.graphml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Bag 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | Collection 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | BagItem 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | itemOf 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /Documentation/figures/figure_sources/event.graphml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | SpatiotemporalExtent 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | Event 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | ParticipantRole 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | hasSpatiotemporalExtent 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | providesParticipantRole 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | subEventOf 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /Documentation/figures/figure_sources/explicit.graphml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Type 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | Thing 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | hasType 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /Documentation/figures/figure_sources/name.graphml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | NameStub 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | xsd:string 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | nameAsString 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /Documentation/figures/figure_sources/partonymy.graphml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Thing 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | RelationInstance 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | PO-Component-Type 46 | PO-Member-Type 47 | PO-Portion-Type 48 | PO-Stuff-Type 49 | PO-Feature-Type 50 | PO-Place-Type 51 | PO-Part-Of-Type 52 | Spatially-Located-In-Type 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | isPartOf 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | hasWhole 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | part-of, 92 | spatially-located-in 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /Documentation/figures/figure_sources/sequence.graphml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | FirstItem 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | ListItem 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | LastItem 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | hasNext, 85 | hasSuccessor 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /Documentation/figures/figure_sources/stubs.graphml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Stub 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | xsd:AnyValue 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | hasValue 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /Documentation/figures/identifier.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/identifier.pdf -------------------------------------------------------------------------------- /Documentation/figures/name.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/name.pdf -------------------------------------------------------------------------------- /Documentation/figures/participantrole.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/participantrole.pdf -------------------------------------------------------------------------------- /Documentation/figures/partonymy.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/partonymy.pdf -------------------------------------------------------------------------------- /Documentation/figures/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/placeholder.png -------------------------------------------------------------------------------- /Documentation/figures/provenance.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/provenance.pdf -------------------------------------------------------------------------------- /Documentation/figures/quantities.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/quantities.pdf -------------------------------------------------------------------------------- /Documentation/figures/reification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/reification.pdf -------------------------------------------------------------------------------- /Documentation/figures/sequence.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/sequence.pdf -------------------------------------------------------------------------------- /Documentation/figures/spatial.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/spatial.pdf -------------------------------------------------------------------------------- /Documentation/figures/ste.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/ste.pdf -------------------------------------------------------------------------------- /Documentation/figures/stubs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/stubs.pdf -------------------------------------------------------------------------------- /Documentation/figures/temporal.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/temporal.pdf -------------------------------------------------------------------------------- /Documentation/figures/trajectory.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/trajectory.pdf -------------------------------------------------------------------------------- /Documentation/figures/tree.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/Documentation/figures/tree.pdf -------------------------------------------------------------------------------- /Documentation/introduction.tex: -------------------------------------------------------------------------------- 1 | \chapter{Introduction} 2 | 3 | \section*{Motivation} 4 | The Information Age is an apt description for these modern times; between the World Wide Web and the Internet of Things an unfathomable amount of information is accessible to humans and machines, but the sheer volume and heterogeneity of the data have their drawbacks. Humans have difficulty drawing \emph{meaning} from large amounts of data. Machines can parse the data, but do not \emph{understand} it. Thus, in order to bridge this gap, data would need to be organized in such a way that some critical part of the human conceptualization is preserved. Ontologies are a natural fit for this role, as they may act as a vehicle for the sharing of \emph{understanding} \cite{gruber}. 5 | 6 | Unfortunately, published ontologies have infrequently lived up to such a promise, hence the recent emphasis on FAIR (Findable, Accessible, Interoperable, and Reusable) data practices \cite{fair}. More specifically, many ontologies are not interoperable or reusable. This is usually due to incompatible ontological commitments: strong---or very weak---ontological committments lead to an ontology that is really only useful for a specific use-case, or to an ambiguous model that is almost meaningless by itself. 7 | 8 | To combat this, we have developed a methodology for developing so-called modular ontologies \cite{chess}. In particular, we are especially interested in pattern-based modules \cite{momtut}. A modularized ontology is an ontology that individual users can easily adapt to their own use-cases, while still preserving relations with other versions of the ontology; that is, keeping it \emph{interoperable} with other ontologies. Such ontologies may be so adapted due to their ``plug-and-play'' nature; that is, one module may be swapped out for another developed from the same pattern. 9 | 10 | An ontology design pattern is, essentially, a small self-contained ontology that addresses a general problem that has been observed to be invariant over different domains or applications \cite{odpbook}. By tailoring a pattern to a more specific use-case, an ontology engineer has developed a \emph{module}. This modelling paradigm moves much of the cost away from the formalization of a conceptualization (i.e. the logical axiomatization). Instead, pattern-based modular ontolody design (PBMOD) is predicated upon knowledge of available patterns, as well as being aware of the use-cases it addresses and its ontological commitments. 11 | 12 | Thus, in order to address the findability and accessibility aspects of PBMOD, we have developed MODL: a modular ontology design library, which is herein described. 13 | 14 | \section*{Overview} 15 | MODL is a curated collection of well-documented ontology design patterns. Some of the patterns are novel, but many more have been extracted from existing ontologies and streamlined for use in a general manner. MODL, as an artefact, is distributed online as a collection of annotated OWL files and this technical report. 16 | 17 | There are two different ways to use MODL---for use in ontology modelling and for use in tools. In both cases, MODL is distributed as a ZIP archive of the patterns' OWL files and accompanying documentation. In the case of the Ontology Engineer, it is simply used as a resource while building an ontology, perhaps by using Modular Ontology Modelling or eXtreme Design methodologies. For the tool developer, we also supply an ontology consisting of exactly the OPLa annotations from each pattern that pertain to \textsf{OntologicalCollection}. As OPLa is fully specified in OWL, these annotations make up an ontology of patterns and their relations. One particular use-case that we foresee is a tool developer querying the ontology for which patterns are related to the current pattern, or looking for a pattern based on keywords or similarity to competency questions. 18 | 19 | \section*{Organization} 20 | \subsection*{Namespaces} 21 | For MODL we currently use the namespace \url{https://archive.org/services/purl/purl/modular_ontology_design_library//}. 22 | 23 | \subsection*{Current Patterns} 24 | 25 | \begin{enumerate} 26 | \item Metapatterns 27 | \begin{enumerate} 28 | \item Explicit Typing 29 | \item Property Reification 30 | \item Stubs 31 | \end{enumerate} 32 | \item Organization of Data 33 | \begin{enumerate} 34 | \item Aggregation, Bag, Collection 35 | \item Sequence, List 36 | \item Tree 37 | \end{enumerate} 38 | \item Space, Time, and Movement 39 | \begin{enumerate} 40 | \item Spatiotemporal Extent 41 | \item Spatial Extent 42 | \item Temporal Extent 43 | \item Trajectory 44 | \item Event 45 | \end{enumerate} 46 | \item Agents and Roles 47 | \begin{enumerate} 48 | \item AgentRole 49 | \item ParticipantRole 50 | \item Name Stub 51 | \end{enumerate} 52 | \item Description and Details 53 | \begin{enumerate} 54 | \item Quantities and Units 55 | \item Partonymy/Meronymy 56 | \item Provenance 57 | \item Identifier 58 | \end{enumerate} 59 | \end{enumerate} 60 | 61 | \subsection*{Categories} 62 | \noindent\textbf{Metapatterns} This category contains patterns that can be considered to be ``patterns for patterns.'' In other literature, notably \cite{odp1}, they may be called \emph{structural ontology design patterns}, as they are independent of any specific context, i.e. they are content-independent. This is particularly true for the metapattern for property reification, which, while a modelling strategy, is also a workaround for the lack of $n$-ary relationships in OWL. The other metapatterns address structural design choices frequently encountered when working with domain experts. They present a best practice to non-ontologists for addressing language specific limitations. 63 | 64 | \noindent\textbf{Organization of Data} This category contains patterns that pertain to how data might be organized. These patterns are necessarily highly abstract, as they are ontological reflections of common data structures in computer science. The pattern for aggregation, bag, or collection is a simple model for connecting many concepts to a single concept. Analogously, for the list and tree pattterns, which aim to capture ordinality and acyclicity, as well. More so than other patterns in this library, these patterns provide an axiomatization as a high-level framework that must be specialized (or modularized) to be truly useful. 65 | 66 | \noindent\textbf{Space, Time, and Movement} This category contains patterns that model the movement of a thing through a space or spaces and a general event pattern. The semantic trajectory pattern is a more general pattern for modelling the discrete movements along some dimensions. The spatiotemporal extent pattern is a trajectory along the familiar dimensions of time and space. Both patterns are included for convenience. 67 | 68 | \noindent\textbf{Agents and Roles} This category contains patterns that pertain to agents interacting with things. Here, we consider an agent to be anything that performs some action or role. This is important, as it decouples the role of an agent from the agent itself. For example, a \textsf{Person} may be \textsf{Husband} and \textsf{Widower} at some point, but should not be both simultaneously. These patterns enable the capture of this data. In fact, the agent role and participante role patterns are convenient specializations of property reification that have evolved into a modelling practice writ large. In this category, we also include the name stub, which is a convenient instantiation of the stub metapattern; it allows us to acknowledge that a name is a complicated thing, but sometimes we only really need the string representation. 69 | 70 | \noindent\textbf{Description and Details} This category contains patterns that model the description of things. These patterns are relatively straightforward, models for capturing ``how much?'' and ``what kind?'' for a particular thing; patterns that are derived from Winston's part-whole taxonomy \cite{partof}; a pattern extracted from PROV-O \cite{provo}, perhaps to be used to answer ``where did this data come from?''; and a pattern for associating an identifier with something. -------------------------------------------------------------------------------- /Documentation/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass[11pt,oneside, letterpaper]{memoir} 2 | 3 | \input{preamble} 4 | \sloppy 5 | 6 | \counterwithin*{equation}{section} 7 | 8 | \begin{document} 9 | 10 | \frontmatter 11 | \begin{titlingpage} 12 | \titleBWF 13 | \end{titlingpage} 14 | 15 | {\small 16 | \tableofcontents{} 17 | \newpage 18 | \listoffigures{} 19 | } 20 | 21 | \mainmatter 22 | 23 | \input{introduction} 24 | \input{prelims} 25 | \input{patterns} 26 | 27 | \bibliographystyle{abbrv} 28 | \bibliography{lit} 29 | 30 | \end{document} -------------------------------------------------------------------------------- /Documentation/patterns.tex: -------------------------------------------------------------------------------- 1 | \chapter{Patterns} 2 | \label{sec:pats} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | 5 | \input{patterns/explicit} 6 | \input{patterns/reification} 7 | \input{patterns/stubs} 8 | \input{patterns/aggregation} 9 | \input{patterns/sequence} 10 | \input{patterns/tree} 11 | \input{patterns/ste} 12 | \input{patterns/spatial} 13 | \input{patterns/temporal} 14 | \input{patterns/trajectory} 15 | \input{patterns/event} 16 | \input{patterns/agentrole} 17 | \input{patterns/participantrole} 18 | \input{patterns/name} 19 | \input{patterns/quantities} 20 | \input{patterns/partonymy} 21 | \input{patterns/provenance} 22 | \input{patterns/identifier} 23 | -------------------------------------------------------------------------------- /Documentation/patterns/agentrole.tex: -------------------------------------------------------------------------------- 1 | \section{AgentRole} 2 | \label{sec:AgentRole} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.8\textwidth]{figures/agentrole} 7 | \end{center} 8 | \caption{Schema Diagram for the AgentRole Pattern. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:AgentRole} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:AgentRole} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | The \textsf{AgentRole} pattern is essentially a reification of association with something. That is, it's very unlikely that an Agent will be associated with something for all time. Thus, the association relation is not binary, perhaps $\textit{associated}(x,y,t)$, agent $x$ is associated with thing $y$ at time $t$. Thus, the reification. The association becomes a concept in its own right and has a temporal extent, allowing an \textsf{Agent} to be associated to a \textsf{Thing} (e.g. \textsf{Event}, Section \ref{sec:Event}) for some \textsf{TemporalExtent}. 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:AgentRole} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | % General 22 | \textsf{AgentRole} &\sqsubseteq \text{=1}\textsf{isPerformedBy.Agent} \\ 23 | \textsf{AgentRole} &\sqsubseteq \text{=1}\textsf{hasTemporalExtent.TemporalExtent} \\ 24 | % Domain and Range Restrictions 25 | \exists\textsf{isPerformedBy.Agent} &\sqsubseteq \textsf{AgentRole} \\ 26 | \textsf{AgentRole} &\sqsubseteq \forall\textsf{isPerformedBy.Agent} \\ 27 | \exists\textsf{hasTemporalExtent.TemporalExtent} &\sqsubseteq \textsf{AgentRole} \\ 28 | \top &\sqsubseteq \forall\textsf{hasTemporalExtent.TemporalExtent} \\ 29 | \top &\sqsubseteq \forall\textsf{providesAgentRole.AgentRole} \\ 30 | % Inverses 31 | \textsf{isPerformedBy} &\equiv \textsf{performsAgentRole}^- \\ 32 | \textsf{isProvidedBy} &\equiv \textsf{providesAgentRole}^- 33 | \end{align} 34 | 35 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 36 | \subsection{Explanations} 37 | \label{exp:AgentRole} 38 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 39 | \begin{enumerate} 40 | \item Exactly one \textsf{Agent} performs an \textsf{AgentRole}. 41 | \item An \textsf{AgentRole} has exactly one \textsf{TemporalExtent}. 42 | \item Scoped Domain: the scoped domain of \textsf{isPerformedBy}, scoped by \textsf{Agent}, is \textsf{AgentRole}. 43 | \item Scoped Range: the scoped range of \textsf{isPerformedBy}, scoped by \textsf{AgentRole}, is \textsf{Agent}. 44 | \item Scoped Domain: the scoped domain of \textsf{hasTemporalExtent}, scoped by \textsf{TemporalExtent}, is \textsf{AgentRole}. 45 | \item Range: the range of \textsf{hasTemporalExtent} is \textsf{TemporalExtent}. 46 | \item Range: the range of \textsf{providesAgentRole} is \textsf{AgentRole}. 47 | \item Inverse Alias. 48 | \item Inverse Alias. 49 | \end{enumerate} 50 | 51 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 52 | \subsection{Competency Questions} 53 | \label{cqs:AgentRole} 54 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 55 | \begin{enumerate}[CQ1.] 56 | \item When was Cogan Shimizu a student at Wright State University? 57 | \item Who was the lead actor for the movie, Sharknado? 58 | \item Who was on the World Cup winning team in 2017? 59 | \end{enumerate} 60 | 61 | \newpage 62 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 63 | % End Section 64 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 65 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/aggregation.tex: -------------------------------------------------------------------------------- 1 | \section{Aggregation, Bag, Collection} 2 | \label{sec:Aggregation,} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.8\textwidth]{figures/aggregation} 7 | \end{center} 8 | \caption{Schema Diagram for the Aggregation, Bag, Collection Pattern. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Aggregation,} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Aggregation,} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | The pattern for an Aggregation, Bag, or Collection is relatively simple. The Bag is a type of unordered collection. This pattern was included in this library for demonstrating a more approachable interface for the partonymy pattern, with respect to membership. For example, we may use this pattern to represent a committee. In this case, the committee member is the\textsf{BagItem}, the committee is the \textsf{Bag}, and the \textsf{itemOf} property is a sub-property to the \textsf{po-member} property found in the Partonymy/Meronymy pattern (Section \ref{sec:Partonymy}). This pattern was adapted from the Bag ontology design pattern and be found at \url{http://ontologydesignpatterns.org/wiki/Submissions:Bag}. Some language is borrowed from the description. 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:Aggregation,} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | % General Axioms 22 | \textsf{Bag} &\sqsubseteq \textsf{Collection} \\ 23 | \textsf{itemOf} &\sqsubseteq \textsf{po-member} \\ 24 | % Domain and Range Restrictions 25 | \exists\textsf{itemOf.BagItem} &\sqsubseteq \textsf{Bag} \\ 26 | \textsf{Bag} &\sqsubseteq \forall\textsf{itemOf.BagItem} \\ 27 | % Inverse Aliases (if any) 28 | \end{align} 29 | 30 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31 | \subsection{Explanations} 32 | \label{exp:Aggregation,} 33 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 34 | \begin{enumerate} 35 | \item Subclass: a \textsf{Bag} is a \textsf{Collection} 36 | \item Subproperty: \textsf{itemOf} is a subproperty to \textsf{po-member} from the Partonymy Pattern (Section \ref{sec:Partonymy}). 37 | \item Scoped Domain: the scoped domain of \textsf{itemOf}, scoped by \textsf{BagItem}, is \textsf{Bag}. 38 | \item Scoped Range: the scoped range of \textsf{itemOf}, scoped by \textsf{Bag}, is \textsf{BagItem}. 39 | \end{enumerate} 40 | 41 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 42 | \subsection{Competency Questions} 43 | \label{cqs:Aggregation,} 44 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 45 | \begin{enumerate}[CQ1.] 46 | \item What bag is this item an element of? 47 | \item What resource does this item refer to? 48 | \item What are the items contained in this bag? 49 | \end{enumerate} 50 | 51 | \newpage 52 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 53 | % End Section 54 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 55 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/event.tex: -------------------------------------------------------------------------------- 1 | \section{Event} 2 | \label{sec:Event} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.8\textwidth]{figures/event} 7 | \end{center} 8 | \caption{Schema Diagram for the Event Pattern. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Event} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Event} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | The purpose of this pattern is to provide a minimalistic model of an event where it is not always possible to separate its spatial and the temporal aspects, thus can model events that move or possess discontinuous temporal extent. Events, according to this model, have at least one participant, attached via a \textsf{ParticipantRole} (Section \ref{sec:ParticipantRole}). A more thorough examination of the pattern and some additional (optional) axioms can be found in \cite{event}. Some language is borrowed from \url{http://ontologydesignpatterns.org/wiki/Submissions:EventCore}. 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:Event} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | % General Axioms 22 | \textsf{subEventOf} \circ \textsf{subEventOf} &\sqsubseteq \textsf{subEventOf} \\ 23 | % Domain and Range Restrictions 24 | \textsf{Event} &\sqsubseteq \text{=1} \textsf{hasSpatiotemporalExtent.SpatiotemporalExtent} \\ 25 | \textsf{Event} &\sqsubseteq \exists \textsf{providesParticipantRole.ParticipantRole} \\ 26 | \top &\sqsubseteq \forall \textsf{hasSpatiotemporalExtent.SpatiotemporalExtent} \\ 27 | \top &\sqsubseteq \forall \textsf{providesParticipantRole.ParticipantRole} \\ 28 | \exists \textsf{subEventOf.}\top &\sqsubseteq \textsf{Event} \\ 29 | \top &\sqsubseteq \forall \textsf{subEventOf.Event} 30 | % Inverse Aliases (if any) 31 | \end{align} 32 | 33 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 34 | \subsection{Explanations} 35 | \label{exp:Event} 36 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 37 | \begin{enumerate} 38 | \item Role Chain: \textsf{subEventOf} is transitive. 39 | \item \textsf{Event} has exactly one \textsf{SpatiotemporalExtent}. 40 | \item \textsf{Event} provides at least one \textsf{ParticipantRole}. 41 | \item Range: the range of \textsf{hasSpatiotemporalExtent} is \textsf{SpatiotemporalExtent}. 42 | \item Range: the range of \textsf{providesParticipantRole} is \textsf{ParticipantRole}. 43 | \item Domain: the domain of \textsf{subEventOf} is \textsf{Event}. 44 | \item Range: the range of \textsf{subEventOf} is \textsf{Event}. 45 | \end{enumerate} 46 | 47 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 48 | \subsection{Remarks} 49 | \label{rem:Event} 50 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 51 | It is also possible to equip the pattern with the following rule. 52 | \begin{equation} 53 | \textsf{Event}(x) \wedge \textsf{providesParticipantRole}(x,p) \wedge \textsf{subEventOf}(x,y) \rightarrow \textsf{providesParticipantRole}(y,p) 54 | \end{equation} 55 | This rule can be converted into OWL DL through \emph{rolification} \cite{KrisnadhiMH11}.This results in the following axioms. 56 | \begin{align} 57 | \textsf{Event} &\equiv \exists R_\textsf{Event}.\textsf{Self} \\ 58 | \textsf{subEventOf}^- \circ R_\textsf{Event} \circ \textsf{providesParticipantRole} &\sqsubseteq \textsf{providesParticipantRole} 59 | \end{align} 60 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 61 | \subsection{Competency Questions} 62 | \label{cqs:Event} 63 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 64 | \begin{enumerate}[CQ1.] 65 | \item Where and when did the 1990 World Chess Championship Match take place? 66 | \item Who were involved in the 1990 World Chess Championship Match? 67 | \end{enumerate} 68 | \newpage 69 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 70 | % End Section 71 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 72 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/explicit.tex: -------------------------------------------------------------------------------- 1 | \section{Explicit Typing} 2 | \label{sec:Explicit} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.7\textwidth]{figures/explicit} 7 | \end{center} 8 | \caption{Schema Diagram for the Explicit Typing Pattern. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Explicit} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Explicit} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | The pattern for explicit typing is very straightforward. Indeed, it is merely a representation of what we consider to be a "best practice." This pattern is used when there is a finite, but mutable number of types of a thing. We find this easier to maintain than a series of subclass relationships. 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:Explicit} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | \top &\sqsubseteq \forall\textsf{hasType.Type} 22 | \end{align} 23 | 24 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25 | \subsection{Explanations} 26 | \label{exp:Explicit} 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | \begin{enumerate} 29 | \item Range: the range of \textsf{hasType} is \textsf{Type}. 30 | \end{enumerate} 31 | 32 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33 | \subsection{Competency Questions} 34 | \label{cqs:Explicit} 35 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 36 | \begin{enumerate}[CQ1.] 37 | \item What is the type of Event? 38 | \item Which type of apparatus is that? 39 | \end{enumerate} 40 | 41 | \newpage 42 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 43 | % End Section 44 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 45 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/identifier.tex: -------------------------------------------------------------------------------- 1 | \section{Identifier} 2 | \label{sec:Identifier} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.7\textwidth]{figures/identifier} 7 | \end{center} 8 | \caption{Schema Diagram for the Identifier Pattern. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Identifier} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Identifier} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | This pattern is used for associating some sort of identifier and metadata with a thing. One could view this pattern as a reification of the \textsf{ExplicitType} Pattern as found in Section \ref{sec:Explicit}. In this case, we wish to associate additional information aside from its type with a thing, e.g. an identifier may be a URL or a primary key value in a database. We believe that this pattern meshes well with the \textsf{EntityWithProvenance} Pattern which may be found in Section \ref{sec:Provenance}. 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:Identifier} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | % General Axioms 22 | % Domain and Range restrictions 23 | \top &\sqsubseteq \forall \textsf{hasIdentifier.Identifier} \\ 24 | \exists \textsf{hasIdentifierType.}\top &\sqsubseteq \textsf{Identifier} \\ 25 | \top &\sqsubseteq \forall \textsf{hasIdentifierType.IDType} \\ 26 | \top &\sqsubseteq \forall \textsf{identifierAsText.xsd:string} 27 | % Inverse Aliases (if any) 28 | \end{align} 29 | 30 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31 | \subsection{Explanations} 32 | \label{exp:Identifier} 33 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 34 | \begin{enumerate} 35 | \item Range: the range of \textsf{hasIdentifier} is \textsf{Identifier}. 36 | \item Domain: the domain of \textsf{hasIdentifierType} is \textsf{Identifier}. 37 | \item Range: the range of \textsf{hasIdentifierType} is \textsf{IDType}. 38 | \item Range: the range of \textsf{identifierAsText} is \textsf{xsd:string}. 39 | \end{enumerate} 40 | 41 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 42 | \subsection{Competency Questions} 43 | \label{cqs:Identifier} 44 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 45 | \begin{enumerate}[CQ1.] 46 | \item The merchant is assigned what identifier in this historical databse? 47 | \item Where can this information be validated/obtained? 48 | \end{enumerate} 49 | 50 | \newpage 51 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 52 | % End Section 53 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 54 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/name.tex: -------------------------------------------------------------------------------- 1 | \section{Name Stub} 2 | \label{sec:Name} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.7\textwidth]{figures/name} 7 | \end{center} 8 | \caption{Schema Diagram for Name Stub. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Name} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Name} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | The \textsf{NameStub} Pattern is a specialization of the \textsf{Stub} Pattern found in Section \ref{sec:Stubs}. It is included here for convenience as it is has been frequently encountered in our modelling experiences. 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:Name} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | \top &\sqsubseteq \forall \textsf{nameAsString.xsd:string} 22 | \end{align} 23 | 24 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25 | \subsection{Explanations} 26 | \label{exp:Name} 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | \begin{enumerate} 29 | \item Range: the range of \textsf{nameAsString} is \textsf{xsd:string}. 30 | \end{enumerate} 31 | 32 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33 | \subsection{Competency Question} 34 | \label{cqs:Name} 35 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 36 | \begin{enumerate}[CQ1.] 37 | \item What is the name of the lecturer? 38 | \end{enumerate} 39 | 40 | \newpage 41 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 42 | % End Section 43 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 44 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/participantrole.tex: -------------------------------------------------------------------------------- 1 | \section{ParticipantRole} 2 | \label{sec:ParticipantRole} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.8\textwidth]{figures/participantrole} 7 | \end{center} 8 | \caption{Schema Diagram for the ParticipantRole Pattern. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:ParticipantRole} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:ParticipantRole} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | The \textsf{ParticipantRole} Pattern is a specialization of the \textsf{AgentRole} Pattern, which can be found in Section \ref{sec:AgentRole}; many axioms are inherited due to this. We include it for convenience as it occurs frequently in our modelling experiences. This pattern has additional synergies with the \textsf{Event} Pattern \cite{event,enslave}. 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:ParticipantRole} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | \textsf{ParticipantRole} &\sqsubseteq \textsf{AgentRole} \\ 22 | \textsf{providesParticipantRole} &\sqsubseteq \textsf{providesAgentRole} \\ 23 | \top &\sqsubseteq \forall \textsf{providesParticipantRole.ParticipantRole} \\ 24 | \textsf{AgentRole} &\sqsubseteq \text{=1}\textsf{isPerformedBy.Agent} \\ 25 | \textsf{AgentRole} &\sqsubseteq \text{=1}\textsf{hasTemporalExtent.TemporalExtent} \\ 26 | % Domain and Range Restrictions 27 | \exists\textsf{isPerformedBy.Agent} &\sqsubseteq \textsf{AgentRole} \\ 28 | \textsf{AgentRole} &\sqsubseteq \forall\textsf{isPerformedBy.Agent} \\ 29 | \exists\textsf{hasTemporalExtent.TemporalExtent} &\sqsubseteq \textsf{AgentRole} \\ 30 | \top &\sqsubseteq \forall\textsf{hasTemporalExtent.TemporalExtent} \\ 31 | \top &\sqsubseteq \forall\textsf{providesAgentRole.AgentRole} \\ 32 | % Inverses 33 | \textsf{isPerformedBy} &\equiv \textsf{performsAgentRole}^- \\ 34 | \textsf{isProvidedBy} &\equiv \textsf{providesAgentRole}^- 35 | \end{align} 36 | 37 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 38 | \subsection{Explanations} 39 | \label{exp:ParticipantRole} 40 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 41 | \begin{enumerate} 42 | \item Subclass: every \textsf{ParticipantRole} is an \textsf{AgentRole}. 43 | \item Subproperty: \textsf{providesParticipantRole} is a subproperty of \textsf{providesAgentRole}. 44 | \item Range: the range of \textsf{providesParticipantRole} is \textsf{ParticipantRole}. 45 | \item Exactly one \textsf{Agent} performs an \textsf{AgentRole}. 46 | \item An \textsf{AgentRole} has exactly one \textsf{TemporalExtent}. 47 | \item Scoped Domain: the scoped domain of \textsf{isPerformedBy}, scoped by \textsf{Agent}, is \textsf{AgentRole}. 48 | \item Scoped Range: the scoped range of \textsf{isPerformedBy}, scoped by \textsf{AgentRole}, is \textsf{Agent}. 49 | \item Scoped Domain: the scoped domain of \textsf{hasTemporalExtent}, scoped by \textsf{TemporalExtent}, is \textsf{AgentRole}. 50 | \item Range: the range of \textsf{hasTemporalExtent} is \textsf{TemporalExtent}. 51 | \item Range: the range of \textsf{providesAgentRole} is \textsf{AgentRole}. 52 | \item Inverse Alias. 53 | \item Inverse Alias. 54 | \end{enumerate} 55 | 56 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 57 | \subsection{Competency Questions} 58 | \label{cqs:ParticipantRole} 59 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 60 | \begin{enumerate}[CQ1.] 61 | \item Who were the participants in this event? 62 | \item Which students attended the lecture? 63 | \item Who were the passengers on the cruise? 64 | \end{enumerate} 65 | 66 | \newpage 67 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 68 | % End Section 69 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 70 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/partonymy.tex: -------------------------------------------------------------------------------- 1 | \section{Partonymy/Meronymy} 2 | \label{sec:Partonymy} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.7\textwidth]{figures/partonymy} 7 | \end{center} 8 | \caption{Schema Diagram for Partonymy.} 9 | \label{fig:Partonymy} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Partonymy} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | Part-whole relations are of fundamental importance for how we organize concepts. This pattern follows an approach laid out by Winston in his 1987 landmark paper on ``A Taxonomy of Part-Whole Relations'' \cite{citeulike:171338} which was based on linguistic considerations, but also provided for logical characterizations and axiomatics, and, as such, inform the pattern. 15 | 16 | Essentially, we distinguish between different, interacting partonomies. For example, a component may be part of an engine, which is part of a plane, which belongs to a fleet. These are all part-hood relationships, but they are not transitive. 17 | 18 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 19 | \subsection{Axiomatization} 20 | \label{axs:Partonymy} 21 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 22 | \begin{align} 23 | \poComObj \circ \poComObj &\sqsubseteq \poComObj \label{ax:trans1}\\ 24 | \poMemCol \circ \poMemCol &\sqsubseteq \poMemCol \\ 25 | \poPorMas \circ \poPorMas &\sqsubseteq \poPorMas \\ 26 | \poStuObj \circ \poStuObj &\sqsubseteq \poStuObj \\ 27 | \poFeaAct \circ \poFeaAct &\sqsubseteq \poFeaAct \\ 28 | \poPlaAre \circ \poPlaAre &\sqsubseteq \poPlaAre \label{ax:trans6}\\ 29 | \text{AsymmetricObjectProperty}&(\poComObj) \label{ax:asym1}\\ 30 | \text{AsymmetricObjectProperty}&(\poMemCol)\\ 31 | \text{AsymmetricObjectProperty}&(\poPorMas)\\ 32 | \text{AsymmetricObjectProperty}&(\poStuObj)\\ 33 | \text{AsymmetricObjectProperty}&(\poFeaAct)\\ 34 | \text{AsymmetricObjectProperty}&(\poPlaAre) \label{ax:asym6}\\ 35 | \poComObj &\sqsubseteq \partOf \label{ax:subpof1}\\ 36 | \poMemCol &\sqsubseteq \partOf\\ 37 | \poPorMas &\sqsubseteq \partOf\\ 38 | \poStuObj &\sqsubseteq \partOf\\ 39 | \poFeaAct &\sqsubseteq \partOf\\ 40 | \poPlaAre &\sqsubseteq \partOf \label{ax:subpof6}\\ 41 | \spatialLocIn \circ \spatialLocIn &\sqsubseteq \spatialLocIn \label{ax:transloc}\\ 42 | \text{ReflexiveObjectProperty}&(\spatialLocIn)\\ 43 | \poComObj\circ\spatialLocIn&\sqsubseteq \spatialLocIn \label{ax:spatial1}\\ 44 | \spatialLocIn\circ \poComObj&\sqsubseteq\spatialLocIn\\ 45 | \poMemCol\circ\spatialLocIn&\sqsubseteq \spatialLocIn\\ 46 | \spatialLocIn\circ \poMemCol&\sqsubseteq\spatialLocIn\\ 47 | \poPorMas\circ\spatialLocIn&\sqsubseteq \spatialLocIn\\ 48 | \spatialLocIn\circ \poPorMas&\sqsubseteq\spatialLocIn\\ 49 | \poStuObj\circ\spatialLocIn&\sqsubseteq \spatialLocIn\\ 50 | \spatialLocIn\circ \poStuObj&\sqsubseteq\spatialLocIn\\ 51 | \poFeaAct\circ\spatialLocIn&\sqsubseteq \spatialLocIn\\ 52 | \spatialLocIn\circ \poFeaAct&\sqsubseteq\spatialLocIn\\ 53 | \poPlaAre\circ\spatialLocIn&\sqsubseteq \spatialLocIn\\ 54 | \spatialLocIn\circ \poPlaAre&\sqsubseteq\spatialLocIn\\ 55 | \textsf{Po-Component-Type} &\sqsubseteq \textsf{RelationInstance} \\ 56 | \textsf{Po-Member-Type} &\sqsubseteq \textsf{RelationInstance} \\ 57 | \textsf{Po-Portion-Type} &\sqsubseteq \textsf{RelationInstance} \\ 58 | \textsf{Po-Stuff-Type} &\sqsubseteq \textsf{RelationInstance} \\ 59 | \textsf{Po-Feature-Type} &\sqsubseteq \textsf{RelationInstance} \\ 60 | \textsf{Po-Place-Type} &\sqsubseteq \textsf{RelationInstance} \\ 61 | \textsf{Po-Part-Of-Type} &\sqsubseteq \textsf{RelationInstance} \\ 62 | \textsf{Spatially-Located-In-Type} &\sqsubseteq \textsf{RelationInstance} 63 | \end{align} 64 | 65 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 66 | \subsection{Explanations} 67 | \label{exp:Partonymy} 68 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 69 | \begin{enumerate} 70 | \item Transitivity. 71 | \item Transitivity. 72 | \item Transitivity. 73 | \item Transitivity. 74 | \item Transitivity. 75 | \item Transitivity. 76 | \item Asymmetric Object Property. 77 | \item Asymmetric Object Property. 78 | \item Asymmetric Object Property. 79 | \item Asymmetric Object Property. 80 | \item Asymmetric Object Property. 81 | \item Asymmetric Object Property. 82 | \item Subclass. 83 | \item Subclass. 84 | \item Subclass. 85 | \item Subclass. 86 | \item Subclass. 87 | \item Subclass. 88 | \item Transitivity. 89 | \item Reflexive Object Property. 90 | \item Role Chain: the concatenation of \poComObj{} and \spatialLocIn{} is \spatialLocIn{}. 91 | \item Role Chain: the concatenation of \spatialLocIn{} and \poComObj{} is \spatialLocIn{}. 92 | \item Role Chain: the concatenation of \poMemCol{} and \spatialLocIn{} is \spatialLocIn{}. 93 | \item Role Chain: the concatenation of \spatialLocIn{} and \poMemCol{} is \spatialLocIn{}. 94 | \item Role Chain: the concatenation of \poPorMas{} and \spatialLocIn{} is \spatialLocIn{}. 95 | \item Role Chain: the concatenation of \spatialLocIn{} and \poPorMas{} is \spatialLocIn{}. 96 | \item Role Chain: the concatenation of \poStuObj{} and \spatialLocIn{} is \spatialLocIn{}. 97 | \item Role Chain: the concatenation of \spatialLocIn{} and \poStuObj{} is \spatialLocIn{}. 98 | \item Role Chain: the concatenation of \poFeaAct{} and \spatialLocIn{} is \spatialLocIn{}. 99 | \item Role Chain: the concatenation of \spatialLocIn{} and \poFeaAct{} is \spatialLocIn{}. 100 | \item Role Chain: the concatenation of \poPlaAre{} and \spatialLocIn{} is \spatialLocIn{}. 101 | \item Role Chain: the concatenation of \spatialLocIn{} and \poPlaAre{} is \spatialLocIn{}. 102 | \item Subclass. 103 | \item Subclass. 104 | \item Subclass. 105 | \item Subclass. 106 | \item Subclass. 107 | \item Subclass. 108 | \item Subclass. 109 | \item Subclass. 110 | \end{enumerate} 111 | 112 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 113 | \subsection{Competency Question} 114 | \label{cqs:Partonymy} 115 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 116 | \begin{enumerate}[CQ1.] 117 | \item Is the Everglades part of Florida? 118 | \item Is the plane in the Warehouse? 119 | \item What are all engine components? 120 | \item Is he part of the family? 121 | \end{enumerate} 122 | 123 | \newpage 124 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 125 | % End Section 126 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 127 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/provenance.tex: -------------------------------------------------------------------------------- 1 | \section{Provenance} 2 | \label{sec:Provenance} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.7\textwidth]{figures/provenance} 7 | \end{center} 8 | \caption{Schema Diagram for the Provenance Pattern. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Provenance} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Provenance} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | The \textsf{EntityWithProvenance} Pattern is extracted from the PROV-O ontology. At the pattern level, we do not want to make the ontological committment to a full-blown ontology. It suffices to align a sub-pattern to the core of PROV-O \cite{provo}. 15 | 16 | The \textsf{EntityWithProvenance} class is any item of interest to which a developer would like to attach provenance information. That is they are interested in capturing, who or what created that item, what was used to derive it, and what method was used to do so. The ``who or what'' is captured by using the \textsf{Agent} class. The property, \textsf{wasDerivedFrom} is eponymous---it denotes that some set of resources was used during the \textsf{ProvenanceActivity} to generate the \textsf{EntityWithProvenance}. 17 | 18 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 19 | \subsection{Axiomatization} 20 | \label{axs:Provenance} 21 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 22 | \begin{align} 23 | \exists\textsf{attributedTo}.\textsf{Agent} &\sqsubseteq \textsf{EntityWithProvenance}\\ 24 | \textsf{EntityWithProvenance} &\sqsubseteq \forall\textsf{attributedTo}.\textsf{Agent}\\ 25 | \exists\textsf{generatedBy}.\textsf{ProvenanceActivity} &\sqsubseteq \textsf{EntityWithProvenance}\\ 26 | \textsf{EntityWithProvenance} &\sqsubseteq \forall\textsf{generatedBy}.\textsf{ProvenanceActivity}\\ 27 | \exists\textsf{used}.\textsf{EntityWithProvenance} &\sqsubseteq \textsf{ProvenanceActivity}\\ 28 | \textsf{ProvenanceActivity} &\sqsubseteq \forall\textsf{used}.\textsf{EntityWithProvenance}\\ 29 | \exists\textsf{performedBy}.\textsf{Agent} &\sqsubseteq \textsf{ProvenanceActivity}\\ 30 | \textsf{ProvenanceActivity} &\sqsubseteq \forall\textsf{performedBy}.\textsf{Agent} 31 | \end{align} 32 | 33 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 34 | \subsection{Explanations} 35 | \label{exp:Provenance} 36 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 37 | \begin{enumerate} 38 | \item Scoped Domain:The scoped domain of \textsf{attributedTo}, scoped by \textsf{Agent}, is \textsf{EntityWithProvenance}. 39 | \item Scoped Range: The scoped range of \textsf{attributedTo}, scoped by \textsf{EntityWithProvenance}, is \textsf{Agent}. 40 | \item Scoped Domain:The scoped domain of \textsf{generatedBy}, scoped by \textsf{ProvenanceActivity}, is \textsf{EntityWithProvenance}. 41 | \item Scoped Range: The scoped range of \textsf{generatedBy}, scoped by \textsf{EntityWithProvenance}, is \textsf{ProvenanceActivity}. 42 | \item Scoped Domain:The scoped domain of \textsf{used}, scoped by \textsf{EntityWithProvenance}, is \textsf{ProvenanceActivity} 43 | \item Scoped Range: The scoped range of \textsf{used}, scoped by \textsf{ProvenananceActivity}, is \textsf{EntityWithProvenance}. 44 | \item Scoped Domain:The scoped domain of \textsf{performedBy}, scoped by \textsf{Agent}, is \textsf{ProvenanceActivity}. 45 | \item Scoped Range: The scoped range of \textsf{performedBy}, scoped by \textsf{ProvenanceActivity}, is \textsf{Agent}. 46 | \end{enumerate} 47 | 48 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 49 | \subsection{Competency Questions} 50 | \label{cqs:Provenance} 51 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 52 | \begin{enumerate}[CQ1.] 53 | \item Who are the contributors to this Wikidata page? 54 | \item From which database is this entry taken? 55 | \item Which method was used to generate this chart and from which spreadsheet did the data originate? 56 | \item Who provided this research result? 57 | \end{enumerate} 58 | 59 | \newpage 60 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 61 | % End Section 62 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 63 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/quantities.tex: -------------------------------------------------------------------------------- 1 | \section{Quantities and Units} 2 | \label{sec:Quantities} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.7\textwidth]{figures/quantities} 7 | \end{center} 8 | \caption{Schema Diagram for Quantities and Units. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Quantities} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Quantities} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | This pattern is heavily adapted from QUDT\footnote{\url{http://www.qudt.org/release2/qudt-catalog.html}} and \cite{momtut}. This pattern allows a developer to express a quantity of some stuff. The nature of quantities is rather complex, due to the fact that there are a multitude of dimensions, unit types, and ways to measure quantities. The \textsf{Quantity} class is used to express the nature of the quantity via its \textsf{QuantityKind}. This is intended to be a controlled vocabulary. We direct the reader to QUDT's documentation for further exploration. A \textsf{QuantityValue} expresses the magnitude of the \textsf{Quantity} via an \textsf{xsd:double} and a \textsf{Unit}. Unit is also recommended to be a controlled vocabulary. Both \textsf{hasQuantityKind} and \textsf{hasUnit} are instances of the Explicit Typing Pattern (Section \ref{sec:Explicit}). 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:Quantities} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | \top &\sqsubseteq \forall \textsf{hasQuantityKind.QuantityKind} \\ 22 | \top &\sqsubseteq \forall \textsf{hasQuantityValue.QuantityValue} \\ 23 | \top &\sqsubseteq \forall \textsf{hasUnit.Unit} \\ 24 | \top &\sqsubseteq \forall \textsf{hasNumericalValue.xsd:double} 25 | \end{align} 26 | 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | \subsection{Explanations} 29 | \label{exp:Quantities} 30 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 31 | \begin{enumerate} 32 | \item Range: the range of \textsf{hasQuantityKind} is \textsf{QuantityKind}. 33 | \item Range: the range of \textsf{hasQuantityValue} is \textsf{QuantityValue}. 34 | \item Range: the range of \textsf{hasUnit} is \textsf{Unit}. 35 | \item Range: the range of \textsf{hasNumericValue} is \textsf{xsd:double}. 36 | \end{enumerate} 37 | 38 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 39 | \subsection{Competency Questions} 40 | \label{cqs:Quantities} 41 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 42 | \begin{enumerate}[CQ1.] 43 | \item How much does an elephant weigh in kilograms? 44 | \item How long is Jupiter from the Sun, at its farthest, in furlongs? 45 | \item How long ago was the Mezazoic Era? 46 | \end{enumerate} 47 | 48 | \newpage 49 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 50 | % End Section 51 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 52 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/reification.tex: -------------------------------------------------------------------------------- 1 | \section{Property Reification} 2 | \label{sec:Property} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.7\textwidth]{figures/reification} 7 | \end{center} 8 | \caption{Schema Diagram for Property Reification. The visual notation is explained in Chapter \ref{chap:prelims}. Additioanlly, we use the dotted line with solid arrow to indicate which property is being reified. This relation has no bearing on the below axioms.} 9 | \label{fig:Property} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Property} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | In OWL, unfortunately, it is not possible to directly represent $n$-ary relationships. However, it is still possible to capture that information. This notion is called reification. The \textsf{Property Reification} pattern is essentially a metapattern; it could be better considered to be a modelling practice. Here, though, we present a set of axioms that will allow a developer to quickly reify a concept by specializing the framework. 15 | 16 | Consider that we would like to relate two \textsf{Things} together via some \textsf{propertyToBeReified} given some \textsf{Context} information that also needs to be captured. To do so, we create a \textsf{ReifiedProperty} and attach the information to this concept. A more concrete example of this can be seen in the \textsf{AgentRole} and \textsf{ParticipantRole} patterns (Sections \ref{sec:AgentRole} and {\ref{sec:ParticipantRole}). 17 | 18 | The axioms below are minimalistic, because it is hard to make claims about the domain and range at the most general case. It should be safe to say that there is certain some connection between the first object of interest and the reified property itself. But, perhaps, the second reified property is reused from some other pattern or part of the ontology---we cannot make any statements about it at this level. Furthermore, concept of ``context'' is loose and open to interpretation by the developer. Could it be subclassed during specialization or use of this pattern, perhaps? Is it necessary, perhaps not. It does, however, suffice to show \emph{how} reification with context works. 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \subsection{Axiomatization} 21 | \label{axs:Property} 22 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 23 | \begin{align} 24 | \top &\sqsubseteq \forall \textsf{reifiedProperty1.ReifiedProperty} \\ 25 | \top &\sqsubseteq \forall \textsf{hasContext.Context} \\ 26 | \top &\sqsubseteq \exists \textsf{hasContext.Context} \\ 27 | \end{align} 28 | 29 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30 | \subsection{Explanations} 31 | \label{exp:Property} 32 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 33 | \begin{enumerate} 34 | \item Range: the range of \textsf{reifiedProperty1} is \textsf{ReifiedProperty}. 35 | \item Range: the range of \textsf{hasContext} is \textsf{Context}. 36 | \item Existential: a \textsf{ReifiedProperty} should have at least some contextual information, otherwise, it wouldn't need to be reified. 37 | 38 | \end{enumerate} 39 | 40 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 41 | \subsection{Competency Questions} 42 | \label{cqs:Property} 43 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 44 | \begin{enumerate}[CQ1.] 45 | \item What was the street named during the Great Depression? 46 | \item From what years was Al Gore Vice President? 47 | \item What is the unit of measurement was used to weigh the elephant? 48 | \end{enumerate} 49 | 50 | \newpage 51 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 52 | % End Section 53 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 54 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/sequence.tex: -------------------------------------------------------------------------------- 1 | \section{Sequence, List} 2 | \label{sec:Sequence} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.8\textwidth]{figures/sequence} 7 | \end{center} 8 | \caption{Schema Diagram for the Sequence and List Pattern. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Spatiotemporal} 10 | \label{fig:Sequence,} 11 | \end{figure} 12 | \subsection{Summary} 13 | \label{sum:Sequence} 14 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 15 | The \textsf{Sequence} Pattern is a way of imposing order upon items of interest; it follows the conceptualization of a Linked List from computer science. This pattern is a simplified view of the \textsf{Tree} Pattern (as found in Section \ref{sec:Tree}) and is adapted from \cite{tree}. While this pattern seems very abstract, it is both easy to specialize and occurs very frequently. In this resource, the pattern occurs in the \textsf{Trajectory} Pattern (a sequence of Fixes), the \textsf{SpatiotemporalExtent} Pattern (a sequence of \textsf{Place}, \textsf{Time} pairs), and \textsf{SpatialExtent} (a sequence of \textsf{PointsInSpace}. 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | \subsection{Axiomatization} 19 | \label{axs:Sequence,} 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | \begin{align} 22 | \textsf{FirstItem} &\sqsubseteq \textsf{ListItem} \\ 23 | \textsf{LastItem} &\sqsubseteq \textsf{ListItem} \\ 24 | \textsf{ListItem} &\sqsubseteq \forall \textsf{hasNext.ListItem} \\ 25 | \textsf{ListItem} &\sqsubseteq \forall \textsf{hasNext}^-\textsf{.ListItem} \\ 26 | \textsf{ListItem} \sqcap \lnot \textsf{LastItem} &\equiv \textsf{ListItem} \sqcap \mathord{=1}\textsf{hasNext.ListItem} \\ 27 | \textsf{ListItem} \sqcap \lnot \textsf{FirstItem} &\equiv \textsf{ListItem} \sqcap \mathord{=1}\textsf{hasNext}^- \textsf{.ListItem} \\ 28 | \textsf{FirstItem} &\equiv \textsf{ListItem} \sqcap \lnot \exists \textsf{hasNext}^-\textsf{.}\top \\ 29 | \textsf{LastItem} &\equiv \textsf{ListItem} \sqcap \lnot \exists \textsf{hasNext.}\top \\ 30 | \textsf{hasNext} &\sqsubseteq \textsf{hasSuccessor} \\ 31 | \textsf{hasNext} \circ \textsf{hasSuccessor} &\sqsubseteq \textsf{hasSuccessor} \\ 32 | \text{Irreflexive}&(\textsf{hasSuccessor}) 33 | \end{align} 34 | 35 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 36 | \subsection{Explanations} 37 | \label{exp:Sequence} 38 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 39 | \begin{enumerate} 40 | \item Subclass: the \textsf{FirstItem} is a \textsf{ListItem}. 41 | \item Subclass: the \textsf{LastItem} is a \textsf{ListItem}. 42 | \item Scoped Range: the range of \textsf{hasNext}, scoped by \textsf{ListItem}, is \textsf{ListItem}. 43 | \item Scoped Range: the range of \textsf{hasNext}$^-$, scoped by \textsf{ListItem}, is \textsf{ListItem}. 44 | \item A \textsf{ListItem} that is not the \textsf{LastItem} has exactly one next \textsf{ListItem}. 45 | \item A \textsf{ListItem} that is not the \textsf{FirstItem} has exactly one previous \textsf{ListItem}. 46 | \item The \textsf{FirstItem} does not have have a predecessor. 47 | \item The \textsf{LastItem} does not have a next \textsf{ListItem}. 48 | \item Subproperty: \textsf{hasNext} is a subproperty to \textsf{hasSuccessor}. 49 | \item Role Chain: the successor of a \textsf{ListItem}'s next \textsf{ListItem} is its successor. 50 | \item Irreflexivity. 51 | \end{enumerate} 52 | 53 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 54 | \subsection{Competency Questions} 55 | \label{cqs:Sequence} 56 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 57 | \begin{enumerate}[CQ1.] 58 | \item What is the first element of the list? 59 | \item What is the last element of the list? 60 | \item Is $x$ a predecessor of $y$? 61 | \end{enumerate} 62 | 63 | \newpage 64 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 65 | % End Section 66 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 67 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/spatial.tex: -------------------------------------------------------------------------------- 1 | \section{Spatial Extent} 2 | \label{sec:Spatial} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.8\textwidth]{figures/spatial} 7 | \end{center} 8 | \caption{Schema Diagram for Spatial Extent. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Spatial} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Spatial} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | The \textsf{SpatialExtent} pattern is characterized by a set of \textsf{Interiors}, which are in turn characterized by a \textsf{PointInSpace-Sequence}. A \textsf{PointInSpace-Sequence} consists of \textsf{PointInSpace-SequenceElements}, which are constituted by \textsf{PointInSpace}. A \textsf{PointInSpace} is described by a value and a reference system. \textsf{PIS-Sequence} is a specialization of the \textsf{Sequence} Pattern (Section \ref{sec:Sequence}). We also further choose to use the Explicit Typing Pattern for \textsf{PointInSpace} and \textsf{ReferenceSystem}. 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:Spatial} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | \textsf{SpatialExtent} &\sqsubseteq \mathord{=}n \textsf{contains.Interior} \\ 22 | \textsf{Interior} &\sqsubseteq \mathord{=}1 \textsf{isDefinedBy.PIS-Sequence} \\ 23 | \textsf{PIS-Sequence} &\sqsubseteq \mathord{=}1 \textsf{hasFirst.PIS-SequenceElement} \\ 24 | \textsf{PIS-Sequence} &\sqsubseteq \mathord{=}1 \textsf{hasLast.PIS-SequenceElement} \\ 25 | \textsf{PIS-SequenceElement} &\sqsubseteq \mathord{=}1 \textsf{hasNext.PIS-SequenceElement} \\ 26 | \textsf{PIS-SequenceElement} &\sqsubseteq \mathord{=}1 \textsf{constitutedBy.PointInSpace} \\ 27 | \textsf{PointInSpace} &\sqsubseteq \mathord{=}1 \textsf{hasReferenceSystem.ReferenceSystem} \\ 28 | \textsf{PointInSpace} &\sqsubseteq \mathord{=}1 \textsf{hasValue.Value} 29 | \end{align} 30 | 31 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32 | \subsection{Explanations} 33 | \label{exp:Spatial} 34 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 35 | \begin{enumerate} 36 | \item Numerical Restriction: a \textsf{SpatialExtent} \textsf{contains} exactly $n$ \textsf{Interiors}. See the following section. 37 | \item Numerical Restriction: a \textsf{Interior} \textsf{isDefinedBy} exactly 1 \textsf{PIS-Sequence}. 38 | \item Numerical Restriction: a \textsf{PIS-Sequence} has exactly 1 first \textsf{PIS-SequenceElement}. 39 | \item Numerical Restriction: a \textsf{PIS-Sequence} has exactly 1 last \textsf{PIS-SequenceElement}. 40 | \item Numerical Restriction: a \textsf{PIS-SequenceElement} has exactly 1 next \textsf{PIS-SequenceElement}. 41 | \item Numerical Restriction: a \textsf{PIS-SequenceElement} \textsf{isConstitutedBy} exactly 1 \textsf{PointInSpace}. 42 | \item Numerical Restriction: a \textsf{PointInSpace} has exactly 1 \textsf{ReferenceSystem}. 43 | \item Numerical Restriction: a \textsf{PointInSpace} has exactly 1 \textsf{Value}. 44 | \end{enumerate} 45 | 46 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 47 | \subsection{Remarks} 48 | \label{rem:Spatial} 49 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 50 | We would also like the pattern to be able to express that a \textsf{SpatialExtent} consists of exactly some \textsf{Interiors} and no others. This is done by equipping the pattern with an axiom that must be tailored to the use-case and two rules for generating a set of assertions. 51 | 52 | \begin{equation} 53 | \textsf{SpatialExtent} \sqsubseteq \mathord{=}n\textsf{contains.Interior} 54 | \end{equation} 55 | where $n$ is the number of expected \textsf{Interiors}. Next, 56 | $$\textit{contains}(\textsf{spatialExtent, interior}_k) \text{ for } k=1,...,n$$ 57 | and 58 | $$\textsf{interior}_i \not = \textsf{interior}_j \text{ for } i \not = j$$ 59 | This allows us to express a \textsf{SpatialExtent} as a set of \textsf{Interiors}. 60 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 61 | \subsection{Competency Questions} 62 | \label{cqs:Spatial} 63 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 64 | \begin{enumerate}[CQ1.] 65 | \item Where was the Battle of Manassas? 66 | \item What path did the moose take to Canada? 67 | \item Where is the largest prairie in the United States? 68 | \end{enumerate} 69 | 70 | \newpage 71 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 72 | % End Section 73 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 74 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/ste.tex: -------------------------------------------------------------------------------- 1 | \section{Spatiotemporal Extent} 2 | \label{sec:Spatiotemporal} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.8\textwidth]{figures/ste} 7 | \end{center} 8 | \caption{Schema Diagram for the Spatiotemporal Extent Pattern. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Spatiotemporal} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Spatiotemporal} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | The \textsf{SpatiotemporalExtent} pattern wraps the \textsf{Trajectory} Pattern (Section \ref{sec:Trajectory}). Essentially, it uses the \textsf{Trajectory} Pattern's ability to capture discrete snapshots of something moving along some dimension, but casts it into the familiar three physical dimensions, plus time. This is done by adding the \textsf{atPlace} and \textsf{atTime} properties that hang off of \textsf{Fix}. This pattern is more fully described in \cite{ste}. The \textsf{SpatiotemporalExtent} is primarily used when it is difficult to separate space and time when talking about a concept. 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:Spatiotemporal} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | \top &\sqsubseteq \forall \textsf{hasSpatiotemporalExtent.SpatiotemporalExtent} \\ 22 | \top &\sqsubseteq \forall \textsf{hasTrajectory.Trajectory} \\ 23 | \textsf{SpatiotemporalExtent} &\sqsubseteq \exists \textsf{hasTrajectory.Trajectory} \\ 24 | \top &\sqsubseteq \forall \textsf{atPlace.Place} \\ 25 | \top &\sqsubseteq \forall \textsf{atTime.Time} \\ 26 | \textsf{Segment} &\sqsubseteq \mathord{=1}\textsf{startsFrom.Fix}\\ 27 | \textsf{Segment} &\sqsubseteq \mathord{=1}\textsf{endsAt.Fix} \\ 28 | \textsf{Segment} &\sqsubseteq \exists \textsf{hasSegment}^-\textsf{.Trajectory} \\ 29 | \textsf{startsFrom}^- \circ \textsf{endsAt} &\sqsubseteq \textsf{hasNext} \\ 30 | \textsf{hasNext} &\sqsubseteq \textsf{hasSuccessor} \\ 31 | \textsf{hasSuccessor} \circ \textsf{hasSucessor} &\sqsubseteq \textsf{hasSucessor} \\ 32 | \textsf{hasNext}^- &\equiv \textsf{hasPrevious} \\ 33 | \textsf{hasSuccessor}^- &\equiv \textsf{hasPredecessor} \\ 34 | \textsf{Fix} \sqcap \lnot\exists\textsf{endsAt}^-\textsf{.Segment} &\sqsubseteq \textsf{StartingFix} \\ 35 | \textsf{Fix} \sqcap \lnot\exists\textsf{startsFrom}^-\textsf{.Segment} &\sqsubseteq \textsf{EndingFix} \\ 36 | \textsf{Trajectory} &\sqsubseteq \exists\textsf{hasSegment.Segment} \\ 37 | \textsf{hasSegment} \circ \textsf{startsFrom} &\sqsubseteq \textsf{hasFix} \\ 38 | \textsf{hasSegment} \circ \textsf{endsAt} &\sqsubseteq \textsf{hasFix} \\ 39 | \exists \textsf{hasSegment.Segment} &\sqsubseteq \textsf{Trajectory} \\ 40 | \exists \textsf{hasSegment}^-\textsf{.Trajectory} &\sqsubseteq \textsf{Segment} \\ 41 | \exists \textsf{hasFix.Segment} &\sqsubseteq \textsf{Trajectory} \\ 42 | \exists \textsf{hasFix}^-\textsf{.Trajectory} &\sqsubseteq \textsf{Fix} 43 | \end{align} 44 | 45 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 46 | \subsection{Explanations} 47 | \label{exp:Spatiotemporal} 48 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 49 | \begin{enumerate} 50 | \item Range: the range of \textsf{hasSpatiotemporalExtent} is \textsf{SpatiotemporalExtent}. 51 | \item Range: the range of \textsf{hasTrajectory} is \textsf{hasTrajectory}. 52 | \item Existential: a \textsf{SpatiotemporalExtent} has at least one \textsf{Trajectory}. 53 | \item Range: the range of \textsf{atPlace} is \textsf{Place}. 54 | \item Range: the range of \textsf{atTime} is \textsf{Time}. 55 | \item \textsf{Segment} \textsf{startFrom} exactly one \textsf{Fix}. 56 | \item \textsf{Segment} \textsf{endsAt} exactly one \textsf{Fix}. 57 | \item Existential: A \textsf{Segment} belongs to at least one \textsf{Trajectory}. 58 | \item Role Chain: the concatenation of \textsf{startsFrom}$^-$ and \textsf{endsAt} is \textsf{hasNext}. 59 | \item Subproperty: \textsf{hasNext} is a subproperty to \textsf{hasSuccessor}. 60 | \item Role Chain: \textsf{hasSuccessor} is transitive. 61 | \item Inverse Alias. 62 | \item Inverse Alias. 63 | \item A \textsf{Fix} that is not where a segment ends is a \textsf{StartingFix}. 64 | \item A \textsf{Fix} that is not where a segment starts is a \textsf{EndingFix}. 65 | \item Existential: a \textsf{Trajectory} has at least one \textsf{Segment}. 66 | \item Role Chain: the concatenation of \textsf{hasSegment} and \textsf{startsFrom} is \textsf{hasFix}. 67 | \item Role Chain: the concatenation of \textsf{hasSegment} and \textsf{endsAt} is \textsf{hasFix}. 68 | \item Scoped Domain: the domain of \textsf{hasSegment}, scoped by \textsf{Segment}, is \textsf{Trajectory}. 69 | \item Scoped Domain: the domain of \textsf{hasSegment}$^-$, scoped by \textsf{Trajectory}, is \textsf{Segment}. 70 | \item Scoped Domain: the domain of \textsf{hasFix}, scoped by \textsf{Segment}, is \textsf{Trajectory}. 71 | \item Scoped Domain: the domain of \textsf{hasFix}$^-$, scoped by \textsf{Trajectory}, is \textsf{Fix}. 72 | \end{enumerate} 73 | 74 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 75 | \subsection{Competency Question} 76 | \label{cqs:Spatiotemporal} 77 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 78 | \begin{enumerate}[CQ1.] 79 | \item Show which birds stop at $x$ and $y$. 80 | \item Show the trajectories which cross national parks. 81 | \item Show the trajectories of birds which are less than one year old. 82 | \end{enumerate} 83 | 84 | \newpage 85 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 86 | % End Section 87 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 88 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/stubs.tex: -------------------------------------------------------------------------------- 1 | \section{Stubs} 2 | \label{sec:Stubs} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.4\textwidth]{figures/stubs} 7 | \end{center} 8 | \caption{Schema Diagram for Stubs. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Stubs} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Stubs} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | Stubs are a very minimal pattern that could also be described as a technique or best practice. Essentially, during modelling, there are frequently times when developers recognize that a concept is complex, but also out of the scope of an ontology or knowledge graph. However, the developer would like to keep the ontology extensible or allow others to build off of the ontology at that point. One example of this is Name or Title. In many cases, there is no reason to store more than a string for a name or title. However, names and titles are not necessarily inherent to a thing at all times. Yet, delving into those details may be unnecessary for a use-case. To account for this, a developer may want to use as stub. That is, acknowledge the complexity of a concept, but also include the information that is useful. This metapattern is described in more detail in \cite{stub}. 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:Stubs} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | \top &\sqsubseteq \forall \textsf{hasValue.xsd:AnyValue} // 22 | \textsf{Stub} &\sqsubseteq \exists \textsf{hasValue.xsd:AnyValue} 23 | \end{align} 24 | 25 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26 | \subsection{Explanations} 27 | \label{exp:Stubs} 28 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 29 | \begin{enumerate} 30 | \item Range: the range of \textsf{hasValue} is any xsd datatype. We use AnyValue in the above axiom to indicate that any datatype will suffice. 31 | \item Existential: the \textsf{Stub} must have a value. 32 | \end{enumerate} 33 | 34 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 35 | \subsection{Competency Questions} 36 | \label{cqs:Stubs} 37 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 38 | \begin{enumerate}[CQ1.] 39 | \item Which street is that? 40 | \item What is the title of Alfred Tennyson? 41 | \end{enumerate} 42 | 43 | \newpage 44 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 45 | % End Section 46 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 47 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/temporal.tex: -------------------------------------------------------------------------------- 1 | \section{Temporal Extent} 2 | \label{sec:Temporal} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.8\textwidth]{figures/temporal} 7 | \end{center} 8 | \caption{Schema Diagram for Temporal Extent. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Temporal} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Temporal} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | A \textsf{TemporalExtent} is composed of a number of \textsf{ComplexTimeIntervals}, which may be intervals of non-zero length (i.e. \textsf{TimeIntervals}) or intervals of length 0 (i.e. \textsf{PointsInSpace}). 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:Temporal} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | \textsf{TemporalExtent} &\sqsubset \mathord{=}n \textsf{contains.ComplexTemporalExtent} \\ 22 | \textsf{TimeInterval} &\sqsubset \textsf{ComplexTemporalExtent} \\ 23 | \textsf{TimeInterval} &\sqsubset \mathord{=}1 \textsf{startsFrom.PointInTime} \\ 24 | \textsf{TimeInterval} &\sqsubset \mathord{=}1 \textsf{endsAt.PointInTime} \\ 25 | \textsf{PointInTime} &\sqsubset \textsf{ComplexTemporalExtent} \\ 26 | \textsf{PointInTime} &\sqsubset \mathord{=}1 \textsf{hasReferenceSystem.ReferenceSystem} \\ 27 | \textsf{PointInTime} &\sqsubset \mathord{=}1 \textsf{hasValue.Value} 28 | \end{align} 29 | 30 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31 | \subsection{Explanations} 32 | \label{exp:Temporal} 33 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 34 | \begin{enumerate} 35 | \item Numerical Restriction: a \textsf{TemporalExtent} \textsf{contains} exactly $n$ \textsf{ComplexTemporalExtents}. See below remarks. 36 | \item Subclass: every \textsf{TimeInterval} is a \textsf{ComplexTemporalExtent}. 37 | \item Numerical Restriction: a \textsf{TimeInterval} \textsf{startsAt} exactly 1 \textsf{PointInTime}. 38 | \item Numerical Restriction: a \textsf{TimeInterval} \textsf{endsAt} exactly 1 \textsf{PointInTime}. 39 | \item Subclass: every \textsf{PointInTime} is a \textsf{ComplexTemporalExtent}. 40 | \item Numerical Restriction: a \textsf{PointInTime} has exactly 1 \textsf{ReferenceSystem}. 41 | \item Numerical Restriction: a \textsf{PointInTime} has exactly 1 \textsf{Value}. 42 | \end{enumerate} 43 | 44 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 45 | \subsection{Remarks} 46 | \label{rem:Temporal} 47 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 48 | We would also like the pattern to be able to express that a \textsf{TemporalExtent} consists of exactly some \textsf{TimeIntervals} or \textsf{PointsInTime} and no other things. This is done by equipping the pattern with an axiom that must be tailored to the use-case and two rules for generating a set of assertions. 49 | 50 | \begin{equation} 51 | \textsf{TemporalExtent} \sqsubseteq \mathord{=}n\textsf{contains.Interior} 52 | \end{equation} 53 | where $n$ is the number of expected \textsf{ComplextimeIntverals}. Next, 54 | $$\textit{contains}(\textsf{temporalExtent, complexTimeInterval}_k) \text{ for } k=1,...,n$$ 55 | and 56 | $$\textsf{complexTimeInterval}_i \not = \textsf{complexTimeInterval}_j \text{ for } i \not = j$$ 57 | This allows us to express a \textsf{TemporalExtent} as a set of \textsf{ComplexTimeIntervals}. 58 | 59 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 60 | \subsection{Competency Questions} 61 | \label{cqs:Temporal} 62 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 63 | \begin{enumerate}[CQ1.] 64 | \item Which dates did World War II span? 65 | \item What era was the ice age? 66 | \end{enumerate} 67 | 68 | \newpage 69 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 70 | % End Section 71 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 72 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/trajectory.tex: -------------------------------------------------------------------------------- 1 | \section{Trajectory} 2 | \label{sec:Trajectory} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.8\textwidth]{figures/trajectory} 7 | \end{center} 8 | \caption{Schema Diagram for the Trajectory Pattern. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Spatiotemporal} 10 | \label{fig:Trajectory} 11 | \end{figure} 12 | \subsection{Summary} 13 | \label{sum:Trajectory} 14 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 15 | The \textsf{Trajectory} Pattern allows a developer to track something moving through some space. This is, of course, very abstract and is intended to be a starting point for capturing any movement that occurs at discrete points in a space. Intuitively, there is the notion of moving through time and space and those captured discrete points in space may be GPS position recordings. This sort of data may be best captured with the \textsf{SpatiotemporalExtent} Pattern (Section \ref{sec:Spatiotemporal}), which extends the \textsf{Trajectory} Pattern. This pattern may be also used as a starting point for modelling procedures (i.e. steps are discrete points in procedure space) or chemical reactions (we can really only be sure of what our sensors tell us, and they only tell us things at their polling rates). This pattern is an abstraction of the Semantic Trajectory pattern found in \cite{traj}. 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | \subsection{Axiomatization} 19 | \label{axs:Trajectory} 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 | \begin{align} 22 | \textsf{Segment} &\sqsubseteq \mathord{=1}\textsf{startsFrom.Fix}\\ 23 | \textsf{Segment} &\sqsubseteq \mathord{=1}\textsf{endsAt.Fix} \\ 24 | \textsf{Segment} &\sqsubseteq \exists \textsf{hasSegment}^-\textsf{.Trajectory} \\ 25 | \textsf{startsFrom}^- \circ \textsf{endsAt} &\sqsubseteq \textsf{hasNext} \\ 26 | \textsf{hasNext} &\sqsubseteq \textsf{hasSuccessor} \\ 27 | \textsf{hasSuccessor} \circ \textsf{hasSucessor} &\sqsubseteq \textsf{hasSucessor} \\ 28 | \textsf{hasNext}^- &\equiv \textsf{hasPrevious} \\ 29 | \textsf{hasSuccessor}^- &\equiv \textsf{hasPredecessor} \\ 30 | \textsf{Fix} \sqcap \lnot\exists\textsf{endsAt}^-\textsf{.Segment} &\sqsubseteq \textsf{StartingFix} \\ 31 | \textsf{Fix} \sqcap \lnot\exists\textsf{startsFrom}^-\textsf{.Segment} &\sqsubseteq \textsf{EndingFix} \\ 32 | \textsf{Trajectory} &\sqsubseteq \exists\textsf{hasSegment.Segment} \\ 33 | \textsf{hasSegment} \circ \textsf{startsFrom} &\sqsubseteq \textsf{hasFix} \\ 34 | \textsf{hasSegment} \circ \textsf{endsAt} &\sqsubseteq \textsf{hasFix} \\ 35 | \exists \textsf{hasSegment.Segment} &\sqsubseteq \textsf{Trajectory} \\ 36 | \exists \textsf{hasSegment}^-\textsf{.Trajectory} &\sqsubseteq \textsf{Segment} \\ 37 | \exists \textsf{hasFix.Segment} &\sqsubseteq \textsf{Trajectory} \\ 38 | \exists \textsf{hasFix}^-\textsf{.Trajectory} &\sqsubseteq \textsf{Fix} 39 | \end{align} 40 | 41 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 42 | \subsection{Explanations} 43 | \label{exp:Trajectory} 44 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 45 | \begin{enumerate} 46 | \item \textsf{Segment} \textsf{startFrom} exactly one \textsf{Fix}. 47 | \item \textsf{Segment} \textsf{endsAt} exactly one \textsf{Fix}. 48 | \item Existential: A \textsf{Segment} belongs to at least one \textsf{Trajectory}. 49 | \item Role Chain: the concatenation of \textsf{startsFrom}$^-$ nad \textsf{endsAt} is \textsf{hasNext}. 50 | \item Subproperty: \textsf{hasNext} is a subproperty to \textsf{hasSuccessor}. 51 | \item Role Chain: \textsf{hasSuccessor} is transitive. 52 | \item Inverse Alias. 53 | \item Inverse Alias. 54 | \item A \textsf{Fix} that is not where a segment ends is a \textsf{StartingFix}. 55 | \item A \textsf{Fix} that is not where a segment starts is a \textsf{EndingFix}. 56 | \item Existential: a \textsf{Trajectory} has at least one \textsf{Segment}. 57 | \item Role Chain: the concatenation of \textsf{hasSegment} and \textsf{startsFrom} is \textsf{hasFix}. 58 | \item Role Chain: the concatenation of \textsf{hasSegment} and \textsf{endsAt} is \textsf{hasFix}. 59 | \item Scoped Domain: the domain of \textsf{hasSegment}, scoped by \textsf{Segment}, is \textsf{Trajectory}. 60 | \item Scoped Domain: the domain of \textsf{hasSegment}$^-$, scoped by \textsf{Trajectory}, is \textsf{Segment}. 61 | \item Scoped Domain: the domain of \textsf{hasFix}, scoped by \textsf{Segment}, is \textsf{Trajectory}. 62 | \item Scoped Domain: the domain of \textsf{hasFix}$^-$, scoped by \textsf{Trajectory}, is \textsf{Fix}. 63 | \end{enumerate} 64 | 65 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 66 | \subsection{Competency Questions} 67 | \label{cqs:Trajectory} 68 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 69 | \begin{enumerate}[CQ1.] 70 | \item What is the first step of the procedure? 71 | \item What was the cruise's final stop? 72 | \end{enumerate} 73 | 74 | \newpage 75 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 76 | % End Section 77 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 78 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/patterns/tree.tex: -------------------------------------------------------------------------------- 1 | \section{Tree} 2 | \label{sec:Tree} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | \begin{figure}[h!] 5 | \begin{center} 6 | \includegraphics[width=.8\textwidth]{figures/tree} 7 | \end{center} 8 | \caption{Schema Diagram for the Tree Pattern. The visual notation is explained in Chapter \ref{chap:prelims}.} 9 | \label{fig:Tree} 10 | \end{figure} 11 | \subsection{Summary} 12 | \label{sum:Tree} 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | The \textsf{Tree} pattern allows a developer to organize data into a tree data structure. An ontological tree, however, is subtly different from those that occur in other parts of computer science; these trees should be viewed as static---something to be queried, not manipulated. For example, a motivating use case is the organization of organisms into a phylogenetic tree. Such examples and more information may be found in \cite{tree}, from where this pattern is adapted. 15 | 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 17 | \subsection{Axiomatization} 18 | \label{axs:Tree} 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | \begin{align} 21 | \textsf{LeafNode} &\sqsubseteq \textsf{TreeNode} \\ 22 | \textsf{RootNode} &\sqsubseteq \textsf{TreeNode} \\ 23 | \textsf{TreeNode} &\sqsubseteq \forall \textsf{hasOutDegree.xsd:positiveInteger} \\ 24 | \textsf{TreeNode} &\sqsubseteq \mathord{=1}\textsf{hasOutDegree.xsd:positiveInteger} \\ 25 | \textsf{LeafNode} &\equiv \textsf{TreeNode} \sqcap \forall \textsf{hasOutDegree.} \{ 0 \textsf{\^{}\^{}xsd:positiveInteger}\} \\ 26 | \textsf{TreeNode} \sqcap \lnot \textsf{LeafNode} &\equiv \textsf{TreeNode} \sqcap \forall \textsf{hasOutDegree.}\{ x\textsf{\^{}\^{}xsd:positiveInteger} | 1 \leq x\} \\ 27 | \textsf{hasChild} &\equiv \textsf{hasParent}^- \\ 28 | \textsf{hasDescendant} &\equiv \textsf{hasAncestor}^- \\ 29 | \textsf{hasChild} &\sqsubseteq \textsf{hasDescendant} \\ 30 | \textsf{hasDescendant} \circ \textsf{hasDescendant} &\sqsubseteq \textsf{hasDescendant} \\ 31 | \textsf{TreeNode} &\sqsubseteq \forall \textsf{hasChild.TreeNode} \\ 32 | \textsf{TreeNode} \sqcap \lnot \textsf{LeafNode} &\equiv \textsf{TreeNode} \sqcap \exists \textsf{hasChild.TreeNode} \\ 33 | \textsf{TreeNode} &\sqsubseteq \forall \textsf{hasDescendant.TreeNode} \\ 34 | \textsf{TreeNode} &\sqsubseteq \forall \textsf{hasParent.TreeNode} \\ 35 | \textsf{TreeNode} &\sqsubseteq \forall \textsf{hasSibling.TreeNode} \\ 36 | \textsf{TreeNode} \sqcap \lnot \textsf{RootNode} &\equiv \textsf{TreeNode} \sqcap \mathord{=1}\textsf{hasParent.}\top \\ 37 | \textsf{TreeNode} &\sqsubseteq \forall \textsf{hasAncestor.TreeNode} \\ 38 | \textsf{RootNode} &\equiv \textsf{TreeNode} \sqcap \lnot\exists \textsf{hasParent.}\top \\ 39 | \textsf{LeafNode} &\equiv \textsf{TreeNode} \sqcap \lnot\exists \textsf{hasChild.}\top \\ 40 | \text{Irreflexive}&(\textsf{hasChild}) \\ 41 | \text{Irreflexive}&(\textsf{hasParent}) \\ 42 | \text{Irreflexive}&(\textsf{hasDescendant}) \\ 43 | \text{Irreflexive}&(\textsf{hasAncestor}) \\ 44 | \textsf{hasSibling} &\equiv \textsf{hasSibling}^- \\ 45 | \text{Irreflexive}&(\textsf{hasSibling}) 46 | \end{align} 47 | 48 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 49 | \subsection{Explanations} 50 | \label{exp:Tree} 51 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 52 | \begin{enumerate} 53 | \item Subclass: every \textsf{LeafNode} is a \textsf{TreeNode}. 54 | \item Subclass: the \textsf{RootNode} is a \textsf{TreeNode}. 55 | \item Scoped Range: the range of \textsf{hasOutDegree}, scoped by \textsf{TreeNode}, is \textsf{xsd:positiveInteger}. 56 | \item Existential: a \textsf{TreeNode} has exactly one \textsf{hasOutDegree}. 57 | \item A \textsf{LeafNode} is a \textsf{TreeNode} that has an out degree of 0. 58 | \item A \textsf{TreeNode} that is not a \textsf{LeafNode} has at least out degree of 1. 59 | \item Inverse Alias 60 | \item Inverse Alias 61 | \item Subproperty: \textsf{hasChild} is subproperty of \textsf{hasDescendant}. 62 | \item Role Chain: \textsf{hasDescendant} is transitive. 63 | \item Scoped Range: the range of \textsf{hasChild}, scoped by \textsf{TreeNode}, is \textsf{TreeNode}. 64 | \item A \textsf{TreeNode} that is not a \textsf{LeafNode} has a child that is a \textsf{TreeNode}. 65 | \item Scoped Range: the range of \textsf{hasDescendant}, scoped by \textsf{TreeNode}, is \textsf{TreeNode}. 66 | \item Scoped Range: the range of \textsf{hasParent}, scoped by \textsf{TreeNode}, is \textsf{TreeNode}. 67 | \item Scoped Range: the range of \textsf{hasSibling}, scoped by \textsf{TreeNode}, is \textsf{TreeNode}. 68 | \item A \textsf{TreeNode} that is not the \textsf{RootNode} has a \textsf{TreeNode} that is its parent. 69 | \item Scoped Range: the range of \textsf{hasAncestor}, scoped by \textsf{TreeNode}, is \textsf{TreeNode}. 70 | \item \textsf{RootNode} does not have a \textsf{TreeNode} that is its parent. 71 | \item \textsf{LeafNodes} do not have \textsf{TreeNodes} that are its children. 72 | \item Irreflexivity 73 | \item Irreflexivity 74 | \item Irreflexivity 75 | \item Irreflexivity 76 | \item Inverse Alias 77 | \item Irreflexivity 78 | \end{enumerate} 79 | 80 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 81 | \subsection{Competency Questions} 82 | \label{cqs:Tree} 83 | %%%%%%%%%%%%%%%%%%%%%%%%%%%% 84 | We remark that these competency questions are as general as the pattern. See \cite{tree} for more information. 85 | \begin{enumerate}[CQ1.] 86 | \item Determine the root. 87 | \item Determine all ancestors of a given node. 88 | \item Determine all leaves. 89 | \item Determine all descendants of a given node. 90 | \item Determine all descendants of a given node which are leaves. 91 | \item Given two nodes, determine whether one is a descendant of the other. 92 | \item given two nodes, determine all common ancestors. 93 | \item Given two nodes, determine the latest common ancestor. 94 | \item Given two nodes $x$ and $y$, determine the earliest ancestor of $x$ which not an ancestor of $y$. 95 | \end{enumerate} 96 | 97 | \newpage 98 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 99 | % End Section 100 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 101 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------------------------- /Documentation/prelims.tex: -------------------------------------------------------------------------------- 1 | \chapter{Preliminaries} 2 | \label{chap:prelims} 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | We list the individual patterns contained in MODL, together with their axioms and explanations thereof. Schema diagrams are provided throughout, but the reader should keep in mind that while schema diagrams are very useful for understanding an ontology \cite{odp-documentation}, they are also inherently ambiguous. 5 | 6 | \section*{Primer on Ontology Axioms} 7 | 8 | Logical axioms are presented (mostly) in description logic notation, which can be directly translated into the Web Ontology Language OWL \cite{FOST}. We use description logic notation because it is, in the end, easier for humans to read than any of the other serializations.\footnote{Preliminary results supporting this claim can be found in \cite{ShimizuMS}.} 9 | 10 | Logical axioms serve many purposes in ontology modeling and engineering \cite{HitzlerK16}; in our context, the primary reason why we choose a strong axiomatization is to disambiguate the ontology. 11 | 12 | Almost all axioms which are part of the Enslaved Ontology are of the straightforward and local types. We will now describe these types in more detail, as it will make it much easier to understand the axiomatization of the Enslaved Ontology. 13 | 14 | \bigskip 15 | 16 | \begin{figure}[tb] 17 | \begin{center} 18 | \includegraphics[width=.3\textwidth]{figures/02-ARB} 19 | \caption{Generic node-edge-node schema diagram for explaining systematic axiomatization}\label{fig:rec-ARB} 20 | \end{center} 21 | \end{figure} 22 | 23 | There is a systematic way to look at each node-edge-node triple in a schema diagram in order to decide on some of the axioms which should be added: Given a node-edge-node triple with nodes $A$ and $B$ and edge $R$ from $A$ to $B$, as depicted in Figure \ref{fig:rec-ARB}, we check all of the following axioms whether they should be included.\footnote{The OWLAx Prot\'eg\'e plug-in \cite{SarkerKH16} provides a convenient interface for adding these axioms.} We list them in natural language, see Figure \ref{fig:generic-triple-axioms-DL} for the formal versions in description logic notation, and Figure \ref{fig:generic-triple-axioms-Manchester} for the same in Manchester syntax, where we also list our names for these axioms. 24 | \begin{compactenum} 25 | \item $A$ is a subClass of $B$. 26 | \item $A$ and $B$ are disjoint. 27 | \item The domain of $R$ is $A$. 28 | \item For every $B$ which has an inverse $R$-filler, this inverse $R$-filler is in $A$. In other words, the domain of $R$, scoped by $B$, is $A$. 29 | \item The range of $R$ is $B$. 30 | \item For every $A$ which has an $R$-filler, this $R$-filler is in $B$. In other words, the range of $R$, scoped by $A$, is $B$. 31 | \item For every $A$ there has to be an $R$-filler in $B$. 32 | \item For every $B$ there has to be an inverse $R$-filler in $A$. 33 | \item $R$ is functional. 34 | \item $R$ has at most one filler in $B$. 35 | \item For every $A$ there is at most one $R$-filler. 36 | \item For every $A$ there is at most one $R$-filler in $B$. 37 | \item $R$ is inverse functional. 38 | \item $R$ has at most one inverse filler in $A$. 39 | \item For every $B$ there is at most one inverse $R$-filler. 40 | \item For every $B$ there is at most one inverse $R$-filler in $A$. 41 | \item An $A$ may have an $R$-filler in $B$. 42 | \end{compactenum} 43 | 44 | Domain and range axoims are items 2--5 in this list. Items 6 and 7 are extistential axioms. Items 8--15 are about variants of functionality and inverse functionality. All axiom types except disjointness and those utilizing inverses also apply to datatype properties. 45 | 46 | \begin{figure}[tb] 47 | \begin{center} 48 | \begin{minipage}{.3\textwidth} 49 | \begin{compactenum} 50 | \item $A \sqsubseteq B$ 51 | \item $A\sqcap B\sqsubseteq \bot$ 52 | \item $\exists R.\top \sqsubseteq A$ 53 | \item $\exists R.B\sqsubseteq A$ 54 | \item $\top \sqsubseteq \forall R.B$ 55 | \item $A\sqsubseteq \forall R.B$ 56 | \end{compactenum} 57 | \end{minipage} 58 | \begin{minipage}{.3\textwidth} 59 | \begin{compactenum} 60 | \setcounter{enumi}{5} 61 | \item $A\sqsubseteq R.B$ 62 | \item $B\sqsubseteq R^-.A$ 63 | \item $\top \sqsubseteq \mathord{\leq} 1 R.\top$ 64 | \item $\top \sqsubseteq \mathord{\leq} 1 R.B$ 65 | \item $A\sqsubseteq \mathord{\leq} 1 R.\top$ 66 | \item $A\sqsubseteq \mathord{\leq} 1 R.B$ 67 | \end{compactenum} 68 | \end{minipage} 69 | \begin{minipage}{.3\textwidth} 70 | \begin{compactenum} 71 | \setcounter{enumi}{10} 72 | \item $\top \sqsubseteq \mathord{\leq} 1 R^-.\top$ 73 | \item $\top \sqsubseteq \mathord{\leq} 1 R^-.A$ 74 | \item $B \sqsubseteq \mathord{\leq} 1 R^-.\top$ 75 | \item $B \sqsubseteq \mathord{\leq} 1 R^-.A$ 76 | \item $A \sqsubseteq \mathord{\geq 0} R.B$ 77 | \end{compactenum} 78 | \end{minipage} 79 | \caption{Most common axioms which could be produced from a single edge $R$ between nodes $A$ and $B$ in a schema diagram: description logic notation.}\label{fig:generic-triple-axioms-DL} 80 | \end{center} 81 | \end{figure} 82 | 83 | \begin{figure}[tb] 84 | \begin{compactenum} 85 | \item $A$ \textsf{SubClassOf} $B$ \hfill (subClass) 86 | \item $A$ \textsf{DisjointWith} $B$ \hfill (disjointness) 87 | \item $R$ \textsf{some} \texttt{owl:Thing} \textsf{SubClassOf} $A$ \hfill (domain) 88 | \item $R$ \textsf{some} $B$ \textsf{SubClassOf} $A$ \hfill (scoped domain) 89 | \item \texttt{owl:Thing} \textsf{SubClassOf} $R$ \textsf{only} $B$ \hfill (range) 90 | \item $A$ \textsf{SubClassOf} $R$ \textsf{only} $B$ \hfill (scoped range) 91 | \item $A$ \textsf{SubClassOf} $R$ \textsf{some} $B$ \hfill (existential) 92 | \item $B$ \textsf{SubClassOf inverse} $R$ \textsf{some} $A$ \hfill (inverse existential) 93 | \item \texttt{owl:Thing} \textsf{SubClassOf} $R$ \textsf{max} $1$ \texttt{owl:Thing} \hfill (functionality) 94 | \item \texttt{owl:Thing} \textsf{SubClassOf} $R$ \textsf{max} $1$ $B$ \hfill (qualified functionality) 95 | \item $A$ \textsf{SubClassOf} $R$ \textsf{max} $1$ \texttt{owl:Thing} \hfill (scoped functionality) 96 | \item $A$ \textsf{SubClassOf} $R$ \textsf{max} $1$ $B$ \hfill (qualified scoped functionality) 97 | \item \texttt{owl:Thing} \textsf{SubClassOf inverse} $R$ \textsf{max} $1$ \texttt{owl:Thing} \hfill (inverse functionality) 98 | \item \texttt{owl:Thing} \textsf{SubClassOf inverse} $R$ \textsf{max} $1$ $A$ \hfill (inverse qualified functionality) 99 | \item $B$ \textsf{SubClassOf inverse} $R$ \textsf{max} $1$ \texttt{owl:Thing} \hfill (inverse scoped functionality) 100 | \item $B$ \textsf{SubClassOf inverse} $R$ \textsf{max} $1$ $A$ \hfill (inverse qualified scoped functionality) 101 | \item $A$ \textsf{SubClassOf} $R$ \textsf{min} $0$ $B$ \hfill (structural tautology) 102 | \end{compactenum} 103 | \caption{Most common axioms which could be produced from a single edge $R$ between nodes $A$ and $B$ in a schema diagram: Manchester syntax.}\label{fig:generic-triple-axioms-Manchester} 104 | \end{figure} 105 | 106 | Structural tautologies are, indeed, tautologies, i.e., they do not carry any formal logical content. However as argued in \cite{HitzlerK16} they can help humans to understand the ontology, by indicating \emph{possible} relationships, i.e., relationships intended by the modeler which, however, cannot be cast into non-tautological axioms. 107 | 108 | \section*{Explanations Regarding Schema Diagrams} 109 | 110 | We utilize schema diagrams to visualize the ontology. In our experience, simple diagrams work best for this purpose. The reader needs to bear in mind, though, that these diagrams are ambiguous and incomplete visualizations of the ontology (or module), as the actual ontology (or module) is constituted by the set of axioms provided. 111 | 112 | We use the following visuals in our diagrams: 113 | 114 | \begin{description} 115 | \item[rectangular box with solid frame and orange fill:] a class 116 | \item[rectangual box with dashed frame and blue fill:] a module, which is described in more detail elsewhere in the document 117 | \item[rectangular box with dashed frame and purple fill:] a set of URIs constituting a controlled vocabulary 118 | \item[oval with solid frame and yellow fill:] a data type 119 | \item[arrow with white head and no label:] a subClass relationship 120 | \item[arrow with solid tip and label:] a relationship (or property) other than a subClass relationship 121 | \end{description} -------------------------------------------------------------------------------- /Documentation/scripts/pattern.py: -------------------------------------------------------------------------------- 1 | pattern_name = input("Enter name of pattern (include capitalization): ").strip() 2 | file_name = input("Enter name for file (pattern_name used as default): ").strip() 3 | figure_name = input("Enter figurename (Enter nothing for placeholder image): ").strip() 4 | 5 | if figure_name == "": 6 | figure_name = "placeholder" 7 | 8 | if file_name == "": 9 | file_name = pattern_name 10 | 11 | file_name = file_name.lower(); 12 | 13 | loc_file_name = "patterns/{file_name}".format(file_name=file_name) 14 | file_name = "../patterns/" + file_name + ".tex" 15 | barrier = """%%%%%%%%%%%%%%%%%%%%%%%%%%%%""" 16 | 17 | 18 | with open(file_name, 'w') as f: 19 | # Create Section Header 20 | f.write("\\section{"+pattern_name+"}\n") 21 | label = pattern_name.split(" ")[0] 22 | f.write("\\label{sec:"+label+"}\n") 23 | f.write(barrier * 2 + "\n") 24 | 25 | # Create Figure 26 | f.write("\\begin{figure}[h!]\n") 27 | f.write("\\begin{center}\n") 28 | f.write("\\includegraphics[width=.8\\textwidth]{figures/"+figure_name+"}\n") 29 | f.write("\\end{center}\n") 30 | f.write("\\caption{Schema Diagram for the " + pattern_name +" Pattern. The visual notation is explained in Chapter \\ref{chap:prelims}.}\n") 31 | f.write("\\label{fig:"+label+"}\n") 32 | f.write("\\end{figure}\n") 33 | 34 | # Create Summary 35 | f.write("\\subsection{Summary}\n") 36 | f.write("\\label{sum:"+label+"}\n") 37 | f.write(barrier+"\n") 38 | f.write("I am some summary text.\n") 39 | f.write("\n") 40 | 41 | # Create axiomatization 42 | f.write(barrier * 2 + "\n") 43 | f.write("\\subsection{Axiomatization}\n") 44 | f.write("\\label{axs:"+label+"}\n") 45 | f.write(barrier+"\n") 46 | f.write("\\begin{align}\n") 47 | f.write("% General Axioms") 48 | f.write("\\top &\sqsubseteq \\forall\\textsf{place.Holder} \\\\ \n") 49 | f.write("\\exists\\textsf{place.Holder} &\sqsubseteq \\top \n") 50 | f.write("% Domain and Range Restrictions") 51 | f.write("\\top &\sqsubseteq \\forall\\textsf{place.Holder} \\\\ \n") 52 | f.write("\\exists\\textsf{place.Holder} &\sqsubseteq \\top \n") 53 | f.write("% Inverse Aliases (if any)") 54 | f.write("placeholder &\equiv holderplace^- \n") 55 | f.write("\\end{align}\n") 56 | f.write("\n") 57 | 58 | # Create explanations 59 | f.write(barrier * 2 + "\n") 60 | f.write("\\subsection{Explanations}\n") 61 | f.write("\\label{exp:"+label+"}\n") 62 | f.write(barrier+"\n") 63 | f.write("\\begin{enumerate}\n") 64 | f.write("\\item temporary item\n") 65 | f.write("\\end{enumerate}\n") 66 | f.write("\n") 67 | 68 | # Create explanations 69 | f.write(barrier * 2 + "\n") 70 | f.write("\\subsection{Competency Questions}\n") 71 | f.write("\\label{cqs:"+label+"}\n") 72 | f.write(barrier+"\n") 73 | f.write("\\begin{enumerate}[CQ1.]\n") 74 | f.write("\\item temporary item\n") 75 | f.write("\\end{enumerate}\n") 76 | f.write("\n") 77 | f.write("\\newpage\n") 78 | 79 | # Creat end document 80 | f.write(barrier * 2 + "\n") 81 | f.write("% End Section" + "\n") 82 | f.write(barrier * 2 + "\n") 83 | f.write(barrier * 2) 84 | 85 | 86 | with open("../patterns.tex",'a') as f: 87 | f.write("\\input{"+loc_file_name+"}\n") 88 | 89 | print(pattern_name) 90 | print(file_name) -------------------------------------------------------------------------------- /MODL 1.0/MODL_Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/MODL 1.0/MODL_Documentation.pdf -------------------------------------------------------------------------------- /MODL 1.0/MODL_v1.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Data-Semantics-Laboratory/modular-ontology-design-library/a33774fb161714a6a1140ddc0d46007f2aa6d57f/MODL 1.0/MODL_v1.0.zip -------------------------------------------------------------------------------- /MODL/agentrole.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | #Agent 113 | https://archive.org/services/purl/domain/modular_ontology_design_library/agentrole 114 | 115 | 116 | 117 | #Agent 118 | ofExternalType 119 | 120 | 121 | 122 | #AgentRole 123 | https://archive.org/services/purl/domain/modular_ontology_design_library/agentrole 124 | 125 | 126 | 127 | #TemporalExtent 128 | https://archive.org/services/purl/domain/modular_ontology_design_library/agentrole 129 | 130 | 131 | 132 | #TemporalExtent 133 | ofExternalType 134 | 135 | 136 | 137 | #hasTemporalExtent 138 | https://archive.org/services/purl/domain/modular_ontology_design_library/agentrole 139 | 140 | 141 | 142 | #isPerformedBy 143 | https://archive.org/services/purl/domain/modular_ontology_design_library/agentrole 144 | 145 | 146 | 147 | #isProvidedBy 148 | https://archive.org/services/purl/domain/modular_ontology_design_library/agentrole 149 | 150 | 151 | 152 | #performsAgentRole 153 | https://archive.org/services/purl/domain/modular_ontology_design_library/agentrole 154 | 155 | 156 | 157 | #providesAgentRole 158 | https://archive.org/services/purl/domain/modular_ontology_design_library/agentrole 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | -------------------------------------------------------------------------------- /MODL/aggregation.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | http://ontologydesignpatterns.org/wiki/Submissions:Bag 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | #Bag 69 | https://archive.org/services/purl/domain/modular_ontology_design_library/bag 70 | 71 | 72 | 73 | #Bag 74 | ofExternalType 75 | 76 | 77 | 78 | #BagItem 79 | https://archive.org/services/purl/domain/modular_ontology_design_library/bag 80 | 81 | 82 | 83 | #Collection 84 | https://archive.org/services/purl/domain/modular_ontology_design_library/bag 85 | 86 | 87 | 88 | #Collection 89 | ofExternalType 90 | 91 | 92 | 93 | #itemOf 94 | https://archive.org/services/purl/domain/modular_ontology_design_library/bag 95 | 96 | 97 | 98 | #po-member 99 | https://archive.org/services/purl/domain/modular_ontology_design_library/partonomy 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /MODL/event.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | https://archive.org/services/purl/domain/modular_ontology_design_library/participantrole 19 | 20 | 21 | 22 | https://archive.org/services/purl/domain/modular_ontology_design_library/spatiotemporalextent 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | #Event 103 | https://archive.org/services/purl/domain/modular_ontology_design_library/event 104 | 105 | 106 | 107 | #ParticipantRole 108 | https://archive.org/services/purl/domain/modular_ontology_design_library/event 109 | 110 | 111 | 112 | #ParticipantRole 113 | ofExternalType 114 | 115 | 116 | 117 | #SpatiotemporalExtent 118 | https://archive.org/services/purl/domain/modular_ontology_design_library/event 119 | 120 | 121 | 122 | #SpatiotemporalExtent 123 | ofExternalType 124 | 125 | 126 | 127 | #hasSpatiotemporalExtent 128 | https://archive.org/services/purl/domain/modular_ontology_design_library/event 129 | 130 | 131 | 132 | #providesParticipantRole 133 | https://archive.org/services/purl/domain/modular_ontology_design_library/event 134 | 135 | 136 | 137 | #subEventOf 138 | https://archive.org/services/purl/domain/modular_ontology_design_library/event 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /MODL/explicittyping.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | #Type 35 | https://archive.org/services/purl/domain/modular_ontology_design_library/explicittyping 36 | 37 | 38 | 39 | #hasType 40 | https://archive.org/services/purl/domain/modular_ontology_design_library/explicittyping 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /MODL/identifier.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | https://archive.org/services/purl/domain/modular_ontology_design_library/reification 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | #IDType 72 | https://archive.org/services/purl/domain/modular_ontology_design_library/identifier 73 | 74 | 75 | 76 | #Identifier 77 | https://archive.org/services/purl/domain/modular_ontology_design_library/identifier 78 | 79 | 80 | 81 | #hasIdentifier 82 | https://archive.org/services/purl/domain/modular_ontology_design_library/identifier 83 | 84 | 85 | 86 | #hasIdentifierType 87 | https://archive.org/services/purl/domain/modular_ontology_design_library/identifier 88 | 89 | 90 | 91 | #identifierAsText 92 | https://archive.org/services/purl/domain/modular_ontology_design_library/identifier 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /MODL/name.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | https://archive.org/services/purl/domain/modular_ontology_design_library/stub 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | #NameStub 42 | https://archive.org/services/purl/domain/modular_ontology_design_library/namestub 43 | 44 | 45 | 46 | #nameAsString 47 | https://archive.org/services/purl/domain/modular_ontology_design_library/namestub 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /MODL/provenance.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | #Agent 105 | https://archive.org/services/purl/domain/modular_ontology_design_library/provenance 106 | 107 | 108 | 109 | #Agent 110 | ofExternalType 111 | 112 | 113 | 114 | #EntityWithProvenance 115 | https://archive.org/services/purl/domain/modular_ontology_design_library/provenance 116 | 117 | 118 | 119 | #ProvenanceActivity 120 | https://archive.org/services/purl/domain/modular_ontology_design_library/provenance 121 | 122 | 123 | 124 | #ProvenanceActivity 125 | ofExternalType 126 | 127 | 128 | 129 | #attributedTo 130 | https://archive.org/services/purl/domain/modular_ontology_design_library/provenance 131 | 132 | 133 | 134 | #generatedBy 135 | https://archive.org/services/purl/domain/modular_ontology_design_library/provenance 136 | 137 | 138 | 139 | #performedBy 140 | https://archive.org/services/purl/domain/modular_ontology_design_library/provenance 141 | 142 | 143 | 144 | #used 145 | https://archive.org/services/purl/domain/modular_ontology_design_library/provenance 146 | 147 | 148 | 149 | #wasDerivedFrom 150 | https://archive.org/services/purl/domain/modular_ontology_design_library/provenance 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | -------------------------------------------------------------------------------- /MODL/quantities.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | #Quantity 77 | https://archive.org/services/purl/domain/modular_ontology_design_library/quantities 78 | 79 | 80 | 81 | #QuantityKind 82 | https://archive.org/services/purl/domain/modular_ontology_design_library/quantities 83 | 84 | 85 | 86 | #QuantityKind 87 | ofExternalType 88 | 89 | 90 | 91 | #QuantityValue 92 | https://archive.org/services/purl/domain/modular_ontology_design_library/quantities 93 | 94 | 95 | 96 | #Unit 97 | https://archive.org/services/purl/domain/modular_ontology_design_library/quantities 98 | 99 | 100 | 101 | #Unit 102 | ofExternalType 103 | 104 | 105 | 106 | #hasNumericValue 107 | https://archive.org/services/purl/domain/modular_ontology_design_library/quantities 108 | 109 | 110 | 111 | #hasQuantityKind 112 | https://archive.org/services/purl/domain/modular_ontology_design_library/quantities 113 | 114 | 115 | 116 | #hasQuantityValue 117 | https://archive.org/services/purl/domain/modular_ontology_design_library/quantities 118 | 119 | 120 | 121 | #hasUnit 122 | https://archive.org/services/purl/domain/modular_ontology_design_library/quantities 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /MODL/reification.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | #Context 57 | https://archive.org/services/purl/domain/modular_ontology_design_library/reification 58 | 59 | 60 | 61 | #ReifiedProperty 62 | https://archive.org/services/purl/domain/modular_ontology_design_library/reification 63 | 64 | 65 | 66 | #hasContext 67 | https://archive.org/services/purl/domain/modular_ontology_design_library/reification 68 | 69 | 70 | 71 | #reifiedProperty1 72 | https://archive.org/services/purl/domain/modular_ontology_design_library/reification 73 | 74 | 75 | 76 | #reifiedProperty2 77 | https://archive.org/services/purl/domain/modular_ontology_design_library/reification 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /MODL/sequence.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | https://archive.org/services/purl/domain/modular_ontology_design_library/tree 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | #FirstItem 140 | https://archive.org/services/purl/domain/modular_ontology_design_library/list 141 | 142 | 143 | 144 | #LastItem 145 | https://archive.org/services/purl/domain/modular_ontology_design_library/list 146 | 147 | 148 | 149 | #ListItem 150 | https://archive.org/services/purl/domain/modular_ontology_design_library/list 151 | 152 | 153 | 154 | #hasNext 155 | https://archive.org/services/purl/domain/modular_ontology_design_library/list 156 | 157 | 158 | 159 | #hasSuccessor 160 | https://archive.org/services/purl/domain/modular_ontology_design_library/list 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | -------------------------------------------------------------------------------- /MODL/stub.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | #Stub 112 | https://archive.org/services/purl/domain/modular_ontology_design_library/stub 113 | 114 | 115 | 116 | #hasValue 117 | https://archive.org/services/purl/domain/modular_ontology_design_library/stub 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | -------------------------------------------------------------------------------- /MODL/temporalextent.owl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | https://archive.org/services/purl/domain/modular_ontology_design_library/sequence 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | #ComplexTemporalExtent 101 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 102 | 103 | 104 | 105 | #PointInTime 106 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 107 | 108 | 109 | 110 | #ReferenceSystem 111 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 112 | 113 | 114 | 115 | #TemporalExtent 116 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 117 | 118 | 119 | 120 | #TimeInterval 121 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 122 | 123 | 124 | 125 | #Value 126 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 127 | 128 | 129 | 130 | #contains 131 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 132 | 133 | 134 | 135 | #endsAt 136 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 137 | 138 | 139 | 140 | #hasReferenceSystem 141 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 142 | 143 | 144 | 145 | #hasValue 146 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 147 | 148 | 149 | 150 | #startsFrom 151 | https://archive.org/services/purl/domain/modular_ontology_design_library/temporalextent 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MODL: Modular Ontology Design Library 2 | https://dase.cs.wright.edu/content/modl-modular-ontology-design-library 3 | 4 | DOI for v1.0 [![DOI](https://zenodo.org/badge/178051913.svg)](https://zenodo.org/badge/latestdoi/178051913) 5 | 6 | ## Documentation 7 | 1. Motivation 8 | 2. Overview 9 | 3. Patterns 10 | 1. Schema Diagram 11 | 2. Summary 12 | 3. Axiomatization 13 | 4. Explanations 14 | 5. Competency Questions 15 | 16 | Note: When tracking the provenance of the changes, there was an accidental blanket commit that can't be reverted. Sorry for the confusion during the intial commit period. (Specifically commits 7cbeaad and bd3bb76). 17 | 18 | ## MODL 19 | Here be OWLs. 20 | 21 | ## OPLa Ontology 22 | MODL.owl 23 | --------------------------------------------------------------------------------