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