XMLStreamException: ParseError at [row,col]:[338,7] Message: Stream closed

 

I thought I'd share a curious result. I've been experimenting with Jena,
Fuseki and JavaServer Faces.
I use Netbeans as an IDE and a Fuseki instance on my home server, connected
by WiFi to my laptop.
Jena and JSF are running on Tomcat on my laptop, but I have the same result
when I run them directly on the server.

I first populated a JSF select box with a list of resource name and title
using SPARQL. Everything was good, it loaded all the data from the query
into a list and used the list to populate the select list in JSF. This was a
single query and the results was parsed into selectitems in a list. There
are around 100 results returned by the query. All Good.

Next I tried to build a list of objects using the resources returned by the
first query. As each object instantiated itself it sent off a SPARQL query
to Fuseki and populated its attributes. That meant about 100 separate SPARL
queries. It falls over with the error at the top of this message.



If I limit the results in the SPARQL to, say 30, it all works fine. If I try
to instantiate 40 or more objects it falls over.

 

I've discovered sending 100 separate SPARQL queries isn't very efficient and
takes a lot of time, but I'm stumped over why sending more than 40 in
succession causes it to fall over.

 

 

Here is the code that instantiates the objects:



//constructor

 

  public organisation(String org_resource) {

        org_type = new ArrayList();

        setService("http://10.0.0.1:3030/ds/query";);

        this.setOrg_resource(org_resource);

        this.retrieveorg();

    }

 

 

public final void retrieveorg() {

        

 

        String query = "select ?name ?desc ?website where { " +
this.getOrg_resource() + " <http://purl.org/dc/elements/1.1/title> ?name. "

                + this.getOrg_resource() + "
<http://purl.org/dc/elements/1.1/description> ?desc. "

                + this.getOrg_resource() + "
<http://xmlns.com/foaf/0.1/homepage> ?website. "

                + "} ";

 

        Query q = QueryFactory.create(query);

        QueryExecution qe =
QueryExecutionFactory.sparqlService(getService(), q);

 

        ResultSet r = qe.execSelect();

        qe.close();

        if (r.hasNext()) {

 

            QuerySolution s = r.next();

            this.setOrg_name(s.getLiteral("?name").toString());

            this.setOrg_desc(s.getLiteral("?desc").toString());

            this.setOrg_website(s.getLiteral("?website").toString());

        }

    }
//
**************************************************************************

 

 

And the code that calls the constructor and builds the list of objects:


public List getAllOrgs() {

        

        String query = "select ?s where { ?s
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://admoss.info/apr/PoliticalOrganisation>. } limit 90";

 

        ArrayList<organisation> s = new ArrayList();

        Query q = QueryFactory.create(query);

        QueryExecution qe =
QueryExecutionFactory.sparqlService(getService(), q);

        ResultSet r = qe.execSelect();

        qe.close();

        

 

        while (r.hasNext()) {

           

            QuerySolution qs = r.next();

            s.add(new organisation(qs.getResource("?s").toString()));

        }

       

        return s; 

    }



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Reply via email to