# Graphol: A Graphical Language for Ontology Modeling Equivalent to OWL 2
## 4 The Graphol Language
### Shortcuts  
We have defined some shortcuts to help the designer in specifying a Graphol ontology. Through such shortcuts it is possible to use a more compact representation of some expressions and assertions that often occur in ontologies. Below we describe them, and provide examples of their use. The _disjoint union node_ is a new type of node, having the shape of a black hexagon, used to represent a disjoint union expression, i.e., a union that at the same time states the disjointness between its arguments. Therefore, through a disjoint union node we also represent negative inclusions over its inputs. This shortcut is particularly useful for defining disjoint concept hierarchies. This is inspired by a similar construct used in the ER model and in UML class diagrams. In Figure 3, we give an example of one such hierarchy in the two versions, with and without the use of the shortcut. The second shortcut we introduce is a compact notation for the definition of the existential domain or range restriction on a role (resp. attribute) taking as input the universal concept (resp. universal value-domain), which is equivalent to an unqualified existential restriction. Since this is among the most recurring restrictions occurring in ontologies, we allow to omit the universal concept (resp. value-domain) (notice also that the OWL 2 syntax includes redundant constructs such as owl:ObjectPropertyDomain and owl:ObjectPropertyRange with a similar aim). In other words, to express the unqualified existential restriction on a role or attribute, one can simply link a role or attribute sub-graph to an existential restriction node, as shown in Figure 4. \begin{table}
\begin{tabular}{c c c} \hline \hline  & **Graphol** & **DL** \\ \hline Atomic attribute & \(\bigtriangledown\)v & \(U\) \\ \hline Attribute complement & \(\bigtriangledown\)not & \(\bigtriangledown\)v & \(\
eg U\) \\ \hline Atomic value-domain & \(\bigtriangledown\) & \(\bigtriangledown\) & \(T\) \\ \hline Attribute range existential restriction & \(\bigtriangledown\)exists\(V^{-}\) \\ \hline Value-domain intersection & \(\bigtriangledown\)F1 & \(\bigtriangledown\)F2 & \(F_{1}\sqcap F_{2}\) \\ \hline Value-domain union & \(\bigtriangledown\)F1 & \(\bigtriangledown\)F2 & \(F_{1}\sqcup F_{2}\) \\ \hline Value-domain complement & \(\bigtriangledown\)not & \(\bigtriangledown\)F & \(\
eg F\) \\ \hline One-of (value-domain) & \(\bigtriangledown\)F1 & \(\bigtriangledown\)F2 & \(\bigtriangledown\)F3 \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Correspondence between Graphol and DL for attribute and value-domain expressions of depth 0 or 1. \(V\) denotes an atomic attribute, and \(F\), \(F_{1}\), and \(F_{2}\) denote an atomic value-domain. Another commonly used assertion in ontologies is the one which specifies that a role \(R\) (resp., an attribute \(V\)) is globally functional, i.e., \(\top_{C}\sqsubseteq\leavevmode\
obreak\ \leq 1\,R\).\(\top_{C}\) (resp., \(\top_{C}\sqsubseteq\leavevmode\
obreak\ \leq 1\,V\).\(\top_{D}\)). Global functionality can be obviously expressed in GraphOl through a graphical inclusion assertion. However, in order to provide a more compact representation, we allow to use a blank double-bordered role node (resp., attribute) for a functional role, a solid double-bordered role node for an inverse functional role, and a double-bordered role half blank and half solid for a role that is both functional and inverse functional. Notice that OWL 2 also allows for the use of a compact syntax to specify global functionality (cf. owl:FunctionalObjectProperty). As an example, in the left-hand side of Figure 5 we show the standard GraphOl assertion that defines the functionality of a role, and on the right-hand side, the compact notation for a functional role (top left), an inverse functional role (top right), a role that is both functional and inverse functional (bottom left), and, finally, a functional attribute (bottom right). We further notice that two domain (resp.