Major change
authorPhilipp Martis <martispp@hspc01.informatik.uni-stuttgart.de>
Mon, 2 May 2016 13:03:34 +0000 (15:03 +0200)
committerPhilipp Martis <martispp@hspc01.informatik.uni-stuttgart.de>
Mon, 2 May 2016 13:03:34 +0000 (15:03 +0200)
Change involving restructuring and additional (sub)sections

64 files changed:
.gitattributes [new file with mode: 0644]
Bachelor thesis.pdf
Bachelor thesis.tex
Images/inherit_graph_0.pdf [new file with mode: 0644]
Images/inherit_graph_0.png [deleted file]
Images/inherit_graph_1.pdf [new file with mode: 0644]
Images/inherit_graph_1.png [deleted file]
Images/inherit_graph_10.pdf [new file with mode: 0644]
Images/inherit_graph_10.png [deleted file]
Images/inherit_graph_11.pdf [new file with mode: 0644]
Images/inherit_graph_11.png [deleted file]
Images/inherit_graph_12.pdf [new file with mode: 0644]
Images/inherit_graph_12.png [deleted file]
Images/inherit_graph_13.pdf [new file with mode: 0644]
Images/inherit_graph_13.png [deleted file]
Images/inherit_graph_14.pdf [new file with mode: 0644]
Images/inherit_graph_14.png [deleted file]
Images/inherit_graph_15.pdf [new file with mode: 0644]
Images/inherit_graph_15.png [deleted file]
Images/inherit_graph_16.pdf [new file with mode: 0644]
Images/inherit_graph_16.png [deleted file]
Images/inherit_graph_17.pdf [new file with mode: 0644]
Images/inherit_graph_17.png [deleted file]
Images/inherit_graph_18.pdf [new file with mode: 0644]
Images/inherit_graph_18.png [deleted file]
Images/inherit_graph_19.pdf [new file with mode: 0644]
Images/inherit_graph_19.png [deleted file]
Images/inherit_graph_2.pdf [new file with mode: 0644]
Images/inherit_graph_2.png [deleted file]
Images/inherit_graph_20.pdf [new file with mode: 0644]
Images/inherit_graph_20.png [deleted file]
Images/inherit_graph_21.png [deleted file]
Images/inherit_graph_21_extended.pdf [new file with mode: 0644]
Images/inherit_graph_22.pdf [new file with mode: 0644]
Images/inherit_graph_22.png [deleted file]
Images/inherit_graph_23.pdf [new file with mode: 0644]
Images/inherit_graph_23.png [deleted file]
Images/inherit_graph_3.pdf [new file with mode: 0644]
Images/inherit_graph_3.png [deleted file]
Images/inherit_graph_4.pdf [new file with mode: 0644]
Images/inherit_graph_4.png [deleted file]
Images/inherit_graph_5.pdf [new file with mode: 0644]
Images/inherit_graph_5.png [deleted file]
Images/inherit_graph_6.pdf [new file with mode: 0644]
Images/inherit_graph_6.png [deleted file]
Images/inherit_graph_7.pdf [new file with mode: 0644]
Images/inherit_graph_7.png [deleted file]
Images/inherit_graph_8.inkscape.svg [new file with mode: 0644]
Images/inherit_graph_8.pdf [new file with mode: 0644]
Images/inherit_graph_8.png [deleted file]
Images/inherit_graph_8_most_simplified.pdf [new file with mode: 0644]
Images/inherit_graph_8_simplified.pdf [new file with mode: 0644]
Images/inherit_graph_9.pdf [new file with mode: 0644]
Images/inherit_graph_9.png [deleted file]
OSL-Specification.pdf
OSL-Specification.tex
introduction.tex
osl.tex
program.tex
program_arch.tex
program_bootstrapping.tex [new file with mode: 0644]
program_code.tex
program_interface.tex
summary.tex

diff --git a/.gitattributes b/.gitattributes
new file mode 100644 (file)
index 0000000..f103fc8
--- /dev/null
@@ -0,0 +1,2 @@
+*.svg binary
+
index e7e8575..3695f22 100644 (file)
Binary files a/Bachelor thesis.pdf and b/Bachelor thesis.pdf differ
index 7052070..cf83e7a 100644 (file)
@@ -53,6 +53,9 @@
 \addto\extrasgerman{\renewcommand{\figurename}{Abb.}}
 \addto\extrasgerman{\renewcommand{\tablename}{Tab.}}
 
+% Text
+\usepackage{textcomp}
+
 % Bilder
 \usepackage[rflt]{floatflt}
 \usepackage{epsfig,wrapfig}
@@ -65,6 +68,7 @@
 % Tabellen
 \usepackage{longtable,lscape}
 \usepackage{multirow}
+\usepackage{multicol}
 \usepackage{tabularx}
 
 % Kopfzeilen
diff --git a/Images/inherit_graph_0.pdf b/Images/inherit_graph_0.pdf
new file mode 100644 (file)
index 0000000..4386e20
Binary files /dev/null and b/Images/inherit_graph_0.pdf differ
diff --git a/Images/inherit_graph_0.png b/Images/inherit_graph_0.png
deleted file mode 100644 (file)
index f858560..0000000
Binary files a/Images/inherit_graph_0.png and /dev/null differ
diff --git a/Images/inherit_graph_1.pdf b/Images/inherit_graph_1.pdf
new file mode 100644 (file)
index 0000000..2b4a417
Binary files /dev/null and b/Images/inherit_graph_1.pdf differ
diff --git a/Images/inherit_graph_1.png b/Images/inherit_graph_1.png
deleted file mode 100644 (file)
index 0c2afb0..0000000
Binary files a/Images/inherit_graph_1.png and /dev/null differ
diff --git a/Images/inherit_graph_10.pdf b/Images/inherit_graph_10.pdf
new file mode 100644 (file)
index 0000000..7506fd2
Binary files /dev/null and b/Images/inherit_graph_10.pdf differ
diff --git a/Images/inherit_graph_10.png b/Images/inherit_graph_10.png
deleted file mode 100644 (file)
index 8bd2f81..0000000
Binary files a/Images/inherit_graph_10.png and /dev/null differ
diff --git a/Images/inherit_graph_11.pdf b/Images/inherit_graph_11.pdf
new file mode 100644 (file)
index 0000000..dded872
Binary files /dev/null and b/Images/inherit_graph_11.pdf differ
diff --git a/Images/inherit_graph_11.png b/Images/inherit_graph_11.png
deleted file mode 100644 (file)
index 03987e8..0000000
Binary files a/Images/inherit_graph_11.png and /dev/null differ
diff --git a/Images/inherit_graph_12.pdf b/Images/inherit_graph_12.pdf
new file mode 100644 (file)
index 0000000..cf40eef
Binary files /dev/null and b/Images/inherit_graph_12.pdf differ
diff --git a/Images/inherit_graph_12.png b/Images/inherit_graph_12.png
deleted file mode 100644 (file)
index a896fb2..0000000
Binary files a/Images/inherit_graph_12.png and /dev/null differ
diff --git a/Images/inherit_graph_13.pdf b/Images/inherit_graph_13.pdf
new file mode 100644 (file)
index 0000000..1bc0349
Binary files /dev/null and b/Images/inherit_graph_13.pdf differ
diff --git a/Images/inherit_graph_13.png b/Images/inherit_graph_13.png
deleted file mode 100644 (file)
index 2b3517e..0000000
Binary files a/Images/inherit_graph_13.png and /dev/null differ
diff --git a/Images/inherit_graph_14.pdf b/Images/inherit_graph_14.pdf
new file mode 100644 (file)
index 0000000..822f799
Binary files /dev/null and b/Images/inherit_graph_14.pdf differ
diff --git a/Images/inherit_graph_14.png b/Images/inherit_graph_14.png
deleted file mode 100644 (file)
index c99827e..0000000
Binary files a/Images/inherit_graph_14.png and /dev/null differ
diff --git a/Images/inherit_graph_15.pdf b/Images/inherit_graph_15.pdf
new file mode 100644 (file)
index 0000000..711cfab
Binary files /dev/null and b/Images/inherit_graph_15.pdf differ
diff --git a/Images/inherit_graph_15.png b/Images/inherit_graph_15.png
deleted file mode 100644 (file)
index f7cefb1..0000000
Binary files a/Images/inherit_graph_15.png and /dev/null differ
diff --git a/Images/inherit_graph_16.pdf b/Images/inherit_graph_16.pdf
new file mode 100644 (file)
index 0000000..54ff36e
Binary files /dev/null and b/Images/inherit_graph_16.pdf differ
diff --git a/Images/inherit_graph_16.png b/Images/inherit_graph_16.png
deleted file mode 100644 (file)
index f505867..0000000
Binary files a/Images/inherit_graph_16.png and /dev/null differ
diff --git a/Images/inherit_graph_17.pdf b/Images/inherit_graph_17.pdf
new file mode 100644 (file)
index 0000000..6090f3b
Binary files /dev/null and b/Images/inherit_graph_17.pdf differ
diff --git a/Images/inherit_graph_17.png b/Images/inherit_graph_17.png
deleted file mode 100644 (file)
index 4f781f6..0000000
Binary files a/Images/inherit_graph_17.png and /dev/null differ
diff --git a/Images/inherit_graph_18.pdf b/Images/inherit_graph_18.pdf
new file mode 100644 (file)
index 0000000..47db47d
Binary files /dev/null and b/Images/inherit_graph_18.pdf differ
diff --git a/Images/inherit_graph_18.png b/Images/inherit_graph_18.png
deleted file mode 100644 (file)
index 6c9cdd9..0000000
Binary files a/Images/inherit_graph_18.png and /dev/null differ
diff --git a/Images/inherit_graph_19.pdf b/Images/inherit_graph_19.pdf
new file mode 100644 (file)
index 0000000..2caa731
Binary files /dev/null and b/Images/inherit_graph_19.pdf differ
diff --git a/Images/inherit_graph_19.png b/Images/inherit_graph_19.png
deleted file mode 100644 (file)
index 042c0f1..0000000
Binary files a/Images/inherit_graph_19.png and /dev/null differ
diff --git a/Images/inherit_graph_2.pdf b/Images/inherit_graph_2.pdf
new file mode 100644 (file)
index 0000000..7cd3efa
Binary files /dev/null and b/Images/inherit_graph_2.pdf differ
diff --git a/Images/inherit_graph_2.png b/Images/inherit_graph_2.png
deleted file mode 100644 (file)
index ca5b210..0000000
Binary files a/Images/inherit_graph_2.png and /dev/null differ
diff --git a/Images/inherit_graph_20.pdf b/Images/inherit_graph_20.pdf
new file mode 100644 (file)
index 0000000..fafb291
Binary files /dev/null and b/Images/inherit_graph_20.pdf differ
diff --git a/Images/inherit_graph_20.png b/Images/inherit_graph_20.png
deleted file mode 100644 (file)
index 00da99c..0000000
Binary files a/Images/inherit_graph_20.png and /dev/null differ
diff --git a/Images/inherit_graph_21.png b/Images/inherit_graph_21.png
deleted file mode 100644 (file)
index a86f00e..0000000
Binary files a/Images/inherit_graph_21.png and /dev/null differ
diff --git a/Images/inherit_graph_21_extended.pdf b/Images/inherit_graph_21_extended.pdf
new file mode 100644 (file)
index 0000000..bab00e4
Binary files /dev/null and b/Images/inherit_graph_21_extended.pdf differ
diff --git a/Images/inherit_graph_22.pdf b/Images/inherit_graph_22.pdf
new file mode 100644 (file)
index 0000000..15be1ae
Binary files /dev/null and b/Images/inherit_graph_22.pdf differ
diff --git a/Images/inherit_graph_22.png b/Images/inherit_graph_22.png
deleted file mode 100644 (file)
index 223c7ad..0000000
Binary files a/Images/inherit_graph_22.png and /dev/null differ
diff --git a/Images/inherit_graph_23.pdf b/Images/inherit_graph_23.pdf
new file mode 100644 (file)
index 0000000..8a35d5a
Binary files /dev/null and b/Images/inherit_graph_23.pdf differ
diff --git a/Images/inherit_graph_23.png b/Images/inherit_graph_23.png
deleted file mode 100644 (file)
index 402e20f..0000000
Binary files a/Images/inherit_graph_23.png and /dev/null differ
diff --git a/Images/inherit_graph_3.pdf b/Images/inherit_graph_3.pdf
new file mode 100644 (file)
index 0000000..6e94a8c
Binary files /dev/null and b/Images/inherit_graph_3.pdf differ
diff --git a/Images/inherit_graph_3.png b/Images/inherit_graph_3.png
deleted file mode 100644 (file)
index f68bedf..0000000
Binary files a/Images/inherit_graph_3.png and /dev/null differ
diff --git a/Images/inherit_graph_4.pdf b/Images/inherit_graph_4.pdf
new file mode 100644 (file)
index 0000000..e3d4774
Binary files /dev/null and b/Images/inherit_graph_4.pdf differ
diff --git a/Images/inherit_graph_4.png b/Images/inherit_graph_4.png
deleted file mode 100644 (file)
index b51a5aa..0000000
Binary files a/Images/inherit_graph_4.png and /dev/null differ
diff --git a/Images/inherit_graph_5.pdf b/Images/inherit_graph_5.pdf
new file mode 100644 (file)
index 0000000..ae52ce9
Binary files /dev/null and b/Images/inherit_graph_5.pdf differ
diff --git a/Images/inherit_graph_5.png b/Images/inherit_graph_5.png
deleted file mode 100644 (file)
index 9a842da..0000000
Binary files a/Images/inherit_graph_5.png and /dev/null differ
diff --git a/Images/inherit_graph_6.pdf b/Images/inherit_graph_6.pdf
new file mode 100644 (file)
index 0000000..d80a3e3
Binary files /dev/null and b/Images/inherit_graph_6.pdf differ
diff --git a/Images/inherit_graph_6.png b/Images/inherit_graph_6.png
deleted file mode 100644 (file)
index 87bfb63..0000000
Binary files a/Images/inherit_graph_6.png and /dev/null differ
diff --git a/Images/inherit_graph_7.pdf b/Images/inherit_graph_7.pdf
new file mode 100644 (file)
index 0000000..622fd11
Binary files /dev/null and b/Images/inherit_graph_7.pdf differ
diff --git a/Images/inherit_graph_7.png b/Images/inherit_graph_7.png
deleted file mode 100644 (file)
index a44762f..0000000
Binary files a/Images/inherit_graph_7.png and /dev/null differ
diff --git a/Images/inherit_graph_8.inkscape.svg b/Images/inherit_graph_8.inkscape.svg
new file mode 100644 (file)
index 0000000..71c45ad
--- /dev/null
@@ -0,0 +1,399 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   width="750"
+   height="328.75"
+   xml:space="preserve"
+   sodipodi:docname="inherit_graph_8.pdf"><metadata
+     id="metadata8"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs6" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1366"
+     inkscape:window-height="667"
+     id="namedview4"
+     showgrid="false"
+     borderlayer="true"
+     inkscape:zoom="1"
+     inkscape:cx="442.79976"
+     inkscape:cy="164.27452"
+     inkscape:window-x="0"
+     inkscape:window-y="31"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="g10"
+     fit-margin-top="5"
+     fit-margin-left="4"
+     fit-margin-bottom="5"
+     fit-margin-right="4"><inkscape:grid
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       type="xygrid"
+       id="grid3223"
+       originx="-185.875px"
+       originy="7.6e-06px" /></sodipodi:namedview><g
+     id="g10"
+     inkscape:groupmode="layer"
+     inkscape:label="inherit_graph_8"
+     transform="matrix(1.25,0,0,-1.25,-185.875,328.75)"><path
+       inkscape:connector-curvature="0"
+       id="path16"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 445.5,258.5 92,0 0,-19 -92,0 0,19 z" /><text
+       id="text18"
+       transform="scale(1,-1)"
+       x="453.5"
+       y="-246.5"><tspan
+         id="tspan20"
+         sodipodi:role="line"
+         y="-246.5"
+         x="453.5 460.99982 466.24969 471.49957 476.74942 484.24924 489.49911 491.74905 496.99893 499.99887 502.99878 508.25867 511.25861 516.50848 521.7583 524.0083"
+         style="font-size:9.99975586px;font-style:italic;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:TeXGyreHeros;-inkscape-font-specification:TeXGyreHeros-Italic">ReadOnlyIterable</tspan></text>
+<path
+       inkscape:connector-curvature="0"
+       id="path22"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 407,197 169,0 0,-19 -169,0 0,19 z" /><text
+       id="text24"
+       transform="scale(1,-1)"
+       x="415"
+       y="-185"><tspan
+         id="tspan26"
+         sodipodi:role="line"
+         y="-185"
+         x="415 420.24988 425.49976 428.49966 433.74954 438.99942 444.2493 449.49915 454.74902 457.74896 465.25879 472.00861 478.75845 484.0083 489.25818 494.50806 502.75787 508.00772 511.00766 517.00751 522.25739 527.50726 529.7572 535.00708 538.00702 541.00696 546.25677 549.25671 554.50659 559.75647 562.00641"
+         style="font-size:9.99975586px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Sans L;-inkscape-font-specification:NimbusSanL-Regu">database.DBSchema.TableIterable</tspan></text>
+<path
+       inkscape:connector-curvature="0"
+       id="path28"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 491.5,229.316 c 0,-10.82 0,-23.918 0,-32.308" /><path
+       inkscape:connector-curvature="0"
+       id="path30"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 488,229.477 3.5,10 3.5,-10 -7,0 z" /><path
+       inkscape:connector-curvature="0"
+       id="path32"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 592,197 149,0 0,-19 -149,0 0,19 z" /><text
+       id="text34"
+       transform="scale(1,-1)"
+       x="602"
+       y="-185"><tspan
+         id="tspan36"
+         sodipodi:role="line"
+         y="-185"
+         x="602 607.24988 612.49976 615.49969 620.74951 625.99939 631.24927 636.49915 641.74902 644.74896 652.25879 657.50867 662.75854 668.00842 673.25824 678.50812 680.75806 686.00793 693.50775 698.75763 701.00757 706.25745 714.50726 719.75714 726.50696 731.75684"
+         style="font-size:9.99975586px;font-style:italic;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:TeXGyreHeros;-inkscape-font-specification:TeXGyreHeros-Italic">database.ReadableColumnSet</tspan></text>
+<path
+       inkscape:connector-curvature="0"
+       id="path38"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 526.508,236.23 c 34.406,-11.566 86.078,-28.933 116.68,-39.222" /><path
+       inkscape:connector-curvature="0"
+       id="path40"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 525.223,232.973 -8.364,6.504 10.594,0.128 -2.23,-6.632 z" /><g
+       id="g3231"
+       transform="translate(-177,48.700006)"><path
+         d="m 761,202.5 161,0 0,-30 -161,0 0,30 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path42"
+         inkscape:connector-curvature="0" /><text
+         y="-190.5"
+         x="769"
+         transform="scale(1,-1)"
+         id="text44"><tspan
+           style="font-size:9.99975586px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Sans L;-inkscape-font-specification:NimbusSanL-Regu"
+           x="769 774.24988 779.49976 782.49969 787.74951 792.99939 798.24927 803.49915 808.74902 811.74896 817.74878 823.00867 828.25854 830.50848 835.75836 842.50818 847.75806 853.00793 858.25781 866.50763 871.75751 874.75745 882.2572 887.50708 889.75708 895.00696 903.25671 908.50659"
+           y="-190.5"
+           sodipodi:role="line"
+           id="tspan46">database.TableSchema.Columns</tspan><tspan
+           style="font-size:9.99975586px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Sans L;-inkscape-font-specification:NimbusSanL-Regu"
+           x="825 827.99994 830.99988 836.24976 839.24963 844.49951 849.74939 851.99933"
+           y="-179.5"
+           sodipodi:role="line"
+           id="tspan48">Iterable</tspan></text>
+</g><path
+       inkscape:connector-curvature="0"
+       id="path50"
+       style="fill:none;stroke:#191970;stroke-width:1.01699996;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 547.75022,246.92662 36.61012,-10.18063"
+       sodipodi:nodetypes="cc" /><path
+       inkscape:connector-curvature="0"
+       id="path52"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 546.65415,243.53752 -9.04237,5.51658 10.51121,1.32588 -1.46884,-6.84246 z" /><g
+       id="g3217"
+       transform="translate(189,48.700006)"><path
+         d="m 4,202.5 155,0 0,-30 -155,0 0,30 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path54"
+         inkscape:connector-curvature="0" /><text
+         y="-190.5"
+         x="12"
+         transform="scale(1,-1)"
+         id="text56"><tspan
+           style="font-size:9.99975586px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Sans L;-inkscape-font-specification:NimbusSanL-Regu"
+           x="12 17.249872 22.499744 25.499672 30.749542 35.999413 41.249287 46.499157 51.749031 54.748959 60.74881 66.008682 71.258553 73.508499 78.758369 85.508209 90.75808 96.00795 101.25782 109.50762 114.75749 117.75742 123.75727 129.00714 132.00708 137.25694 139.5069 144.75676"
+           y="-190.5"
+           sodipodi:role="line"
+           id="tspan58">database.TableSchema.Foreign</tspan><tspan
+           style="font-size:9.99975586px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Sans L;-inkscape-font-specification:NimbusSanL-Regu"
+           x="54.000004 60.74984 65.99971 71.249588 76.499458 79.499382 82.499313 87.749184 90.749107 95.998978 101.24886 103.49879"
+           y="-179.5"
+           sodipodi:role="line"
+           id="tspan60">KeysIterable</tspan></text>
+</g><path
+       inkscape:connector-curvature="0"
+       id="path62"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="M 435.488,247.06 347.5816,234.4176"
+       sodipodi:nodetypes="cc" /><path
+       inkscape:connector-curvature="0"
+       id="path64"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 435.10984,250.59155 10.34991,-2.27356 -9.51067,-4.67441 -0.83924,6.94797 z" /><g
+       id="g3225"
+       transform="translate(0.5,0)"><path
+         d="m 177.5,202.5 162,0 0,-30 -162,0 0,30 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path66"
+         inkscape:connector-curvature="0" /><text
+         y="-190.5"
+         x="185.5"
+         transform="scale(1,-1)"
+         id="text68"><tspan
+           style="font-size:9.99975586px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Sans L;-inkscape-font-specification:NimbusSanL-Regu"
+           x="185.5 190.74988 195.99974 201.24962 206.49948 208.74944 211.74936 213.9993 219.24918 224.49905 227.49898 229.74892 234.99879 240.25867 243.25859 250.75841 257.50824 265.00806 271.7579 278.50772 283.7576 289.00748 294.25735 296.50729 299.5072 301.75714 307.00702 312.2569 315.25684 317.50677 322.75665 328.00653"
+           y="-190.5"
+           sodipodi:role="line"
+           id="tspan70">specification.OBDASpecification.</tspan><tspan
+           style="font-size:9.99975586px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Sans L;-inkscape-font-specification:NimbusSanL-Regu"
+           x="214.5 221.24983 224.24976 227.24969 230.24962 232.49956 237.74944 242.9993 245.99924 251.24911 259.4989 264.74878 270.00867 273.00858 276.00848 281.25836 284.2583 289.50818 294.75806 297.008"
+           y="-179.5"
+           sodipodi:role="line"
+           id="tspan72">AttributeMapIterable</tspan></text>
+</g><path
+       inkscape:connector-curvature="0"
+       id="path74"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="M 448.359,236.984 C 410.305,227.266 354.637,213.051 313.414,202.523" /><path
+       inkscape:connector-curvature="0"
+       id="path76"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 447.562,240.391 10.555,-0.914 -8.824,-5.868 -1.731,6.782 z" /><path
+       inkscape:connector-curvature="0"
+       id="path78"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 466.5,135.5 108,0 0,-19 -108,0 0,19 z" /><text
+       id="text80"
+       transform="scale(1,-1)"
+       x="474.5"
+       y="-123.5"><tspan
+         id="tspan82"
+         sodipodi:role="line"
+         y="-123.5"
+         x="474.5 479.74988 484.99976 487.99966 493.24954 498.49942 503.7493 508.99915 514.24902 517.24896 524.75879 530.00867 532.25861 537.50848 545.75824 551.00812 557.75793 563.00781"
+         style="font-size:9.99975586px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Sans L;-inkscape-font-specification:NimbusSanL-Regu">database.ColumnSet</tspan></text>
+<path
+       inkscape:connector-curvature="0"
+       id="path84"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="M 637.734,174.133 C 608.98,162.57 566.816,145.621 541.664,135.508" /><path
+       inkscape:connector-curvature="0"
+       id="path86"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 636.711,177.492 10.586,0.485 -7.973,-6.981 -2.613,6.496 z" /><path
+       inkscape:connector-curvature="0"
+       id="path88"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 482,79.5 77,0 0,-19 -77,0 0,19 z" /><text
+       id="text90"
+       transform="scale(1,-1)"
+       x="490"
+       y="-67.5"><tspan
+         id="tspan92"
+         sodipodi:role="line"
+         y="-67.5"
+         x="490 495.24988 500.49976 503.49966 508.74954 513.99939 519.24927 524.49915 529.74902 532.74896 539.50879 544.75867"
+         style="font-size:9.99975586px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Sans L;-inkscape-font-specification:NimbusSanL-Regu">database.Key</tspan></text>
+<path
+       inkscape:connector-curvature="0"
+       id="path94"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 520.5,105.805 c 0,-8.895 0,-19.024 0,-26.055" /><path
+       inkscape:connector-curvature="0"
+       id="path96"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 517,106.082 3.5,10 3.5,-10 -7,0 z" /><path
+       inkscape:connector-curvature="0"
+       id="path98"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 400,23.5 109,0 0,-19 -109,0 0,19 z" /><text
+       id="text100"
+       transform="scale(1,-1)"
+       x="408"
+       y="-11.5"><tspan
+         id="tspan102"
+         sodipodi:role="line"
+         y="-11.5"
+         x="408 413.24988 418.49976 421.49966 426.74954 431.99942 437.2493 442.49915 447.74902 450.74896 456.74881 462.00867 465.00861 470.25848 472.50842 477.7583 483.00818 489.758 495.00787"
+         style="font-size:9.99975586px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Sans L;-inkscape-font-specification:NimbusSanL-Regu">database.ForeignKey</tspan></text>
+<path
+       inkscape:connector-curvature="0"
+       id="path104"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="M 501.945,53.82 C 490.121,44.145 475.215,31.949 465.297,23.832" /><path
+       inkscape:connector-curvature="0"
+       id="path106"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 499.941,56.699 9.954,3.625 -5.524,-9.043 -4.43,5.418 z" /><path
+       inkscape:connector-curvature="0"
+       id="path108"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 251.5,23.5 110,0 0,-19 -110,0 0,19 z" /><text
+       id="text110"
+       transform="scale(1,-1)"
+       x="259.5"
+       y="-11.5"><tspan
+         id="tspan112"
+         sodipodi:role="line"
+         y="-11.5"
+         x="259.5 264.74988 269.99976 272.99966 278.24954 283.49942 288.7493 293.99915 299.24902 302.24896 309.00879 312.00873 314.25867 322.50845 327.75833 330.75827 336.00812 342.75797 348.00784"
+         style="font-size:9.99975586px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Sans L;-inkscape-font-specification:NimbusSanL-Regu">database.PrimaryKey</tspan></text>
+<path
+       inkscape:connector-curvature="0"
+       id="path114"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="M 476.746,57.957 C 436.324,47.762 377.125,32.82 340.25,23.516" /><path
+       inkscape:connector-curvature="0"
+       id="path116"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 476.039,61.391 10.551,-0.946 -8.84,-5.843 -1.711,6.789 z" /><path
+       inkscape:connector-curvature="0"
+       id="path118"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#bfbfbf;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 357.5,197 32,0 0,-19 -32,0 0,19 z" /><text
+       id="text120"
+       transform="scale(1,-1)"
+       x="365.5"
+       y="-185"><tspan
+         id="tspan122"
+         sodipodi:role="line"
+         y="-185"
+         x="365.5 372.24985 377.49969"
+         style="font-size:9.99975586px;font-style:italic;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:TeXGyreHeros;-inkscape-font-specification:TeXGyreHeros-Italic">Set</tspan></text>
+<path
+       inkscape:connector-curvature="0"
+       id="path124"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 396.391,173.02 c 0.707,-0.352 1.41,-0.692 2.109,-1.02 31.668,-14.887 69.711,-28.242 94.801,-36.465" /><path
+       inkscape:connector-curvature="0"
+       id="path126"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 394.422,170.105 -7.133,7.833 10.461,-1.672 -3.328,-6.161 z" /><path
+       inkscape:connector-curvature="0"
+       id="path128"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 331,135.5 117,0 0,-19 -117,0 0,19 z" /><text
+       id="text130"
+       transform="scale(1,-1)"
+       x="339"
+       y="-123.5"><tspan
+         id="tspan132"
+         sodipodi:role="line"
+         y="-123.5"
+         x="339 344.24988 349.49976 352.49966 357.74954 362.99942 368.2493 373.49915 378.74902 381.74896 389.25879 394.50864 399.75851 405.00839 410.25827 415.50812 417.75809 423.00793 429.00781 434.25769"
+         style="font-size:9.99975586px;font-style:italic;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:TeXGyreHeros;-inkscape-font-specification:TeXGyreHeros-Italic">database.ReadableKey</tspan></text>
+<path
+       inkscape:connector-curvature="0"
+       id="path134"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 419.816,112.504 c 24.559,-10.125 58.5,-24.117 80.024,-32.988" /><path
+       inkscape:connector-curvature="0"
+       id="path136"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 418.168,109.398 -7.91,7.047 10.578,-0.578 -2.668,-6.469 z" /><path
+       inkscape:connector-curvature="0"
+       id="path138"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 315,79.5 149,0 0,-19 -149,0 0,19 z" /><text
+       id="text140"
+       transform="scale(1,-1)"
+       x="323"
+       y="-67.5"><tspan
+         id="tspan142"
+         sodipodi:role="line"
+         y="-67.5"
+         x="323 328.24988 333.49976 336.49966 341.74954 346.99942 352.2493 357.49915 362.74902 365.74896 373.25879 378.50864 383.75851 389.00839 394.25827 399.50812 401.75809 407.00793 413.00781 418.25769 421.2576 426.50748 428.75742 434.00729 439.25714 445.25702 450.5069"
+         style="font-size:9.99975586px;font-style:italic;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:TeXGyreHeros;-inkscape-font-specification:TeXGyreHeros-Italic">database.ReadableForeignKey</tspan></text>
+<path
+       inkscape:connector-curvature="0"
+       id="path144"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 389.5,105.805 c 0,-8.895 0,-19.024 0,-26.055" /><path
+       inkscape:connector-curvature="0"
+       id="path146"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 386,106.082 3.5,10 3.5,-10 -7,0 z" /><g
+       id="g3249"
+       transform="translate(6.4,0)"><path
+         d="m 146,79.5 151,0 0,-19 -151,0 0,19 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path148"
+         inkscape:connector-curvature="0" /><text
+         y="-67.5"
+         x="154"
+         transform="scale(1,-1)"
+         id="text150"><tspan
+           style="font-size:9.99975586px;font-style:italic;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:TeXGyreHeros;-inkscape-font-specification:TeXGyreHeros-Italic"
+           x="154 159.24988 164.49974 167.49966 172.74954 177.99942 183.24928 188.49916 193.74902 196.74896 204.25877 209.50864 214.75851 220.00839 225.25827 230.50813 232.75809 238.00795 244.75778 247.75772 250.00766 258.25745 263.50732 266.50726 271.75714 277.75699 283.00684"
+           y="-67.5"
+           sodipodi:role="line"
+           id="tspan152">database.ReadablePrimaryKey</tspan></text>
+</g><path
+       inkscape:connector-curvature="0"
+       id="path154"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="M 353.113,113.305 C 321.457,103.129 276.332,88.625 247.996,79.516" /><path
+       inkscape:connector-curvature="0"
+       id="path156"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 352.289,116.715 10.59,-0.27 -8.449,-6.394 -2.141,6.664 z" /><path
+       inkscape:connector-curvature="0"
+       id="path158"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 407.773,53.82 c 11.645,-9.675 26.325,-21.871 36.094,-29.988" /><path
+       inkscape:connector-curvature="0"
+       id="path160"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 405.398,51.242 -5.453,9.082 9.926,-3.699 -4.473,-5.383 z" /><path
+       inkscape:connector-curvature="0"
+       id="path162"
+       style="fill:none;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="M 243.695,54.902 C 259.281,45 279.629,32.07 292.879,23.656" /><path
+       inkscape:connector-curvature="0"
+       id="path164"
+       style="fill:#191970;fill-opacity:1;fill-rule:nonzero;stroke:#191970;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+       d="m 241.719,52.008 -6.563,8.316 10.317,-2.41 -3.754,-5.906 z" /></g></svg>
\ No newline at end of file
diff --git a/Images/inherit_graph_8.pdf b/Images/inherit_graph_8.pdf
new file mode 100644 (file)
index 0000000..ca1e3da
Binary files /dev/null and b/Images/inherit_graph_8.pdf differ
diff --git a/Images/inherit_graph_8.png b/Images/inherit_graph_8.png
deleted file mode 100644 (file)
index adce2bf..0000000
Binary files a/Images/inherit_graph_8.png and /dev/null differ
diff --git a/Images/inherit_graph_8_most_simplified.pdf b/Images/inherit_graph_8_most_simplified.pdf
new file mode 100644 (file)
index 0000000..7fbdbe5
Binary files /dev/null and b/Images/inherit_graph_8_most_simplified.pdf differ
diff --git a/Images/inherit_graph_8_simplified.pdf b/Images/inherit_graph_8_simplified.pdf
new file mode 100644 (file)
index 0000000..c48cdfb
Binary files /dev/null and b/Images/inherit_graph_8_simplified.pdf differ
diff --git a/Images/inherit_graph_9.pdf b/Images/inherit_graph_9.pdf
new file mode 100644 (file)
index 0000000..abb847e
Binary files /dev/null and b/Images/inherit_graph_9.pdf differ
diff --git a/Images/inherit_graph_9.png b/Images/inherit_graph_9.png
deleted file mode 100644 (file)
index 790b5cf..0000000
Binary files a/Images/inherit_graph_9.png and /dev/null differ
index f70588b..2eeaa0f 100644 (file)
Binary files a/OSL-Specification.pdf and b/OSL-Specification.pdf differ
index 0b3bb4b..d6f105c 100644 (file)
@@ -53,6 +53,9 @@
 \addto\extrasgerman{\renewcommand{\figurename}{Abb.}}
 \addto\extrasgerman{\renewcommand{\tablename}{Tab.}}
 
+% Text
+\usepackage{textcomp}
+
 % Bilder
 \usepackage[rflt]{floatflt}
 \usepackage{epsfig,wrapfig}
@@ -65,6 +68,7 @@
 % Tabellen
 \usepackage{longtable,lscape}
 \usepackage{multirow}
+\usepackage{multicol}
 \usepackage{tabularx}
 
 % Kopfzeilen
index 18a17b2..9627dce 100644 (file)
@@ -64,7 +64,7 @@ manually from its users instead of adding even more complexity to the process.
 To achieve the former goal, use of existing tools, languages and conventions was
 made wherever possible.
 To fit into the environment used in the OPTIQUE project TODO it is ultimately
-part of, Java was used for the bootstrapping software.
+part of, \name{Java} was used for the bootstrapping software.
 Care was taken to design it to be modular and flexible, making it
 usable not only as a whole but also as a collection of independent components
 possibly serving as the basis for a program library in the future.
diff --git a/osl.tex b/osl.tex
index b2f56af..56e910c 100644 (file)
--- a/osl.tex
+++ b/osl.tex
@@ -1,15 +1,16 @@
 \chapter{The OBDA Specification Language (OSL)}
 \label{osl}
 
+TODO: aims, proceeding, structure
 As described in \cite{eng}, an OBDA specification consists of several types of maps,
 all containing data entries and links to other maps.
-This fits perfectly into the environment of ontologies and OWL, with data properties
-being the obvious choice to represent contained data entries and object properties being
-the obvious choice to represent links between maps.
+This fits perfectly into the environment of ontologies and \name{OWL}, with data
+properties being the obvious choice to represent contained data entries
+and object properties being the obvious choice to represent links between maps.
 Also, a potential user probably to some degree is familiar with this environment,
 since this is what the bootstrapping process at the end amounts to.
 
-Therefore, an ideal base for the OBDA Specification Language is OWL,
+Therefore, an ideal base for the OBDA Specification Language is \name{OWL},
 being a solid framework for data and constraint representation
 with a high degree of software support,
 while imposing only a minimum of introductory preparation to the user.
@@ -17,7 +18,7 @@ while imposing only a minimum of introductory preparation to the user.
 Another advantage of this approach is that the specification is kept
 compact and focused on the entities that the language has to represent rather than
 primarily dealing with technical details.
-In particular, many of those details can be formulated as OWL restrictions
+In particular, many of those details can be formulated as \name{OWL} restrictions
 in a header ontology demanded to be imported by documents conforming
 to the \osl{} specification.
 Thus, they are not only specified precisely but they are also stipulated in a
@@ -30,21 +31,23 @@ many aspects of an \osl{} document for conformity with minimal effort.
 \newcommand{\parnum}{\textsuperscript{\arabic{parcount}}}
 \newcommand{\p}{\refstepcounter{parcount} \parnum \hspace{1em}}
 
-\p An \osl{} document is a valid OWL 2 document (as described in \cite{owl})
+\p An \osl{} document is a valid \name{OWL} 2 document (as described in \cite{owl})
 containing individuals and data that represent the OBDA Specification,
-as well as OWL properties that connect them.
-The individuals and OWL properties are recognized and mapped to their roles by their IRIs.
+as well as \name{OWL} properties that connect them.
+The individuals and \name{OWL} properties are recognized and mapped to their roles
+by their IRIs.
 
-\p\label{spec_ignored} An \osl{} document may contain more OWL entities
+\p \label{spec_ignored} An \osl{} document may contain more \name{OWL} entities
 (with IRIs not defined in this specification), which are ignored.
 
 \p An \osl{} document has to declare all individuals having different IRIs as different
 from each other (except those which are ignored, see paragraph \ref{spec_ignored}).\\
-It is recommended to use the \texttt{owl:AllDifferent} OWL statement for this purpose.
+It is recommended to use the \texttt{owl:AllDifferent} \name{OWL}
+statement for this purpose.
 
-\p\label{spec_base} Unless stated otherwise, IRIs mentioned in the following are IRIs relative
-to a base IRI chosen by the user being empty (which makes the IRIs absolute \cite{xmlbase})
-or ending with a hash character (`\#').\\
+\p \label{spec_base} Unless stated otherwise, IRIs mentioned in the following are
+IRIs relative to a base IRI chosen by the user being empty (which makes the IRIs
+absolute \cite{xmlbase}) or ending with a hash character (`\#').\\
 \newpage
 It is recommended to use that base IRI as \texttt{xml:base} XML attribute.\\
 IRIs prefixed with \texttt{osl:} are IRIs relative to the IRI\\
@@ -55,7 +58,8 @@ IRIs prefixed with \texttt{osl:} are IRIs relative to the IRI\\
 (referred to as ``the \osl{} header'' in the following):\\
 \oslheaderurl{}
 
-\p The OWL individuals described by the \osl{} document representing the certain types of OBDA maps
+\p The \name{OWL} individuals described by the \osl{} document representing
+the certain types of OBDA maps
 must have the IRIs specified in table \ref{spec_tbl_indv_iris}
 (for base IRIs, see paragraph \ref{spec_base}).
 Here, \textit{$<$class URI$>$} refers\\
@@ -77,7 +81,7 @@ been generated for it if it weren't empty).
 \KOMAoption{fontsize}{\smallerfontsize{}}
 \begin{table}[]\begin{center}
        \begin{tabular}{l|l}
-               \textbf{Map type} & \textbf{OWL IRI} \\ \hline
+               \textbf{Map type} & \textbf{\name{OWL} IRI} \\ \hline
                Entity map & \textit{$<$class URI$>$}\texttt{\_\_ENTITY\_MAP} \\
                Attribute map & \textit{$<$property URI$>$}\texttt{\_\_ATTRIBUTE\_MAP} \\
                Identifier map & \textit{$<$class URI$>$}\texttt{\_\_IDENTIFIER\_MAP} \\
@@ -88,19 +92,20 @@ been generated for it if it weren't empty).
                Translation table of subtype map &
                        \textit{$<$class URI$>$}\texttt{\_\_SUBTYPE\_MAP\_\_TRANSLATION\_TABLE} \\
        \end{tabular}
-       \caption{OWL individual IRIs in \osl{}}
+       \caption{\name{OWL} individual IRIs in \osl{}}
        \label{spec_tbl_indv_iris}
 \end{center}\end{table}
 \KOMAoption{fontsize}{\myfontsize{}}
 
-\p The OWL individuals described by the \osl{} document representing the certain types of OBDA maps
-must be of the OWL types specified in table \ref{spec_tbl_types}
+\p The \name{OWL} individuals described by the \osl{} document representing
+the certain types of OBDA maps
+must be of the \name{OWL} types specified in table \ref{spec_tbl_types}
 (for base IRIs, see paragraph \ref{spec_base}).
 
 %\vspace{\spacebeforetable{}}
 \begin{table}[]\begin{center}
                \begin{tabular}{l|l}
-                       \textbf{Map type} & \textbf{OWL class IRI} \\ \hline
+                       \textbf{Map type} & \textbf{\name{OWL} class IRI} \\ \hline
                        Entity map & \texttt{osl:EntityMap} \\
                        Attribute map & \texttt{osl:AttributeMap} \\
                        Identifier map & \texttt{osl:IdentifierMap} \\
@@ -108,11 +113,12 @@ must be of the OWL types specified in table \ref{spec_tbl_types}
                        Subtype map & \texttt{osl:SubtypeMap} \\
                        Translation table & \texttt{osl:TranslationTable} \\
                \end{tabular}
-               \caption{Class membership of map representations in \osl{}}
+               \caption{\name{OWL} class membership of map representations in \osl{}}
                \label{spec_tbl_types}
 \end{center}\end{table}
 
-\p The OWL properties described by the \osl{} document representing the fields of the certain OBDA maps
+\p The \name{OWL} properties described by the \osl{} document representing
+the fields of the certain OBDA maps
 must have the IRIs specified in table \ref{spec_tbl_prop_iris}
 (for base IRIs, see paragraph \ref{spec_base}).
 
@@ -120,7 +126,7 @@ must have the IRIs specified in table \ref{spec_tbl_prop_iris}
 %\KOMAoption{fontsize}{\smallerfontsize{}}
 \begin{table}[]\begin{center}
                \begin{tabular}{l|l|l|l}
-                       \textbf{Map type} & \textbf{Field label} & \textbf{Field name} & \textbf{OWL IRI} \\ \hline
+                       \textbf{Map type} & \textbf{Field label} & \textbf{Field name} & \textbf{\name{OWL} IRI} \\ \hline
                        Entity map & \texttt{E1} & \texttt{Table name} & \texttt{osl:em\_\_tableName} \\
                        Entity map & \texttt{E2} & \texttt{Label} & \texttt{osl:em\_\_label} \\
                        Entity map & \texttt{E3} & \texttt{Identifier map} & \texttt{osl:em\_\_identifierMap} \\
@@ -159,21 +165,22 @@ must have the IRIs specified in table \ref{spec_tbl_prop_iris}
                        Translation table & \texttt{T2} & \texttt{RDF ressource...} &
                                \texttt{osl:tt\_\_rdfRessource\textcolor{red}{\textbf{s}}} \\
                \end{tabular}
-               \caption{OWL property IRIs in \osl{}}
+               \caption{\name{OWL} property IRIs in \osl{}}
                \label{spec_tbl_prop_iris}
 \end{center}\end{table}
 %\KOMAoption{fontsize}{\myfontsize{}}
 
 %\newpage
-\p The following OWL properties in the \osl{} document refer to lists of elements:
+\p The following \name{OWL} properties in the \osl{} document refer
+to lists of elements:
 \begin{itemize}
        \item[] \texttt{osl:rm\_\_sourceColumns}
        \item[] \texttt{osl:rm\_\_targetColumns}
        \item[] \texttt{osl:tt\_\_sourceValues}
        \item[] \texttt{osl:tt\_\_rdfRessources}
 \end{itemize}
-Therefore, they have the OWL class \texttt{osl:StringListNode} as their range,
-as is required by the \osl{} header.
+Therefore, they have the \name{OWL} class \texttt{osl:StringListNode}
+as their range, as is required by the \osl{} header.
 They must connect the respective individual to an
 \texttt{osl:StringListNode} individual in every case.
 This ``root node'' must \emph{not} have an \texttt{osl:hasValue} property.\\
index 020820d..c66350f 100644 (file)
@@ -5,9 +5,11 @@ The program itself and its creation process are described in the following secti
 Section \fullref{functionality} describes the functionality the program offers.
 Section \fullref{interface} describes how this functionality is exposed to the
 program environment.
-Section \fullref{tools} explains what tools where used to create the program.
+Section \fullref{bootstrapping} explains in detail how the bootstrapping
+process was realized.
 Section \fullref{arch} describes the program architecture both on a coarse and
 a fine level.
+Section \fullref{tools} explains what tools where used to create the program.
 Section \fullref{code} describes concepts and decisions that where implemented
 on the code level to yield clean code.
 Section \fullref{stats} mentions some figures about the program.
@@ -27,10 +29,12 @@ Unless stated differently, program version $1.0$ is described
 
 \input{program_interface}
 
-\input{program_tools}
+\input{program_bootstrapping}
 
 \input{program_arch}
 
+\input{program_tools}
+
 \input{program_code}
 
 \input{program_stats}
index 5c5561f..83a1e68 100644 (file)
 \label{arch}
 \subsection{Libraries used}
 \subsection{Coarse structuring}
+\label{coarse}
 TODO: overall description, modularity, extendability, ex: easy to add new in-/output formats
 TODO: mapping profiles (maybe better in next subsection)
 TODO: package description
 TODO: package interaction description
 
 \subsection{Fine structuring}
+\subsubsection{Class organization}
+TODO: Every class hierarchy has at least one interface
+
+\begin{table}
+       \begin{multicols}{2}\begin{itemize} %\KOMAoption{fontsize}{\smallerfontsize{}}
+               \item \code{bootstrapping}
+                       \begin{itemize}
+                               \item \code{Bootstrapping}
+                               \item \code{DirectMappingURIBuilder}
+                               \item \code{URIBuilder}
+                       \end{itemize}
+               \item \code{cli}
+                       \begin{itemize}
+                               \item \code{CLIDatabaseInteraction}
+                       \end{itemize}
+               \item \code{database}
+                       \begin{itemize}
+                               \item \code{Column}
+                               \item \code{ColumnSet}
+                               \item \code{DatabaseException}
+                               \item \code{DBSchema}
+                               \item \code{ForeignKey}
+                               \item \code{Helpers}
+                               \item \code{Key}
+                               \item \code{PrimaryKey}
+                               \item \code{ReadableColumn}
+                               \item \code{ReadableColumnSet}
+                               \item \code{ReadableForeignKey}
+                               \item \code{ReadableKey}
+                               \item \code{ReadablePrimaryKey}
+                               \item \code{RetrieveDBSchema}
+                               \item \code{SQLType}
+                               \item \code{Table}
+                               \item \code{TableSchema}
+                       \end{itemize}
+               \item \code{helpers}
+                       \begin{itemize}
+                               \item \code{MapValueIterable}
+                               \item \code{MapValueIterator}
+                               \item \code{ReadOnlyIterable}
+                               \item \code{ReadOnlyIterator}
+                               \item \code{UserAbortException}
+                       \end{itemize}
+                       \newpage
+               \item \code{log}
+                       \begin{itemize}
+                               \item \code{ConsoleDiagnosticOutputHandler}
+                               \item \code{GlobalLogger}
+                       \end{itemize}
+               \item \code{main}
+                       \begin{itemize}
+                               \item \code{Main}
+                       \end{itemize}
+               \item \code{osl}
+                       \begin{itemize}
+                               \item \code{OSLSpecification}
+                       \end{itemize}
+               \item \code{output}
+                       \begin{itemize}
+                               \item \code{ObjectSpecPrinter}
+                               \item \code{OSLSpecPrinter}
+                               \item \code{SpecPrinter}
+                       \end{itemize}
+               \item \code{settings}
+                       \begin{itemize}
+                               \item \code{Job}
+                       \end{itemize}
+               \item \code{specification}
+                       \begin{itemize}
+                               \item \code{AttributeMap}
+                               \item \code{EntityMap}
+                               \item \code{IdentifierMap}
+                               \item \code{InvalidSpecificationException}
+                               \item \code{OBDAMap}
+                               \item \code{OBDASpecification}
+                               \item \code{RelationMap}
+                               \item \code{SubtypeMap}
+                               \item \code{TranslationTable}
+                       \end{itemize}
+               \item \code{test}
+                       \begin{itemize}
+                               \item \code{CreateTestDBSchema}
+                               \item \code{GetSomeDBSchema}
+                       \end{itemize}
+       \end{itemize}\end{multicols} %\KOMAoption{fontsize}{\myfontsize{}}
+       \caption{Class affiliation to packages in \myprog{}}
+       \label{arch_tbl_classes}
+\end{table}
+
+
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_8.png}
+               \includegraphics[scale=0.86]{Images/inherit_graph_8.pdf}
 \end{center}\end{figure}
+\vspace{6px}
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_7.png}
-\end{center}\end{figure}
+               \includegraphics[scale=0.86]{Images/inherit_graph_5.pdf}
+       \end{center}\end{figure}
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_5.png}
+               \includegraphics[scale=0.86]{Images/inherit_graph_7.pdf}
 \end{center}\end{figure}
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_19.png}
+               \includegraphics[scale=0.86]{Images/inherit_graph_19.pdf}
 \end{center}\end{figure}
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_1.png}
+               \includegraphics[scale=0.86]{Images/inherit_graph_1.pdf}
 \end{center}\end{figure}
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_17.png}
+               \includegraphics[scale=0.86]{Images/inherit_graph_17.pdf}
 \end{center}\end{figure}
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_21.png}
+               \includegraphics[scale=0.86]{Images/inherit_graph_21_extended.pdf}
 \end{center}\end{figure}
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_13.png}
+               \includegraphics[scale=0.86]{Images/inherit_graph_13.pdf}
 \end{center}\end{figure}
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_3.png}
+               \includegraphics[scale=0.86]{Images/inherit_graph_3.pdf}
 \end{center}\end{figure}
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_18.png}
+               \includegraphics[scale=0.86]{Images/inherit_graph_18.pdf}
 \end{center}\end{figure}
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_12.png}
+               \includegraphics[scale=0.86]{Images/inherit_graph_12.pdf}
 \end{center}\end{figure}
 \begin{figure}[H]\begin{center}
                \ContinuedFloat*
-               \includegraphics[scale=0.86]{Images/inherit_graph_4.png}
+               \includegraphics[scale=0.86]{Images/inherit_graph_4.pdf}
                \setcounter{figure}{1}
-               \caption{Class hierarchies in \myprog{}}
+               \caption[Class hierarchies in \myprog{}]{Class hierarchies in \myprog{}.
+                       Interface names are italicized,
+                       external classes or interfaces are hemmed with a gray frame.}
                \label{arch_fig_inheritance}
 \end{center}\end{figure}
 
@@ -77,7 +171,7 @@ TODO: package interaction description
                        \itm{} \code{test.GetSomeDBSchema}\\
                \end{tabular}\\
        \caption{Standalone classes in \myprog{}}
-       \label{arch_tbl_classes}
+       \label{arch_tbl_lone_classes}
 \end{center}\end{table}
 
 %For more information about the program structure on the class level, see section \fullref{code}.
diff --git a/program_bootstrapping.tex b/program_bootstrapping.tex
new file mode 100644 (file)
index 0000000..0a54c5e
--- /dev/null
@@ -0,0 +1,2 @@
+\section{The bootstrapping process}
+\label{bootstrapping}
index 223d7a7..442be64 100644 (file)
@@ -29,7 +29,7 @@ name by 7 characters or about 26 \% is really not a problem.
 More generally, ``speaking code'' was used wherever possible,
 as described in section \fullref{speaking},
 which rendered many uses of comments unnecessary.
-In fact, the number of (plain, e.g. non-Javadoc) comments was consciously minimized,
+In fact, the number of (plain, e.g. non-\name{Javadoc}) comments was consciously minimized,
 to enforce speaking code and avoid redundancy.
 This technique is known TODO.
 
@@ -48,7 +48,7 @@ would have been callable at least from everywhere in the source file,
 and would have interrupted the reading flow.
 This technique is known TODO, while TODO
 
-Wherever possible, appropriate Javadoc comments were used in favor of
+Wherever possible, the appropriate \name{Javadoc} comments were used in favor of
 plain comments, for example to specify parameters, return types, exceptions
 and links to other parts of the documentation.
 
@@ -94,7 +94,7 @@ in combination, while cleanly fitting into the context of dynamic dispatching,
 are the following methods from \file{Column.java}:
 \codepar{public Boolean isNonNull()\\public Boolean isUnique()}
 
-There return type is the Java class \code{Boolean}, not the plain type
+There return type is the \name{Java} class \code{Boolean}, not the plain type
 \code{boolean}, because the information they return is not always known.
 In an early stage of the program, they returned \code{boolean} and were
 accompanied TODO by two methods
@@ -103,11 +103,11 @@ telling the caller whether the respective information was known and thus the
 value returned by \code{isNonNull()} or \code{isUnique()}, respectively,
 was reliable.
 
-They were then changed to return the Java class \code{Boolean} and to return
+They were then changed to return the \name{Java} class \code{Boolean} and to return
 null pointers in case the respective information is not known.
 This eliminated any possibility of using unreliable data in favor of generating
 exceptions instead, in this case a \code{NullPointerException}, which is thrown
-automatically by the Java Runtime Environment if the programmer forgets the
+automatically by the \name{Java Runtime Environment} if the programmer forgets the
 null check and tries to get a definite value from one of these methods
 when the correct value currently is not known.
 
@@ -130,7 +130,7 @@ a set of useful operations \cite{obj}.
 
 \subsubsection{Identification of classes}
 To identify potential classes, entities from the problem domain were -- if reasonable --
-directly represented as Java classes.
+directly represented as \name{Java} classes.
 The approach of choosing ``the program that most directly models the aspects of the
 real world that we are interested in'' to yield clean code,
 as described and recommended by Stroustrup \cite{str3}, proved to be extremely useful
@@ -139,8 +139,10 @@ As a consequence, the code declares classes like \code{Column}, \code{ColumnSet}
 \code{ForeignKey}, \code{Table}, \code{TableSchema} and \code{SQLType}.
 As described in section \fullref{speaking}, class names were chosen to be concise
 but nevertheless expressive TODO.
-Java packages were used to help attain this aim, which is why the previously mentioned
-class names are unambiguous (for details about package use see section \fullref{packages}).
+\name{Java} packages were used to help attain this aim,
+which is why the previously mentioned class names are unambiguous
+(for details about package use, see section \fullref{packages}, for the description
+of the packages in \myprog{} and their structuring, see section \fullref{coarse}).
 
 Care was taken not to introduce unnecessary classes, thereby complicating
 code structure and increasing the number of source files and program entities.
@@ -150,12 +152,12 @@ On the other hand of course, it usually is not the cleanest solution
 to avoid such artificial classes entirely.
 
 \subsubsection{Const correctness}
-Specifying in the code which objects may be altered and which shall remain constant, thus
-allowing for additional static checks preventing undesired modifications,
+Specifying in the code which objects may be altered and which shall remain constant,
+thus allowing for additional static checks preventing undesired modifications,
 is commonly referred to as ``const correctness'' TODO.
 
-Unfortunately, Java lacks a keyword like C++'s \code{const}, making it harder to
-achieve const correctness.
+Unfortunately, \name{Java} lacks a keyword like \name{C++}'s \code{const},
+making it harder to achieve const correctness.
 It only specifies the similar keyword \code{final}, which is much less expressive and
 doesn't allow for a similarly effective error prevention \cite{final}.
 In particular, because \code{final} is not part of an object's type information,
@@ -175,7 +177,7 @@ Several possibilities were considered to address this problem:
        \item Giving the methods which modify object states special names
        like\\\code{setName\textendash\textendash USE\_WITH\_CARE}
        \item Delegating changes of objects to special ``editor'' objects to be
-       obtained when an object shall be altered
+       obtained when an object shall be altered TODO
        \item Deriving classes offering the modifying methods from the read-only
        classes
 \end{itemize}
@@ -207,8 +209,8 @@ counterparts via downcasting (only), thereby giving a strong hint to
 programmers that the resulting objects are to be used with care.
 
 \subsubsection{Java interfaces}
-In Java programming, it is quiet common and often recommended, that every
-class has at least one \code{interface} it \code{implemen,ts},
+In \name{Java} programming, it is quiet common and often recommended, that every
+class has at least one \code{interface} it \code{implements},
 specifying the operations the class provides. TODO
 If no obvious \code{interface} exists for a class or the desired
 interface name is already given to some other entity,
@@ -226,7 +228,7 @@ So, except from the standalone classes, an interface existed anyway, either
 ``naturally'' (as in the case of \code{Key}, for example) or because of
 the chosen way to implement const correctness.
 In some cases, these were interfaces declared in the program code, while
-in some cases, Java interfaces like \code{Set} were implemented
+in some cases, \name{Java} interfaces like \code{Set} were implemented
 (an obvious choice, of course, for \code{ColumnSet}).
 Introducing artificial interfaces for the standalone classes was considered
 unnecessary at least, if not messy.
@@ -235,13 +237,13 @@ unnecessary at least, if not messy.
 \label{packages}
 As mentioned in section \fullref{classes}, class names were chosen to be
 concise but nevertheless expressive.
-This only was possible through the use of Java \code{package}s,
+This only was possible through the use of \name{Java} \code{package}s,
 which also helped structure the program.
 
 For the current, relatively limited, extent of the program which currently
 comprises $45$ (\code{public}) classes, a flat package structure was
 considered ideal, because it is simple and doesn't stash source files deep
-in subdirectories (in Java, the directory structure of the source tree
+in subdirectories (in \name{Java}, the directory structure of the source tree
 is required to reflect the package structure TODO).
 Because also every class belongs to a package,
 each source file is to be found exactly one directory below the root
@@ -249,8 +251,8 @@ program source directory, which in many cases eases their handling.
 
 The following $11$ packages exist in the program
 (their purpose and more details about the package structure are
-described in section TODO):
-\begin{itemize}
+described in section \fullref{coarse}):
+\begin{multicols}{3}\begin{itemize}
        \item \code{boostrapping}
        \item \code{cli}
        \item \code{database}
@@ -262,8 +264,7 @@ described in section TODO):
        \item \code{settings}
        \item \code{specification}
        \item \code{test}
-\end{itemize}
-TODO: two columns
+\end{itemize}\end{multicols}
 
 Each package is documented in the source code also, particularly in a file
 \file{package-info.java} residing in the respective package directory.
index d86c8f8..3180b00 100644 (file)
@@ -1,15 +1,19 @@
-\section{Interface}
+\section{Interface and usage}
 \label{interface}
 This section describes the interface to the operating system and the user interface.
 For information on programming interfaces, see section \fullref{arch}.
 
 \subsection{User interaction and configuration}
 \subsubsection{Basic usage}
+\label{basic}
 Currently, the only user interface of \myprog{} is a command-line interface.
 Since the program is supposed to bootstrap the OBDA Specification automatically and
 thus there is little interaction, but a lot of output, this was considered ideal.
+Basically, one invocation of \myprog{} will initiate the automatic, non-interactive
+bootstrapping of exactly one \osl{} specification written to the standard output,
+a behavior which can be modified via command-line arguments.
 Because of its ability to write to the standard output (which is also the default
-behavior), it is easy to pipe the output of \myprog{} directly to a program that
+behavior), it is easy to pipe the output of \myprog{} directly into a program that
 handles it in a Unix-/POSIX-like fashion TODO:
 \codepar{db2osl myserver.org | osl2onto myserver.org}
 
@@ -20,65 +24,93 @@ This scheme is known as ``filter-pattern'' TODO.
 
 By inserting additional ``filters'', the bootstrapping process can be customized
 without changing any of the involved programs:
-\codepar{db2osl mydatabase.org | customize\_uris.sh | osl2onto mydatabase.org}
+\codepar{db2osl mydatabase.org | customize\_spec.sh | osl2onto mydatabase.org}
 
-(supposed \name{customize\_uris.sh} is a shell script that modifies the URIs
-contained in an \osl{} specification in the manner the user desires).
+(supposed \name{customize{\scriptsize \_}spec.sh} is a shell script that modifies
+a given \osl{} specification in the way the user desires).
 
-\subsubsection{Command-line arguments}
-The behavior of \myprog{} itself can be adjusted via command-line arguments.
+\subsubsection{Configuration via command-line arguments}
+The behavior of \myprog{} itself can be adjusted via command-line arguments (only).
 The syntax for their application follows the POSIX standard TODO.
 Most features can be configured via short options (as, for example, \code{-P}).
 To allow for enhanced readability of \myprog{} invocations, each feature can (also)
 be configured via a long option (like \code{\textendash\textendash password}).
+The utilization of configuration files was considered, but for the time being
+seen as unnecessary complicating
+while not addressing any real difficulties.
 
-The command-line arguments \myprog{} currently supports and their effects are
-described in table \ref{if_tbl_arguments}.
-There currently is no switch to set the output format, since the only supported
+The command-line arguments \myprog{} currently supports are
+described in table \ref{if_tbl_arguments_desc},
+their default values are listed in table \ref{if_tbl_arguments_def}.
+There is currently no switch to set the output format, since the only supported
 output format, besides \osl{}, is a low-level output format for debugging purposes.
 Because of this and since the change that has to be made in the source code to enable it
 only involves changing one token, it was preferred not to offer a command-line option
-for this, thus not unnecessarily complicating the command-line interface for the
+for this, to not unnecessarily complicating the command-line interface for the
 normal, non-debugging, user.
 
 \begin{table}[]\begin{center}
-               \begin{tabular}{l|l|l}
-                       Option(s) & Description, taken from the help page of \myprog{} & Default value (if present)\\
+               \begin{tabular}{p{4.9cm}|p{11.1cm}}
+                       Option(s) & Description, taken from the help page of \myprog{}\\
                        \hline
-                       \code{\textendash\textendash database, -d} & database name (Java regular expression) databases have to match to be processed; see also: \code{\textendash\textendash loose-database-match} & .*\\
-                       \code{\textendash\textendash echo-password} & echo input when prompting for SQL password -- must be specified before \code{\textendash\textendash password-prompt} to get effective & false\\
-                       \code{\textendash\textendash help, -h, } & show this help and exit & false\\
-                       \code{\textendash\textendash interactive, -i} & be interactive when chosing database & false\\
-                       \code{\textendash\textendash login, -L} & SQL login & anonymous\\
-                       \code{\textendash\textendash loose-database-match} & if no database matching the regex specified with \code{\textendash\textendash database} is found on the given server and \code{\textendash\textendash interactive} is not specified for this job, use some other database & false\\
-                       \code{\textendash\textendash osl-header} & use the specified custom (non-standard) OSL header, implies \code{\textendash\textendash remote-osl-header} (to import no header, specify the empty string) & Default: <empty string>\\
-                       \code{\textendash\textendash output-file, -o} & use the specified output file (for the standard output, specify ``-'') & -\\
-                       \code{\textendash\textendash password, -P} & SQL password; use \code{\textendash\textendash password-prompt} to get a password prompt (if you do both, the password set via this switch will be ignored) & Default: <empty string>\\
-                       \code{\textendash\textendash password-prompt, -p} & prompt for SQL password; a password set via \code{\textendash\textendash password} is ignored & false\\
-                       \code{\textendash\textendash remote-osl-header, -R} & don't use hard-coded version of the OSL header for verification & false\\
-                       \code{\textendash\textendash remote-test} & try to retrieve a database schema from a hard-coded list of servers and take the first one successfully retrieved (and accepted, when \code{\textendash\textendash interactive} is given; note: give a dummy server if you want to do a test besides other jobs) & false\\
-                       \code{\textendash\textendash test} & use hard-coded test database schema, ignore given servers (note: give a dummy server if you want to do a test besides other jobs) & false\\
+                       \code{\textendash\textendash database}, \code{-d} & database name (\name{Java} regular expression) databases have to match to be processed; see also: \code{\textendash\textendash loose-database-match}\\
+                       \code{\textendash\textendash echo-password} & echo input when prompting for SQL password -- must be specified before \code{\textendash\textendash password-prompt} to get effective\\
+                       \code{\textendash\textendash help}, \code{-h, } & show this help and exit\\
+                       \code{\textendash\textendash interactive}, \code{-i} & be interactive when chosing database\\
+                       \code{\textendash\textendash login}, \code{-L} & SQL login\\
+                       \code{\textendash\textendash loose-database-match} & if no database matching the regex specified with \code{\textendash\textendash database} is found on the given server and \code{\textendash\textendash interactive} is not specified for this job, use some other database\\
+                       \code{\textendash\textendash osl-header} & use the specified custom (non-standard) OSL header, implies \code{\textendash\textendash remote-osl-header} (to import no header, specify the empty string)\\
+                       \code{\textendash\textendash output-file}, \code{-o} & use the specified output file (for the standard output, specify ``-'')\\
+                       \code{\textendash\textendash password}, \code{-P} & SQL password; use \code{\textendash\textendash password-prompt} to get a password prompt (if you do both, the password set via this switch will be ignored)\\
+                       \code{\textendash\textendash password-prompt}, \code{-p} & prompt for SQL password; a password set via \code{\textendash\textendash password} is ignored\\
+                       \code{\textendash\textendash remote-osl-header}, \code{-R} & don't use hard-coded version of the OSL header for verification\\
+                       \code{\textendash\textendash remote-test} & try to retrieve a database schema from a hard-coded list of servers and take the first one successfully retrieved (and accepted, when \code{\textendash\textendash interactive} is given; note: give a dummy server if you want to do a test besides other jobs)\\
+                       \code{\textendash\textendash test} & use hard-coded test database schema, ignore given servers (note: give a dummy server if you want to do a test besides other jobs)\\
                \end{tabular}\\
-               \caption{Command-line arguments in \myprog{}}
-               \label{if_tbl_arguments}
+               \caption{Command-line arguments in \myprog{} -- descriptions}
+               \label{if_tbl_arguments_desc}
        \end{center}\end{table}
 
-The sole invocation of \myprog{}, without any arguments, does not initiate any processing
-but displays the usage directions instead, in addition to an error message.
+\begin{table}[]\begin{center}
+               \begin{tabular}{l|l}
+                       Option(s) & Default value\\
+                       \hline
+                       \code{\textendash\textendash database, -d} & \code{.*}\\
+                       \code{\textendash\textendash echo-password} & \code{false}\\
+                       \code{\textendash\textendash help, -h, } & \code{false}\\
+                       \code{\textendash\textendash interactive, -i} & \code{false}\\
+                       \code{\textendash\textendash login, -L} & \code{anonymous}\\
+                       \code{\textendash\textendash loose-database-match} & \code{false}\\
+                       \code{\textendash\textendash osl-header} & \code{<empty string>}\\
+                       \code{\textendash\textendash output-file, -o} & \code{-}\\
+                       \code{\textendash\textendash password, -P} & \code{<empty string>}\\
+                       \code{\textendash\textendash password-prompt, -p} & \code{false}\\
+                       \code{\textendash\textendash remote-osl-header, -R} & \code{false}\\
+                       \code{\textendash\textendash remote-test} & \code{false}\\
+                       \code{\textendash\textendash test} & \code{false}\\
+               \end{tabular}\\
+               \caption{Command-line arguments in \myprog{} -- default values}
+               \label{if_tbl_arguments_def}
+       \end{center}\end{table}
+
+The sole invocation of \code{db2osl}, without any arguments, does not initiate any
+processing but displays the usage directions instead, in addition to an error message
+pointing out the missing server argument.
 
 \subsubsection{Multiple bootstrapping operations or multiple servers}
-To perform multiple bootstrapping operations with one invocation of \myprog{},
+To perform multiple bootstrapping operations with only one invocation of \myprog{},
 it is sufficient to concatenate the command-line arguments for each operation,
 separated by blanks, to get the final command line.
-However, when combining a test job with other operations, some arbitrary string has to be
-inserted as dummy server to allow distinguishing the different jobs and assigning
-each command-line argument to the appropriate job.
+However, when combining a test job with other operations, some arbitrary string
+has to be inserted as dummy server to allow distinguishing the different jobs
+and assigning each command-line argument to the appropriate job.
 
-On the other hand, to check several servers in order for the database to be used
+Likewise, to check several servers in order for the database to be used
 for one bootstrapping operation, these servers have to be concatenated,
 separated by blanks.
 Again, the distinction of the different bootstrapping jobs has to be possible,
 so all but the first operation have to have at least one command-line argument
+that signals the beginning of a new job definition
 (which is no practical problem, since to enforce this, a default argument simply
 can be stated explicitly without changing the behavior of the invocation).
 
@@ -92,9 +124,85 @@ is equivalent to
        password itsme sql.myemployer.com;\\
        db2osl \textendash\textendash database test myserver.org backup.myserver.org}
 
-Thus, currently 
+Thus, a parameter defined for one operation (like the password
+in the example) will have no effect on other operations.
+This ensures that typical errors are prevented when merging several invocations
+of \myprog{} into one (or vice versa)
+and allows for a straight-forward, comprehensive and clean implementation.
+
+\subsubsection{Advanced modifications}
+Since \osl{} specifications are plain text files, a user can edit them in any desired
+text editor if he wants to change them in ways that go beyond the functionality
+\myprog{} provides or that can be achieved by scripts or programs modifying their
+input automatically.
+Because of \osl{} being defined to be a subset of \name{OWL} (see the specification
+of \osl{} in section \ref{oslspec}), he can thereby take advantage of editors
+supporting syntax highlighting or other features making the handling of
+the respective \name{OWL} serialization more comfortable.
+
+Moreover, every common ontology editor can be used to edit the generated \osl{}
+specification automatically or manually.
+Doing so, care has to be taken to make the ontology remain a conforming \osl{}
+specification. However, since the restrictions imposed by \osl{} are rather
+small and intuitive, this is easily achieved.
+Furthermore, upcoming tools supporting \osl{} (see section \fullref{future}) are very
+likely to be able to check their input for conformity with the \osl{} definition.
 
 \subsection{Integration into systems}
-TODO: modularity -> reusability
-TODO: logger
-TODO: operating system -> Java
+Besides the use cases described in section ``\nameref{basic}'',
+there are many other ways in which \myprog{} can be used.
+For example, a database can be periodically checked for changes that make a
+re-bootstrapping necessary:
+\codepar{db2osl -d mydb myserver.org | sha256sum >oldsum\\
+       cp oldsum newsum\\
+       while diff oldsum newsum; do\\
+       \ind sleep 3600\ \ \# wait 1 hour\\
+       \ind db2osl -d mydb myserver.org | sha256sum >newsum\\
+       done\\
+       rm oldsum newsum\\
+       \# notify web admin via e-mail:\\
+       mutt -s "Re-bootstrapping necessary" web-admin@myserver.org}
+
+Another possible example is the integration of \myprog{} into a shell script
+that bootstraps all databases on a server:
+\codepar{regex=\textquotesingle(?!\$).*\textquotesingle\ \ \# accept all nonempty database names first\\
+       while db2osl -d "\$regex" -o spec myserver.org; do\\
+       \ind dbname="\`{} sed -ne \textquotesingle/xmlns:ont/ \{ s|.*/||; s|\#"||p \}\textquotesingle\ spec \`{}"\\
+       \ind mv spec "\$dbname".osl\\
+       \ind \# don't use this database a second time:\\
+       \ind regex="\`{} printf \%s "\$regex" | sed -e "s,\textbackslash\textbackslash\textbackslash\textbackslash\$,\$|\$dbname\$," \`{}"\\
+       done}
+
+Newer versions than version 1.0 described here provide a command-line parameter
+\code{-a} (or, alternatively, \code{\textendash \textendash all)}
+which makes \myprog{} bootstrap \emph{all} databases matching the given
+regular expression.
+However, using this approach, all bootstrapped specifications will be output
+to one single file.
+
+Since the programming language used to implement \myprog{} is \name{Java},
+it is possible to deploy it on all platforms offering the
+\name{Java Runtime Environment} TODO.
+Additionally, it is possible to deploy it as a Web application TODO.
+
+To simplify integration on the code level, the architecture of \myprog{} was
+designed to be highly modular and to cleanly separate code with different areas of
+responsibility into different packages
+(for details about the structuring of \myprog{}, see section \fullref{arch}).
+This modularity, besides facilitating understanding the code,
+allows for a high degree of code reusability.
+
+For example, the packages \code{database}, \code{osl} and \code{specification}
+can be reused in other programs with little or no changes --
+the biggest change involves combining the database schema retrieval with the
+user interface of the new program to provide control over the retrieval process
+when reusing the \code{database} package
+(to do this, three method calls have to be replaced).
+%However, the \code{osl} package heavily depends on the \code{specification} package.
+If the accruing information shall be used in another way than being output or logged,
+this of course has to be implemented.
+If not, it is sufficient to replace the used \code{Logger} object by anohter one
+providing the desired behavior, since the \code{Logger} class is part of the
+\name{Java} API and widely used TODO.
+This is a good example of how using well-known and commonly used classes can
+greatly improve modularity and reusability.
index 1577195..7755a87 100644 (file)
@@ -3,3 +3,8 @@ Für den eiligen Leser ist die Vorgehensweise zusammen mit den
 wesentlichen Ergebnissen am Schluss in einer ``Zusammenfassung'' klar
 herauszustellen. Diese soll ausführlicher sein als die  ``Übersicht'' am Anfang der Arbeit. Auch diese Zusammenfassung soll möglichst keine Formeln enthalten.
 
+\section{Summary}
+
+\section{Future work}
+\label{future}
+TODO: Software processing (and validating!) \osl{}