6 years agoImprove default OSL base URI master
Philipp Martis [Fri, 12 Feb 2016 14:53:22 +0000 (15:53 +0100)]
Improve default OSL base URI

Change the base URI in OSL output, so that
"/of_spec/<spec_name>" is appended instead of
"of_spec/<spec_name>" when <spec_name> is non-empty.

6 years agoFix ignored output file
Philipp Martis [Fri, 12 Feb 2016 14:04:35 +0000 (15:04 +0100)]
Fix ignored output file

Fixes a bug that makes System.out always being used for output
(the given output file is ignored).

Minor improvements in the help text and in one comment.

Adds a file with an URL pointing to the necessary java libs.

6 years agoImprove OSL-output, Add OSL header
Philipp Martis [Thu, 11 Feb 2016 15:02:09 +0000 (16:02 +0100)]
Improve OSL-output, Add OSL header

Fixes the case of "sqlDatatype" (was: "sqlDataType") at every
occurrence (including the output).

Introduces and uses the RDF type "StringListNode" in OSL.

Adds an owl:AllDifferent axiom to the output as (now) required
by the specification of the OSL language.

Replaces the former placeholder by an actual generation of a
hard-coded version of the OSL header.

6 years agoFix OSL output
Philipp Martis [Sat, 6 Feb 2016 13:05:18 +0000 (14:05 +0100)]
Fix OSL output

Certain aspects of the OSL output are fixed and changed:
- The missing "Identifier map" entry is added for entity maps
- The missing hash ('#') is added at the beginning of relative URIs
- OSL-wide OWL entities (independent of the bootstrapped database)
  are based on a newly introduced base URI
- The name of the "tt__rdfRessource" property is changed to
  "tt__rdfRessources" to gain consistency
- The trailing slash is removed from the database-specific base URI
- The xmlns attribute setting is removed (because owl-api doesn't
  allow it to be set to a different URI than xml:base)

6 years agoMinor improvements
Philipp Martis [Mon, 25 Jan 2016 15:35:33 +0000 (16:35 +0100)]
Minor improvements

Two minor improvements regarding behavior:
- The table name is no longer set as label (also) in an entity map
- getLocalizedMessage() is used consistently in place of getMessage()
  when putting out exception messages

Furthermore, code and documentation is cleaned up, which shouldn't
effect the observed behavior:
- The knownIs...() methods are removed from Column and ReadableColumn;
  instead, a null pointer is returned when values are unknown
- Convinience methods for logging, encapsulating the flushing, are
  introduced and used uniformly
- Documentation is improved

6 years agoAdd command line processing
Philipp Martis [Sun, 24 Jan 2016 20:41:49 +0000 (21:41 +0100)]
Add command line processing

Adds program parametrization via command line arguments.

Fixes a bug that prevents the program from exiting in some cases
(by moving the call to promptAbortRetrieveDBSchemaAndWait() inside
the try-block, so the finally-block is called in any case).

Flushes logger after each logging event, which is cleaner and less

6 years agoEnhance readability
Philipp Martis [Sun, 17 Jan 2016 16:45:39 +0000 (17:45 +0100)]
Enhance readability

Enhances code readability, namely in OSLSpecification.java

6 years agoAdd OSL output; Improve URI building
Philipp Martis [Thu, 7 Jan 2016 20:06:15 +0000 (21:06 +0100)]
Add OSL output; Improve URI building

Adds support for output in the OBDA Specification Language (OSL).

Furthermore improves the generation of relation and attribute URIs in that
- the target table name is now also contained in a relation URI and
- attribute URIs are unique even if a table name containes "__column"

6 years agoFix and improve a few things
Philipp Martis [Thu, 7 Jan 2016 09:12:58 +0000 (10:12 +0100)]
Fix and improve a few things

In detail:
- The bug that source and target foreign key columns are not
  guaranteed to be returned in the same order is fixed
- The Bootstrapping class is fixed to assign an empty URI to
  attribute maps representing a foreign key column
- The notion of a "virtual" OWL Property URI is added, which is a
  suitable URI for attribute maps representing foreign key columns
  and thus having an empty OWL Property URI
- An OBDASpecification now knows its URIBuilder
- An OBDASpecification now has a name
- The AttributeMap class is changed to return the description
  straightly as given (and not to generate one if it's empty)
- The CreateTestDBSchema class is changed slightly to exactly
  reproduce the test database schema as served by sloppycoders.net
- Certain fields in the the specification and output classes are
  now private

6 years agoAdd and use class SQLType
Philipp Martis [Mon, 21 Dec 2015 21:28:42 +0000 (22:28 +0100)]
Add and use class SQLType

Adds a class 'SQLType' which encapsulates an SQL datatype, including
its size for VARCHAR and similar types.
Changes the bootstrap() method and the AttributeMap class to use
this type instead of plain int.

6 years agoAdd, rename or move a few classes
Philipp Martis [Fri, 18 Dec 2015 15:19:57 +0000 (16:19 +0100)]
Add, rename or move a few classes

Adds a CreateTestDBSchema class, renames the Specification class to
OBDASpecification and moves the Helpers class from helpers to database.

6 years agoReturn 'this' instead of nothing
Philipp Martis [Fri, 18 Dec 2015 14:52:24 +0000 (15:52 +0100)]
Return 'this' instead of nothing

Most void methods are changed to return the object itself.

6 years agoImprove documentation
Philipp Martis [Thu, 17 Dec 2015 17:59:27 +0000 (18:59 +0100)]
Improve documentation

The in-code-documentation is improved in some points:
- Useless non-javadoc comments are removed
- Some external links are added
- Some @see-annotations are added
- @see-annotations that are useless or even harm (suppress
  inheritdoc in doxygen) are removed
- Some comments are added or clarified

Furthermore, one method is moved inside its file.

6 years agoImprove and fix some minor things
Philipp Martis [Thu, 17 Dec 2015 17:13:04 +0000 (18:13 +0100)]
Improve and fix some minor things

Some minor things are improved and one fixed (last point):
- Messages are added to most exceptions
- Some constructors are added and some removed
- '+=' is changed to '=' in certain hashCode calculations
- Columns are now marked as partOfPK and partOfFK automatically
  when adding primary or foreign keys to a TableSchema
- Primary keys are (shallow) copied in TableSchema.setPrimaryKey(),
  so its behavior is similar to TableSchema.setForeignKeys()
- A getSQLType() method is added, which gets an SQL Type from a string
- MapValueIterable and MapValueIterator are changed to produce
  Iterators instead of ReadOnlyIterators
- A missing null check is inserted

6 years agoFix errors in URI generation
Philipp Martis [Thu, 17 Dec 2015 11:38:28 +0000 (12:38 +0100)]
Fix errors in URI generation

Fixes errors which causes wrong attribute URIs and wrong identifier URI
pastterns to be generated in the bootstrapping process.

6 years agoUpdate javadoc build file
Philipp Martis [Thu, 17 Dec 2015 11:20:49 +0000 (12:20 +0100)]
Update javadoc build file

Adds dependencies for using OWL API v4 with the Pellet reasoner to the
javadoc build file.
All libraries are now expected to reside in $HOME/.javalibs/...

6 years agoUpdate build files
Philipp Martis [Thu, 10 Dec 2015 10:22:17 +0000 (11:22 +0100)]
Update build files

Adds dependencies for using OWL API v4 with the Pellet reasoner to the
build files. The ant build file is also cleaned up and reorganized a bit.
The mysql-connector-java library is now expected
to reside in $HOME/.javalibs/... (as all others)

6 years agoFix getColsAsArray() method
Philipp Martis [Sun, 8 Nov 2015 16:53:14 +0000 (17:53 +0100)]
Fix getColsAsArray() method

Fixes the getColsAsArray() method of TableSchema to conform to Java's
casting rules and not to throw an unexpected exception when invoked.

6 years agoImprove documentation and 'abort' prompt
Philipp Martis [Sun, 8 Nov 2015 16:33:56 +0000 (17:33 +0100)]
Improve documentation and 'abort' prompt

Documentation comments are improved regarding linking, accuracy of exception
indications, clearness and doxygen bugs. Futhermore, one documentation
comment and one normal comment is added and the 'abort' user prompt clarified.

6 years agoSpeed up table schema retrieval
Philipp Martis [Sun, 8 Nov 2015 14:06:18 +0000 (15:06 +0100)]
Speed up table schema retrieval

Changes the method used to retrieve the foreign keys to getImportedKeys()
which speeds up the overall retrieval by about factor 17.
Furthermore adds a missing exception declaration to the comments.

6 years agoAdd 'abort schema retrieval' feature
Philipp Martis [Thu, 5 Nov 2015 13:02:42 +0000 (14:02 +0100)]
Add 'abort schema retrieval' feature

Makes the program multithreaded, using the main thread to serve user
requests for aborting the retrieval of the current schema or even
skipping the whole server currently examined.
Furthermore refines some exception handling cases a bit.

6 years agoRemove version number
Philipp Martis [Thu, 5 Nov 2015 12:56:30 +0000 (13:56 +0100)]
Remove version number

Removes the version number out of the program, since versioning can better
and more reliably handled by git.

6 years agoRemove notion of column ID (ordinal index)
Philipp Martis [Tue, 3 Nov 2015 18:27:07 +0000 (19:27 +0100)]
Remove notion of column ID (ordinal index)

Removes the notion of a column ID (ordinal index) completely from the
program, as it is of no use in OBDA bootstrapping, and its removal
allows for a much more clean and flexible design.

6 years agoFix wrong foreign key assignment
Philipp Martis [Mon, 2 Nov 2015 11:33:21 +0000 (12:33 +0100)]
Fix wrong foreign key assignment

Fixes a bug that assigns all foreign keys targeting a table to the table
(schema) last seen in place of the correct child table.

6 years agoImprove information on errors and documentation
Philipp Martis [Sun, 1 Nov 2015 16:39:33 +0000 (17:39 +0100)]
Improve information on errors and documentation

Adds an additional check and further error information when setting foreign
keys, improves some exception messages and adds logging events to some
exception handlers. Furthermore, documentation is improved and one error
fixed there.

6 years agoFactor out user interaction
Philipp Martis [Sun, 1 Nov 2015 16:06:33 +0000 (17:06 +0100)]
Factor out user interaction

Factors out user interaction to a new package, 'cli'.

6 years agoMake use of the Logger framework
Philipp Martis [Sun, 1 Nov 2015 15:45:34 +0000 (16:45 +0100)]
Make use of the Logger framework

Adds a 'log' package with a Handler and wrapper functions to deal with the
global logger and replaces the direct uses of System.err by logger uses,
which on the behavioral level should introduce only minor changes.

6 years agoFix javadoc build file
Philipp Martis [Sun, 1 Nov 2015 15:17:33 +0000 (16:17 +0100)]
Fix javadoc build file

Fixes the javadoc build file to use the moved Main.java and moreover to
document all packages.

6 years agoFix nonworking server skipping
Philipp Martis [Sun, 1 Nov 2015 12:21:37 +0000 (13:21 +0100)]
Fix nonworking server skipping

... when retrieving the database schema

6 years agoMove Main.java to a new 'main' package
Philipp Martis [Sun, 1 Nov 2015 11:40:05 +0000 (12:40 +0100)]
Move Main.java to a new 'main' package

Moves Main.java to a new 'main' package and changes the build.xml file
accordingly. For maven, no changes are required.

6 years agoFix missing file for jar build with ant
Philipp Martis [Sun, 1 Nov 2015 11:13:16 +0000 (12:13 +0100)]
Fix missing file for jar build with ant

Adds jar-in-jar-loader.zip required in the ant building process (build.xml)
to produce the program jar file.

6 years agoFix relation URI generation from foreign keys
Philipp Martis [Thu, 29 Oct 2015 10:52:40 +0000 (11:52 +0100)]
Fix relation URI generation from foreign keys

Changes the relation URI generated by DirectMappingURIBuilder from
unnamed foreign keys to contain the table name and all column names,
instead of just the first column name.

6 years agoFix missing relation URI in binary relations
Philipp Martis [Thu, 29 Oct 2015 09:32:39 +0000 (10:32 +0100)]
Fix missing relation URI in binary relations

Adds the missing call to setRelationURI() for relations generated from
tables representing binary relations, thereby adding the necessary
methods to URIBuilder. Also, for a cleaner formatting, removes the
explicit package namings in DirectMappingURIBuilder.

6 years agoIncrease usage of ReadableForeignKey interface
Philipp Martis [Wed, 28 Oct 2015 19:41:58 +0000 (20:41 +0100)]
Increase usage of ReadableForeignKey interface

Changes the signatures of the getForeignKeys() method in TableSchema
and the related Iterator and Iterable methods to use the
ReadableForeignKey interface. Same for two local variable declarations.

6 years agoAdd support for binary relation tables
Philipp Martis [Wed, 28 Oct 2015 19:31:00 +0000 (20:31 +0100)]
Add support for binary relation tables

Adds the recognition and proper processing of tables representing binary
relations, as described in [Sequeda et al.: On Directly Mapping Relational
Databases to RDF and OWL (http://arxiv.org/pdf/1202.3667.pdf)]

6 years agoFix undefined order of foreign key columns
Philipp Martis [Wed, 28 Oct 2015 17:13:10 +0000 (18:13 +0100)]
Fix undefined order of foreign key columns

Imposes an ordering on ColumnSets by changing the backing data structure
to LinkedHashMap. This way, foreign key columns can be mapped to their
respective target columns.

6 years agoFix typos in comments
Philipp Martis [Wed, 28 Oct 2015 16:41:08 +0000 (17:41 +0100)]
Fix typos in comments

Fixes two small typos in comments (boostrap -> bootstrap)

6 years agoAdd Maven support
Philipp Martis [Mon, 26 Oct 2015 15:44:47 +0000 (16:44 +0100)]
Add Maven support

This commit adds a pom.xml for use with Maven. Furthermore, the
target path is changed from 'bin' to 'target/classes' to share
it with Maven.

6 years agoFix ant and javadoc build files
Philipp Martis [Mon, 26 Oct 2015 15:16:34 +0000 (16:16 +0100)]
Fix ant and javadoc build files

The ant and javadoc build files are changed to use relative paths.
Furthermore, the ant file (built.xml) now also contains instructions
for the actual building, not just for the jar creation.

6 years agoInitial version
Philipp Martis [Thu, 22 Oct 2015 13:42:53 +0000 (15:42 +0200)]
Initial version

Initial version of project (v20151021).
This is a very early alpha version implementing a very simple direct mapping and a very crude output.