/*
* Scute
*
* Homepage: http://hyperdata.org/scute
*
* License : http://www.apache.org/licenses/LICENSE-2.0
* See also license.txt or http://hyperdata.org/wiki/Scute:License
*
* Danny Ayers 2011
*/
package org.hyperdata.scute.validate;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.Reader;
import java.io.StringReader;
import com.hp.hpl.jena.n3.turtle.Turtle2NTriples;
import com.hp.hpl.jena.n3.turtle.TurtleParseException;
import com.hp.hpl.jena.n3.turtle.parser.ParseException;
import com.hp.hpl.jena.n3.turtle.parser.TokenMgrError;
// import com.hp.hpl.jena.n3.turtle.parser.TurtleParser;
import com.hp.hpl.jena.shared.JenaException;
import com.hp.hpl.jena.util.FileUtils;
/**
* The Class TurtleParser.
*/
public class TurtleParser {
/**
* Run the Turtle parser - produce N-triples.
*
* @param args the arguments
*/
public static void main(String[] args) {
if (args.length == 0) {
parse("http://example/BASE", System.in);
return;
}
for (int i = 0; i < args.length; i++) {
String fn = args[i];
parse("http://base/", fn);
}
}
/**
* Parses the.
*
* @param baseURI the base uri
* @param filename the filename
*/
public static void parse(String baseURI, String filename) {
InputStream in = null;
try {
in = new FileInputStream(filename);
} catch (FileNotFoundException ex) {
System.err.println("File not found: " + filename);
return;
}
parse(baseURI, in);
}
/**
* Parses the.
*
* @param baseURI the base uri
* @param in the in
*/
public static void parse(String baseURI, InputStream in) {
Reader reader = FileUtils.asUTF8(in);
try {
com.hp.hpl.jena.n3.turtle.parser.TurtleParser parser = new com.hp.hpl.jena.n3.turtle.parser.TurtleParser(reader);
// parser.setEventHandler(new TurtleEventDump()) ;
parser.setEventHandler(new Turtle2NTriples(System.out));
parser.setBaseURI(baseURI);
parser.parse();
} catch (ParseException ex) {
throw new TurtleParseException(ex.getMessage());
} catch (TokenMgrError tErr) {
throw new TurtleParseException(tErr.getMessage());
}
catch (TurtleParseException ex) {
throw ex;
}
catch (JenaException ex) {
throw new TurtleParseException(ex.getMessage(), ex);
} catch (Error err) {
throw new TurtleParseException(err.getMessage(), err);
} catch (Throwable th) {
throw new TurtleParseException(th.getMessage(), th);
}
}
/**
* Parses the string.
*
* @param baseURI the base uri
* @param in the in
* @return true, if successful
* @throws TurtleParseException the turtle parse exception
*/
public static boolean parseString(String baseURI, String in) throws TurtleParseException {
Reader reader = new StringReader(in);
// FileUtils.asUTF8(in);
try {
com.hp.hpl.jena.n3.turtle.parser.TurtleParser parser = new com.hp.hpl.jena.n3.turtle.parser.TurtleParser(reader);
// parser.setEventHandler(new TurtleEventDump()) ;
parser.setEventHandler(new Turtle2NTriples(System.out));
parser.setBaseURI(baseURI);
parser.parse();
} catch (ParseException ex) {
throw new TurtleParseException(ex.getMessage());
} catch (TokenMgrError tErr) {
throw new TurtleParseException(tErr.getMessage());
}
catch (TurtleParseException ex) {
throw ex;
}
catch (JenaException ex) {
throw new TurtleParseException(ex.getMessage(), ex);
} catch (Error err) {
throw new TurtleParseException(err.getMessage(), err);
} catch (Throwable th) {
throw new TurtleParseException(th.getMessage(), th);
}
return true;
}
}
/*
* (c) Copyright 2006, 2007, 2008, 2009 Hewlett-Packard Development Company, LP
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer. 2. Redistributions in
* binary form must reproduce the above copyright notice, this list of
* conditions and the following disclaimer in the documentation and/or other
* materials provided with the distribution. 3. The name of the author may not
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/