abrupt 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0add5487871d04392709d71b7423fab98c4ba287
4
- data.tar.gz: 052e630933996838bd150d205c8390d0c978a38d
3
+ metadata.gz: 582de82907913af777a1bf2c35ccd82918d66454
4
+ data.tar.gz: 54c49d2a91bb8e91148ef7a75190a49c7ed33315
5
5
  SHA512:
6
- metadata.gz: 7c4d1021885d1c1ec78cabad8116e40a3d61230b4e2280ba26f1a728f2f17679e214229ef16d1f1ac36e5aceb21206806a95f857ff8a30a668fa11913516019e
7
- data.tar.gz: 856a890befc37a1b7313f1a1300cae8abcf40415e6fdde21e265d4323aca6025f0fcee28915680af2d73fd97146304a60a3022a78e43282597d84eaec1490f18
6
+ metadata.gz: c6a4a584197c07c8a16bbbbbfccb6b827c741d946848dbd00c553ea951a68ea5d933bdc3d3baa07c3ea8dacb6ff1d625fea8020d4d557c6bc096eb5caed6b33f
7
+ data.tar.gz: 33a07d4e899c761cf956f8ac7b74d019a81f703c33a124a00bcb1c18e2b6e61e3ba2c9bcdf17c5d8f057e8fba1869bce5fb48215d9462419e4d84e52eff74d6c
data/README.md CHANGED
@@ -52,7 +52,7 @@ abrupt -h
52
52
 
53
53
  AUTHOR:
54
54
 
55
- Manuel Dudda <manuelddudda@redpeppix.de>
55
+ Manuel Dudda <dudda@paij.com>
56
56
 
57
57
  SOURCE CODE:
58
58
 
@@ -0,0 +1,40 @@
1
+ @prefix : <http://wba.cs.hs-rm.de/AbRUPt/> .
2
+ @base <http://wba.cs.hs-rm.de/AbRUPt/> .
3
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
4
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
5
+ @prefix xml: <http://www.w3.org/XML/1998/namespace> .
6
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
7
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8
+
9
+ [
10
+ a owl:Restriction;
11
+ rdfs:subClassOf :Problem;
12
+ owl:onProperty :aTagWithLowContrast;
13
+ owl:someValuesFrom [
14
+ a rdfs:Datatype;
15
+ owl:onDatatype xsd:integer;
16
+ owl:withRestrictions ([ xsd:minInclusive 1])
17
+ ]
18
+ ] .
19
+
20
+ [
21
+ a owl:Restriction;
22
+ rdfs:subClassOf :Problem;
23
+ owl:onProperty :textNodesWithLowContrast;
24
+ owl:someValuesFrom [
25
+ a rdfs:Datatype;
26
+ owl:onDatatype xsd:integer;
27
+ owl:withRestrictions ([ xsd:minInclusive 1])
28
+ ]
29
+ ] .
30
+
31
+ [
32
+ a owl:Restriction;
33
+ rdfs:subClassOf :Problem;
34
+ owl:onProperty :paragrahpsWithTooLongLines;
35
+ owl:someValuesFrom [
36
+ a rdfs:Datatype;
37
+ owl:onDatatype xsd:integer;
38
+ owl:withRestrictions ([ xsd:minInclusive 1])
39
+ ]
40
+ ] .
@@ -19,15 +19,15 @@
19
19
  "properties": {
20
20
  "A_tag_With_Low_Contrast": {
21
21
  "description": "",
22
- "type": "string"
22
+ "type": "integer"
23
23
  },
24
24
  "TextNodes_With_Low_Contrast": {
25
25
  "description": "",
26
- "type": "string"
26
+ "type": "integer"
27
27
  },
28
28
  "paragrahps_with_too_long_lines": {
29
29
  "description": "",
30
- "type": "string"
30
+ "type": "integer"
31
31
  }
32
32
  }
33
33
  }
@@ -485,6 +485,36 @@
485
485
  #################################################################
486
486
 
487
487
 
488
+ ### http://wba.cs.hs-rm.de/AbRUPt/aTagWithLowContrast
489
+
490
+ :aTagWithLowContrast rdf:type owl:DatatypeProperty ;
491
+
492
+ rdfs:domain :Page ;
493
+
494
+ rdfs:range xsd:integer .
495
+
496
+
497
+
498
+ ### http://wba.cs.hs-rm.de/AbRUPt/paragrahpsWithTooLongLines
499
+
500
+ :paragrahpsWithTooLongLines rdf:type owl:DatatypeProperty ;
501
+
502
+ rdfs:domain :Page ;
503
+
504
+ rdfs:range xsd:integer .
505
+
506
+
507
+
508
+ ### http://wba.cs.hs-rm.de/AbRUPt/textNodesWithLowContrast
509
+
510
+ :textNodesWithLowContrast rdf:type owl:DatatypeProperty ;
511
+
512
+ rdfs:domain :Page ;
513
+
514
+ rdfs:range xsd:integer .
515
+
516
+
517
+
488
518
  ### http://wba.cs.hs-rm.de/AbRUPt/bigwords
489
519
 
490
520
  :bigwords rdf:type owl:DatatypeProperty ;
@@ -565,16 +595,6 @@
565
595
 
566
596
 
567
597
 
568
- ### http://wba.cs.hs-rm.de/AbRUPt/contrast
569
-
570
- :contrast rdf:type owl:DatatypeProperty ;
571
-
572
- rdfs:domain :Page ;
573
-
574
- rdfs:range xsd:string .
575
-
576
-
577
-
578
598
  ### http://wba.cs.hs-rm.de/AbRUPt/datetime
579
599
 
580
600
  :datetime rdf:type owl:DatatypeProperty ;
data/bin/abrupt CHANGED
@@ -9,7 +9,7 @@ class AbruptApp
9
9
  def run
10
10
  program :name, 'Abrupt'
11
11
  program :version, Abrupt::VERSION
12
- program :help, 'Author', 'Manuel Dudda <manuelddudda@redpeppix.de>'
12
+ program :help, 'Author', 'Manuel Dudda <dudda@paij.com>'
13
13
  program :help, 'Source Code', 'https://github.com/manuel84/abrupt'
14
14
  program :description, 'Automated Reasoning for Web Usability Problems'
15
15
 
@@ -0,0 +1 @@
1
+ abrupt convert website_data.xml visitor_data.xml --output out.ttl --format turtle
@@ -6,4 +6,4 @@ def add_visit_duration
6
6
  return unless leavetime || enterteime # maybe no recognized leavetime
7
7
  visit_duration = (leavetime - enterteime).to_f # in seconds
8
8
  add_data_property('visitDuration', visit_duration)
9
- end
9
+ end
@@ -0,0 +1,32 @@
1
+ [
2
+ a owl:Restriction;
3
+ rdfs:subClassOf :Problem;
4
+ owl:onProperty :aTagWithLowContrast;
5
+ owl:someValuesFrom [
6
+ a rdfs:Datatype;
7
+ owl:onDatatype xsd:integer;
8
+ owl:withRestrictions ([ xsd:minInclusive 1])
9
+ ]
10
+ ] .
11
+
12
+ [
13
+ a owl:Restriction;
14
+ rdfs:subClassOf :Problem;
15
+ owl:onProperty :textNodesWithLowContrast;
16
+ owl:someValuesFrom [
17
+ a rdfs:Datatype;
18
+ owl:onDatatype xsd:integer;
19
+ owl:withRestrictions ([ xsd:minInclusive 1])
20
+ ]
21
+ ] .
22
+
23
+ [
24
+ a owl:Restriction;
25
+ rdfs:subClassOf :Problem;
26
+ owl:onProperty :paragrahpsWithTooLongLines;
27
+ owl:someValuesFrom [
28
+ a rdfs:Datatype;
29
+ owl:onDatatype xsd:integer;
30
+ owl:withRestrictions ([ xsd:minInclusive 1])
31
+ ]
32
+ ] .
@@ -0,0 +1 @@
1
+ abrupt:hasPage rdfs:range abrupt:Website .
@@ -19,44 +19,152 @@
19
19
  bibsource = {dblp computer science bibliography, http://dblp.org}
20
20
  }
21
21
 
22
- @manual{url_abrupt,
22
+ @manual{abrupt,
23
23
  AUTHOR = {Hochschule RheinMain},
24
24
  YEAR = {2014},
25
25
  TITLE = {Automated Reasoning for Web Usability Problems},
26
26
  ADDRESS = {http://wba.cs.hs-rm.de/AbRUPt/service/},
27
27
  }
28
28
 
29
- @article{Martin,
30
- AUTHOR {Martin, Ludger},
31
- TITLE = {A RESTful Web Service to Estimating Time Requirements for Web Forms},
32
- YEAR = {2013},
33
- }
34
-
35
29
  @article{ruby-rdf,
36
- AUTHOR = {Arto Bendiken, Ben Lavender, Gregg Kellogg},
30
+ AUTHOR = {Bendiken, Arto AND Lavender, Ben AND Kellogg, Gregg},
37
31
  YEAR = {2015},
38
- TITLE = {ruby-rdf/rdf},
32
+ TITLE = {{ruby-rdf}},
39
33
  ADDRESS = {http://rubygems.org/gems/rdf},
40
34
  }
41
35
 
36
+ @article{rdf-raptor,
37
+ AUTHOR = {Bendiken, Arto AND Fieber, John},
38
+ YEAR = {2014},
39
+ TITLE = {{rdf-raptor}},
40
+ ADDRESS = {https://rubygems.org/gems/rdf-raptor},
41
+ }
42
+
42
43
  @article{owl2rl,
43
44
  AUTHOR = {W3C},
44
45
  YEAR = {2012},
45
- TITLE = {OWL 2 Web Ontology Language
46
- Profiles (Second Edition)},
47
- ADDRESS = {http://www.w3.org/TR/owl2-profiles/#OWL_2_RL},
46
+ TITLE = {{OWL 2 Web Ontology Language
47
+ Profiles}},
48
+ EDITION = {2},
49
+ ADDRESS = {http://www.w3.org/TR/owl2-profiles/#OWL_2_RL}
48
50
  }
49
51
 
50
52
  @article{owl2rif,
51
53
  AUTHOR = {W3C},
52
54
  YEAR = {2013},
53
- TITLE = {OWL 2 RL in RIF (Second Edition)},
54
- ADDRESS = {http://www.w3.org/TR/rif-owl-rl},
55
+ TITLE = {{OWL 2 RL in RIF}},
56
+ EDITION = {2},
57
+ ADDRESS = {http://www.w3.org/TR/rif-owl-rl}
58
+ }
59
+
60
+ @article{swrl,
61
+ AUTHOR = {{W3C}},
62
+ YEAR = {2004},
63
+ TITLE = {{SWRL: A Semantic Web Rule Language
64
+ Combining OWL and RuleML}},
65
+ ADDRESS = {http://www.w3.org/Submission/SWRL/},
66
+ }
67
+
68
+ @article{owl2,
69
+ AUTHOR = {{W3C}},
70
+ YEAR = {2004},
71
+ TITLE = {{OWL Web Ontology Language
72
+ Reference}},
73
+ ADDRESS = {http://www.w3.org/TR/owl-ref/},
55
74
  }
56
75
 
76
+ @article{sparql,
77
+ AUTHOR = {{W3C}},
78
+ YEAR = {2008},
79
+ TITLE = {{SPARQL Query Language for RDF}},
80
+ ADDRESS = {http://www.w3.org/TR/rdf-sparql-query/},
81
+ }
82
+
83
+ @inproceedings{rest,
84
+ author = {Fielding, Roy T. and Taylor, Richard N.},
85
+ title = {{Principled Design of the Modern Web Architecture}},
86
+ booktitle = {{Proceedings of the 22Nd International Conference on Software Engineering}},
87
+ series = {ICSE '00},
88
+ year = {2000},
89
+ isbn = {1-58113-206-9},
90
+ location = {Limerick, Ireland},
91
+ pages = {407--416},
92
+ numpages = {10},
93
+ url = {http://doi.acm.org/10.1145/337180.337228},
94
+ doi = {10.1145/337180.337228},
95
+ acmid = {337228},
96
+ publisher = {ACM},
97
+ address = {New York, NY, USA},
98
+ keywords = {WWW, software architectural style, software architecture},
99
+ }
100
+
57
101
  @article{lesbarkeit,
58
102
  AUTHOR = {Schopp, Jürgen F.},
59
103
  YEAR = {2003},
60
- TITLE = {Faktoren der Lesbarkeit},
104
+ TITLE = {{Faktoren der Lesbarkeit}},
61
105
  ADDRESS = {http://people.uta.fi/~trjusc/tt-lesbk.htm},
62
- }
106
+ }
107
+
108
+ @inproceedings{hybrid_reasoning,
109
+ author = {Song, Weihong and Spencer, Bruce and Du, Weichang},
110
+ title = {{Hybrid Reasoning for Ontology Classification}},
111
+ booktitle = {{Proceedings of the 24th Canadian Conference on Advances in Artificial Intelligence}},
112
+ series = {Canadian AI'11},
113
+ year = {2011},
114
+ isbn = {978-3-642-21042-6},
115
+ location = {St. John's, Canada},
116
+ pages = {372--376},
117
+ numpages = {5},
118
+ url = {http://dl.acm.org/citation.cfm?id=2018192.2018236},
119
+ acmid = {2018236},
120
+ publisher = {Springer-Verlag},
121
+ address = {Berlin, Heidelberg}
122
+ }
123
+
124
+ @inproceedings{web_forms,
125
+ AUTHOR = {Martin, Ludger},
126
+ TITLE = {A RESTful Web Service to Estimating Time Requirements
127
+ for Web Forms},
128
+ BOOKTITLE = {International Journal of Knowledge and Web Intelligence},
129
+ VOLUME = {5},
130
+ NUMBER = {1},
131
+ PAGES = {62 -- 75},
132
+ YEAR = {2014}
133
+ }
134
+
135
+ @inproceedings{subject,
136
+ AUTHOR = {Martin, Ludger},
137
+ TITLE = {{Subject Classification of Web Pages}},
138
+ BOOKTITLE = {{International Conference WWW/Internet 2012}},
139
+ YEAR = {2012},
140
+ PAGES = {298 -- 306},
141
+ ISBN = {978-989-8533-09-8}
142
+ }
143
+
144
+ @inproceedings{readability,
145
+ AUTHOR = {{Martin, Ludger and Gottron, Thomas}},
146
+ TITLE = {{Readability and the Web}},
147
+ BOOKTITLE = {Future Internet},
148
+ PAGES = {238 -- 252},
149
+ YEAR = {2012}
150
+ }
151
+
152
+ @book{foundations,
153
+ AUTHOR = {Hitzler, Pascal AND Krötzsch, Markus AND Rudolph, Sebastian},
154
+ YEAR = {2009},
155
+ TITLE = {{Foundations of Semantic Web Technologies}},
156
+ EDITION = {},
157
+ ISBN = {978-1-420-09051-2},
158
+ PUBLISHER = {CRC Press},
159
+ ADDRESS = {Boca Raton, Fla}
160
+ }
161
+
162
+ @book{web_primer,
163
+ AUTHOR = {Antoniou, Grigoris AND Groth, Paul AND Harmelen, Frank Van},
164
+ YEAR = {2012},
165
+ TITLE = {{A Semantic Web Primer}},
166
+ EDITION = {3},
167
+ ISBN = {978-0-262-01828-9},
168
+ PUBLISHER = {MIT Press},
169
+ ADDRESS = {Cambridge},
170
+ }
Binary file
@@ -30,6 +30,10 @@
30
30
  \usepackage{url}
31
31
 
32
32
  \usepackage{listings}
33
+ \usepackage{chngcntr}
34
+ \AtBeginDocument{\counterwithout{lstlisting}{section}}
35
+
36
+
33
37
 
34
38
  \usepackage{xcolor}
35
39
  \definecolor{grey}{rgb}{0.5,0.5,0.5}
@@ -74,10 +78,8 @@ tabsize=2,
74
78
  \newcommand{\keywords}[1]{\par\addvspace\baselineskip
75
79
  \noindent\keywordname\enspace\ignorespaces#1}
76
80
 
77
-
78
81
  \begin{document}
79
82
 
80
-
81
83
  \mainmatter % start of an individual contribution
82
84
 
83
85
  % first the title is needed
@@ -101,8 +103,7 @@ tabsize=2,
101
103
  % unless you accept that it will be published
102
104
  \institute{Hochschule RheinMain Informatik Master of Science \\
103
105
  Fachbereich Design Informatik Medien \\
104
- Campus Unter den Eichen 5
105
- 65195 Wiesbaden , Deutschland\\
106
+ Campus Unter den Eichen 5, 65195 Wiesbaden, Deutschland\\
106
107
  \mailsa\\
107
108
  \url{https://github.com/manuel84/abrupt}}
108
109
 
@@ -122,55 +123,84 @@ Campus Unter den Eichen 5
122
123
  Die Usability von Internetauftritten wird größtenteils subjektiv wahrgenommen.
123
124
  Es existiert zwar eine Normierung durch die ISO für die Anforderungen an die Gebrauchstauglichkeit einer Software (EN ISO 9241-11), diese trifft jedoch nur sehr wage Aussagen und orientiert sich stark am respektiven Nutzungskontext.
124
125
  Trotzdem gibt es Merkmale einer Website, die allgemein als negativ für die Eigenschaften der Usability eingestuft werden können, so zum Beispiel schlechte Kontrastverhältnisse, ein hoher Lesbarkeitsindex und Diskrepanzen zwischen erwartetem und tatsächlichem Nutzerverhalten.
125
- Das "{}AbRUPt"{}-System der Hochschule RheinMain ist in der Lage viele dieser Merkmale einer Website automatisiert zu erfassen.
126
- Durch die Konvertierung, Modellierung und Entwicklung eines durchdachtes Regelsystem in der semantischen Ontologiesprache OWL 2 RL ensteht ein System, welches automatisiert Folgerungen auf Usability-Probleme ermöglicht.
126
+ Das "{}AbRUPt"{}-System der Hochschule RheinMain ist in der Lage, viele dieser Merkmale einer Website automatisiert zu erfassen.
127
+ Durch die Konvertierung, Modellierung und Entwicklung eines durchdachten Regelsystems in der semantischen Ontologiesprache OWL 2 RL ensteht ein System, welches automatisiert Folgerungen auf Usability-Probleme ermöglicht.
127
128
  \end{abstract}
128
129
 
130
+ \newpage
129
131
 
130
132
  \section{Einleitung}
131
133
  Die Gestaltungsvielfalt von Webseiten hat sich seit der Freigabe des Internets für die kommerzielle Nutzung (ca. 1990) rasant weiterentwickelt.
132
134
  Anfangs bot nur eine kleine Anzahl von Institutionen, Firmen, Regierungen spärliche Informationen meist im Form von einfachen Texten an.
133
135
  Mittlerweile gehört die Webseite zum Aushängeschild eines jeden Unternehmens.
134
136
  Das Aussehen muss dabei häufig zur Unternehmensphilosphie passen, das sogenannte Cooperate Design sorgt für eine visuelle Identität, um sich von anderen Unternehmen zu unterschieden.
135
- Dazu gehören Schriftbild, Farben, Logos, und vieles mehr.
137
+ Dazu gehören Schriftbild, Farben, Logos und vieles mehr.
136
138
  Des Weiteren wurden jede Menge Web-Dienste entwickelt, die den Webseiten mehr Interaktivität einräumen.
137
- Viele Webanwendungen ähneln komplexer Software, die eine grafische Benutzeroberfläche im Browser zur Verfügung stellen.
138
- Für die Benutzerfreundlichkeit gibt es eine DIN-Norm, die folgende Anforderungen an die Software stellt.
139
+ Webanwendungen ähneln komplexer Software, die eine grafische Benutzeroberfläche im Browser zur Verfügung stellen.
140
+ Für die Benutzerfreundlichkeit gibt es eine ISO-Norm, die folgende Anforderungen an die Software stellt:
141
+
142
+ \begin{quote}
139
143
  Die Gebrauchstauglichkeit einer Software ist von ihrem Nutzungskontext (beinhalten den Benutzer, die Arbeitsaufgabe, die Arbeitsmittel wie z.B. Hardware oder Software sowie die physische und soziale Umgebung) abhängig, in dem sie eingesetzt wird.
140
144
  Im Teil 11 der ISO 9241 werden drei Leitkriterien für die Gebrauchstauglichkeit einer Software bestimmt:
145
+
141
146
  \begin{itemize}
142
- \item{Effektivität zur Lösung einer Aufgabe,}
143
- \item{Effizienz der Handhabung des Systems,}
144
- \item{Zufriedenheit der Nutzer einer Software.}
147
+
148
+ \item{Effektivität zur Lösung einer Aufgabe}
149
+ \item{Effizienz der Handhabung des Systems}
150
+ \item{Zufriedenheit der Nutzer einer Software}
151
+
145
152
  \end{itemize}
146
- Hier wird deutlich, dass es keine objektive Bestimmung von Gebrauchstauglichkeit gibt, sondern diese stark vom Nutzungskontext abhängt.
153
+
154
+ \end{quote}
155
+
156
+ Es wird deutlich, dass es keine objektive Bestimmung von Gebrauchstauglichkeit gibt, sondern diese stark vom Nutzungskontext abhängt.
147
157
  Insbesondere spielt die Zielgruppe dabei eine Rolle.
148
- Handelt es sich um ein jüngeres Publikum, die man mit einfacher Sprache zu erreichen versucht oder um Fachpublikum, für die komplexere Texte unabdingbar sind?
158
+ Handelt es sich um ein jüngeres Publikum, das man mit einfacher Sprache zu erreichen versucht oder um ein Fachpublikum, für die komplexere Texte unabdingbar sind?
149
159
  Welche kulturellen Gegebenheiten sind zu beachten?
150
- Das Farbverständnis der Chinesen beispielweise weicht der westlichen Welt stark ab, so ist weiß die Farbe der Trauer.
160
+ Das Farbverständnis der Chinesen beispielweise weicht von der westlichen Welt stark ab, so ist weiß die Farbe der Trauer.
151
161
  Ob eine Software dementsprechend gebrauchstauglich ist oder nicht, ist demnach nur subjektiv von Menschen bewertbar.
152
162
  Dennoch gibt es auch Merkmale, die allgemeingültig als mögliche Probleme eingestuft werden können:
163
+
153
164
  \begin{itemize}
154
- \item{Schlechte Kontrastverhältnisse}
155
- \item{Seiten ohne/mit zu vielen Links}
156
- \item{Unausgeglichenes Bild/Text-Verhältnis}
157
- \item{Diskrepanzen zwischen erwarteter und tatsähcliher Eingabezeit in Formularen}
158
- \item{Texte mit schlechtem Lesbarkeitsindex anhand \cite{lesbarkeit}}
159
- \item{Inkonsistenzen in der HTML-Struktur}
165
+
166
+ \item{Schlechte Kontrastverhältnisse}
167
+ \item{Seiten ohne/mit zu vielen Links}
168
+ \item{Unausgeglichenes Bild/Text-Verhältnis}
169
+ \item{Diskrepanzen zwischen erwarteten und tatsächichen Formular-Eingabezeiten}
170
+ \item{Texte mit schlechtem Lesbarkeitsindex anhand \cite{lesbarkeit}}
171
+ \item{Inkonsistenzen in der HTML-Struktur}
172
+
160
173
  \end{itemize}
161
- Der Online-Service AbRUPt (\cite{url_abrupt}) von der Hochschule RheinMain bietet die Möglichkeit viele dieser Merkmale über eine Web-Schnittstelle zu erfassen.
162
- Mit der Bachelor-Thesis \cite{Brieger} wurde gezeigt, wie man diese Schnittstelle anwendet und daraus ein Konstrukt für eine mögliche Datenauswertung entwickelt.
163
- Diese Arbeit beschäftigt sich mit der Weiterentwicklung des darin beschrieben Converters und dessen Datenuswertung (Abb. \ref{fig:converter}).
174
+
175
+ Der Online-Service AbRUPt \cite{abrupt} von der Hochschule RheinMain bietet die Möglichkeit, viele dieser Merkmale über eine Web-Schnittstelle zu erfassen.
176
+ In \cite{Brieger} wurde gezeigt, wie man diese Schnittstelle anwendet und daraus ein Konstrukt für eine mögliche Datenauswertung entwickelt.
177
+ Diese Arbeit beschäftigt sich mit der Weiterentwicklung des darin beschriebenen Converters und dessen Datenauswertung (Abb. \ref{fig:converter}).
178
+
164
179
  \begin{figure}
165
- \caption{Funktionsweise des Converters}
166
180
  \centering
167
181
  \includegraphics[width=0.7\textwidth]{figures/converter}
182
+ \caption{Funktionsweise des Converters}
168
183
  \label{fig:converter}
169
184
  \end{figure}
185
+
170
186
  Die Daten liegen zunächst im XML-Format vor und werden in OWL konvertiert.
171
187
  Mittels OWL-basierter Regeln wird überprüft, ob eine aussagekräftige Datenauswertung möglich ist.
172
- Es wird dabei besonderer Wert auf das OWL-Profil {}"RL{}" gelegt, um Performance-Schwachstellen zu vermeiden.
173
- Das OWL 2-RL Profil basiert auf dem funiderten Grundlagen der Beschreibungslogiken (\ref{sec:desclogic}.
188
+ Es wird dabei besonderer Wert auf das OWL-Profil "{}RL"{} gelegt, um Performance-Schwachstellen zu vermeiden.
189
+ Das "{}OWL 2 RL"{}-Profil basiert auf den fundierten Grundlagen der Beschreibungslogiken (\ref{sec:desclogic}).
190
+
191
+ \section{Gliederung}
192
+ \label{sec:structure}
193
+
194
+ Im Abschnitt \ref{sec:logic} werden die theoretischen Grundlagen für das "{}OWL 2 RL"{}-Profil aufgearbeitet.
195
+ Um zu verstehen, wie sich eine Beschreibungslogik (\ref{sec:desclogic}) von der Aussagenlogik (\ref{sec:aussagenlogik}) abhebt, werden kurze Beispiele gezeigt, wie sie auch in der Anwendung existieren könnten.
196
+ Abschnitt \ref{sec:prediactelogic} zeigt, dass mächtigere Aussagen mit der Prädikatenlogik möglich sind und welche Einschränkungen in der Entscheidbarkeit daraus entstehen.
197
+ Insgesamt stellt die Implementierung (\ref{sec:implementation}) des Converters eine Erweiterung vorheriger Arbeiten dar.
198
+ Welche Anpassungen dabei vorgenommen wurden, wird in Abschnitt \ref{sec:customization} beschrieben, welche Technologien in \ref{sec:technology}.
199
+ Der wesentliche Bestandteil der Erweiterung besteht aus der Regelerstellung für das Schließen auf Probleme (\ref{sec:reasoning}).
200
+ Die Regeln sind in Inkonsistenz- (\ref{sec:rule_inconsistency}), Produktions- (\ref{sec:rule_production}), Listen- (\ref{sec:rule_list}) und Datentyp-Regeln (\ref{sec:rule_datatype}) unterteilt.
201
+ Einige Herausforderungen können nur durch den Einsatz von Erweiterungen, beschrieben in \ref{sec:rule_extensions}, gelöst werden.
202
+ Verbundene Arbeiten werden in Abschnitt \ref{sec:related_work} erwähnt.
203
+ Abschließend wird das Projekt in \ref{sec:conclusion} zusammengefasst, ein Ausblick gewährt sowie ein persönliches Fazit gezogen.
174
204
 
175
205
  \newpage
176
206
  \section{Logik und Berechenbarkeit}
@@ -178,12 +208,12 @@ Das OWL 2-RL Profil basiert auf dem funiderten Grundlagen der Beschreibungslogik
178
208
 
179
209
  Es gibt verschiedene Arten von formalen Logiken, die sich in ihrer Struktur und Mächtigkeit unterscheiden.
180
210
  Für triviale Anwendungsfälle reicht meistens die Verknüpfung von strukturlosen Elementaraussagen aus.
181
- Komplexere Aussagen lassen sich nur mit mächtigeren Logiken ausdrücken, für dessen automatiserten Schlussfolgerungen allerdings auch größere Auwände entstehen.
211
+ Komplexere Aussagen lassen sich nur mit mächtigeren Logiken ausdrücken, für dessen automatiserten Schlussfolgerungen allerdings auch größere Aufwände entstehen.
182
212
 
183
213
  \subsection{Aussagenlogik}
184
214
  \label{sec:aussagenlogik}
185
215
 
186
- Mit der Aussagenlogik lassen sich in ihrer Mächtigkeit beschränkte Formeln aufstellen. Sie entsprechen in der Programmierung dem Datentyp \textit{Boolean}, also Elementarussagen, die verknüpft und negiert erscheinen und deren Wahrheitsgehalt \textit{Wahr} oder \textit{falsch} ist.
216
+ Mit der Aussagenlogik lassen sich in ihrer Mächtigkeit beschränkte Formeln aufstellen \cite[p. 6,373]{foundations}. Sie entsprechen in der Programmierung dem Datentyp \textit{Boolean}, also Elementaraussagen, die verknüpft und negiert erscheinen und deren Wahrheitsgehalt \textit{wahr} oder \textit{falsch} ist.
187
217
 
188
218
  \begin{figure}
189
219
  \begin{align}
@@ -198,22 +228,22 @@ A \to C &= \textnormal{Die Checkbox hat den Namen \textit{agb}, also ist sie ein
198
228
  \caption{Aussagenlogische Formeln}
199
229
  \end{figure}
200
230
 
201
- Aus den oben genannten Aussagen \eqref{eq:propositional_logic}, folgt, dass die Checkbox mit dem Namen \textit{agb} ein Pflichtfeld ist (\(A \to C)\).
231
+ Aus den oben genannten Aussagen \eqref{eq:propositional_logic} folgt, dass die Checkbox mit dem Namen \textit{agb} ein Pflichtfeld ist (\(A \to C)\).
202
232
  Diese ist allerdings nicht als solches ausgezeichnet (\(B\)).
203
233
  Aus dieser Inkonsistenzeigenschaft ergibt sich ein Problem (\(A \to C) \land B\).
204
234
  Die Aussage \((A \to C)\) könnte genauso als die Negation von \(B\) definiert werden.
205
- Es ergäbe sich daraus eine Kontradiktion \((\neg B \land B)\), einer Formel die stets zu \textit{falsch} ausgewertet wird.
235
+ Es ergäbe sich daraus eine Kontradiktion \((\neg B \land B)\), einer Formel, die stets zu \textit{falsch} ausgewertet wird.
206
236
  Über Wahrheitstafeln können jegliche (zusammengesetzte) Aussagen auf deren Wahrheitsgehalt überprüft werden.
207
- Damit verdeutlicht sich einfach, dass das Schlussfolgern über die aussagenlogische Formeln ein entscheidbares Problem darstellt.
237
+ Damit verdeutlicht sich einfach, dass das Schlussfolgern über die aussagenlogischen Formeln ein entscheidbares Problem darstellt.
208
238
  \\
209
239
 
210
240
  \subsection{Prädikatenlogik}
211
241
  \label{sec:prediactelogic}
212
242
 
213
- Eine Erweiterung der Aussagenlogik stellt die Prädikatenlogik dar.
243
+ Eine Erweiterung der Aussagenlogik stellt die Prädikatenlogik dar \cite[p. 6,367--373]{foundations}.
214
244
  In der Prädikatenlogik werden Elementaraussagen hinsichtlich ihrer Struktur untersucht.
215
245
  Mit Prädikaten können Eigenschaften über Individuen festgelegt werden.
216
- Die Anzahl der Stellen im Prädikat ist dabei nicht beschränkt, so können mit 1-stelligen Prädikaten Zugehörikeiten \eqref{eq:fol_predicate1}, mit 2-stelligen Rolleneigenschaften \eqref{eq:fol_predicate1} modelliert werden
246
+ Die Anzahl der Stellen im Prädikat ist dabei nicht beschränkt, so können mit 1-stelligen Prädikaten Zugehörikeiten \eqref{eq:fol_predicate1}, mit 2-stelligen Rolleneigenschaften \eqref{eq:fol_predicate1} modelliert werden.
217
247
  Quantoren geben an, von wie vielen Individuen eine Aussage erfüllt wird, so kann die Aussage über die Existenz eines Individuums getroffen werden \eqref{eq:fol_quantors}.
218
248
  % \renewcommand{\figurename}{Fig.}
219
249
  \begin{figure}
@@ -248,7 +278,7 @@ Das Entscheidungsverfahren für die Prädikatenlogik ist unentscheidbar.
248
278
  \subsection{Beschreibungslogiken}
249
279
  \label{sec:desclogic}
250
280
 
251
- Eine entscheidbare Untermenge der Prädikatenlogik erster Stufe bieten die Beschreibungslogiken.
281
+ Eine entscheidbare Untermenge der Prädikatenlogik erster Stufe bieten die Beschreibungslogiken \cite{foundations}.
252
282
  Im Wesentlichen enthält eine Beschreibungslogik die Operatoren der Aussagenlogik (\(\land, \lor, \neg\)), ein- und zweistellige Prädikate sowie eine eingeschränkte Quantifizierung.
253
283
  Sie umfassen Individuen (Objekte), Rollen (2-stellige Prädikate) und Klassen (1-stellige Prädikate), wobei keine Metamodellierung (Klassen von Klassen) möglich ist.
254
284
  Normalerweise wird die Wissensbasis dabei in 2 Teile separiert, \textit{TBox} und \textit{ABox}.
@@ -257,86 +287,96 @@ Es stellt Begriffe zur Beschreibung von Sachverhalten bereit.
257
287
  So definiert es das Vokabular in einem Anwendungsbereich.
258
288
  Das Grundvokabular besteht aus den Klassen (einstellige Prädikate) und Rollendefinitionen (zweistellige Prädikate).
259
289
  Das Assertionale Wissen beschreibt die Sachverhalte, die in einer bestimmten Welt gelten.
260
- Es existieren Annahmen (assertions) über einzelne Objekte ausgedrückt mit
290
+ Es existieren Annahmen (assertions) über einzelne Objekte, ausgedrückt mit
261
291
  Hilfe des Grundvokabulars.
262
292
 
263
293
  Die Syntax ist stark an die Prädikatenlogik angelehnt.
264
294
  Es gibt jedoch wesentliche Unterschiede.
265
295
  Hervorzuheben ist der Wegfall der Implikation (\(\to\)).
266
- Während in der Prädikatenlogik auch Rollenaxiome rechterhand der Implikation stehen können (\eqref{eq:fol_predicate1}), sind bei Beschreibungslogiken nur Klassen in Subsumptionen möglich \(C_1 \sqsubseteq C_2\).
267
- Nur ein Teil der Prädikatenlogik ist demnach adäquat in eine Beschreibungslogik zu übersetzen, man spricht in diesem Fall von DL-safe Regeln.
296
+ Während in der Prädikatenlogik auch Rollenaxiome rechterhand der Implikation stehen können \eqref{eq:fol_predicate1}, sind bei Beschreibungslogiken nur Klassen in Subsumptionen möglich \(C_1 \sqsubseteq C_2\).
297
+ Nur ein Teil der Prädikatenlogik ist demnach adäquat in eine Beschreibungslogik zu übersetzen, man spricht in diesem Fall von "{}DL-safe"{}-Regeln.
268
298
 
269
299
  Eine Auflistung der Syntax und der Entsprechung in Prädikatenlogik sowie OWL finden Sie in \ref{table:description_logic}.
270
300
  \\
271
301
  Mit dem RL-Profil aus OWL 2 \cite{owl2rl} gibt es eine Sprache, die die gleiche Mächtigkeit wie die Beschreibungslogik (\(\mathcal{SHOIN}(D))\) besitzt und demnach für das Reasoning in entscheidbarer Komplexität bestens geeignet ist.
272
302
  Sie hat ein gute Balance zwischen Ausdrucksfähigkeit und Berechenbarkeits-/Verarbeitungseigenschaften.
273
- OWL 2 ist zu dem Empfehlung des W3C und es existieren bereits einige Reasoner-Implementierungen.
303
+ OWL 2 ist zudem Empfehlung des W3C und es existieren bereits einige Reasoner-Implementierungen.
274
304
  Die bekanntesten derzeit sind Fact++, Hermit, KAON2 und Pellet.
275
305
 
276
306
 
277
307
  \section{Implementierung}
308
+ \label{sec:implementation}
278
309
 
279
- In der Bachelor-Arbeit \cite{Brieger} wurde bereits untersucht inwieweit das Analyse-Tool \textit{AbRUPt} \cite{url_abrupt} verwendet werden kann um eine objektive Beurteilung über die Benutzerfreundlichkeit einer Webseite geben zu können.
310
+ \cite{Brieger} untersuchte, inwieweit das Analyse-Tool \cite{abrupt} verwendet werden kann, um eine objektive Beurteilung über die Benutzerfreundlichkeit einer Webseite geben zu können.
280
311
  Die Arbeit zeigt gute Ansätze und setzt auf die Konvertierung der erhobenen Daten in ein OWL-Dokument.
281
312
  Mit einem anschließenden Projekt können mit einem durchdachten Regelsystem Schlussfolgerungen gezogenwerden.
282
- Das Programm ist als Dienst mit HTML-Oberfläche gestaltet und kann lediglich die Webseiten-Daten aus \textit{AbRUPt} umwandeln, die Integration der Webseiten-Besucherdaten ist noch nicht berücksichtigt.
313
+ Das Programm ist als Dienst mit HTML-Oberfläche gestaltet und kann lediglich die Webseiten-Daten aus AbRUPt umwandeln, die Integration der Webseiten-Besucherdaten ist noch nicht berücksichtigt.
283
314
  Auch die Integration in nachfolgende Projekte erweist sich durch den wenig modularen Aufbau als eher schwierig.
284
- Mit Einbezug der Ergebnisse aus \cite{Martin} konnte ein Konzept für eine sinnvolle Aufbereitung der Daten gezeigt werden.
285
- Es ist OWL-Converter entstanden, der erhobene \textit{AbRUPt}-Daten von einem XML-Format in ein OWL-Dokument transformiert.
315
+ Mit Einbezug der Ergebnisse aus \cite{web_forms} konnte ein Konzept für eine sinnvolle Aufbereitung der Daten gezeigt werden.
316
+ Es ist ein OWL-Converter entstanden, der erhobene AbRUPt-Daten von einem XML-Format in ein OWL-Dokument transformiert.
286
317
 
287
318
  \subsection{Anpassungen und Erweiterung des OWL-Converters}
319
+ \label{sec:customization}
288
320
 
289
321
  Einige wichtige Aspekte wurden gegenüber dieser Arbeit geändert.
290
- Die Ontologie für den \textit{AbRUPt-Service} wurde von Grund auf intuitiver gestaltet und um die Konzepte der Webseiten-Besucherdaten erweitert (Fig. onto-Graph).
291
- Dabei wurde ebenso auf sinnvolle Konsistenzeigenschaften sowie Inferenz-Regeln zurückgegriffen, die auf Usabilty-Probleme schlussfolgern. (Abschnit Regeln)
322
+ Die Ontologie für den AbRUPt-Service wurde von Grund auf intuitiver gestaltet und um die Konzepte der Webseiten-Besucherdaten erweitert (\ref{fig:onto}).
323
+ Dabei wurde ebenso auf sinnvolle Konsistenzeigenschaften sowie Inferenz-Regeln zurückgegriffen, die auf Usabilty-Probleme schlussfolgern (\ref{sec:reasoning}).
292
324
  Ein Problem ergab sich für die Eindeutigkeit von Webseiten-Elementen, die nicht kontextbasiert benannt wurden.
293
- Mit dem an \textit{REST} angelehnten URI-Aufbau ergeben sich global einheitlich URIs.
294
- Dabei wird der Kontext in die URI-Struktur jeweils eingebettet.
295
- Ein Formular-Element kann somit auf mehreren Webseiten mit gleicher Id, Name und sonstigen Attributen koexistieren und wird nicht zu dem selben OWL-Element konvertiert.
325
+ Mit dem an \textit{REST} \cite{rest} angelehnten URI-Aufbau ergeben sich global einheitlich URIs.
326
+ Dabei wird der Kontext in die URI-Struktur jeweils eingebettet (Listing \ref{listing:nested_uris}).
327
+ Ein Formular-Element kann somit auf mehreren Webseiten mit gleicher Id, mit gleichen Name und sonstigen Attributen koexistieren und wird nicht zu dem selben OWL-Element konvertiert.
328
+
329
+ \lstinputlisting[breaklines=true,language=ttl, caption=Nested URIs, label=listing:nested_uris]{listings/unique_nested_uris.ttl}
330
+
296
331
  Beispielsweise liegt dann das Input-Textelement des Namens für ein Kontaktformular innerhalb von Formular (Form = \textit{kontaktformular}), Seitenstatus (State = \textit{state5}), Seiten-URL (Page = \textit{http://www.rikscha−mainz.de/Kontakt}) und der zugehörigen Website (Website = \textit{http://www.rikscha−mainz.de}).
297
332
  Das sieht zunächst nicht sehr lesbar aus, ist aber unvermeidbar aufgrund möglicher großer Datenbestände.
298
- \lstinputlisting[breaklines=true,language=ttl, caption=Nested URIs]{listings/unique_nested_uris.ttl}
299
333
 
300
334
  Für die Einstufung von Problemen gibt es die Klasse \textit{Problem}.
301
- Durch geeignete Abfragen, bspw. mit Sparql (sparql-ref), kann nach dem Reasoning die Liste aller möglichen Probleme abgerufen werden.
335
+ Durch geeignete Abfragen, bspw. mit SPARQL \cite{sparql}, kann nach dem Reasoning die Liste aller möglichen Probleme abgerufen werden.
302
336
  Wie bereits angesprochen können dabei Elemente dazugehören, die aus einem subjektiven Erscheinungsbild annehmbar als Problem ignoriert werden können.
303
337
 
304
- \subsection{Das abrupt-Gem (Converter-Lib + Binary)}
305
- Für die Neugestaltung des Konvertierung-Tools fiel die Wahl der Technolgie auf \textit{RubyGems}, dem offiziellen Paketsystem von Ruby .
306
- Zum einen ist die Unterstützung \cite{ruby-rdf} für RDF/OWL ausgezeichnet und zum Anderen erweisen sich noch weitere wesentliche Vorteile:
338
+ \subsection{Eingesetzte Technologien}
339
+ \label{sec:technology}
340
+
341
+ Für die Neugestaltung des Konvertierungs-Tools fiel die Wahl der Technolgie auf \textit{RubyGems}, dem offiziellen Paketsystem von Ruby.
342
+ Zum einen ist die Unterstützung durch ruby-rdf \cite{ruby-rdf} für RDF/OWL ausgezeichnet und zum anderen erweisen sich noch weitere wesentliche Vorteile:
343
+
307
344
  \begin{itemize}
308
- \item{Benutzung durch Kommandozeilentool}
309
- \item{Modularer Aufbau}
310
- \item{Ausgezeichnete Komponententest-Unterstützung}
311
- \item{Wiederverwendbarkeit durch Einbindung als RubyGem Bibliothek oder des Kommandozeilentools}
312
- \item{Flexibilität der Eingabe und Ausgabe (bestimmte Services, nur Abrupt/ohne Benutzerdaten, tutrle, rdfxml, n3}
345
+ \item{Benutzung durch Kommandozeilentool}
346
+ \item{Modularer Aufbau}
347
+ \item{Ausgezeichnete Komponententest-Unterstützung}
348
+ \item{Wiederverwendbarkeit durch Einbindung als RubyGem-Bibliothek oder des Kommandozeilentools}
349
+ \item{Flexibilität der Eingabe und Ausgabe (bestimmte Services, nur Abrupt/ohne Benutzerdaten, tutrle, rdfxml, n3)}
313
350
  \end{itemize}
314
351
 
315
352
  Das terminologische Wissen (TBox) ist in einem OWL-Dokument gesichert, sodass es separat mit Protege entwickelt und in die Software einfach eingebunden wird.
316
353
  Da es sich ausschließlich um statische Inhalte handelt, erweist sich dies als sinnvoll.
317
354
  Zur Hervorhebung und Veranschaulichung von nicht-trivialen Regeln existieren weitere OWL-Dokumente, die als Ordnerinhalte der Software hinzugefügt werden.
318
- Mit dem Befehl \cite{ruby-rdf} lässt sich Konvertierung starten.
319
- Zunächst werden die statischen Inhalten in ein RDF-Repsoitory geladen.
355
+ Mit dem Befehl in Listing \ref{listing:cli} lässt sich die Konvertierung starten.
356
+ Zunächst werden die statischen Inhalte in ein RDF-Repsoitory geladen.
320
357
  Das Assertionale Wissen (ABox) entsteht aus der Transformation der Eingabedaten.
321
- Die Eingabedaten liegen in der Regel in 2 XML-Dokumenten vor - den Website- und den Besucher-Daten.
358
+ Die Eingabedaten liegen in der Regel in zwei XML-Dokumenten vor -- den Website- und den Besucher-Daten.
322
359
  Für jeden Kontentyp existiert eine Schema-Datei, die für die nötige Datentypkonvertierung sorgt.
323
- Dadurch werden aus den XML-Rohdaten die nötigen Werte umgewandelt, bspw. Integer, Date, Decimal, ...
360
+ Dadurch werden aus den XML-Rohdaten die nötigen Werte umgewandelt, bspw. Integer, Date, Decimal ...
324
361
  Anschließend erstellt eine zugewiesene Transformater-Klasse aus den XML-Daten die RDF-Statements zu dem RDF-Repository hinzu.
325
362
  Der Aufbau der Software ist somit sehr modular, individuell anpassbar, durch Oberklassen generisch und übersichtlich.
326
363
 
327
364
  \newpage
328
365
 
329
366
  \section{Schließen auf Probleme mit Inferenz-Regeln}
330
- Die formale Beschreibungssprache OWL 2 ist eine Empfehlung des W3C vom 11. Dezember 2012 für die Beschreibung von Ontologien.
331
- Primär geht es darum Modellierungen einer Weltanschauung (Domäne) vorzunehmen, sodass Mensch und Maschine die Bedeutung verarbeiten können.
367
+ \label{sec:reasoning}
368
+
369
+ Die formale Beschreibungssprache OWL 2 ist eine Empfehlung des W3C \cite{owl2} vom 11. Dezember 2012 für die Beschreibung von Ontologien.
370
+ Primär geht es darum, Modellierungen einer Weltanschauung (Domäne) vorzunehmen, sodass Mensch und Maschine die Bedeutung verarbeiten können.
332
371
  OWL 2 basiert technisch auf RDF und RDFS und geht dabei über die Ausdrucksmächtigkeit weit hinaus.
333
372
  Es ist dokumentenbasiert, was die Erstellung und Verteilung gegenüber einem Binärformat enorm vereinfacht.
334
- Um die richtige Balance zwischen Ausdrucksstärke und Entscheidbarkeit bzw. Performance zu gewährleisten gibt es 3 verschiedene Sprachebenen - Lite, DL und Full.
335
- In dieser Arbeit wird der Fokus auf die 2. Sprachebene OWL 2 DL gelegt, für welche es 3 Profile existiert.
336
- Das OWL 2 RL Profil ist auf Anwendungen, die ein skalierbares Reasoning verlangen, ohne dabei zu viel Ausdruckskraft zu verlieren, ausgerichtet.
373
+ Um die richtige Balance zwischen Ausdrucksstärke und Entscheidbarkeit bzw. Performance zu gewährleisten, gibt es 3 verschiedene Sprachebenen -- Lite, DL und Full.
374
+ In dieser Arbeit wird der Fokus auf die 2. Sprachebene OWL 2 DL gelegt, für welche 3 Profile existieren.
375
+ Das "{}OWL 2 RL"{}-Profil ist auf Anwendungen ausgerichtet, die ein skalierbares Reasoning verlangen, ohne dabei zu viel Ausdruckskraft zu verlieren.
337
376
  Die Ausdrucksmächtigkeit entspricht dabei der Beschreibungslogiken \(\mathcal{SHOIN}(D)\).
338
377
  Je nach Anwendung der Axiome ergibt sich das jeweilige Profil, es wird nicht für das Dokument definiert.
339
- Man ist daher darauf bedacht auf gewisse OWL-Axiome zu verzichten um nicht in ein ungewünschtes Profil zu gelangen.
378
+ Man ist daher darauf bedacht, auf gewisse OWL-Axiome zu verzichten, um nicht in ein ungewünschtes Profil zu gelangen.
379
+
340
380
  \begin{table}[h]
341
381
  \begin{tabular}{|l|l|l|}
342
382
  \hline
@@ -358,13 +398,29 @@ $ \{a_1\} \sqsubseteq \{a_2\} $ & $ \{a_1\} \sqsubseteq \{a_2\} $ & \textit{same
358
398
  \caption{Syntax der Beschreibungslogik und Entsprechung in der Prädikatenlogik sowie in OWL 2 RL}
359
399
  \end{table}
360
400
 
361
- Eine vernünftige Unterteilung der Axiome ist in \cite{owl2rif} gegeben.
362
-
401
+ Eine vernünftige Unterteilung der Axiome ist in \cite{web_primer} gegeben.
402
+ Dort werden "{}OWL 2 RL"{}-Regeln in RIF \cite{owl2rif} beschrieben.
363
403
 
364
404
  \subsection{Inkonsistenz-Regeln}
405
+ \label{sec:rule_inconsistency}
365
406
 
366
407
  Für Rollenaxiome können mittels einfacher Regeln Definitions- und Wertebereich festgelegt werden.
367
- Für den Wertebereich, also der Festlegung der Klassenzugehörigkeit des 2. Parameters von Rollen ergibt sich Formel \eqref{eq:dl_range} sowie dessen Darstellung in OWL 2 RL (Listing \ref{range_owl}).
408
+ Als Definitionsbereich wird die Klassenzugehörigkeit des 1. Parameters von Rollen bestimmt.
409
+ Im Beispiel de s Rollenaxioms \textit{hasPage} wird definiert, dass Seiten immer zu einer Website geören (Abb. \ref{eq:dl_domain}, Listing \ref{domain_owl}).
410
+
411
+ \newpage
412
+
413
+ \begin{figure}
414
+ \begin{equation}
415
+ \exists\ hasPage\ Thing \sqsubseteq\ Website
416
+ \label{eq:dl_domain}
417
+ \end{equation}
418
+ \caption{Beschreibungslogik: Definitionsbereich-Regel für Rollen}
419
+ \end{figure}
420
+
421
+ \lstinputlisting[breaklines=true,language=ttl, caption=Definitionsbereich-Regel für Rollen in OWL 2 RL,label=domain_owl]{listings/inconsistency_rule_domain.ttl}
422
+
423
+ Für den Wertebereich, also die Festlegung der Klassenzugehörigkeit des 2. Parameters von Rollen, ergibt sich Formel \ref{eq:dl_range} sowie dessen Darstellung in OWL 2 RL (Listing \ref{range_owl}).
368
424
 
369
425
  \begin{figure}
370
426
  \begin{equation}
@@ -374,9 +430,10 @@ Für den Wertebereich, also der Festlegung der Klassenzugehörigkeit des 2. Para
374
430
  \caption{Beschreibungslogik: Wertebereich-Regel für Rollen}
375
431
  \end{figure}
376
432
 
377
- \lstinputlisting[breaklines=true,language=ttl, caption=Wertebereich-Regel für Rollen in OWL 2 RL,label=range_owl]{listings/inconsistency_rule.ttl}
433
+ \lstinputlisting[breaklines=true,language=ttl, caption=Wertebereich-Regel für Rollen in OWL 2 RL,label=range_owl]{listings/inconsistency_rule_range.ttl}
378
434
 
379
435
  \subsection{Produktions-Regeln}
436
+ \label{sec:rule_production}
380
437
 
381
438
  Durch Inferenzen entstehen neue Klassenzugehörigkeiten.
382
439
  Aus Einbahnstraßenseiten (Seiten ohne Links) entstehen Problemfälle (Listing \ref{production_owl}).
@@ -390,8 +447,12 @@ State\ \sqcap \leq 0\ hasLink.Link \sqsubseteq Problem
390
447
 
391
448
  \lstinputlisting[breaklines=true,language=ttl, caption=Produktionsregel in OWL 2 RL,label=production_owl]{listings/production_rule.ttl}
392
449
 
450
+ \newpage
451
+
393
452
  \subsection{Listen-Regeln}
394
- Durch Listenregeln können Sammlungen genutzt werden um Restriktionen aufzubauen oder durch Kettenregeln Hilfsrollen zu aktivieren (\eqref{eq:dl_list}, Listing \ref{list_owl}).
453
+ \label{sec:rule_list}
454
+
455
+ Durch Listenregeln können Sammlungen genutzt werden, um Restriktionen aufzubauen oder durch Kettenregeln Hilfsrollen zu aktivieren (Abb. \ref{eq:dl_list}, Listing \ref{list_owl}).
395
456
 
396
457
  \begin{figure}
397
458
  \begin{equation}
@@ -404,8 +465,10 @@ hasPage \circ hasState \sqsubseteq hasStateThorugh
404
465
  \lstinputlisting[breaklines=true,language=ttl, caption=Kettenregl in OWL 2 RL,label=list_owl]{listings/list_rule.ttl}
405
466
 
406
467
  \subsection{Datentyp-Regeln}
468
+ \label{sec:rule_datatype}
469
+
407
470
  Als mächtigstes Werkzeug erweisen sich die Datentypregeln, die es erlauben, aus Zahlenbereichseinschränkungen und Datentypdefinitionen Probleme abzuleiten.
408
- Der Lesbarkeitsindex einer Seite sollte einen definierten Wert nicht überschreiten um nicht als zu komplex zu gelten (\eqref{eq:dl_datatype}, Listing \ref{datatype_owl}).
471
+ Der Lesbarkeitsindex einer Seite sollte einen definierten Wert nicht überschreiten, um nicht als zu komplex zu gelten (Abb. \ref{eq:dl_datatype}, Listing \ref{datatype_owl}).
409
472
 
410
473
 
411
474
  \begin{figure}
@@ -413,93 +476,130 @@ Der Lesbarkeitsindex einer Seite sollte einen definierten Wert nicht überschrei
413
476
  readability \geq 8.0\ Datatype(\textit{xsd:decimal}) \sqsubseteq Problem
414
477
  \label{eq:dl_datatype}
415
478
  \end{equation}
416
- \caption{Beschreibungslogik: Datentypregel}
479
+ \caption{Beschreibungslogik: Datentypregel für Lesbarkeitsindex}
417
480
  \end{figure}
418
481
 
419
482
  \lstinputlisting[breaklines=true,language=ttl, caption=Datentypregel in OWL 2 RL,label=datatype_owl]{listings/datatype_rule.ttl}
420
483
 
484
+ Für die obere Schranke von HTML-Ankern mit niedriegen Kontrastverhältnissen empfiehlt es sich keine dieser Art darzustellen.
485
+ Dementsprechend ist die Anzahl auf kleiner als 1 beschränkt.
486
+ Alle Werte darüber stellen ein Probelm dar (Abb. \ref{eq:dl_datatype2}, Listing \ref{datatype_owl2}).
487
+ Gleiches gilt für Textknoten mit niedrigen Kontrast und Paragraphen mit zu vielen Zeilen.
488
+
489
+ \newpage
490
+
491
+ \begin{figure}
492
+ \begin{equation}
493
+ \begin{aligned}
494
+ aTagWithLowContrast \geq 1\ Datatype(\textit{xsd:integer}) \sqsubseteq Problem \\
495
+ textNodesWithLowContrast \geq 1\ Datatype(\textit{xsd:integer}) \sqsubseteq Problem \\
496
+ paragrahpsWithTooLongLines \geq 1\ Datatype(\textit{xsd:integer}) \sqsubseteq Problem
497
+ \label{eq:dl_datatype2}
498
+ \end{aligned}
499
+ \end{equation}
500
+ \caption{Beschreibungslogik: Datentypregel für Kontrastverhältnisse}
501
+ \end{figure}
502
+
503
+ \lstinputlisting[breaklines=true,language=ttl, caption=Datentypregeln in OWL 2 RL,label=datatype_owl2]{listings/datatype_rule2.ttl}
504
+
421
505
  \subsection{Erweiterungen}
422
- Die Implementierung durch einen Regelsatz mit OWL 2 RL ist eine ansehnliche Vorgehensweise für das Auffinden von Problemen.
506
+ \label{sec:rule_extensions}
507
+
508
+ Die Implementierung durch einen Regelsatz mit OWL 2 RL \cite{owl2rl} ist eine ansehnliche Vorgehensweise für das Auffinden von Problemen.
423
509
  Für viele Anwendungsfälle muss man dennoch auf Erweiterungen zurückgreifen.
424
510
  Die Beschreibungslogik \(\mathcal{SHOIN}(D)\) weist zwar eine vernünftige Mächtigkeit auf, lässt dabei gegenüber konventioneller Programmiersprachen die Arithmetik völligst außer Acht.
425
- So ist es nicht möglich Summen über Elemente, Durchschnittswerte, Minima und Maxima zu ermitteln.
511
+ So ist es nicht möglich, Summen über Elemente, Durchschnittswerte, Minima und Maxima zu ermitteln.
426
512
  In konventionellen Datenbanken gilt die Annahme der Weltabgeschlossenheit (Closed World Assumption), man kann aus den vorhandenen Daten ableiten, welche Daten nicht vorhanden sind.
427
513
  Das größte Element ist also direkt ablesbar, weil kein anderes größeres Element dieses übersteigt.
428
- In der Wissensdatenbank beschrieben durch OWL 2 gilt diese Annahme nicht.
429
- Durch die fundierte Basis der Prädikatenlogik arbeitet OWL 2 RL auf der Annahme einer offenen Welt (Open World Assumption).
430
- Dies bedeutet, dass alles was nicht explizit als wahr beweisen werden kann, nicht automatisch als falsch bezeichnet wird.
514
+ In der Wissensdatenbank, beschrieben durch OWL 2, gilt diese Annahme nicht.
515
+ Durch die fundierte Basis der Prädikatenlogik arbeitet OWL 2 RL auf der Annahme einer offenen Welt (Open World Assumption, \cite[p. 194]{foundations}).
516
+ Alles, was nicht explizit als wahr bewiesen werden kann, kann nicht automatisch als falsch bezeichnet werden.
431
517
  Das größte Element ist also nicht direkt ablesbar, weil ein anderes größeres (abgeleitetes) Element dieses übersteigen könnte.
432
518
  Eine Summe über alle Besucherzeiten kann nicht erfasst werden, wenn davon ausgegangen werden kann, dass neue Besuche hinzukommen können.
433
- Das Überwinden dieses Problems stellt eine große Herausforderung dar, für die zur Zeit lediglich Lösungsansätze existieren.
519
+ Das Überwinden dieses Problems stellt eine große Herausforderung dar, für die zurzeit lediglich Lösungsansätze existieren.
434
520
 
435
- In vielen Punkten geradlinig und elegant ist die Kombination aus OWL und RuleML -- SWRL.
436
- SWRL ist eine vom W3C entwickelte Spezifikation für eine Regelsprache in OWL mit einer großen Einschränkung, sie ist unentscheidbar.
437
- Mittels sogenannter DL-safe Regeln, also Regeln, welche die Einrschänkungen der Beschreibungslogiken einhalten, bietet SWRL die Entscheidbarkeit von OWL 2 RL (PTime) und die Mächtigkeit der Beschreibungslogiken inkl. arithmetischer Funktionen.
521
+ In vielen Punkten geradlinig und elegant ist die Kombination aus OWL und RuleML -- SWRL \cite{swrl}.
522
+ SWRL ist eine vom W3C entwickelte Spezifikation für eine Regelsprache in OWL 2 \cite{owl2} mit einer großen Einschränkung, sie ist unentscheidbar.
523
+ Mittels sogenannter "{}DL-safe"{}-Regeln, also Regeln, welche die Einrschänkungen der Beschreibungslogiken einhalten, bietet SWRL die Entscheidbarkeit von OWL 2 RL (PTime) und die Mächtigkeit der Beschreibungslogiken inkl. arithmetischer Funktionen.
438
524
 
439
- SWRL ist kein direkter Bestandteil von OWL 2 RL und funktioniert als Sprach-Erweiterung.
525
+ SWRL ist kein direkter Bestandteil von OWL 2 und funktioniert als Sprach-Erweiterung.
440
526
  Sie wird dennoch von vielen Reasonern unterstützt.
441
527
 
442
528
  Will man ohne Erweiterung für OWL 2 RL auskommen, müssen Vorkehrungen bereits in der Vorverarbeitung getroffen werden, die die Einschränkungen der offenen Weltannahme aushebeln.
443
- Auf gängige Arithmetik \(+, -, *, / AVG(), SUM() \) kann in der unterliegenden Programmiersprache zurückgegriffen werden.
529
+ Auf gängige Arithmetik \(+, -, *, / AVG(), SUM() \) kann auf die zugrundeliegenden Programmiersprache zurückgegriffen werden.
444
530
  Dabei werden die eingelesen Daten in der Vorverarbeitung somit als abgeschlossen angenommen.
445
- Die Besuchsdauer einer Seite wird durch einfache Differenz (Listing 1.6) ermittelt und als weiteres Wissen der ABox hinzugefügt.
531
+ Die Besuchsdauer einer Seite wird durch einfache Differenz (\ref{listing:visit_duration}) ermittelt und als weiteres Wissen der ABox hinzugefügt.
532
+
533
+ \lstinputlisting[breaklines=true,language=Ruby, caption=Erweiterung der TBox in der Vorverarbeitung,label=listing:visit_duration]{listings/add_visit_duration.rb}
534
+
535
+ \section{Related Work}
536
+ \label{sec:related_work}
537
+
538
+ Diese Arbeit baut zu großen Teilen auf \cite{Brieger} auf.
539
+ Dort wird bereits ein OWL-Converter für die Daten aus dem AbRUPt-Service bereitgestellt.
540
+ Eine Beschreibung für die Daten aus Readability, Subject, Input, Complexity, Picture und Link ist dort ebenso gegeben sowie die Funktionsweise des Crawlers und Analyzers.
541
+ Die Readability-Berechnung basiert auf \cite{readability}.
542
+ Dort wird anhand beliebter Webseiten eine Formel für den Lesbarkeitsindex von Texten erforscht.
543
+ Eine übersichtliche Gestaltung für relevante Faktoren dieses Indexes bietet \cite{lesbarkeit}.
544
+ In \cite{subject} ist die Funktionsweise zur Klassifizierung von Themengebieten eines Textes erläutert.
545
+ Durch geeignete Filter und Selektion von Wörtern und deren Häufigkeit kann mittels dem Datenbestand von Wikipedia eine aussagekräftige Auswahl an Schlagwörtern vorhergesagt werden.
546
+ Für die Feststellung von Diskrepanzen zwischen erwareteter und tatsächlicher Bearbeitungsdauer von Web-Formularen liefert \cite{web_forms} zeitliche Richtwerte.
547
+ Durch Analysen ergeben sich erwartete Bearbeitungszeiten kategorisiert nach Eingabetyp und Eingabegerät, bspw. Input-Elemente auf mobilen Endgeräten oder Desktop-PCs.
548
+ Für das Schlussfolgern ist die Wahl eines geeigneten Reasoners nicht getroffen.
549
+ Eine Übersicht sowie Ansätze für Hybrid-Lösungen aus Tableau und Resolution gibt \cite{hybrid_reasoning}.
446
550
 
447
- \lstinputlisting[breaklines=true,language=Ruby, caption=Erweiterung der TBox in der Vorverarbeitung,label=list_rb]{listings/add_visit_duration.rb}
448
551
 
449
- \section{Zusammenfassung \& Ausblick}
552
+ \section{Zusammenfassung}
553
+ \label{sec:conclusion}
554
+
450
555
  Die Struktur des Converters wurde im Wesentlichen überarbeitet.
451
556
  Es wurde viel Wert auf die intuitive Verwirklichung des Grundvokabulars der AbRUPt-Ontologie gelegt (Abb. \ref{fig:onto}).
452
557
 
453
558
  \begin{figure}
454
- \caption{Funktionsweise des Converters}
455
559
  \centering
456
560
  \includegraphics[width=0.7\textwidth]{figures/tbox}
561
+ \caption{Funktionsweise des Converters}
457
562
  \label{fig:onto}
458
563
  \end{figure}
459
564
 
460
565
  Außerdem wurde der Graph um die Konzepte der Besucherdaten erweitert.
461
- Der vorherige Converte war wenig modular und umfasste ca. 2000 Zeilen in nur 4 Dateien.
462
- Die Konfiguration war im Code eingebettet, sodass der Code insgesamt nciht sehr gut wartbar ist.
463
- Die Neuimplementierung sieht einen wesentlichen modulareren Aufbau vor, sodass Anpassungen in der Vorverarbeitung effizient einsetzbar ist.
464
- Sie berücksichtigt außerdem die Transformation der Daten in die korrekten Datentypen (Integer, Decimal, Boolean, ...).
465
- Das Grundvokabular ist komplett separat entwickelt und wird in die Konvertierung miteinbezogen.
566
+ Der vorherige Converter war wenig modular und umfasste ca. 2000 Zeilen in nur 4 Dateien.
567
+ Die Konfiguration war im Code eingebettet, sodass der Code insgesamt nicht sehr gut wartbar ist.
568
+ Die Neuimplementierung sieht einen wesentlichen modulareren Aufbau vor, sodass Anpassungen in der Vorverarbeitung effizient einsetzbar sind.
569
+ Sie berücksichtigt außerdem die Transformation der Daten in die korrekten Datentypen (Integer, Decimal, Boolean ...).
570
+ Das Grundvokabular ist komplett separat entwickelt und wird in die Konvertierung mit einbezogen.
466
571
  Dadurch ist der Zugriff vereinfacht und mittels eigener Entwicklungstools die Ontologie als Graph darstellbar.
467
572
  Trotz der vielen Anpassungen und Erweiterungen umfasst der Quellcode nun gerade mal ca. 900 Zeilen und 15 Klassen inkl. rudimentären Testcode.
468
- Man kann das Tool mittels Kommandozeiletool ausführen oder in ein Ruby-Projekt als Bibliothek einbinden.
469
-
470
-
471
-
472
-
473
- alter Converter:
474
-
475
- - ~ 2000 Zeilen, kein Testcode
476
-
477
- - in nur 4 Klassen
478
-
479
- - Konfigurationen hartgecodet, schlecht wartbar
480
- \\
481
- neuer Converter:
482
-
483
- - nur 800 Zeilen inkl. Crawlr (beta), Testcode
484
-
485
- - Vokabular (T-Box) ausgelagert
486
-
487
- - höchstens 130 Zeilen pro Klasse
488
-
489
- - Rubygem: Kommandozeilentool, aber auch Code einbettbar in Ruby Web-Projekt
490
-
491
- \section{Fazit}
492
- \# TODO
493
- Die Implementierung durch einen Regelsatz ist eine ansehnliche Vorgehensweise für das Auffinden von Problemen.
494
- Es generiert aus dem vorhandenen Wissen neues Wissen und setzt dabei auf einen unkonventionellen Programmieransatz.
495
- Das Wissen und die Regeln sind deskriptiv in einem Dokument beschrieben.
496
-
497
-
498
-
499
- \begin{itemize}
500
- \item{Regeln und Wissen sind deskriptiv in einem Dokument beschrieben}
501
- \item{}
502
- \end{itemize}
573
+ Man kann das Tool mittels Kommandozeilentool (\ref{listing:cli}) ausführen oder in ein Ruby-Projekt als Bibliothek einbinden.
574
+
575
+ \lstinputlisting[breaklines=true,language=Bash, caption=Beispielnutzung des Kommandozeilentools,label=listing:cli]{listings/abrupt_usage.sh}
576
+
577
+ Die Implementierung durch einen Regelsatz ist eine anschauliche Vorgehensweise für das Auffinden von Problemen.
578
+ Ohne die Vorverarbeitung des Converters sind der Arbeit allerdings aufgrund der Open World Assumption Grenzen gesetzt.
579
+ Für das Überwinden der Grenzen, die in einer offenen Weltannahme entstehen, müssen die Eingabedaten vor der Konvertierung als geschlossen angenommen werden, um vernünftiges Hilfswissen zu generieren.
580
+ Nur so ist man mit OWL 2 RL in der Lage, mit einem Regelsatz auf Probleme zu schließen.
581
+ Die Generierung von Regeln ist nicht immer ganz einfach, da mit der Beschreibungslogik eine abgespeckte Mächtigkeit zur Verfügung steht.
582
+ Diese zwingen den Entwickler oft zu einer bestimmten Vorgehensweise.
583
+ Anders als in konventionellen Programmierparadigmen gibt es nur wenige Lösungswege.
584
+ Dafür ist das Regelwerk Bestandteil des OWL-Dokuments und ist als solches für Mensch und Maschine lesbar und einfach austauschbar.
585
+ Man spart und verteilt Rechenzeit, da das Schlussfolgern, die eigentliche Programmausführung, auf dem jeweiligen Rechner stattfinden kann.
586
+ Theoretisch ist sogar eine Parallelisierung möglich.
587
+ Der Converter muss in der Regel mit großen Dateien umgehen können.
588
+ In der Entwicklung wurden Webseitendaten mit über 300 KB und Besucherdaten mit über 2 MB verwendet.
589
+ Durch das Umwandeln und Ergänzen der Daten in das OWL-Dokument entsteht darus eine turtle-Datei mit über 30 MB.
590
+ Dies entspricht einer Vergrößerung der Daten um den Faktor 15.
591
+ Dementsprechend ist die momentane Verarbeitungszeit auch sehr lange.
592
+ Der Flaschenhals liegt bei der Serialisierung des RDF-Graphen durch die Ruby-Bibliothek "{}rdf-raptor"{} \cite{rdf-raptor}.
593
+ Das Regelwerk ist noch relativ bescheiden und ausbaufähig.
594
+ Für die Datentyp-Regeln fehlen noch Schwellwerte.
595
+ Diese zu definieren ist nicht trivial, da Texte kontextbezogen unterschiedliche Ansprüche hervorbringen.
596
+ Die Inkonsitenz-Regeln dagegen bieten bereits eine weitgehende Abdeckung.
597
+ In \cite{Brieger} wurde bereits eine Web-Benutzeroberfläche (GUI) gestaltet, die den (alten) Converter anwendet.
598
+ Für die neuen Erweiterungen, insbesondere den Einfluss der Besucherdaten, ist diese GUI noch nicht vorbereitet.
599
+ Eine Konfigurationsmaske für die kontextbezogenen Schwellwerte wäre denkbar.
600
+ Das Reasoning über das Dokument ist im Projekt nicht berücksichtigt und wird derzeit über properitäre Software vollzogen.
601
+ Eine Hybrid-Lösung könnte eine geeignete Wahl sein, um die jeweiligen Vorteile der Klassifizierungs-Strategien zu nutzen.
602
+ Um die Software zu einem Gesamtprodukt zu komplettieren, besteht die Herausforderung der Vereinigung von Crawler, Converter, Reasoner und einer Eingabe- und Ausgabemaske.
503
603
 
504
604
  \nocite{url_dl_primer}
505
605
 
@@ -113,11 +113,7 @@ module Abrupt
113
113
  end
114
114
 
115
115
  def resolve_uri_part(name)
116
- if @uri.empty?
117
- "#{class_name}/#{name}"
118
- else
119
- "#{@uri.join('/')}"
120
- end
116
+ @uri.empty? ? "#{class_name}/#{name}" : "#{@uri.join('/')}"
121
117
  end
122
118
 
123
119
  def resolve_uri(name = nil)
@@ -126,18 +122,20 @@ module Abrupt
126
122
  end
127
123
 
128
124
  def add_individual(name = @values[:name], klass = nil)
129
- klass ||= @uri.empty? ? class_name : @uri.first
125
+ klass ||= (@uri.empty? ? class_name : @uri.first).to_s.camelize
130
126
  uri = resolve_uri(name)
131
127
  @result << Statement.new(uri, RDF.type, VOC[klass])
132
128
  @result << Statement.new(resolve_parent_uri, VOC["has#{klass}"], uri)
133
129
  end
134
130
 
135
131
  def add_data_property(type, value, name = @values[:name])
132
+ type = type.to_s.camelize(:lower)
136
133
  @result << Statement.new(resolve_uri(name), VOC[type], value)
137
134
  end
138
135
 
139
136
  def add_object_property(parent_uri, type, child_uri)
140
137
  parent_uri = RDF::URI(parent_uri) if parent_uri.is_a?(String)
138
+ type = type.to_s.camelize
141
139
  @result << Statement.new(parent_uri, VOC["has#{type}"], child_uri)
142
140
  end
143
141
  end
@@ -11,9 +11,19 @@ module Abrupt
11
11
  # flatten vicram complexity
12
12
  @values[keyname][:vicramComplexity] =
13
13
  @values[keyname][:vicram].delete(:complexity)
14
+ add_contrast_properties
14
15
  @values[keyname].delete :vicram
15
16
  super
16
17
  end
18
+
19
+ def add_contrast_properties
20
+ contrast = @values[keyname][:contrast]
21
+ return unless contrast && contrast[:_1]
22
+ contrast[:_1].each do |type, value|
23
+ add_data_property(type, value)
24
+ end
25
+ @values[keyname].delete :contrast
26
+ end
17
27
  end
18
28
  end
19
29
  end
@@ -3,5 +3,5 @@
3
3
  # The version number of the abprubt gem
4
4
  # @abstract
5
5
  module Abrupt
6
- VERSION = '0.0.2'
6
+ VERSION = '1.0.0'
7
7
  end
@@ -37,9 +37,9 @@ FactoryGirl.define do
37
37
  :complexity =>
38
38
  { :contrast =>
39
39
  { :_1 =>
40
- { :A_tag_With_Low_Contrast => "0",
41
- :TextNodes_With_Low_Contrast => "0",
42
- :paragrahps_with_too_long_lines => "0" } },
40
+ { :A_tag_With_Low_Contrast => 0,
41
+ :TextNodes_With_Low_Contrast => 0,
42
+ :paragrahps_with_too_long_lines => 0 } },
43
43
  :vizweb =>
44
44
  { :numberOfLeaves => 1,
45
45
  :textArea => "0",
@@ -360,9 +360,9 @@ FactoryGirl.define do
360
360
  :complexity =>
361
361
  { :contrast =>
362
362
  { :_1 =>
363
- { :A_tag_With_Low_Contrast => "0",
364
- :TextNodes_With_Low_Contrast => "0",
365
- :paragrahps_with_too_long_lines => "0" } },
363
+ { :A_tag_With_Low_Contrast => 1,
364
+ :TextNodes_With_Low_Contrast => 1,
365
+ :paragrahps_with_too_long_lines => 0 } },
366
366
  :vizweb =>
367
367
  { :numberOfLeaves => 17,
368
368
  :textArea => "0.0074666341145833",
@@ -448,8 +448,8 @@
448
448
  <complexity>
449
449
  <contrast>
450
450
  <_1>
451
- <A_tag_With_Low_Contrast>0</A_tag_With_Low_Contrast>
452
- <TextNodes_With_Low_Contrast>0</TextNodes_With_Low_Contrast>
451
+ <A_tag_With_Low_Contrast>1</A_tag_With_Low_Contrast>
452
+ <TextNodes_With_Low_Contrast>1</TextNodes_With_Low_Contrast>
453
453
  <paragrahps_with_too_long_lines>0</paragrahps_with_too_long_lines>
454
454
  </_1>
455
455
  </contrast>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abrupt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manuel Dudda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-04 00:00:00.000000000 Z
11
+ date: 2015-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -308,6 +308,7 @@ files:
308
308
  - Rakefile
309
309
  - abrupt.gemspec
310
310
  - assets/rules/datatypes/cax-RequiredFormElement.ttl
311
+ - assets/rules/datatypes/cax-complexity.ttl
311
312
  - assets/rules/datatypes/cax-readability.ttl
312
313
  - assets/rules/datatypes/cax-required.ttl
313
314
  - assets/rules/list/prp-hasState.ttl
@@ -322,11 +323,16 @@ files:
322
323
  - assets/schema/v1/subject.json
323
324
  - assets/voc/tbox.ttl
324
325
  - bin/abrupt
326
+ - doc/paper/figures/converter.png
327
+ - doc/paper/figures/tbox.png
328
+ - doc/paper/listings/abrupt_usage.sh
325
329
  - doc/paper/listings/add_visit_duration.rb
326
330
  - doc/paper/listings/datatype_rule.ttl
331
+ - doc/paper/listings/datatype_rule2.ttl
327
332
  - doc/paper/listings/description_logic_infered.ttl
328
333
  - doc/paper/listings/description_logic_rule.ttl
329
- - doc/paper/listings/inconsistency_rule.ttl
334
+ - doc/paper/listings/inconsistency_rule_domain.ttl
335
+ - doc/paper/listings/inconsistency_rule_range.ttl
330
336
  - doc/paper/listings/limitations.ttl
331
337
  - doc/paper/listings/list_rule.ttl
332
338
  - doc/paper/listings/production_rule.ttl
@@ -334,6 +340,7 @@ files:
334
340
  - doc/paper/listings/propositional_logic_rule.ttl
335
341
  - doc/paper/listings/unique_nested_uris.ttl
336
342
  - doc/paper/literature.bib
343
+ - doc/paper/main.pdf
337
344
  - doc/paper/main.tex
338
345
  - doc/poster/Poster.key
339
346
  - doc/poster/Poster.pdf
@@ -402,7 +409,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
402
409
  version: '0'
403
410
  requirements: []
404
411
  rubyforge_project:
405
- rubygems_version: 2.4.5
412
+ rubygems_version: 2.4.3
406
413
  signing_key:
407
414
  specification_version: 4
408
415
  summary: Tools for the AbRUPt project.