On Monday 15 December 2008 18:15:38 Hugh Williams wrote: > Can you provide a simple dataset and test program to recreate this > problem, as it we can see the problem first hand then it can be fixed ?
Now I have tried to provide a minimal example all day to see if I can reproduce the problem with a minimal amount of data, and a minimal servlet, but I have failed. The obvious way to produce the minimal dataset was to run the query against the old endpoint, which would give me RDF/XML-ABBREV that represented the expected graph. So that's what I did, and I have attached that expected file. And guess what, when I stuff this into Virtuoso, it works just as expected (except for the namespace prefixes, but they doesn't matter)! When I reload my entire dataset, then it falls back to the old behaviour. In this case, the serialisation which in RDF/XML-ABBREV is 6.4 KB becomes more than 2 MB, so this is a big deal, and that's just surplus XML markup, it is actually less data. So, I have tried to load just smaller parts of the dataset, but that's been unsuccessful too... I'm not sure the problem is in any Virtuoso code at all. As previously stated, I have verified that the model resulting from the query execution contains the triples that are missing in the final serialised form. I attach a stripped down version of the servlet that does the serialisation. As you can see, there is some code there that's commented out that will list the rdf:types. These are missing from the serialisation. Even though I have failed to provide a stripped down example, this is all open source and code and data are on the web. To load the whole dataset, you would need: https://submarine.computas.com/sublima/trunk/blocks/sublima-app/src/main/resources/rdf-data/sublima-ns.ttl https://submarine.computas.com/sublima/trunk/blocks/sublima-app/src/main/resources/rdf-data/smil-test-data.ttl https://submarine.computas.com/sublima/trunk/blocks/sublima-app/src/main/resources/rdf-data/lingvoj-excerpt.rdf https://submarine.computas.com/sublima/trunk/blocks/sublima-app/src/main/resources/rdf-data/information-model.ttl I used the following statements to import them: SQL> ttlp (file_to_string_output ('/usr/local/src/sublima/blocks/sublima-app/src/main/resources/rdf-data/information-model.ttl'), 'http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/', 'smiltest', 0); Done. -- 283 msec. SQL> ttlp (file_to_string_output ('/usr/local/src/sublima/blocks/sublima-app/src/main/resources/rdf-data/smil-test-data.ttl'), 'http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/', 'smiltest', 0); Done. -- 11990 msec. SQL> ttlp (file_to_string_output ('/usr/local/src/sublima/blocks/sublima-app/src/main/resources/rdf-data/sublima-ns.ttl'), 'http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/', 'smiltest', 0); Done. -- 33 msec. SQL> DB.DBA.RDF_LOAD_RDFXML (file_to_string ('/usr/local/src/sublima/blocks/sublima-app/src/main/resources/rdf-data/lingvoj-excerpt.rdf'), 'http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/', 'smiltest'); The attached servlet can also be found in (a work in progress) https://submarine.computas.com/mediasone-maven/trunk/backend/ I'm really sorry I couldn't find something that's easier to debug, but I wanted to share the status with you nevertheless. I'll continue to work on this problem. Kind regards Kjetil Kjernsmo -- Senior Knowledge Engineer Mobile: +47 986 48 234 Email: kjetil.kjern...@computas.com Web: http://www.computas.com/ | SHARE YOUR KNOWLEDGE | Computas AS PO Box 482, N-1327 Lysaker | Phone:+47 6783 1000 | Fax:+47 6783 1001
<?xml version="1.0"?> <rdf:RDF xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:lingvoj="http://www.lingvoj.org/ontology#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:user="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/user/" xmlns:swrl="http://www.w3.org/2003/11/swrl#" xmlns:resource="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/resource/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/" xmlns:status="http://sublima.computas.com/status/" xmlns:topic="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/topic/" xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#" xmlns:swrlb="http://www.w3.org/2003/11/swrlb#" xmlns:p1="http://xmlns.computas.com/sublima-information-model#" xmlns:dct="http://purl.org/dc/terms/" xmlns:agent="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/agent/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:wdr="http://www.w3.org/2007/05/powder#" xmlns:http="http://www.w3.org/2007/ont/http#" xmlns:sioc="http://rdfs.org/sioc/ns#" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:sub="http://xmlns.computas.com/sublima#"> <rdfs:Class rdf:about="http://xmlns.computas.com/sublima#Resource"> <owl:unionOf rdf:resource="http://rdfs.org/sioc/ns#Site"/> <owl:unionOf rdf:resource="http://rdfs.org/sioc/ns#Item"/> <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/> </rdfs:Class> <sub:Resource rdf:about="http://www.kanalen.org/vitidiga/"> <sub:url rdf:resource="http://www.kanalen.org/vitidiga/"/> <dct:title xml:lang="no">Vi tidiga - född för tidigt </dct:title> <wdr:describedBy> <wdr:DR rdf:about="http://sublima.computas.com/status/godkjent_av_administrator"> <rdfs:label xml:lang="no">godkjent av administrator</rdfs:label> <rdfs:label xml:lang="en">approved by administrator</rdfs:label> </wdr:DR> </wdr:describedBy> <sub:committer> <sioc:User rdf:about="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/user/det_usr00022"> <rdfs:label xml:lang="no">Helena Hallgren</rdfs:label> </sioc:User> </sub:committer> <dct:language> <lingvoj:Lingvo rdf:about="http://www.lingvoj.org/lang/sv"> <lingvoj:iso3>swe</lingvoj:iso3> <rdfs:label xml:lang="se">Ruoŧagiella</rdfs:label> <rdfs:label xml:lang="en">Swedish</rdfs:label> <lingvoj:iso2t>swe</lingvoj:iso2t> <owl:sameAs rdf:resource="http://sw.cyc.com/2006/07/27/cyc/SwedishLanguage"/> <owl:sameAs rdf:resource="http://dbpedia.org/resource/Swedish_language"/> <rdfs:label xml:lang="sv">Svenska</rdfs:label> <rdfs:label xml:lang="no">Svensk</rdfs:label> <rdfs:label xml:lang="nn">Svensk</rdfs:label> <rdfs:label xml:lang="da">Svensk</rdfs:label> <owl:sameAs rdf:resource="http://psi.oasis-open.org/iso/639/#swe"/> <rdfs:label xml:lang="fi">Ruotsin kieli</rdfs:label> <lingvoj:iso1>sv</lingvoj:iso1> <foaf:depiction rdf:resource="http://upload.wikimedia.org/wikipedia/commons/4/4c/Flag_of_Sweden.svg"/> </lingvoj:Lingvo> </dct:language> <dct:identifier rdf:resource="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/resource/vi_tidiga__foedd_foer_tidigt_004314"/> <dct:subject> <skos:Concept rdf:about="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/topic/topic000325"> <wdr:describedBy rdf:resource="http://sublima.computas.com/status/godkjent_av_administrator"/> <skos:altLabel xml:lang="da">Præmature børn </skos:altLabel> <skos:altLabel xml:lang="sv">Prematura barn </skos:altLabel> <sub:classification rdf:parseType="Literal">D007234</sub:classification> <skos:prefLabel xml:lang="sv">För tidligt födda barn </skos:prefLabel> <skos:note xml:lang="no">Premature barn </skos:note> <skos:broader rdf:resource="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/topic/topic000273"/> <sub:isSubjectOf rdf:resource="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/resource/prematur_foedsel_og_premature_barn_001005"/> <skos:related rdf:resource="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/topic/Concept_50"/> <skos:altLabel xml:lang="no">Premature barn </skos:altLabel> <skos:prefLabel xml:lang="da">For tidligt fødte børn </skos:prefLabel> <skos:prefLabel xml:lang="no">For tidlig fødte barn </skos:prefLabel> <sub:isSubjectOf rdf:resource="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/resource/foer_tidigt_vaerkarbete_007125"/> <sub:committer rdf:resource="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/user/det_usr00015"/> <skos:inScheme rdf:resource="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/topic/"/> </skos:Concept> </dct:subject> <dct:description xml:lang="no">Vi tidiga är en mötesplats för föräldrar till för tidigt födda barn. Syftet med sidorna är att hjälpa nordiska föräldrar till för tidigt födda barn att hitta information - och ge en möjlighet att stötta varandra. </dct:description> <dct:dateAccepted rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime" >2004-09-13T14:32:37</dct:dateAccepted> <dct:publisher> <foaf:Agent rdf:about="http://rabbit.computas.int:8180/sublima-webapp-1.0-SNAPSHOT/agent/Frldrakanalen"> <foaf:name xml:lang="no">Föräldrakanalen </foaf:name> <dct:description xml:lang="no">Föräldrakanalen tillhör kanalen.org och det är en familjesajt med faktasidor, diskussionsforum och chat. </dct:description> <dct:description xml:lang="no">Föräldrakanalen är en del av kanalen.org och är en föräldrasajt för föräldrar av föräldrar som startade 1997. </dct:description> <dct:description xml:lang="no">Vi Tidiga är en fristående sidokanal till "Föräldrakanalen". Vi Tidiga är skapad av ideella krafter utan kommersiellt intresse, av vanliga föräldrar. Föräldrakanalen är en föräldrasajt med faktasidor, diskussionsforum och chat. </dct:description> </foaf:Agent> </dct:publisher> </sub:Resource> </rdf:RDF>
package com.computas.mediasone.backend; import com.hp.hpl.jena.rdf.model.*; import com.hp.hpl.jena.query.Query; import com.hp.hpl.jena.query.QueryFactory; import com.hp.hpl.jena.query.QueryException; import virtuoso.jena.driver.*; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.ServletException; import javax.servlet.ServletContext; import javax.servlet.ServletConfig; import java.io.PrintWriter; import java.io.IOException; // import org.apache.log4j.Logger; /** * Servlet to create a simple Jena-based endpoint to serialize RDF/XML-ABBREV. * User: kkj * Date: Nov 13, 2008 * Time: 9:48:49 AM */ public class VirtJenaEndpoint extends HttpServlet { static final long serialVersionUID = 1; private String dbURL = "jdbc:virtuoso://tigger.computas.int:1111"; private String dbName="dba"; private String dbPassword="dba"; /* public void init(ServletConfig config) throws ServletException { super.init(config); ServletContext context = getServletContext(); dbURL = context.getInitParameter("database.url"); dbName = context.getInitParameter("database.username"); dbPassword = context.getInitParameter("database.password"); } */ // static Logger logger = Logger.getLogger(VirtJenaEndpoint.class); public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { VirtGraph vGraph = new VirtGraph(dbURL, dbName, dbPassword); Query sparql; try { sparql = QueryFactory.create(req.getParameterValues("query")[0]); } catch (QueryException e) { res.sendError(400, "The SPARQL query was malformed: " + e.getMessage()); e.printStackTrace(); return; } VirtuosoQueryExecution exec = VirtuosoQueryExecutionFactory.create(sparql, vGraph); Model model = exec.execDescribe(); /* Model test = ModelFactory.createDefaultModel(); Property p = test.createProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"); NodeIterator nodes = model.listObjectsOfProperty(p); while (nodes.hasNext()) { logger.trace(nodes.nextNode().toString()); } */ res.setContentType("application/rdf+xml;charset=utf-8"); PrintWriter out = res.getWriter(); model.write(out, "RDF/XML-ABBREV"); out.close(); } }