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