Skip to content

Commit

Permalink
improved mysql support
Browse files Browse the repository at this point in the history
  • Loading branch information
nkons committed Jul 18, 2013
1 parent 005867b commit 411763c
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 8 deletions.
3 changes: 1 addition & 2 deletions src/main/java/gr/ekt/r2rml/beans/DatabaseImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -148,10 +148,9 @@ public ResultSet query(String query) {
if (!StringUtils.containsIgnoreCase(query, "limit") && properties.containsKey("db.limit")) {
query += " LIMIT " + properties.getProperty("db.limit");
}

//log.info(query);
//PreparedStatement preparedStatement = connection.prepareStatement(query);
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
//log.info("sql query: " + query);
result = statement.executeQuery(query);
} catch (SQLException e) {
e.printStackTrace();
Expand Down
9 changes: 6 additions & 3 deletions src/main/java/gr/ekt/r2rml/beans/Generator.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ public Generator() {

public void createTriples(MappingDocument mappingDocument) {
verbose = properties.containsKey("default.verbose") && (properties.getProperty("default.verbose").contains("true") || properties.getProperty("default.verbose").contains("yes"));
String databaseType = util.findDatabaseType(properties.getProperty("db.driver"));

int tripleCount = 0;
for (LogicalTableMapping logicalTableMapping : mappingDocument.getLogicalTableMappings()) {
Expand All @@ -88,7 +89,7 @@ public void createTriples(MappingDocument mappingDocument) {
rs.beforeFirst();
while (rs.next()) {
Template subjectTemplate = logicalTableMapping.getSubjectMap().getTemplate();
String resultSubject = util.fillTemplate(subjectTemplate, rs);
String resultSubject = (subjectTemplate != null) ? util.fillTemplate(subjectTemplate, rs) : null;

if (resultSubject != null) {
//if (StringUtils.isNotEmpty(logicalTableMapping.getSubjectMap().getClassUri())) {
Expand Down Expand Up @@ -243,8 +244,10 @@ public void createTriples(MappingDocument mappingDocument) {

String parentQuery = l.getSubjectMap().getSelectQuery().getQuery();
if (l.getSubjectMap().getSelectQuery().getTables().size() == 1) {
String addition = " WHERE " + predicateObjectMap.getRefObjectMap().getParent() + " = " + childValue;
parentQuery += addition;
String parentFieldName = predicateObjectMap.getRefObjectMap().getParent();
if (!databaseType.equals("postgresql")) parentFieldName = parentFieldName.replaceAll("\"", ""); //in mysql, table names must not be enclosed in quotes
String addition = " WHERE " + parentFieldName + " = " + childValue;
parentQuery += addition;
} else {
log.error("In the logical table mapping <" + logicalTableMapping.getUri() + ">, the SQL query that generates the parent triples in the parent logical table mapping <" + l.getUri() + "> contains results from more than one tables. " +
" Consider using rr:tableName instead of rr:sqlQuery in the parent logical table mapping. Terminating.");
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/gr/ekt/r2rml/beans/Parser.java
Original file line number Diff line number Diff line change
Expand Up @@ -560,8 +560,8 @@ public LinkedList<LogicalTableMapping> findLogicalTableMappings() {
}
LocalResultSet sparqlResults = util.sparql(mapModel, "SELECT ?x WHERE { ?x rr:logicalTable ?z . ?z rr:tableName " + newTable + " . } ");

String triplesMapUri = sparqlResults.getRows().get(0).getResources().get(0).getUri();
if (triplesMapUri != null) {
if (sparqlResults.getRows().size() > 0) {
String triplesMapUri = sparqlResults.getRows().get(0).getResources().get(0).getUri();
logicalTableMapping.setUri(triplesMapUri);
} else {
log.error("Could not find triples map.");
Expand Down Expand Up @@ -750,7 +750,7 @@ public void init() {

boolean contains(LinkedList<LogicalTableMapping> logicalTableMappings, String uri) {
for (LogicalTableMapping logicalTableMapping : logicalTableMappings) {
if (logicalTableMapping.getUri().equals(uri)) return true;
if (StringUtils.equals(logicalTableMapping.getUri(), uri)) return true;
}
return false;
}
Expand Down

0 comments on commit 411763c

Please sign in to comment.