RMLio / rmlmapper-java

The RMLMapper executes RML rules to generate high quality Linked Data from multiple originally (semi-)structured data sources
http://rml.io
MIT License
148 stars 61 forks source link

Return a more descriptive error when provided mapping file does not exist #54

Closed DylanVanAssche closed 3 years ago

DylanVanAssche commented 4 years ago

Description

RML Mapper crashes with a parsing error for non-existing mapping files:

08:34:42.569 [main] ERROR be.ugent.rml.cli.Main               .main(315) - Unexpected end of file
org.eclipse.rdf4j.rio.RDFParseException: Unexpected end of file
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.throwEOFException(TurtleParser.java:1317)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.verifyCharacterOrFail(TurtleParser.java:1133)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parseQNameOrBoolean(TurtleParser.java:1001)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parseValue(TurtleParser.java:578)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parseSubject(TurtleParser.java:406)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parseTriples(TurtleParser.java:347)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parseStatement(TurtleParser.java:216)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parse(TurtleParser.java:178)
    at org.eclipse.rdf4j.rio.turtle.TurtleParser.parse(TurtleParser.java:130)
    at be.ugent.rml.store.RDF4JStore.read(RDF4JStore.java:111)
    at be.ugent.rml.cli.Main.main(Main.java:174)
    at be.ugent.rml.cli.Main.main(Main.java:35)

I find it useful to check if the mapping file exists before parsing it. This way, we can return an appropriate error message.

Steps to reproduce

  1. Execute the RML Mapper with -m <mapping file>. The name of the mapping file is a non-existing.
  2. The RML Mapper fails with a Turtle parsing error.

Environment