-
Notifications
You must be signed in to change notification settings - Fork 1
/
README.txt
429 lines (344 loc) · 20.3 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
Introduction
============
OWL is a logic-based ontology language standard designed to promote
interoperability, particularly in the context of the (Semantic) Web. The
standard has encouraged the development of numerous OWL reasoning
systems, and such systems are already key components of many
applications. The 2nd OWL Reasoner Evaluation Competition (ORE 2014) has
compared and evaluated 11 OWL reasoning systems on a data set containing
a wide range of ontologies from the web, obtained through a standard web
crawl and the Google Custom Search API, and a snapshot from the well
known BioPortal repository. Some user submitted ontologies spiced up the
corpus with particularly relevant and difficult test cases. The
ontologies in the test set have been binned by profiles to enable the
participation of reasoners specialised on the EL and DL profiles of OWL.
The evaluation has been performed in three different categories that
cover the important tasks of ontology classification, consistency
checking, and ontology realisation (i.e., the computation of entailed
types of individuals).
This read-me briefly describes the ORE 2014 Competition Framework, i.e.,
the framework that has been used to execute the ORE 2014 Live
Competition, and explains how the evaluation can be reproduced.
Any kind of feedback (e.g., suggestions for improvements, bugs, …) can
be send to the ORE 2014 competition organisers (e.g.,
License
=======
The ORE 2014 Competition Framework is released as free software: you can
redistribute it and/or modify it under the terms of the GNU Lesser
General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.
The ORE 2014 Competition Framework is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
Copies of the GNU General Public License and the GNU Lesser General
Public License have been included with this distribution in the file
’gpl.txt’ and ’lgpl-3.0.txt’, respectively. An online version is
available at <http://www.gnu.org/licenses/>.
The ORE 2014 Competition Framework uses the following libraries in
unmodified form:
1. Simple Logging Facade for Java (SLF4J), <http://www.slf4j.org/>,
released under the MIT license.
2. Apache Logging Library for Java (log4j),
<http://logging.apache.org/log4j/1.2/>, released under The Apache
Software License, Version 2.0.
3. Apache Commons Exec,
<http://commons.apache.org/proper/commons-exec/>, released under The
Apache Software License, Version 2.0.
4. OWL API, <http://owlapi.sourceforge.net>, released under LGPL 3.0.
5. HermiT, <http://hermit-reasoner.com/>, released under LGPL 3.0.
6. Jetty, <http://www.eclipse.org/jetty/>, released under The Apache
Software License, Version 2.0.
7. Joda-Time, <http://www.joda.org/joda-time/>, released under The
Apache Software License, Version 2.0.
8. jCharts, <http://jcharts.sourceforge.net/>, released under Krysalis
jCharts License.
9. Bootstrap, <http://getbootstrap.com/>, released under the MIT
license.
10. WZ\_Tooltip, <http://www.walterzorn.de/en/tooltip/tooltip_e.htm>,
released under LGPL 2.1.
Overview and Usage
==================
The competition framework is realised with Java and, therefore, it
should be runnable on all Java supported platforms. However, it might be
necessary to provide different reasoner configurations for different
platforms. In particular, the wrapper scripts that trigger the reasoners
must be executable on the platform on which the evaluation is executed
(e.g., shell scripts on Unix/Linux, batch files on Windows). Of course,
the reasoner must be executable as well and the wrapper scripts should
also enforce that the time and memory limits are adhered. More details
abut the reasoner set-up can be found below.
The organisation of the competition framework is as follows:
- Starter scripts are stored in the ’scripts’ folder and they can be
used to start many components with default arguments.
- The ’data/reasoners/’ and ’data/ontologies/’ directories contain the
reasoners and the ontologies, respectively.
- The ’data/queries/’ directory contains classification, consistency,
and realisation queries that refer to the ontologies in the
’data/ontologies/’ directory.
- The evaluation data as well as the responses and results of the
reasoners are written into sub-directories of the ’data/responses/’
folder.
- Expected results are stored in the ’data/expectations/’ directory.
- Data about competitions are stored in the ’data/competitions/’
folder.
- The ’data/configs/’ directory contains configurations for the
execution of the evaluations (e.g., timeouts). The
’default-config.dat’ configuration is loaded by default, other
configurations can be used by passing their file name as additional
argument to the competition framework (e.g.,
’./test-classification.sh hermit-linux other-config.dat’).
- Logs from the execution of the competition framework are appended to
the ’log.txt’ file in the ’data/logs/’ directory.
- The ’data/conversions/’ directory is used to cache converted
ontologies in the corresponding serialisation format if this is
requested by a reasoner.
- The ’data/templates/’ directory contains template data for charts,
web pages, etc.
The competition framework works in principle as follows (the examples
use the syntax for Linux and should also work for Mac OS X, minor
syntactical adjustments are, however, necessary for Windows, e.g., the
syntactical replacement of ’.sh’ and ’linux’ with ’.bat’ and ’windows’,
respectively):
1. Ontologies have to be stored in the ’data/ontologies/’ directory,
for which then the corresponding queries can be generated (e.g.,
with the scripts ’scripts/create-classification-queries.sh’,
’scripts/create-consistency-queries.sh’,
’scripts/create-realisation-queries.sh’).
2. The reasoners have to be configured in the ’data/reasoners/’
directory (see also reasoner set-up instructions below).
3. The competition file has to be specified in the ’data/competitions/’
directory, i.e., it has to be specified which reasoners are
evaluated for which queries.
4. The competition has to be started, e.g., by calling the script
’scripts/evaluate-competition.sh’ with the competition file as first
argument.
5. The competition framework tries to load the reasoners specified in
the competition files and the corresponding queries in the
’data/queries/’ directory. If specified in the competition file,
then the loaded queries are also filtered and sorted.
6. The queries are then executed for each reasoner by the competition
framework and the results of the reasoners are parsed and
normalised. If expected results are available for the queries, then
the hash codes of the reasoner results are compared to the expected
results. The expected results have to be in corresponding
subdirectories of the ’data/expectations/’ directory.
7. The competition framework generates the evaluation data as soon as
all queries for all reasoners have been executed. All results are
stored in a subdirectory of the
’data/responses/competition-evaluations/’ directory as specified in
the competition file. The folder ’reasoner-responses’ contains the
reasoner responses, the folder ’new-expected-results’ contains
generated hash codes that can be used as new expected results (e.g.,
by copying them into the ’data/expectations/’ directory), and the
’evaluation-results’ folder contains all evaluation data (e.g.,
statistics, rankings, summaries, etc). Note that there is also a
’query-execution-time-sorted.txt’ file in the ’evaluation-results’
folder, which contains the list of queries sorted by the average
execution time of the reasoners, i.e., the file can be referred by
the competition file in order to specify the order in which the
queries have to be executed.
Note that the script ’scripts/evaluate-competition.sh’ executes a
competition sequentially. You can also execute a competition in parallel
by creating a competition server (e.g., with the script
’scripts/competition-server.sh’) and by starting (several) clients
(e.g., with the script ’scripts/client.sh’). The clients can be started
on different machines/computers, however, it is required that they are
started within the same directory and that the path to this directory is
the same for all clients and the competition server (otherwise some data
can possibly not be correctly accessed). You can also create a web
server in order to see the current status of the competition (e.g., by
executing the script ’scripts/status-web-server.sh’). Note that as many
clients are required as reasoners are used in the competition if
’org.semanticweb.ore.competition.executorperreasoner’ is set to ’TRUE’
in the configuration file (by default it is set to ’FALSE’).
As an example, you can start the small test competition
(’data/competitions/test-dl-classification-linux.dat’) by executing the
script ’scripts/evaluate-competition.sh’ or by creating a corresponding
competition server (e.g., with the script
’scripts/competition-server-test.sh’) and by starting an evaluation
client (e.g., with the script ’scripts/local-client.sh’). The web server
can be started with the script ’scripts/local-status-web-server.sh’ and
can be accessed at <http://localhost:8008/>.
ORE 2014 Live Competition
=========================
The ORE 2014 Live Competition consists of the following components and
packages:
- The ORE 2014 Competition Framework, available at
<https://github.com/andreas-steigmiller/ore-2014-competition-framework>,
encapsulates the binaries, source code, and documentation to
reproduce the competition (this read-me is also part of this
framework).
- The ORE 2014 Dataset, available at
<https://zenodo.org/record/10791>, contains (a superset of) the
evaluated ontologies.
- The ORE 2014 Reasoners package, available at
<https://zenodo.org/record/11145>, contains the reasoners that have
participated in the ORE 2014 Live Competition.
- The ORE 2014 Live Competition Queries package, available at
<https://zenodo.org/record/11133>, contains the queries and
configuration files for the ORE 2014 Live Competition.
- The ORE 2014 Live Competition Results package, available at
<https://zenodo.org/record/11142>, contains the logs, reasoner
responses, and evaluation results of the ORE 2014 Live Competition.
Note that, depending on the purpose, only some of the packages are
required. A package can be “installed” by downloading and unzipping it
in the root directory of the competition framework. However, the
ontologies of the ORE 2014 Dataset must be moved/copied into a
subdirectory named with ’ore2014’ within the ontologies folder of the
competition framework (in order to avoid the adaptation of scripts),
i.e., the content of ’dataset/files/’ must be copied/moved to
’data/ontologies/ore2014/’.
Replay
------
All data from the ORE 2014 Live Competition are recorded in log files
and it is possible to replay/re-watch the ORE 2014 Live Competition. For
this, the competition framework and the results of the ORE 2014 Live
Competition (i.e., the ORE 2014 Live Competition Results package) are
required. Unzipping the results package extracts the evaluation results
into the ’ore2014-live-competition-evaluation-results’ folder into the
response directory (’data/responses/’). The replay can be started with
the script ’scripts/replay-server-ore2014-start-all.sh’, which streams
the status updates to all clients connected to the this server instance.
In particular, a web server can be started as a client (e.g., with the
script ’scripts/local-status-web-server.sh’) that receives the status
updates and allows for re-watching the live competition with a browser
at the address <http://localhost:8008/live.html>.
Note that there exist several other scripts that directly jump to other
interesting points of time in the replay. For example, the script
’scripts/replay-server-ore2014-finished-all.sh’ can be used for directly
showing the final results of the competition. Of course, you can also
adapt the scripts or create new ones to also jump to arbitrary points of
time in the replay by simply adapting the specified time.
Sequential Execution
--------------------
By using only one machine/computer, the results of the ORE 2014 Live
Competition can be reproduced in a sequential way as follows:
- The reasoners, ontologies, and queries of the ORE 2014 Live
Competition must be available in the ’data/reasoners/’,
’data/ontologies/ore2014/’, and ’data/queries/’ directories,
respectively, i.e., all packages except the ORE 2014 Live
Competition Results package are required.
- The execution of the script
’scripts/evaluate-ore2014-competition.sh’ evaluates all disciplines
of the ORE 2014 Live competition by running each reasoner for each
query of each discipline, i.e., this potentially requires a lot of
time (probably several days).
Note that the time constraints of the competitions (e.g., the starting
and (enforced) finishing time) are deactivated, which possibly
influences the evaluation outcome a little bit. If new (valid) time
constraints are set, they can be activated by setting
’AllowProcessingOnlyBetweenDateTimeInterval’ in the competition files to
’TRUE’.
Parallel Execution
------------------
The evaluation of the ORE 2014 Live Competition can be reproduced as
follows:
- The reasoners, ontologies, and queries of the ORE 2014 Live
Competition must be available in the ’data/reasoners/’,
’data/ontologies/ore2014/’, and ’data/queries/’ directories,
respectively, i.e., all packages except the ORE 2014 Live
Competition Results package are required.
- The competition server has to be started, e.g., by executing the
script ’scripts/competition-server-ore2014.sh’.
- At least eleven competition clients have to be started (for each
reasoner one), e.g., by executing the script
’scripts/local-client.sh’. The evaluation can also be executed with
less clients if
’org.semanticweb.ore.competition.executorperreasoner’ in the
configuration file ’data/configs/default-config.dat’ is set to
’FALSE’. However, then the evaluation is not running in real-time,
but each reasoner is evaluated for each query step by step. The
clients can also be started on different machines, but they have to
be started within the same directory, e.g., by using a network drive
that is mounted by all machines within the same directory. Note, if
the clients are started on different machines, then the client has
to be executed with the correct destination address, e.g., by
replacing ’127.0.0.1’ in the client’s starter script with the IP
address from the machine where the competition server is running.
Also note that if all clients are started on the same machine, then
the memory usage potentially sums up, i.e., in the worst-case
$11*10$ GBytes of RAM are required. The memory limit can also be
adapted in the configuration file ’data/configs/default-config.dat’
by setting a corresponding value for
’org.semanticweb.ore.execution.memorylimit’, which, however,
potentially also influences the outcome of the evaluation.
Query Generation
----------------
The queries for the ORE 2014 Live Competition are available with the ORE
2014 Live Competition Queries package, but they can also be generated
from scratch by execution the script ’scripts/create-ore2014-queries.sh’
(also part of the ORE 2014 Live Competition Queries package). In
contrast to the other ’create-XYZ-queries.sh’ scripts, this script calls
a generator that creates only queries for ontologies in the
’data/ontologies/ore2014/’ directory. Furthermore, a FileOrderFile is
used to create only a certain number of queries according to the order
specified in this file. In particular, the corresponding query generator
is called with the following parameters:
- FileOrderFile: the file in which the order of the ontologies is
specified.
- NumberOfQueries: the number of queries that have to be generated.
- QueryType: the type of queries that have to be generated. Must be
one of ’classification’, ’realisation’, or ’consistency’.
- ProfileType: the profile for which the queries have to be generated.
Must be one of ’DL’ or ’EL’.
The ’FileOrderFile’s used in ’scripts/create-ore2014-queries.sh’ script
correspond to the ’fileorder.txt’ files from the ORE 2014 Dataset (e.g.,
the ’ore2014-classification-dl-fileorder.txt’ corresponds to
’dataset/pure\_dl/classification/fileorder.txt’).
The expected results for these queries are obtained by evaluating the
competitions and by using the generated hash codes of the directory
’random-majority-voting’ within the ’new-expected-results’ folder (i.e.,
by simply coping the content of the ’random-majority-voting’ folder into
the ’data/expectations/’ directory).
Reasoner Set-up Instructions
============================
In order to make a reasoner runnable for the framework, the following
steps are necessary:
1. Create a new folder in the ’data/reasoners/’ directory, named by the
reasoner/the reasoner configuration (e.g., ’elk-linux’).
2. Specify the settings for the new reasoner in the ’reasoner.dat’ file
within the reasoner’s directory (e.g.,
’data/reasoners/elk-linux/reasoner.dat’).
- This can simply be archived by copying an existing reasoner
configuration file (e.g.,
’data/reasoners/hermit-linux/reasoner.dat’) and modify some of
the values (e.g., ’OutputPathName’ to ’elk-linux’,
’ReasonerName’ to ’ELK’, ’ProfileSupport’ to ’EL’, and
’DatatypeSupport’ to ’FALSE’). Also see comments in the existing
configuration files (e.g.,
’data/reasoners/hermit-linux/reasoner.dat’).
3. Create a starter/wrapper script (e.g., ’execReasoner.sh’) in the
reasoner folder that triggers the reasoner (also see ORE 2014
Specification).
- The wrapper script must be referenced in the reasoner
configuration file (’reasoner.dat’) by the ’StarterScript’
setting, (e.g., ’./execReasoner.sh’).
- The wrapper script is executed by the evaluation framework,
i.e., it must be executable (e.g., apply ’chmod a+x
execReasoner.sh’).
- For OWL API-based reasoners, the wrapper script can directly
execute the OREv2ReasonerWrapper (’OREv2ReasonerWrapper.jar’),
which already implements the input and output specifications for
the ORE 2014 Competition. Note, the OREv2ReasonerWrapper
requires as first argument the corresponding OWLReasonerFactory
class (e.g., ’org.semanticweb.elk.owlapi.ElkReasonerFactory’)
that has to be loaded with the Java Reflection API in order to
create the OWLReasoner from the factory. Also note that the
OREv2ReasonerWrapper may have to be recompiled such that all
libraries of the reasoner are in the Classpath of the
’OREv2ReasonerWrapper.jar’ file. The OREv2ReasonerWrapper can be
build by the Ant script ’build-wrapper-v2.xml’ (the libs of the
reasoner must be copied into the ’lib’ directory).
4. The execution of the reasoner can be tested by calling a
corresponding starter script for a reasoning task with the reasoner
folder as first argument (for example,
’scripts/test-classification.sh elk-linux’).
- If the reasoner configuration file is not named ’reasoner.dat’
within the reasoner folder, then the path to this file must be
used as first argument.
- Optionally, the evaluation configuration file can be listed as
second argument.
5. The reasoner folder (or the path to the reasoner configuration file)
can then also be specified in the competition files.