Sparqlify icon indicating copy to clipboard operation
Sparqlify copied to clipboard

Errors when using constant in plainLiteral term constructor

Open patrickwestphal opened this issue 10 years ago • 0 comments

When using a constant expression within a plainLiteral term constructor, e.g.

Create View example As
  Construct {
    ?sth rdfs:comment ?comment .
  }
  With
    ?sth = uri(ex:res, ?id)
    ?comment = plainLiteral("It's wrong", "en")
  FROM
    tbl

I get the following error:

2014-03-20 21:24:37,839 WARN  org.aksw.sparqlify.core.algorithms.CandidateViewSelectorBase: JENA'S ALGEBRA OPTIMIZATION DISABLED
2014-03-20 21:24:37,852 DEBUG org.aksw.sparqlify.core.algorithms.CandidateViewSelectorBase: 41 of 41 candidates remaining (0 filtered)
2014-03-20 21:24:37,852 DEBUG org.aksw.sparqlify.core.algorithms.CandidateViewSelectorBase: Total number of candidates after 1 clauses: 41
2014-03-20 21:24:37,885 INFO  org.aksw.sparqlify.core.algorithms.SparqlSqlStringRewriterImpl: [74] Candidate selection completed
Exception in thread "main" java.lang.RuntimeException: Unknow datatype of node: "It's wrong"@en
    at org.aksw.sparqlify.expr.util.NodeValueUtils.getValue(NodeValueUtils.java:66)
    at org.aksw.sparqlify.core.algorithms.MappingOpsImpl.pushConstants(MappingOpsImpl.java:1317)
    at org.aksw.sparqlify.core.algorithms.MappingOpsImpl.pushConstants(MappingOpsImpl.java:1246)
    at org.aksw.sparqlify.core.algorithms.MappingOpsImpl.union(MappingOpsImpl.java:1427)
    at org.aksw.sparqlify.core.algorithms.OpMappingRewriterImpl.rewrite(OpMappingRewriterImpl.java:101)
    at org.aksw.sparqlify.core.algorithms.OpMappingRewriterImpl.rewrite(OpMappingRewriterImpl.java:333)
    at org.aksw.sparqlify.core.interfaces.SparqlSqlOpRewriterImpl.rewrite(SparqlSqlOpRewriterImpl.java:95)
    at org.aksw.sparqlify.core.algorithms.SparqlSqlStringRewriterImpl.rewrite(SparqlSqlStringRewriterImpl.java:45)
    at org.aksw.sparqlify.core.sparql.QueryExecutionSelect._execSelect(QueryExecutionSelect.java:131)
    at org.aksw.sparqlify.core.sparql.QueryExecutionSelect.execSelect(QueryExecutionSelect.java:57)
    at org.aksw.jena_sparql_api.core.QueryExecutionBaseSelect.executeCoreSelect(QueryExecutionBaseSelect.java:146)
    at org.aksw.sparqlify.core.sparql.QueryExecutionSparqlify.executeCoreSelect(QueryExecutionSparqlify.java:182)
    at org.aksw.jena_sparql_api.core.QueryExecutionBaseSelect.executeConstructStreaming(QueryExecutionBaseSelect.java:342)
    at org.aksw.jena_sparql_api.core.QueryExecutionBaseSelect.execConstructTriples(QueryExecutionBaseSelect.java:371)
    at org.aksw.jena_sparql_api.core.utils.QueryExecutionUtils.createIteratorDumpTriples(QueryExecutionUtils.java:65)
    at org.aksw.sparqlify.web.Main.main(Main.java:268)

When removing the language tag, as in

Create View example As
  Construct {
    ?sth rdfs:comment ?comment .
  }
  With
    ?sth = uri(ex:res, ?id)
    ?comment = plainLiteral("It's wrong")
  FROM
    tbl

the error above won't appear, but a Postgres error comes up instead:

Exception in thread "main" java.lang.RuntimeException: org.postgresql.util.PSQLException: FEHLER: Syntaxfehler bei »wrong«
  Position: 26367
    at org.aksw.sparqlify.core.sparql.QueryExecutionSelect.execSelect(QueryExecutionSelect.java:59)
    at org.aksw.jena_sparql_api.core.QueryExecutionBaseSelect.executeCoreSelect(QueryExecutionBaseSelect.java:146)
    at org.aksw.sparqlify.core.sparql.QueryExecutionSparqlify.executeCoreSelect(QueryExecutionSparqlify.java:182)
    at org.aksw.jena_sparql_api.core.QueryExecutionBaseSelect.executeConstructStreaming(QueryExecutionBaseSelect.java:342)
    at org.aksw.jena_sparql_api.core.QueryExecutionBaseSelect.execConstructTriples(QueryExecutionBaseSelect.java:371)
    at org.aksw.jena_sparql_api.core.utils.QueryExecutionUtils.createIteratorDumpTriples(QueryExecutionUtils.java:65)
    at org.aksw.sparqlify.web.Main.main(Main.java:268)
Caused by: org.postgresql.util.PSQLException: FEHLER: Syntaxfehler bei »wrong«
  Position: 26367
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
    at com.jolbox.bonecp.StatementHandle.executeQuery(StatementHandle.java:503)
    at org.aksw.sparqlify.core.sparql.ResultSetFactory.create(ResultSetFactory.java:61)
    at org.aksw.sparqlify.core.sparql.QueryExecutionSelect._execSelect(QueryExecutionSelect.java:174)
    at org.aksw.sparqlify.core.sparql.QueryExecutionSelect.execSelect(QueryExecutionSelect.java:57)
    ... 6 more

Being explicit, using the str function, as in

Create View example As
  Construct {
    ?sth rdfs:comment ?comment .
  }
  With
    ?sth = uri(ex:res, ?id)
    ?comment = plainLiteral(str("It's wrong"), "en")
  FROM
    tbl

solves this, but it seems it should work without str. I used the 0.6.6-SNAPSHOT.

patrickwestphal avatar Mar 20 '14 20:03 patrickwestphal