You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Laurent Pellegrino <la...@gmail.com> on 2011/09/22 17:21:12 UTC
org.openjena.riot.RiotException: Bad input stream (Nquads)
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
Re: org.openjena.riot.RiotException: Bad input stream (Nquads)
Posted by Laurent Pellegrino <la...@gmail.com>.
Indeed, I am such a scatterbrain. Thanks a lot Andy!
On Thu, Sep 22, 2011 at 6:18 PM, Andy Seaborne <an...@apache.org> wrote:
> 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
>
>
Re: org.openjena.riot.RiotException: Bad input stream (Nquads)
Posted by Andy Seaborne <an...@apache.org>.
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