Contributing to documentation is a _great_ way to get started. It doesn't require as much in-depth technical knowledge, it's super-helpful, and it can turn up bugs and potential improvements!

ajs6f

Nouwt, B. (Barry) wrote on 6/2/17 3:54 AM:
Hi Marco, yes, I would like to contribute to Apache Jena. At least the documentation, but 
maybe also the source code...since the error message "Server 500" that occurs 
when JTS is required but not active is not really helpful 😊.

However, it would be my first open source contribution so it will probably take 
some time for me to figure out how to do that.

Regards, Barry

-----Original Message-----
From: Marco Neumann [mailto:[email protected]]
Sent: dinsdag 30 mei 2017 18:22
To: [email protected]
Subject: Re: FW: Apache Jena Spatial

you are welcome Barry, would be nice to see a bit more action around the 
jena-spatial project.

despite the good work done in recent months by Andy & team there is room to 
make the sub project more attractive for developers to adopt.

maybe you could help to improve the documentation based on your recent 
experience with the new jena-spatial implementation.

Marco

On Tue, May 30, 2017 at 10:04 AM, Nouwt, B. (Barry) <[email protected]> wrote:
Hi all,

I've also tackled the final issue of constructing the SPARQL query the does 
what I want.

I use the intersectBox predicate as Marco suggested with an infinitely small 
box:

PREFIX spatial: <http://jena.apache.org/spatial#> PREFIX rdfs:
<http://www.w3.org/2000/01/rdf-schema#>

SELECT ?placeName{
        ?place spatial:intersectBox(51.65172 -1.69531 51.65172 -1.69531) .
        ?place rdfs:label ?placeName
}

Which correctly finds this polygon:

airports:EGBB_Fake_In_Box rdf:type airports_sc:LargeAirport ;
    wkt:asWKT "Polygon ((-2.0000 51.2000, 1.0000 51.2000, 1.0000 51.8000, -2.0000 
51.8000, -2.0000 51.2000))"^^wkt:wktLiteral ;
    rdfs:label "Fake in Box Airport (wktLiteral)"
    .

Thanks for all your help, Marco!

Barry
-----Original Message-----
From: Nouwt, B. (Barry) [mailto:[email protected]]
Sent: dinsdag 30 mei 2017 15:12
To: [email protected]
Subject: RE: FW: Apache Jena Spatial

Ok, I've already solved this WKT Polygon issue. Although I added Jts to the 
classpath, I did not activate it in the configuration. I use an Assembler 
definition to create the dataset in Apache Jena Fuseki and had to change my 
dataset Assembler config from:

:definition a spatial:EntityDefinition ;
    ...
    spatial:spatialContextFactory 
"org.locationtech.spatial4j.context.SpatialContextFactory"


to (notice *Jts*):

:definition a spatial:EntityDefinition ;
   ...
    spatial:spatialContextFactory
         "org.locationtech.spatial4j.context.jts.JtsSpatialContextFactory"

Although this is explained quite well in the documentation, I did not realize I 
had to change this in the Assembler file.

Next up: use SPARQL to find all spatial Polygon objects in the RDF dataset in 
which a user-defined GPS coordinate lies. Unfortunately, I cannot just use the 
*nearby* predicate with a (very small) radius.

Regards, Barry

-----Original Message-----
From: Nouwt, B. (Barry) [mailto:[email protected]]
Sent: dinsdag 30 mei 2017 14:24
To: [email protected]
Subject: RE: FW: Apache Jena Spatial

Marco, thanks for your explanation.

I'm currently testing whether I can actually use the WKT format to describe 
spatial objects, but it fails (lat/long values work fine). I've traced the 
error back to this locationtech spatial4j call in this SpatialIndexContext 
class:

Shape shape = SpatialQuery.ctx.readShape(o.getLiteralLexicalForm());

On github:
https://github.com/apache/jena/blob/master/jena-spatial/src/main/java/
org/apache/jena/query/spatial/SpatialIndexContext.java#L99

It returns a 'null' Shape value on this correct WKT polygon: Polygon
((-2.0000 51.2000, 1.0000 51.2000, 1.0000 51.8000, -2.0000 51.8000,
-2.0000 51.2000))

From the code it seems the spatial4j tries to parse this WKT string on multiple 
shape format readers, but cannot find one that returns an actual Shape from it, 
so it returns null. This breaks the code when it tries to add the NULL shape to 
the Lucene index later.

Do I need to configure the spatial4j shapereaders somewhere?

I'm adding spatial4j-0.6.jar and jts-core-1.14.jar dependency to the Fuseki's 
classpath.

Kind regards, Barry

-----Original Message-----
From: Marco Neumann [mailto:[email protected]]
Sent: dinsdag 30 mei 2017 9:29
To: [email protected]
Subject: Re: FW: Apache Jena Spatial

no problem Barry, some of the above could work for you. think about the spatial 
interaction as a relationship between the spatial search object and the 
respective spatial data object. e.g. take interesectBox in the test case it 
builds a spatial search object box and returns among other a match with a 
wktLiteral (Polygon). the interesectBox can be as small or as big as you wish 
it to be. behind the scenes it will filter by MBR before it evaluates candidate 
geometries for exact polygon to box/point interactions.

Marco


On Tue, May 30, 2017 at 3:10 AM, Nouwt, B. (Barry) <[email protected]> wrote:
Hi Marco, sorry for my persistence, but it is still unclear to me how the 
latest apache jena spatial package (3.3.0) can be applied to my use case.

You mention "looking at your requirements it I'd say you will be just fine with the 
current version of jena-spatial.", but I only see the following spatial predicates:

EastPF.java
IntersectsBoxPF.java
IsNearByPF.java
IsWithinBoxPF.java
IsWithinCirclePF.java
NorthPF.java
SouthPF.java
WestPF.java

If I understand correctly, I need the 'Contains' predicate that finds all 
spatial objects that contain the given GPS coordinate. Can I somehow build the 
'contains' from the predicates above? Maybe a combination of North, South, West 
and East?

In other words, which of the above list of available spatial predicates would 
you say I need to use?

Thanks and regards,

Barry

-----Original Message-----
From: Marco Neumann [mailto:[email protected]]
Sent: maandag 29 mei 2017 23:38
To: [email protected]
Subject: Re: FW: Apache Jena Spatial

here is the data

https://github.com/apache/jena/blob/master/jena-spatial/src/test/reso
u
rces/geoarq-data-1.ttl

and here are the tests

https://github.com/apache/jena/blob/master/jena-spatial/src/main/java
/
examples/JenaSpatialExample1.java




On Mon, May 29, 2017 at 5:34 PM, Nouwt, B. (Barry) <[email protected]> wrote:
Hi Marco,



Ok, so, I will not need to implement any spatial predicates myself?
Which existing spatial predicate should I use in my SPARQL query for my 
‘contains’
requirement?



Could you maybe send me your quick test? That would probably be helpful.



Thanks again!

Barry



Verzonden vanaf mijn Windows 10-telefoon



Van: Marco Neumann
Verzonden: maandag 29 mei 2017 23:12


Aan: [email protected]
Onderwerp: Re: FW: Apache Jena Spatial



looking at your requirements it I'd say you will be just fine with
the current version of jena-spatial. I was thinking more in terms of
number of spatial objects to be indexed as a possible issue.

I just did a quick test with the latest release 3.3.0 and and it
seems to work for your needs. ignore the spatial documentation for
now and work with code directly. the linked documentation seems to
be out of sync with the current implementation of jena-spatial.

Marco


On Mon, May 29, 2017 at 1:24 PM, Nouwt, B. (Barry)
<[email protected]>
wrote:
Hi Marco, thanks for your reply!



I’ve indeed included the JTS library, but haven’t tested the more
advanced
(WKT) features yet…



My (current) requirements are:

Describe spatial objects in RDF using WKT polygons.
Fire a spatial SPARQL query with a given GPS coordinate (I.e.
single
point)
Retrieve all spatial RDF objects that contain this given GPS coordinate.



Do I understand you correctly that the current spatial
implementation does not support my requirements? So, there is no
predefined (combination of) predicate like nearby that I can use?



So, then I need to put more effort in it myself. I’ve seen the ‘simple’
implementations of the nearby (etc) predicate in jena-spatial…
would implementing the contains be similar? I am an experienced
Java developer, but never did spatial calculations before.



Regards, Barry







Verzonden vanaf mijn Windows 10-telefoon



Van: Marco Neumann
Verzonden: maandag 29 mei 2017 18:39
Aan: [email protected]
Onderwerp: Re: FW: Apache Jena Spatial



Barry,

the jena-spatial implementation has seen a couple of versions and
iterations of versions over last couple of years.

To perform and test for detailed spatial object interactions on
polygons the current apache lucene spatial implementation
(Lucene6.4.1) requires the JTS library.

and of course you can always implement your own or you can just
build your own spatial filter in sparql to detect polygon / point
intersections. it requires a bit more effort to detect polygon /
polygon interactions though.
it depends on your requirements.

Marco



On Mon, May 29, 2017 at 11:28 AM, Nouwt, B. (Barry)
<[email protected]>
wrote:

Hi,



In one of our projects we would like to use SPARQL to do spatial
searches to find all spatial objects (described by a polygon) that
contain a particular given GPS coordinate. I can successfully
execute the following Apache Jena Spatial query on the test data:



PREFIX spatial: <http://jena.apache.org/spatial#
<http://jena.apache.org/spatial>>

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#
<http://www.w3.org/2000/01/rdf-schema>>



SELECT ?placeName

{

    ?place spatial:nearby (51.46 2.6 *1000* 'km') .

    ?place rdfs:label ?placeName

}



However, the *‘nearby’* predicate does not fit my usecase and I
cannot find one that does in this list:



https://jena.apache.org/documentation/query/spatial-
query.html#property-function-library



I think I need the ‘Contains’ predicate as described here:



http://edndoc.esri.com/arcsde/9.1/general_topics/understand_
spatial_relations.htm#Contains



but I it seems like it is not supported. Can anyone confirm that?



What other options do I have to get the usecase described above working?
Can I implement the ‘Contains’ behavior myself (although I have no
geo/spatial experience) and contribute it to the Apache Jena
Spatial? Can I somehow mimic the contains behavior with regular
SPARQL?



Thanks in advance!





B. (Barry) Nouwt
Medior Innovator Semantische Technologie Connected Business

T +31 (0)88 866 56 91
M +31 (0)64 977 53 56
E [email protected]

Location <http://www.tno.nl/locaties/SB>



<http://www.tno.nl/>

This message may contain information that is not intended for you.
If you are not the addressee or if this message was sent to you by
mistake, you are requested to inform the sender and delete the
message. TNO accepts no liability for the content of this e-mail,
for the manner in which you use it and for damage of any kind
resulting from the risks inherent to the electronic transmission of messages.








--


---
Marco Neumann
KONA



This message may contain information that is not intended for you.
If you are not the addressee or if this message was sent to you by
mistake, you are requested to inform the sender and delete the
message. TNO accepts no liability for the content of this e-mail,
for the manner in which you use it and for damage of any kind
resulting from the risks inherent to the electronic transmission of messages.




--


---
Marco Neumann
KONA



This message may contain information that is not intended for you.
If you are not the addressee or if this message was sent to you by
mistake, you are requested to inform the sender and delete the
message. TNO accepts no liability for the content of this e-mail,
for the manner in which you use it and for damage of any kind
resulting from the risks inherent to the electronic transmission of messages.




--


---
Marco Neumann
KONA



--


---
Marco Neumann
KONA



Reply via email to