On 22/09/11 16:21, Laurent Pellegrino wrote:
Hi all,
I am trying to parse a N-Quads file by using the following code:
static int line = 0;
public static void main(String[] args) {
Sink<Quad> sink = new Sink<Quad>() {
@Override
public void send(final Quad quad) {
log.info("line=" + line + ", quad=" + quad);
line++;
}
@Override
public void close() {
}
@Override
public void flush() {
}
};
FileInputStream fis = null;
LangRIOT parser = null;
try {
fis = new FileInputStream("/absolute/path/to/nquads-chunk");
parser = RiotReader.createParserNQuads(fis, sink);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
parser.parse();
}
the file nquads-chun is available from:
http://commondatastorage.googleapis.com/nquads/nquads-chunk
When I run the parser, I get:
Exception in thread "main" org.openjena.riot.RiotException: [line:
574, col: 62] Bad input stream
at
org.openjena.riot.ErrorHandlerFactory$ErrorHandlerStd.fatal(ErrorHandlerFactory.java:110)
at org.openjena.riot.lang.LangEngine.raiseException(LangEngine.java:157)
at org.openjena.riot.lang.LangEngine.nextToken(LangEngine.java:104)
at org.openjena.riot.lang.LangNQuads.parseOne(LangNQuads.java:62)
at org.openjena.riot.lang.LangNQuads.parseOne(LangNQuads.java:22)
at org.openjena.riot.lang.LangNTuple.runParser(LangNTuple.java:58)
at org.openjena.riot.lang.LangBase.parse(LangBase.java:42)
where line 574 seems to be:
<http://my.opera.com/carlOS%20X/xml/foaf#me>
<http://xmlns.com/foaf/0.1/knows>
<http://my.opera.com/allegro_noise/xml/foaf#me>
<http://my.opera.com/carlOS%20X/xml/foaf> .
which seems to respect the NQuads syntax correctly? any idea?
Kind Regards,
Laurent
Laurent,
The work of the parser is done in parser.parse()
You've closed the input stream before the parser is called in the
try-finally block.
Try moving parser.parse(); inside the try{}
parser = RiotReader.createParserNQuads(fis, sink);
parser.parse();
It gets someway because of the heavy read-ahead when the tokenizer is
started.
(error could be improved - the underlying error I get is "bad file
descriptor" but that's on Linux).
Andy