Major change
[u/philim/db2osl_thesis.git] / program_functionality.tex
CommitLineData
c31df1ed
PM
1\section{Functionality}
2\label{functionality}
002fa020
PM
3As described in the \hyperref[intro]{introduction} of this thesis,
4the \myprog{} software is
5a program automatically deriving an OBDA specification
6from a relational database schema,
c31df1ed 7which then can be used by other tools to drive the actual bootstrapping process.
002fa020 8Its functionality is described in the following section,
62fe6284 9leaving out self-evident features, and is then listed completely
c31df1ed 10in the section after that.
b96bb723
PM
11How this functionality is exposed to users is described in Section~\fullref{interface}.
12The bootstrapping process using direct mapping as the core functionality
13of the software is described in Section~\ref{dirm}.
14
002fa020 15TODO: reference to OBDA topics
c31df1ed 16
002fa020 17\subsection{Function description}
c31df1ed
PM
18The database schema is retrieved by connecting to an \name{SQL} database
19and querying its schema information.
002fa020 20Parsing \name{SQL} scripts or \name{SQL} dumps currently is not supported.
c31df1ed
PM
21%Naturally, authentication on the \name{SQL} server is supported, also by
22%interactively querying for passwords while hiding the typed input.
23The databases to derive information from can be specified by regular expressions,
24while there are also options to use other databases than specified or even
25other database servers, taken from a list of hard-coded strings.
26While these features may not seem to carry real benefit at the first glance,
002fa020 27they proved to be useful for testing purposes, especially since the retrieval of a
b96bb723
PM
28database schema can take some time TODO (see Section~\fullref{stats}).
29For the same purpose, \myprog{} allows the processing of a hard-coded
30example database schema.
c31df1ed 31
b96bb723
PM
32In addition to \osl{} output, a low-level output format containing information on all
33fields of the underlying objects is supported, which is useful for debugging
c31df1ed
PM
34(however, this feature has to be enabled via one slight change in the source code).
35To allow for some customization, the insertion of an own \osl{} header is supported
b96bb723
PM
36(for more information on the \osl{} header, see the specification of the \osllong{}
37in Section~\ref{osl_spec}).
c31df1ed
PM
38If the standard \osl{} header is used, it is by default loaded from a hard-coded copy,
39so bootstrapping information from a database server running locally or from the hard-coded
40example schema requires no Internet connection
41(simply inserting the \code{owl:imports} statement of course would not anyway,
42but the generated underlying ontology is always checked for consistency with the
43\osl{} header to prevent the generation of invalid output).
44
45The \myprog{} software can be used both in an interactive and in a non-interactive mode,
46while skipping a database or a database server or aborting the entire bootstrapping process
47is possible in either mode.
48Multiple database servers can be specified for a bootstrapping operation,
49which then are checked in order for a matching database,
50allowing to make use of mirrors or fallback servers.
51Additionally, multiple bootstrapping operations can be specified to be performed in sequence
52with one invocation of \myprog{}, while all features and settings previously described
53are enabled, disabled or set per operation.
54Finally, a help text can be displayed which describes the usage of \myprog{} including the
55description of all command-line arguments.
56
002fa020 57\subsection{Function summary}
c31df1ed
PM
58The functionality of the \myprog{} software can be summarized as follows:
59
60\begin{itemize}
61 \item Bootstrap one or more OBDA specifications from a database schema
62 by connecting to an \name{SQL} database server
63 \item Specify a custom port, login and password for the database server
64 \item Ask for passwords interactively (before starting any bootstrapping
65 operation), hide them if desired
66 \item Specify database names by regular expressions
67 \item Process an arbitrary database if the specified database
68 could not be found or unconditionally
69 \item Connect to a database server containing example databases
70 without having to specify any further details
71 \item Process a hard-coded example database schema
72 without having to specify any further details
b96bb723 73 \item Use the \osl{} format described in Chapter~\fullref{osl}
c31df1ed
PM
74 or a detailed low-level format for output
75 (the latter is for debugging purposes and has to be enabled
76 in the source code)
77 \item Write to standard output or to a file
78 \item Insert a custom \osl{} header
b96bb723 79 (see the specification of the \oslboth{} in Section~\ref{osl_spec} for details)
c31df1ed
PM
80 \item Consistency check against a custom \osl{} header
81 \item Consistency check against the standard \osl{} header without internet connection
82 \item Act interactively or non-interactively
83 \item Skip currently retrieved database (and try next on server),
84 skip current server or abort the overall process at any time, even in
85 non-interactive mode
86 \item Define multiple database servers to check in order for the specified database
87 \item Specify multiple bootstrapping operations to perform in order
88 \item Configure the features described in the above notes
89 per bootstrapping operation
90 \item Display a help text describing the usage of \myprog{},
91 including the description of all command-line arguments
92\end{itemize}