Hi Osma, Many thanks for the quick reply. Seems that you're right- no matter how I construct the EntityDefinition object, I always get the same files in the index directory (binary equivalent). So either I don't provide a valid EntityDefinition or I am missing something else. Do you know if I need to explicitly create a Lucene index?
Best Regards Martin ________________________________________ From: Osma Suominen <[email protected]> Sent: Monday, March 21, 2016 11:12 AM To: [email protected] Subject: Re: Geospatial SPARQL queries with Jena Hi Martin, The files you show look like an empty Lucene index. With a grand total of 53+36=90 bytes, there is hardly room for even a single entry. So it seems that your data is not being indexed at all. -Osma 21.03.2016, 12:44, Martin Vachovski kirjoitti: > Hi Andy, > > Sorry for the late reply. > >>>> The code has several things that are not from jena. Where is the data >>>> being loaded into the spatial index? Check the Lucene directory has >>>> actually grown. > > After I execute the code I get three files into the > '/home/martin/spatial_index' folder: > -rw-r--r-- 1 martin martin 53 Mar 21 10:40 segments_1 > -rw-r--r-- 1 martin martin 36 Mar 21 10:40 segments.gen > -rw-r--r-- 1 martin martin 0 Mar 21 10:40 write.lock > > The files are small, but the data that I have contains not too many triples- > as it is set up just for the testing of this feature. > > Best Regards > Martin > > ________________________________________ > From: Andy Seaborne <[email protected]> > Sent: Sunday, March 13, 2016 7:37 PM > To: [email protected] > Subject: Re: Geospatial SPARQL queries with Jena > > Hi there, > > The code has several things that are not from jena. Where is the data > being loaded into the spatial index? Check the Lucene directory has > actually grown. > > > > Dataset baseDataset = DatasetFactory.create(m); > > try { > > Directory dir = FSDirectory.open( new > File("/home/martin/spatial_index")); > > Dataset spatialDataset = > SpatialDatasetFactory.createLucene(baseDataset, dir, entDef); > > just associating the baseDataset with a Directory does not cause > automatic indexing - loading into spatialDataset should cause The lucene > directory to change. > > Andy > > On 11/03/16 14:11, Martin Vachovski wrote: >> Hi All, >> >> >> I am new to this group. >> >> I've being trying to start with geospatial SPARQL queries with Jena, but so >> far no luck. >> >> >> I have a simple Jena model which among other data contains the following: >> >> >> <rdf:RDF >> xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >> xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" >> xmlns:ssn="http://purl.oclc.org/NET/ssnx/ssn#" >> xmlns:xsd="http://www.w3.org/2001/XMLSchema#"> >> >> >> <ssn:ObservationValue >> rdf:about="http://af3.info/ObservationValues/GasCO/1450439142"> >> <geo:location> >> <geo:Point >> rdf:about="http://af3.info/locations/GasCO/1450439142"> >> <geo:lat >> rdf:datatype="http://www.w3.org/2001/XMLSchema#float" >> >35.4</geo:lat> >> <geo:long >> rdf:datatype="http://www.w3.org/2001/XMLSchema#float" >> >32</geo:long> >> </geo:Point> >> </geo:location> >> <!-- some more data here --> >> </ssn:ObservationValue> >> >> >> </rdf:RDF> >> >> >> So I am trying to extract the geo:Point resource using the following Jena >> code: >> >> >> >> private static void geoQuery() >> { >> InitJenaSpatial jenaSpatial = new InitJenaSpatial(); >> jenaSpatial.start(); >> try { >> String queryStr = >> "PREFIX spatial: <http://jena.apache.org/spatial#> " + >> "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> " + >> "PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> " + >> "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> " + >> "PREFIX ssn: <http://purl.oclc.org/NET/ssnx/ssn#>" + >> "SELECT ?loc " + >> "WHERE {?loc spatial:nearby(35.4 32 1000 'km' )}"; >> >> // the object m contains the Jena model with the data >> Model m = SemanticSensorModel.getIntance().getJenaModel(); >> EntityDefinition entDef = new EntityDefinition("ssn:ObservationValue", >> "geo:location"); >> // EntityDefinition entDef = new >> EntityDefinition("<http://af3.info/ObservationValues/GasCO/1450439142>", >> // "<http://af3.info/locations/GasCO/1450439142>"); >> // EntityDefinition entDef = new >> EntityDefinition("<http://purl.oclc.org/NET/ssnx/ssn#ObservationValue>", >> // "<http://www.w3.org/2003/01/geo/wgs84_pos#location>"); >> Dataset baseDataset = DatasetFactory.create(m); >> try { >> Directory dir = FSDirectory.open( new File("/home/martin/spatial_index")); >> Dataset spatialDataset = SpatialDatasetFactory.createLucene(baseDataset, >> dir, entDef); >> Query query = QueryFactory.create(queryStr) ; >> QueryExecution qexec = QueryExecutionFactory.create(query, spatialDataset); >> ResultSet results = qexec.execSelect() ; >> for ( ; results.hasNext() ; ) >> { >> QuerySolution soln = results.nextSolution() ; >> System.out.println(soln.get("loc").toString()); >> } >> } catch (IOException e) { e.printStackTrace(); } >> } >> catch(Exception e ) { System.out.println(e.getMessage()); } >> jenaSpatial.stop(); >> } >> } >> >> The above code doesn't throw any exceptions or errors, but the result object >> is always empty. >> I suspect that my problem is with the construction of EntityDefinition >> entDef but I haven't >> been able to find anything relevant in the Apache Jena's online >> documentation- it contains plain Javadocs. >> >> Sorry for the long source code- I've tried to keep it as short as possible. >> Any help would be much appreciated >> >> Best Regards >> Martin >> >> -- Osma Suominen D.Sc. (Tech), Information Systems Specialist National Library of Finland P.O. Box 26 (Kaikukatu 4) 00014 HELSINGIN YLIOPISTO Tel. +358 50 3199529 [email protected] http://www.nationallibrary.fi
