Strabon

view README @ 1527:ba8fb069b2ca

Merged with default branch.
author Panayiotis Smeros <psmeros@di.uoa.gr>
date Wed Nov 11 13:28:26 2015 +0000 (2015-11-11)
parents 4dff2f1163d8 7cef08972437
children
line source
1 Strabon
2 -----------
4 Introduction
5 ============
6 Strabon is a fully implemented semantic geospatial database system that can be
7 used to store linked geospatial data expressed in RDF and query them using an
8 extension of SPARQL. Strabon supports spatial selections, spatial joins, a rich
9 set of spatial functions similar to those offered by geospatial relational
10 database systems, support for multiple Coordinate Reference Systems and widely
11 used serializations for geometric objects such as WKT and GML. Strabon is built
12 on top of the well-known RDF store Sesame and extends Sesame’s components to be
13 able to manage thematic and spatial data that are stored in PostGIS.
15 The development of Strabon started in the context of European FP7 project
16 SemsorGrid4Env (Semantic Sensor Grids for Rapid Application Development for
17 Environmental Management) [http://www.semsorgrid4env.eu/]. Starting September
18 2011, Strabon is being utilized and extended with new functionalities in the
19 FP7 project TELEIOS (Virtual Observatory Infrastructure for Earth Observation
20 Data) [http://www.earthobservatory.eu/] which our group leads.
22 The query language of Strabon is called stSPARQL. stSPARQL can be used to query
23 data represented in an extension of RDF called stRDF. stRDF and stSPARQL have
24 been designed for representing and querying geospatial data that changes over
25 time (e.g., the growth of a city over the years due to new developments).
27 Given the very close relationship between stSPARQL and GeoSPARQL which is a
28 recent OGC standard for an extension of SPARQL for querying geospatial metadata,
29 we recently provided support for the Core, Geometry and Geometry Topology
30 extension of GeoSPARQL.
33 Conformance to GeoSPARQL
34 ========================
35 Strabon implements the `Core', the `Topology Vocabulary Extension', the
36 `Geometry Extension', the `Geometry Topology Extension', and the `RDFS Entailment
37 Extension' except for Req. 25
38 (http://www.opengis.net/spec/geosparql/1.0/req/rdfs-entailment-extension/bgp-rdfs-ent).
40 With respect to GML, Strabon supports the GML Profile corresponding to Simple
41 Features, that is, GML Simple Features Profile 2.0.
44 Strabon Homepage
45 ================
46 The homepage of Strabon is at http://www.strabon.di.uoa.gr/.
49 Demo
50 ====
51 You can find a demo of the system Strabon at http://test.strabon.di.uoa.gr/NOA/.
54 How to build and run Strabon from command line
55 ==============================================
56 Assuming you have already downloaded Strabon and you are in the top-level
57 directory of Strabon, issue the following command to build it from command line:
59 $ mvn clean package
61 In order to run automatically the JUnit tests, pass the option `-DskipTests=false'
62 to the above command. The complete command is the following:
64 $ mvn -DskipTests=false clean package
66 Alternatively, it is possible to run a specific test. Supposing that the name of
67 the corresponding class is `TestName', then you can run only this
68 test using the following command:
70 $ mvn test -DfailIfNoTests=false -DskipTests=false -Dtest=TestName
72 In case of an error during building of Strabon and assuming that the error does
73 not come from the JUnit tests, please have a look at the `Known Issues' section
74 below. If none of the known issues of that section applies, please contact the
75 developers through the Strabon mailing-list or submit a corresponding bug
76 (see `Bugs' section below).
78 After you have successfully built Strabon, you have access to the following
79 components:
81 * Strabon Endpoint
83 This is a SPARQL endpoint for Strabon. It is distributed as a war file so
84 you may deploy it in a Tomcat container. You may find the war file under
85 directory `endpoint/target'.
87 * Strabon Endpoint (standalone)
89 This is a SPARQL endpoint for Strabon like the above one, but it differs
90 only in that it does not require the user to have already set up a Tomcat
91 container. The standalone Strabon Endpoint may be run by issuing the
92 following command:
94 $ java -jar endpoint-exec/target/strabon-endpoint-executable-${version}.jar
96 After issuing the above command, you may access the Strabon Endpoint at
97 the following URL: <http://localhost:8080/>.
99 Please see the page at <http://hg.strabon.di.uoa.gr/Strabon/rev/674f8f91162b>
100 to find out other options that you may pass to the Tomcat container that
101 will run by the above command.
103 SPECIAL NOTE: if you need to configure the connection details to the
104 underlying database, you may do so in two ways:
105 1. By modifying file `endpoint/WebContent/WEB-INF/connection.properties'
106 before building Strabon and executing the above command.
107 2. After executing the above command, by visiting the following page by a
108 browser: <http://localhost:8080/ChangeConnection>
110 * Strabon Endpoint Client
112 This is a Java client for interacting with Strabon Endpoint or any other
113 SPARQL endpoint. It is packaged as a jar file and may be found under
114 directory `endpoint-client/target/' with name
115 `strabon-endpoint-client-${version}.jar'. This jar contains any dependencies
116 to other code, so may copy and paste it to your project and start playing
117 with the code immediately.
119 * Strabon script
121 The `strabon' script is located under the `scripts/' directory and it is the
122 main command-line tool for interacting with Strabon. You may use it to store
123 RDF data with geospatial information or query/update it using one of
124 stSPARQL or GeoSPARQL query languages.
126 * Endpoint script
128 The `endpoint' script is located under the `scripts' directory and it is the
129 main command-line tool for interacting with a `Strabon Endpoint'. You may
130 use it to do any operation you would like to do with the `strabon' script
131 above, but in contrast to the `strabon' script you need to have access to a
132 Strabon endpoint. Of course, the `Strabon Endpoint Client' component above
133 can be used as well as a command-line tool. At the time of writing, the
134 `Strabon Endpoint Client' component supports only querying of RDF data with
135 geospatial information.
138 Getting Started
139 ===============
140 To get started with Strabon please have a look at the tutorial for the stRDF
141 data model and stSPARQL query language, the User Guide, and the Developer Guide.
143 stRDF and stSPARQL tutorial
144 http://www.strabon.di.uoa.gr/files/stSPARQL_tutorial.pdf
147 stSPARQL Reference
148 ~~~~~~~~~~~~~~~~~~
149 The reference for the spatial and temporal extension functions defined in
150 stSPARQL can be found at http://www.strabon.di.uoa.gr/stSPARQL.
153 User Guide
154 ~~~~~~~~~~
155 Assuming that you are familiar with Maven, the following steps need to be
156 followed in order to use Strabon using Eclipse:
158 1. Install PostgreSQL from http://www.postgresql.org/download/. At the time of
159 this writing the latest PostgreSQL version is 9.1.
160 2. Install PostGIS from http://postgis.refractions.net/download/. At the time of
161 this writing we have tested Strabon with PostGIS 1.5.3. For the
162 temporal features of stSPARQL download the PostgreSQL temporal extension
163 from here: https://github.com/jeff-davis/PostgreSQL-Temporal and follow
164 the installation guide.
165 3. Install Maven from http://maven.apache.org/download.html. At the time of this
166 writing the latest Maven version is 3.0.4.
167 4. Install Eclipse from http://www.eclipse.org/downloads/. At the time of this
168 writing the latest Eclipse version is 3.7.2.
169 5. Install the m2e plugin for Eclipse from http://www.eclipse.org/m2e/.
170 6. Install the MercurialEclipse plugin for Eclipse from
171 http://javaforge.com/project/HGE .
172 7. From Eclipse, go to File --> Import --> Mercurial --> Clone Existing
173 Mercurial Repository --> Next. In the URL textarea paste the following
174 URL: http://hg.strabon.di.uoa.gr/StrabonUser and then press Next --> Next -->
175 Finish. If you used the default settings, you should have a new project named
176 StrabonMain. Right click on the project and select Configure --> Convert to
177 Maven project. Eclipse will enable Maven dependency management for the
178 project, download any dependencies and build the project.
181 Storing stRDF graphs and evaluating stSPARQL queries
182 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
183 You can see some examples in the classes gr.uoa.di.strabon.example.PostgisExample
184 and gr.uoa.di.strabon.example.PostgisExample2.
186 Tuning PostgreSQL
187 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
188 The default settings of Postgres are rather conservative. As a result, parameter
189 tuning is neccessary for speeding up Postgres, therefore Strabon. If you are
190 using Strabon to compare its performance against your implementation of
191 stSPARQL/GeoSPARQL, you are *strongly* encouraged to contact us using the Strabon
192 Users mailing list for assistance on tuning Postgres.
194 You can follow the instructions below for tuning a Postgres server running on an
195 Ubuntu machine that is dedicated to PostgreSQL and Strabon.
197 1. Append the following text at the end of postgresql.conf.
198 *Uncomment* the appropriate lines.
200 ### RAM
201 ## 4 GB of RAM
202 #shared_buffers = 3GB
203 #effective_cache_size = 3GB
204 #maintenance_work_mem = 1GB
205 #work_mem = 2GB
206 ## 8 GB of RAM
207 #shared_buffers = 5GB
208 #effective_cache_size = 6GB
209 #maintenance_work_mem = 2GB
210 #work_mem = 5GB
211 ## 16 GB of RAM
212 #shared_buffers = 10GB
213 #effective_cache_size = 14GB
214 #maintenance_work_mem = 4GB
215 #work_mem = 10GB
216 ## 24 GB of RAM
217 #shared_buffers = 16GB
218 #effective_cache_size = 22GB
219 #maintenance_work_mem = 6GB
220 #work_mem = 15GB
221 ## 48 GB of RAM
222 #shared_buffers = 32GB
223 #effective_cache_size = 46GB
224 #maintenance_work_mem = 8GB
225 #work_mem = 30GB
226 ## 64 GB of RAM
227 # contact us to find out!
228 ### HD
229 ## RAID with ordinary 7.200 disks
230 #random_page_cost = 3.5 #3.0-3.5
231 ## High-End NAS/SAN
232 #random_page_cost = 2 #1.5-2.5
233 ## Amazon EBS/Heroku
234 #random_page_cost = 1.3 #1.1-2.0
235 ## SSD array
236 #random_page_cost = 2.0 #1.5-2.5
237 ### Planner options
238 # Increase the following values in order to avoid using the GEQO planner.
239 # Small values (<8) reduce planning time but may produce inferior query plans
240 #
241 geqo_threshold = 15 # keep this value larger that the following two parameters
242 from_collapse_limit = 14
243 join_collapse_limit = 14
244 ### Misc
245 default_statistics_target = 10000
246 constraint_exclusion = on
247 checkpoint_completion_target = 0.9
248 wal_buffers = 32MB
249 checkpoint_segments = 64
250 ### Connections
251 max_connections = 10
253 2. Append the following lines at the end of /etc/sysctl.conf
254 *Uncomment* the appropriate lines.
256 ## 4 GB of RAM
257 #kernel.shmmax = 3758096384
258 #kernel.shmall = 3758096384
259 #kernel.shmmni = 4096
260 ## 8 GB of RAM
261 #kernel.shmmax = 5905580032
262 #kernel.shmall = 5905580032
263 #kernel.shmmni = 4096
264 ## 16 GB of RAM
265 #kernel.shmmax = 11274289152
266 #kernel.shmall = 11274289152
267 #kernel.shmmni = 4096
268 ## 24 GB of RAM
269 #kernel.shmmax = 17716740096
270 #kernel.shmall = 17716740096
271 #kernel.shmmni = 4096
272 ## 48 GB of RAM
273 #kernel.shmmax = 35433480192
274 #kernel.shmall = 35433480192
275 #kernel.shmmni = 4224
276 ## 64 GB of RAM
277 # contact us to find out!
279 3. Apply all changes by executing
281 $ sudo sysctl -p
282 $ sudo /etc/init.d/postgresql restart
284 4. Prepare for the next run by issuing the command
286 $ sudo -u postgres psql -c 'VACUUM ANALYZE;' db
288 or
290 $ psql -c 'VACUUM ANALYZE;' db
292 where db is the name of the Postgres database that Strabon will use.
295 Developer Guide
296 ~~~~~~~~~~~~~~~
297 Assuming that you are familiar with Maven, the following steps need to be
298 followed in order to use Strabon using Eclipse:
300 1. Install PostgreSQL from http://www.postgresql.org/download/. At the time of
301 this writing the latest PostgreSQL version is 9.1.
302 2. Install PostGIS from http://postgis.refractions.net/download/. At the time of
303 this writing we have tested Strabon with PostGIS 1.5.3. For the
304 temporal features of stSPARQL download the PostgreSQL temporal extension
305 from here: https://github.com/jeff-davis/PostgreSQL-Temporal and follow
306 the installation guide.
307 3. Install Maven from http://maven.apache.org/download.html. At the time of this
308 writing the latest Maven version is 3.0.4.
309 4. Install Eclipse from http://www.eclipse.org/downloads/. At the time of this
310 writing the latest Eclipse version is 3.7.2.
311 5. Install the m2e plugin for Eclipse from http://www.eclipse.org/m2e/.
312 6. Install the MercurialEclipse plugin for Eclipse from
313 http://javaforge.com/project/HGE.
314 7. From Eclipse, go to File --> Import --> Mercurial --> Clone Existing
315 Mercurial Repository --> Next. In the URL textarea paste the following
316 URL: http://hg.strabon.di.uoa.gr/Strabon and then press Next --> Next -->
317 Finish. If you used the default settings, you should have a new project named
318 StrabonMain. Right click on the project and select Configure --> Convert to
319 Maven project. Eclipse will enable Maven dependency management for the
320 project, download any dependencies and build the project.
323 Tester Guide
324 ~~~~~~~~~~~~
325 Assuming again that you are familiar with Maven and Junit these are the steps
326 you need to follow to test the functionality of Strabon:
329 * Using Eclipse
331 If you want to create a new test:
333 1. Import Strabon into Eclipse as explained in the Developer Guide.
334 2. Go to strabon-testsuite project.
335 3. Create a new folder (Recommended folder name: <test's name>) and place inside the following files:
336 3.1. An ntriples or nquads file with the test dataset (with .nt or .nq extension).
337 3.2. Pairs of files with sparql test queries and expected test results in xml format.
338 Notice that each pair must have the same name and .rq extension for the queryFile and .srx extension for the resultsFile.
339 4. Create a test class that extends TemplateTest class.
340 5. If you have followed the recommendations the test is ready. If you have different names or location for your
341 files, insert them explicitly in the constructor of the class. WARNING: All prefixes must be placed in file "prefixes" so that
342 every time a namespace changes, we have to change it just once.
344 If you want to run a test:
346 1. Right-click on the test class.
347 2. Select "Run as JUnit Test".
348 3. Database properties are retrieved from database.properties file. If you want, you can change a property
349 "on the fly" with an environment variable.
352 * Command Line
354 If you want to run all the tests:
356 1. Go to Strabon directory (root directory of all the subprojects).
357 2. Run "mvn test -DskipTests=false".
358 3. Optionally you can pass an environment variable with "-DvariableName=variableValue".
361 Storing stRDF graphs and evaluating stSPARQL queries
362 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
363 You can see some examples in the classes
364 eu.earthobservatory.runtime.postgis.StoreOp and
365 eu.earthobservatory.runtime.postgis.QueryOp.
368 Download
369 ========
370 You can download the source code of the latest version of Strabon by accessing
371 our public mercurial repository located at http://hg.strabon.di.uoa.gr/Strabon.
372 You can find more information on how to use and extend Strabon at the Getting
373 Started section.
376 Publications
377 ============
378 You can learn about stRDF data model and stSPARQL query language employed in
379 Strabon by reading our tutorial under the Getting Started section and/or the
380 publications given on this page.
382 The current versions of stRDF and stSPARQL which are based on OGC standards are
383 presented in the following documents:
384 * K. Kyzirakos, M. Karpathiotakis, and M. Koubarakis. Strabon: A Semantic
385 Geospatial DBMS. In Internatioanl Semantic Web Conference (ISWC'12). Boston,
386 USA, November 11-15, 2012.
387 [pdf: http://strabon.di.uoa.gr/files/strabon-iswc.pdf]
389 * Manolis Koubarakis, Kostis Kyzirakos, Babis Nikolaou, Michael Sioutis, and
390 Stavros Vassos. A data model and query language for an extension of RDF with
391 time and space. Deliverable D2.1, European ICT project TELEIOS, 2011.
392 [pdf: http://strabon.di.uoa.gr/files/deliv2-1-re-revised.pdf]
394 The temporal features of stRDF and stSPARQL are presented in the following
395 document:
396 * K. Bereta, P. Smeros and M. Koubarakis. Representing and Querying the
397 Valid Time of Triples for Linked Geospatial Data. In the 10th Extended
398 Semantic Web Conference (ESWC 2013). Montpellier, France. May 26-30, 2013.
399 [pdf: http://www.strabon.di.uoa.gr/files/eswc2013.pdf]
401 The initial versions of stRDF and stSPARQL that are based on constraint
402 databases are presented in the following publications:
403 * Manolis Koubarakis and Kostis Kyzirakos. Modeling and Querying Metadata in
404 the Semantic Sensor Web: the Model stRDF and the Query Language stSPARQL.
405 In 7th Extended Semantic Web Conference (ESWC 2010). Heraklion, Crete,
406 30 May - 03 June, 2010.
407 [pdf: http://strabon.di.uoa.gr/files/stSPARQL.pdf]
409 * Kostis Kyzirakos, Manos Karpathiotakis and Manolis Koubarakis. Developing
410 Registries for the Semantic Sensor Web using stRDF and stSPARQL (short
411 paper).
412 In Proceedings of 3rd International workshop on Semantic Sensor Networks
413 2010, in conjunction with ISWC 2010, November 2010, Shanghai, China.
414 [pdf: http://strabon.di.uoa.gr/files/strabon.pdf]
416 Applications of stRDF, stSPARQL, and the system Strabon are described here:
417 * Alasdair J. G. Gray, Raúl García-Castro, Kostis Kyzirakos, Manos
418 Karpathiotakis, Jean-Paul Calbimonte, Kevin Page, Jason Sadler, Alex
419 Frazer, Ixent Galpin, Alvaro A. A. Fernandes, Norman W. Paton, Oscar
420 Corcho, Manolis Koubarakis, David De Roure, Kirk Martinez and Asunción
421 Gómez-Pérez. A Semantically Enabled Service Architecture for Mashups over
422 Streaming and Stored Data. In 8th Extended Semantic Web Conference (ESWC
423 2011). Heraklion, Crete, May 20 - June 2, 2011.
424 [pdf: http://strabon.di.uoa.gr/files/Gray2011Architecture.pdf]
426 * A.J.G. Gray, J. Sadler, O. Kit, K. Kyzirakos, M. Karpathiotakis, J.-P.
427 Calbimonte, K. Page, R. García-Castro, A. Frazer, I. Galpin, A.A.A.
428 Fernandes, N.W. Paton, O. Corcho, M. Koubarakis, D.D. Roure, K. Martinez,
429 A. Gómez-Pérez. A Semantic Sensor Web for Environmental Decision Support
430 Applications. Sensors. 11, 8855-8887.
431 [pdf: http://strabon.di.uoa.gr/files/sensors-11-08855.pdf]
433 Coming up soon:
434 Strabon will soon support an extension of RDF for incomplete geospatial
435 information. The following publication gives a preview of the relevant research
436 problems:
437 * M. Koubarakis, K. Kyzirakos, M. Karpathiotakis, C. Nikolaou, M. Sioutis,
438 S. Vassos, D. Michail, T. Herekakis, C. Kontoes and I. Papoutsis. Challenges
439 for Qualitative Spatial Reasoning in Linked Geospatial Data. In Proceedings
440 of IJCAI 2011 Workshop on Benchmarks and Applications of Spatial Reasoning,
441 Barcelona, Spain.
442 [pdf: http://www.earthobservatory.eu/publications/SciQL_ADASS2011.pdf]
444 * C. Nikolaou and M. Koubarakis: "Querying Linked Geospatial Data with
445 Incomplete Information". In 5th International Terra Cognita Workshop -
446 Foundations, Technologies and Applications of the Geospatial Web. In
447 conjunction with the 11th International Semantic Web Conference, Boston,
448 USA, November, 2012.
449 [http://www.earthobservatory.eu/publications/iswc-workshop.pdf]
452 Contributors
453 ============
454 The system Strabon has been developed by the following members of our team:
456 * Manos Karpathiotakis <mk@di.uoa.gr>
457 * Kostis Kyzirakos <Kostis.Kyzirakos@cwi.nl>
458 * Manolis Koubarakis <koubarak@di.uoa.gr>
459 * Giorgos Garbis <ggarbis@di.uoa.gr>
460 * Konstantina Bereta <konstantina.bereta@di.uoa.gr>
461 * Charalampos Nikolaou <charnik@di.uoa.gr>
462 * Stella Gianakopoulou <sgian@di.uoa.gr>
463 * Panayiotis Smeros <psmeros@di.uoa.gr>
464 * Kallirroi Dogani <kallirroi@di.uoa.gr>
467 Mailing-list
468 ============
469 Currently, we maintain the following mailing lists:
471 * Strabon-users, is used as a communication channel for Strabon users.
472 To subscribe to the mailing-list, please visit page
473 http://cgi.di.uoa.gr/~mailman/listinfo/strabon-users. To post e-mails
474 to Strabon-users mailing-list, write to strabon-users@di.uoa.gr.
476 * Strabon-devel, is used as a communication channel with the developers
477 of Strabon. To subscribe to the mailing-list, please visit page
478 http://cgi.di.uoa.gr/~mailman/listinfo/strabon-devel. To post e-mails
479 to Strabon-devel mailing-list, write to strabon-devel@di.uoa.gr.
482 Bugs
483 ====
484 Please report bugs to http://bug.strabon.di.uoa.gr/report or
485 the Strabon-devel mailing-list Strabon-devel@di.uoa.gr.
488 Known Issues
489 ============
490 * By default, Tomcat uses ISO-8859-1 character encoding when decoding URLs received
491 from a browser. This can cause problems when encoding is UTF-8, and you are using
492 international characters. In order to fix this, edit conf/server.xml and find the
493 line where the Connector is defined. Add the parameter URIEncoding and set it to
494 UTF-8. For example:
496 <Connector port="8080" protocol="HTTP/1.1"
497 connectionTimeout="20000"
498 URIEncoding="UTF-8"
499 redirectPort="8443" />
501 * Building and executing any maven goals fails for maven versions <3.0 due to a
502 dependency to the `shade' plugin that is available only for maven version 3.0
503 (http://maven.apache.org/plugins/maven-shade-plugin/). In such systems, you may
504 disable execution of this plugin by setting the environmental variable
505 `shade.skip'. For example, to build Strabon using maven version 2.0 you may
506 execute the following command:
508 $ mvn clean package -Dshade.skip
510 * When using MonetDB as a backend, the following source code of MonetDB must be
511 used:
512 https://hg.strabon.di.uoa.gr/MonetDB/
515 License
516 =======
517 This Source Code Form is subject to the terms of the Mozilla Public
518 License, v. 2.0. If a copy of the MPL was not distributed with this
519 file, You can obtain one at http://mozilla.org/MPL/2.0/.
521 Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team
523 http://www.strabon.di.uoa.gr/
526 How to apply the license
527 ========================
528 * In the beginning of script files (after the shell directive) paste the
529 following statement:
530 #
531 # This Source Code Form is subject to the terms of the Mozilla Public
532 # License, v. 2.0. If a copy of the MPL was not distributed with this
533 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
534 #
535 # Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team
536 #
537 # http://www.strabon.di.uoa.gr/
538 #
540 * In the beginning of Java source code files paste the following statement:
541 /**
542 * This Source Code Form is subject to the terms of the Mozilla Public
543 * License, v. 2.0. If a copy of the MPL was not distributed with this
544 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
545 *
546 * Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team
547 *
548 * http://www.strabon.di.uoa.gr/
549 */
551 * In the beginning of HTML/XML files paste the following statement:
552 <!-- This Source Code Form is subject to the terms of the Mozilla Public
553 - License, v. 2.0. If a copy of the MPL was not distributed with this
554 - file, You can obtain one at http://mozilla.org/MPL/2.0/.
555 -
556 - Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team
557 -
558 - http://www.strabon.di.uoa.gr/
559 -->