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