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