Hi Andy, The link about the spatial relationships you provided is very interesting. I've tried to study Lucene to figure out whether they are possible to be implemented. Shall we use Lucene 4.x or 3.x? For the current release of Lucene 4.2.1, it provides a high level abstraction for spatial query usage. - SpatialOperation [1]: compares a stored geometry to a supplied geometry. such as "IsWithin" and "Intersects". Actually, all of them are not supported. - SpatialStrategy [2]: encapsulates an approach to indexing and searching based on shapes. Different implementations will support different features. There're 3 implementations [3] now: PointVectorStrategy, RecursivePrefixTreeStrategy and TermQueryPrefixTreeStrategy. For example, PointVectorStrategy supports only "IsWithin" for Rectangle or Circle, while RecursivePrefixTreeStrategy can caculate "Intersects" of any kinds of Shapes. I'd like to make full use of Lucene to make jena-text support as many spatial relationships as possible. On the other hand, I can also make new SpatialOperations like "Northing/Westing" mentioned in [4] that are not available in Lucene. To wrap things up, here're the jena-spatial features that I can do this summer:
1) ?A -> within -> B A: Point Var B: Rectangle or Circle Approach: PointVectorStrategy directly supports this 2) A -> nearby ->?B, C A: Point B: Point Var C: radius Approach: RecursivePrefixTreeStrategy makes SpatialOperation.Intersects for the Circle with the center of A and the radius of C 3) A -> intersects -> ?B A: any Shape B: non-Point Shape Var Approach: RecursivePrefixTreeStrategy directly supports this (note: not tested) 4) A -> intersects -> ?B A: any Shape B: Point Var Approach: TermQueryPrefixTreeStrategy directly supports this 5) A -> northing/southing/easting/westing -> B A: Point B: Point Approach: use rangeQuery, or RecursivePrefixTreeStrategy makes SpatialOperation.Intersects of north/south/east/west Rectangle 6) A -> disjoint ->B A: Rectangle B: Rectangle Approach: PointVectorStrategy directly supports this (note: it doesn't handle dateline cross) They are from a developer's view of whether it's possible to be implemented. It's grateful to hear any comments from users' opinions. Are they enough or useless for basic spatial queries? For the Fuseki task, I don't think it's suitable for me to work on this summer. Just like I mentioned in the first e-mail, I'm not a web application development guy. It would take some time for me to study Apache Velocity. I'm not very familiar with the client-side stuff of javascript/css. In this 3-month GSoC project, I'd like to be more focused on the jena-spatial design and development. If more spatial relationships are required to be implemented, I would be happy to work on. I'll come up with a project proposal if it's basically OK. Thanks for your consideration! Best regards, Ying Jiang [1] http://lucene.apache.org/core/4_2_1/spatial/org/apache/lucene/spatial/query/SpatialOperation.html [2] http://lucene.apache.org/core/4_2_1/spatial/org/apache/lucene/spatial/SpatialStrategy.html [3] http://lucene.apache.org/core/4_2_1/spatial/overview-tree.html [4] http://beta.data.ordnancesurvey.co.uk/ontology/spatialrelations/ On Fri, Apr 26, 2013 at 8:07 PM, Andy Seaborne <a...@apache.org> wrote: > On 26/04/13 04:34, Ying Jiang wrote: >> >> Hi Andy, >> >> Thanks for your explanations! I've got the idea of jena-spatial. I can >> create it following the way of jena-text, with 2 implementations of >> "nearby" and "within" at least. It's OK for this part. > > > This is interesting: > > http://beta.data.ordnancesurvey.co.uk/ontology/spatialrelations/ > > other spatial relationships (regions not just points) but less that full > GeoSPARQL. > > >> >> As to the Fuseki task, it does not aim at jena-spatial, is it? Do you >> mean the other Jena GSoC projects [1] [2]? I've checked the source >> code of Fuseki UI pages. Could you tell me what's the technology, e.g. >> "sparql.tpl"? What's "tpl"? > > > No - the Fuseki tasks are not jena-spatial related. It should be possible > to have a Fuseki server with spatial support by simply adding it to the > build/classpath. > > The .tpl files are Apache Velocity. Usually that's .vm but I thought > making the external name tied to the internal technology was a bad idea for > a server side technology (may, in theory, want to change the templating > system - they were JSPs). > > Andy > > >> >> [1] https://issues.apache.org/jira/browse/JENA-420 >> [2] https://issues.apache.org/jira/browse/JENA-427 >> >> Best regards, >> Ying Jiang > >