- From: Taylor Cowan <taylor_cowan@yahoo.com>
- Date: Mon, 4 Feb 2008 14:00:32 -0800 (PST)
- To: semantic-web@w3.org
For those of you working with ARQ, I have some related
experimentation using ARQ 2.5 and an open source RTree
index. The index is built by first looking at the
graph and storing the URI's into an RTree structure
based on the node's latitude and longitude
(wgs84_pos). I used LARQ (a lucene index extension)
as a model and adapted the pattern for spatial
indexing.
geo:nearby(lat lon limit), used in an example query...
PREFIX : <http://example.org/>
PREFIX geo: <java:org.geospatialweb.arqext.
SELECT ?n WHERE { ?s geo:nearby(51.45 -2.5833333 30) .
?s a :Hotel . ?s :name ?n }
nearby() will reduce the graph down to a limited set
of nodes that are "nearest" the given latitude and
longitude, after which you can further restrict the
results, in this example we're looking for only
hotels, and then binding the name to ?n. To run the
extension you'll need to be familiar with running ARQ
in a java dev environment. The advantage of the RTree
is that we're not just filtering the RDF, we're
quickly getting a subset of the graph that is nearest
to our target. It also supports a bounding box style
query:
geo:within(lat lon lat2 lon2)
(lower corner first, then upper corner)
http://geospatialweb.googlecode.com/svn/trunk/jenaext/dist/geospatial-0.0.1.jar
Here's an example of using the functions on a geonames
dump of GB:
http://geospatialweb.googlecode.com/svn/trunk/jenaext/example/ex/Main.java
Data set:
http://geospatialweb.googlecode.com/svn/trunk/jenaext/GB.txt
Extension functions jar (at a minimum you'd need to
add this to your ARQ distribution to run the example):
http://geospatialweb.googlecode.com/svn/trunk/jenaext/dist/geospatial-0.0.1.jar
The ARQ extension implementation is there in the trunk
as well:
http://geospatialweb.googlecode.com/svn/trunk/jenaext/src/org/geospatialweb/arqext/
Notice the index itself is built by first running a
SPARQL query to select candidate nodes:
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT ?s ?lat ?lon
WHERE {?s geo:lat ?lat . ?s geo:long ?lon}
So hypothetically, you could make some small changes
and have the index built upon any ontology that has a
lat/lon value.
Taylor
____________________________________________________________________________________
Never miss a thing. Make Yahoo your home page.
http://www.yahoo.com/r/hs
Received on Monday, 4 February 2008 22:00:45 UTC