Discussion:
Complex SPARQL Query
Ullah, Izhar
2017-03-10 01:03:30 UTC
Permalink
Hi all,


I have a question related to SPARQL query which is a bit complex one. I would appreciate if someone could help me out. I have developed an ontology in Protege in which I have imported the GeoSPARQL Ontology. I have 15 Sensing Nodes with their corresponding Point(longitude latitude) geometries given below:


Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.








node



geo



gwkt



1


enviot:A0_SoilSensingNode<http://localhost:7200/resource/enviot/A0_SoilSensingNode>


enviot:A0_Geometry<http://localhost:7200/resource/enviot/A0_Geometry>


"POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


2


enviot:A1_SoilSensingNode<http://localhost:7200/resource/enviot/A1_SoilSensingNode>


enviot:A1_Geometry<http://localhost:7200/resource/enviot/A1_Geometry>


"POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


3


enviot:A2_SoilSensingNode<http://localhost:7200/resource/enviot/A2_SoilSensingNode>


enviot:A2_Geometry<http://localhost:7200/resource/enviot/A2_Geometry>


"POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


4


enviot:A3_SoilSensingNode<http://localhost:7200/resource/enviot/A3_SoilSensingNode>


enviot:A3_Geometry<http://localhost:7200/resource/enviot/A3_Geometry>


"POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


5


enviot:A5_SoilSensingNode<http://localhost:7200/resource/enviot/A5_SoilSensingNode>


enviot:A5_Geometry<http://localhost:7200/resource/enviot/A5_Geometry>


"POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


6


enviot:A6_SoilSensingNode<http://localhost:7200/resource/enviot/A6_SoilSensingNode>


enviot:A6_Geometry<http://localhost:7200/resource/enviot/A6_Geometry>


"POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


7


enviot:A7_SoilSensingNode<http://localhost:7200/resource/enviot/A7_SoilSensingNode>


enviot:A7_Geometry<http://localhost:7200/resource/enviot/A7_Geometry>


"POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


8


enviot:A8_SoilSensingNode<http://localhost:7200/resource/enviot/A8_SoilSensingNode>


enviot:A8_Geometry<http://localhost:7200/resource/enviot/A8_Geometry>


"POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


9


enviot:A9_SoilSensingNode<http://localhost:7200/resource/enviot/A9_SoilSensingNode>


enviot:A9_Geometry<http://localhost:7200/resource/enviot/A9_Geometry>


"POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


10


enviot:AA_SoilSensingNode<http://localhost:7200/resource/enviot/AA_SoilSensingNode>


enviot:AA_Geometry<http://localhost:7200/resource/enviot/AA_Geometry>


"POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


11


enviot:AB_SoilSensingNode<http://localhost:7200/resource/enviot/AB_SoilSensingNode>


enviot:AB_Geometry<http://localhost:7200/resource/enviot/AB_Geometry>


"POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


12


enviot:AC_SoilSensingNode<http://localhost:7200/resource/enviot/AC_SoilSensingNode>


enviot:AC_Geometry<http://localhost:7200/resource/enviot/AC_Geometry>


"POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


13


enviot:AD_SoilSensingNode<http://localhost:7200/resource/enviot/AD_SoilSensingNode>


enviot:AD_Geometry<http://localhost:7200/resource/enviot/AD_Geometry>


"POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


14


enviot:AE_SoilSensingNode<http://localhost:7200/resource/enviot/AE_SoilSensingNode>


enviot:AE_Geometry<http://localhost:7200/resource/enviot/AE_Geometry>


"POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


15


enviot:AF_SoilSensingNode<http://localhost:7200/resource/enviot/AF_SoilSensingNode>


enviot:AF_Geometry<http://localhost:7200/resource/enviot/AF_Geometry>


"POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>




These sensing nodes are deployed in a field which is modelled in the GeoSPARQL ontologies as 'Field' which is the subClass of Feature. Further, 'Field' has got three sub-features which are modelled as sub-classes named Hilltop, Swale and Riverbank having their geometries like 'Line String', 'Polygon' and 'Line String' respectively along with their geometric coordinates given below:



Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.








feature



fgeo



fwkt



1


enviot:A_Hilltop<http://localhost:7200/resource/enviot/A_Hilltop>


enviot:A_HillTopLineGeometry<http://localhost:7200/resource/enviot/A_HillTopLineGeometry>


"LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


2


enviot:A_Riverbank<http://localhost:7200/resource/enviot/A_Riverbank>


enviot:A_RiverbankLineGeometry<http://localhost:7200/resource/enviot/A_RiverbankLineGeometry>


"LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


3


enviot:A_Swale<http://localhost:7200/resource/enviot/A_Swale>


enviot:A_SwalePolygonGeometry<http://localhost:7200/resource/enviot/A_SwalePolygonGeometry>


"POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>

I



NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.


Now my question is:


Which geographic feature contains the maximum number of soil sensing nodes?

The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes.


I would be really grateful if someone could give me any idea/solution how to retrieve this?


If you require any further information please let me know.


Many thanks in advance.


Best regards,


Izhar
Ullah, Izhar
2017-03-10 01:23:27 UTC
Permalink
My apologies... Please see attached the same question I sent in my last email because the format of the tables in my last email was distorted.

Cheers,

Izhar
________________________________________
From: Ullah, Izhar [***@lancaster.ac.uk]
Sent: 10 March 2017 01:03
To: ***@jena.apache.org
Subject: Re: Complex SPARQL Query

Hi all,


I have a question related to SPARQL query which is a bit complex one. I would appreciate if someone could help me out. I have developed an ontology in Protege in which I have imported the GeoSPARQL Ontology. I have 15 Sensing Nodes with their corresponding Point(longitude latitude) geometries given below:


Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.








node



geo



gwkt



1


enviot:A0_SoilSensingNode<http://localhost:7200/resource/enviot/A0_SoilSensingNode>


enviot:A0_Geometry<http://localhost:7200/resource/enviot/A0_Geometry>


"POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


2


enviot:A1_SoilSensingNode<http://localhost:7200/resource/enviot/A1_SoilSensingNode>


enviot:A1_Geometry<http://localhost:7200/resource/enviot/A1_Geometry>


"POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


3


enviot:A2_SoilSensingNode<http://localhost:7200/resource/enviot/A2_SoilSensingNode>


enviot:A2_Geometry<http://localhost:7200/resource/enviot/A2_Geometry>


"POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


4


enviot:A3_SoilSensingNode<http://localhost:7200/resource/enviot/A3_SoilSensingNode>


enviot:A3_Geometry<http://localhost:7200/resource/enviot/A3_Geometry>


"POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


5


enviot:A5_SoilSensingNode<http://localhost:7200/resource/enviot/A5_SoilSensingNode>


enviot:A5_Geometry<http://localhost:7200/resource/enviot/A5_Geometry>


"POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


6


enviot:A6_SoilSensingNode<http://localhost:7200/resource/enviot/A6_SoilSensingNode>


enviot:A6_Geometry<http://localhost:7200/resource/enviot/A6_Geometry>


"POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


7


enviot:A7_SoilSensingNode<http://localhost:7200/resource/enviot/A7_SoilSensingNode>


enviot:A7_Geometry<http://localhost:7200/resource/enviot/A7_Geometry>


"POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


8


enviot:A8_SoilSensingNode<http://localhost:7200/resource/enviot/A8_SoilSensingNode>


enviot:A8_Geometry<http://localhost:7200/resource/enviot/A8_Geometry>


"POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


9


enviot:A9_SoilSensingNode<http://localhost:7200/resource/enviot/A9_SoilSensingNode>


enviot:A9_Geometry<http://localhost:7200/resource/enviot/A9_Geometry>


"POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


10


enviot:AA_SoilSensingNode<http://localhost:7200/resource/enviot/AA_SoilSensingNode>


enviot:AA_Geometry<http://localhost:7200/resource/enviot/AA_Geometry>


"POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


11


enviot:AB_SoilSensingNode<http://localhost:7200/resource/enviot/AB_SoilSensingNode>


enviot:AB_Geometry<http://localhost:7200/resource/enviot/AB_Geometry>


"POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


12


enviot:AC_SoilSensingNode<http://localhost:7200/resource/enviot/AC_SoilSensingNode>


enviot:AC_Geometry<http://localhost:7200/resource/enviot/AC_Geometry>


"POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


13


enviot:AD_SoilSensingNode<http://localhost:7200/resource/enviot/AD_SoilSensingNode>


enviot:AD_Geometry<http://localhost:7200/resource/enviot/AD_Geometry>


"POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


14


enviot:AE_SoilSensingNode<http://localhost:7200/resource/enviot/AE_SoilSensingNode>


enviot:AE_Geometry<http://localhost:7200/resource/enviot/AE_Geometry>


"POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


15


enviot:AF_SoilSensingNode<http://localhost:7200/resource/enviot/AF_SoilSensingNode>


enviot:AF_Geometry<http://localhost:7200/resource/enviot/AF_Geometry>


"POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>




These sensing nodes are deployed in a field which is modelled in the GeoSPARQL ontologies as 'Field' which is the subClass of Feature. Further, 'Field' has got three sub-features which are modelled as sub-classes named Hilltop, Swale and Riverbank having their geometries like 'Line String', 'Polygon' and 'Line String' respectively along with their geometric coordinates given below:



Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.








feature



fgeo



fwkt



1


enviot:A_Hilltop<http://localhost:7200/resource/enviot/A_Hilltop>


enviot:A_HillTopLineGeometry<http://localhost:7200/resource/enviot/A_HillTopLineGeometry>


"LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


2


enviot:A_Riverbank<http://localhost:7200/resource/enviot/A_Riverbank>


enviot:A_RiverbankLineGeometry<http://localhost:7200/resource/enviot/A_RiverbankLineGeometry>


"LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


3


enviot:A_Swale<http://localhost:7200/resource/enviot/A_Swale>


enviot:A_SwalePolygonGeometry<http://localhost:7200/resource/enviot/A_SwalePolygonGeometry>


"POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>

I



NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.


Now my question is:


Which geographic feature contains the maximum number of soil sensing nodes?

The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes.


I would be really grateful if someone could give me any idea/solution how to retrieve this?


If you require any further information please let me know.


Many thanks in advance.


Best regards,


Izhar
Lorenz B.
2017-03-10 07:45:55 UTC
Permalink
Attachments do not work on this mailing list. Please use HTML formatting
or link to something like Pastebin or Gist if you're not able do make it
readable here
Post by Ullah, Izhar
My apologies... Please see attached the same question I sent in my last email because the format of the tables in my last email was distorted.
Cheers,
Izhar
________________________________________
Sent: 10 March 2017 01:03
Subject: Re: Complex SPARQL Query
Hi all,
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node
geo
gwkt
1
enviot:A0_SoilSensingNode<http://localhost:7200/resource/enviot/A0_SoilSensingNode>
enviot:A0_Geometry<http://localhost:7200/resource/enviot/A0_Geometry>
"POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A1_SoilSensingNode<http://localhost:7200/resource/enviot/A1_SoilSensingNode>
enviot:A1_Geometry<http://localhost:7200/resource/enviot/A1_Geometry>
"POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A2_SoilSensingNode<http://localhost:7200/resource/enviot/A2_SoilSensingNode>
enviot:A2_Geometry<http://localhost:7200/resource/enviot/A2_Geometry>
"POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
4
enviot:A3_SoilSensingNode<http://localhost:7200/resource/enviot/A3_SoilSensingNode>
enviot:A3_Geometry<http://localhost:7200/resource/enviot/A3_Geometry>
"POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
5
enviot:A5_SoilSensingNode<http://localhost:7200/resource/enviot/A5_SoilSensingNode>
enviot:A5_Geometry<http://localhost:7200/resource/enviot/A5_Geometry>
"POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
6
enviot:A6_SoilSensingNode<http://localhost:7200/resource/enviot/A6_SoilSensingNode>
enviot:A6_Geometry<http://localhost:7200/resource/enviot/A6_Geometry>
"POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
7
enviot:A7_SoilSensingNode<http://localhost:7200/resource/enviot/A7_SoilSensingNode>
enviot:A7_Geometry<http://localhost:7200/resource/enviot/A7_Geometry>
"POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
8
enviot:A8_SoilSensingNode<http://localhost:7200/resource/enviot/A8_SoilSensingNode>
enviot:A8_Geometry<http://localhost:7200/resource/enviot/A8_Geometry>
"POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
9
enviot:A9_SoilSensingNode<http://localhost:7200/resource/enviot/A9_SoilSensingNode>
enviot:A9_Geometry<http://localhost:7200/resource/enviot/A9_Geometry>
"POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
10
enviot:AA_SoilSensingNode<http://localhost:7200/resource/enviot/AA_SoilSensingNode>
enviot:AA_Geometry<http://localhost:7200/resource/enviot/AA_Geometry>
"POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
11
enviot:AB_SoilSensingNode<http://localhost:7200/resource/enviot/AB_SoilSensingNode>
enviot:AB_Geometry<http://localhost:7200/resource/enviot/AB_Geometry>
"POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
12
enviot:AC_SoilSensingNode<http://localhost:7200/resource/enviot/AC_SoilSensingNode>
enviot:AC_Geometry<http://localhost:7200/resource/enviot/AC_Geometry>
"POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
13
enviot:AD_SoilSensingNode<http://localhost:7200/resource/enviot/AD_SoilSensingNode>
enviot:AD_Geometry<http://localhost:7200/resource/enviot/AD_Geometry>
"POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
14
enviot:AE_SoilSensingNode<http://localhost:7200/resource/enviot/AE_SoilSensingNode>
enviot:AE_Geometry<http://localhost:7200/resource/enviot/AE_Geometry>
"POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
15
enviot:AF_SoilSensingNode<http://localhost:7200/resource/enviot/AF_SoilSensingNode>
enviot:AF_Geometry<http://localhost:7200/resource/enviot/AF_Geometry>
"POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature
fgeo
fwkt
1
enviot:A_Hilltop<http://localhost:7200/resource/enviot/A_Hilltop>
enviot:A_HillTopLineGeometry<http://localhost:7200/resource/enviot/A_HillTopLineGeometry>
"LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A_Riverbank<http://localhost:7200/resource/enviot/A_Riverbank>
enviot:A_RiverbankLineGeometry<http://localhost:7200/resource/enviot/A_RiverbankLineGeometry>
"LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A_Swale<http://localhost:7200/resource/enviot/A_Swale>
enviot:A_SwalePolygonGeometry<http://localhost:7200/resource/enviot/A_SwalePolygonGeometry>
"POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
I
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes.
I would be really grateful if someone could give me any idea/solution how to retrieve this?
If you require any further information please let me know.
Many thanks in advance.
Best regards,
Izhar
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
Lorenz B.
2017-03-10 07:53:20 UTC
Permalink
It's almost unreadable in the current formatting...

At first, it would be good to see

1. the current SPARQL query
2. minimal sample data
3. the data that you expect to be returned

I guess, the pseudo query is (please correct me if I'm wrong)

"Which geographic feature contains the maximum number of soil sensing
nodes?"

And you expect as result

envoi:A_Swale


With the current formatting issues, it's pretty hard, because I don't
know the structure of the data. Once you provide this + the current
query, it's more or less using the COUNT aggregate function and probably
GROUP BY
Post by Ullah, Izhar
Hi all,
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node
geo
gwkt
1
enviot:A0_SoilSensingNode<http://localhost:7200/resource/enviot/A0_SoilSensingNode>
enviot:A0_Geometry<http://localhost:7200/resource/enviot/A0_Geometry>
"POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A1_SoilSensingNode<http://localhost:7200/resource/enviot/A1_SoilSensingNode>
enviot:A1_Geometry<http://localhost:7200/resource/enviot/A1_Geometry>
"POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A2_SoilSensingNode<http://localhost:7200/resource/enviot/A2_SoilSensingNode>
enviot:A2_Geometry<http://localhost:7200/resource/enviot/A2_Geometry>
"POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
4
enviot:A3_SoilSensingNode<http://localhost:7200/resource/enviot/A3_SoilSensingNode>
enviot:A3_Geometry<http://localhost:7200/resource/enviot/A3_Geometry>
"POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
5
enviot:A5_SoilSensingNode<http://localhost:7200/resource/enviot/A5_SoilSensingNode>
enviot:A5_Geometry<http://localhost:7200/resource/enviot/A5_Geometry>
"POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
6
enviot:A6_SoilSensingNode<http://localhost:7200/resource/enviot/A6_SoilSensingNode>
enviot:A6_Geometry<http://localhost:7200/resource/enviot/A6_Geometry>
"POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
7
enviot:A7_SoilSensingNode<http://localhost:7200/resource/enviot/A7_SoilSensingNode>
enviot:A7_Geometry<http://localhost:7200/resource/enviot/A7_Geometry>
"POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
8
enviot:A8_SoilSensingNode<http://localhost:7200/resource/enviot/A8_SoilSensingNode>
enviot:A8_Geometry<http://localhost:7200/resource/enviot/A8_Geometry>
"POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
9
enviot:A9_SoilSensingNode<http://localhost:7200/resource/enviot/A9_SoilSensingNode>
enviot:A9_Geometry<http://localhost:7200/resource/enviot/A9_Geometry>
"POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
10
enviot:AA_SoilSensingNode<http://localhost:7200/resource/enviot/AA_SoilSensingNode>
enviot:AA_Geometry<http://localhost:7200/resource/enviot/AA_Geometry>
"POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
11
enviot:AB_SoilSensingNode<http://localhost:7200/resource/enviot/AB_SoilSensingNode>
enviot:AB_Geometry<http://localhost:7200/resource/enviot/AB_Geometry>
"POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
12
enviot:AC_SoilSensingNode<http://localhost:7200/resource/enviot/AC_SoilSensingNode>
enviot:AC_Geometry<http://localhost:7200/resource/enviot/AC_Geometry>
"POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
13
enviot:AD_SoilSensingNode<http://localhost:7200/resource/enviot/AD_SoilSensingNode>
enviot:AD_Geometry<http://localhost:7200/resource/enviot/AD_Geometry>
"POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
14
enviot:AE_SoilSensingNode<http://localhost:7200/resource/enviot/AE_SoilSensingNode>
enviot:AE_Geometry<http://localhost:7200/resource/enviot/AE_Geometry>
"POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
15
enviot:AF_SoilSensingNode<http://localhost:7200/resource/enviot/AF_SoilSensingNode>
enviot:AF_Geometry<http://localhost:7200/resource/enviot/AF_Geometry>
"POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature
fgeo
fwkt
1
enviot:A_Hilltop<http://localhost:7200/resource/enviot/A_Hilltop>
enviot:A_HillTopLineGeometry<http://localhost:7200/resource/enviot/A_HillTopLineGeometry>
"LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A_Riverbank<http://localhost:7200/resource/enviot/A_Riverbank>
enviot:A_RiverbankLineGeometry<http://localhost:7200/resource/enviot/A_RiverbankLineGeometry>
"LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A_Swale<http://localhost:7200/resource/enviot/A_Swale>
enviot:A_SwalePolygonGeometry<http://localhost:7200/resource/enviot/A_SwalePolygonGeometry>
"POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
I
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes.
I would be really grateful if someone could give me any idea/solution how to retrieve this?
If you require any further information please let me know.
Many thanks in advance.
Best regards,
Izhar
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
Ullah, Izhar
2017-03-13 17:32:49 UTC
Permalink
Dear Lorenz,

Apologies for the belated reply, for I was travelling, arrived today.

Let me post the whole question again below:

I have a question related to SPARQL query which is a bit complex one. I would appreciate if someone could help me out. I have 15 Sensing Nodes with their corresponding Point(longitude latitude) geometries given below:

Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.

node gwkt

enviot:A0_SoilSensingNode "POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A1_SoilSensingNode "POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A2_SoilSensingNode "POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A3_SoilSensingNode "POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A5_SoilSensingNode "POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A6_SoilSensingNode "POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A7_SoilSensingNode "POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A8_SoilSensingNode "POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A9_SoilSensingNode "POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AA_SoilSensingNode "POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AB_SoilSensingNode "POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AC_SoilSensingNode "POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AD_SoilSensingNode "POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AE_SoilSensingNode "POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AF_SoilSensingNode "POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>

These sensing nodes are deployed in a field having three features named Hilltop (it has 3 nodes), Swale (it has 7 nodes) and Riverbank (it has 5 nodes). Each of these features has their own geometries like 'Line String', 'Polygon' and 'Line String' respectively along with their geometric coordinates given below:

Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.

feature fgeo fwkt
enviot:A_Hilltop enviot:A_HillTopLineGeometry "LINESTRING (-3.780833 53.203055, -3.781111 53.202777,
-3.780833 53.202222)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


enviot:A_Riverbank enviot:A_RiverbankLineGeometry "LINESTRING (-3.783055 53.202777, -3.783063 53.202309,
-3.783065 53.202158, -3.783092 53.202007,
-3.782898 53.201828)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


enviot:A_Swale enviot:A_SwalePolygonGeometry "POLYGON ((-3.782222 53.202777, -3.782024 53.202193,
-3.782638 53.202189, -3.783003 53.202191, -3.781964
53.201765, -3.782518 53.201841, -3.782877 53.201788,
-3.782222 53.202777))
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>


NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.

Now my question is:

Which geographic feature contains the maximum number of soil sensing nodes?

The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes, which is the maximum.

My current query is (indeed not complete and correct) given below:

PREFIX geosparql: <http://www.opengis.net/ont/geosparql#>
PREFIX sf: <http://www.opengis.net/ont/sf#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX enviot: <http://www.environmental-iot.com/enviot_ontology/IotSemanticModel#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX DUL: <http://www.loa-cnr.it/ontologies/DUL.owl#>
PREFIX ssn: <http://purl.oclc.org/NET/ssnx/ssn#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>

SELECT (MAX(?nodecount) AS ?maxnodecount) WHERE {

{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.

FILTER (geof:sfTouches(?gwkt, "POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^geosparql:wktLiteral))
}
}

{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.

FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^geosparql:wktLiteral))
}
}
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.

FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^geosparql:wktLiteral))
}
}

}

If you make two of the sub-queries comments then it retrieves the correct number of Soil Sending Nodes for the one which is filtered but it does not retrieve the max of all these three features (i.e. Hilltop, Swale and Riverbank) having soil sensing nodes which should be 7 in this case.

If you need my ontology which contains the data I can send it to you but a) kindly provide me your personal email address and b) it is highly confidential, so, kindly do not disclose/share it to/with other people.

Many thanks in advance.

Best,

Izhar




































________________________________________
From: Lorenz B. [***@informatik.uni-leipzig.de]
Sent: 10 March 2017 07:53
To: ***@jena.apache.org
Subject: Re: Complex SPARQL Query

It's almost unreadable in the current formatting...

At first, it would be good to see

1. the current SPARQL query
2. minimal sample data
3. the data that you expect to be returned

I guess, the pseudo query is (please correct me if I'm wrong)

"Which geographic feature contains the maximum number of soil sensing
nodes?"

And you expect as result

envoi:A_Swale


With the current formatting issues, it's pretty hard, because I don't
know the structure of the data. Once you provide this + the current
query, it's more or less using the COUNT aggregate function and probably
GROUP BY
Post by Ullah, Izhar
Hi all,
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node
geo
gwkt
1
enviot:A0_SoilSensingNode<http://localhost:7200/resource/enviot/A0_SoilSensingNode>
enviot:A0_Geometry<http://localhost:7200/resource/enviot/A0_Geometry>
"POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A1_SoilSensingNode<http://localhost:7200/resource/enviot/A1_SoilSensingNode>
enviot:A1_Geometry<http://localhost:7200/resource/enviot/A1_Geometry>
"POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A2_SoilSensingNode<http://localhost:7200/resource/enviot/A2_SoilSensingNode>
enviot:A2_Geometry<http://localhost:7200/resource/enviot/A2_Geometry>
"POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
4
enviot:A3_SoilSensingNode<http://localhost:7200/resource/enviot/A3_SoilSensingNode>
enviot:A3_Geometry<http://localhost:7200/resource/enviot/A3_Geometry>
"POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
5
enviot:A5_SoilSensingNode<http://localhost:7200/resource/enviot/A5_SoilSensingNode>
enviot:A5_Geometry<http://localhost:7200/resource/enviot/A5_Geometry>
"POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
6
enviot:A6_SoilSensingNode<http://localhost:7200/resource/enviot/A6_SoilSensingNode>
enviot:A6_Geometry<http://localhost:7200/resource/enviot/A6_Geometry>
"POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
7
enviot:A7_SoilSensingNode<http://localhost:7200/resource/enviot/A7_SoilSensingNode>
enviot:A7_Geometry<http://localhost:7200/resource/enviot/A7_Geometry>
"POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
8
enviot:A8_SoilSensingNode<http://localhost:7200/resource/enviot/A8_SoilSensingNode>
enviot:A8_Geometry<http://localhost:7200/resource/enviot/A8_Geometry>
"POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
9
enviot:A9_SoilSensingNode<http://localhost:7200/resource/enviot/A9_SoilSensingNode>
enviot:A9_Geometry<http://localhost:7200/resource/enviot/A9_Geometry>
"POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
10
enviot:AA_SoilSensingNode<http://localhost:7200/resource/enviot/AA_SoilSensingNode>
enviot:AA_Geometry<http://localhost:7200/resource/enviot/AA_Geometry>
"POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
11
enviot:AB_SoilSensingNode<http://localhost:7200/resource/enviot/AB_SoilSensingNode>
enviot:AB_Geometry<http://localhost:7200/resource/enviot/AB_Geometry>
"POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
12
enviot:AC_SoilSensingNode<http://localhost:7200/resource/enviot/AC_SoilSensingNode>
enviot:AC_Geometry<http://localhost:7200/resource/enviot/AC_Geometry>
"POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
13
enviot:AD_SoilSensingNode<http://localhost:7200/resource/enviot/AD_SoilSensingNode>
enviot:AD_Geometry<http://localhost:7200/resource/enviot/AD_Geometry>
"POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
14
enviot:AE_SoilSensingNode<http://localhost:7200/resource/enviot/AE_SoilSensingNode>
enviot:AE_Geometry<http://localhost:7200/resource/enviot/AE_Geometry>
"POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
15
enviot:AF_SoilSensingNode<http://localhost:7200/resource/enviot/AF_SoilSensingNode>
enviot:AF_Geometry<http://localhost:7200/resource/enviot/AF_Geometry>
"POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature
fgeo
fwkt
1
enviot:A_Hilltop<http://localhost:7200/resource/enviot/A_Hilltop>
enviot:A_HillTopLineGeometry<http://localhost:7200/resource/enviot/A_HillTopLineGeometry>
"LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A_Riverbank<http://localhost:7200/resource/enviot/A_Riverbank>
enviot:A_RiverbankLineGeometry<http://localhost:7200/resource/enviot/A_RiverbankLineGeometry>
"LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A_Swale<http://localhost:7200/resource/enviot/A_Swale>
enviot:A_SwalePolygonGeometry<http://localhost:7200/resource/enviot/A_SwalePolygonGeometry>
"POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
I
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes.
I would be really grateful if someone could give me any idea/solution how to retrieve this?
If you require any further information please let me know.
Many thanks in advance.
Best regards,
Izhar
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
Lorenz B.
2017-03-14 06:56:12 UTC
Permalink
Just to clarify, each of the sub-SELECT queries returns the number of
nodes for the features Hilltop, Riverbank and Swale, right? And if you
run such a SELECT query separately, the number is correct?
Post by Ullah, Izhar
Dear Lorenz,
Apologies for the belated reply, for I was travelling, arrived today.
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node gwkt
enviot:A0_SoilSensingNode "POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A1_SoilSensingNode "POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A2_SoilSensingNode "POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A3_SoilSensingNode "POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A5_SoilSensingNode "POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A6_SoilSensingNode "POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A7_SoilSensingNode "POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A8_SoilSensingNode "POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A9_SoilSensingNode "POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AA_SoilSensingNode "POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AB_SoilSensingNode "POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AC_SoilSensingNode "POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AD_SoilSensingNode "POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AE_SoilSensingNode "POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AF_SoilSensingNode "POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature fgeo fwkt
enviot:A_Hilltop enviot:A_HillTopLineGeometry "LINESTRING (-3.780833 53.203055, -3.781111 53.202777,
-3.780833 53.202222)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A_Riverbank enviot:A_RiverbankLineGeometry "LINESTRING (-3.783055 53.202777, -3.783063 53.202309,
-3.783065 53.202158, -3.783092 53.202007,
-3.782898 53.201828)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A_Swale enviot:A_SwalePolygonGeometry "POLYGON ((-3.782222 53.202777, -3.782024 53.202193,
-3.782638 53.202189, -3.783003 53.202191, -3.781964
53.201765, -3.782518 53.201841, -3.782877 53.201788,
-3.782222 53.202777))
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes, which is the maximum.
PREFIX geosparql: <http://www.opengis.net/ont/geosparql#>
PREFIX sf: <http://www.opengis.net/ont/sf#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX enviot: <http://www.environmental-iot.com/enviot_ontology/IotSemanticModel#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX DUL: <http://www.loa-cnr.it/ontologies/DUL.owl#>
PREFIX ssn: <http://purl.oclc.org/NET/ssnx/ssn#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
SELECT (MAX(?nodecount) AS ?maxnodecount) WHERE {
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfTouches(?gwkt, "POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^geosparql:wktLiteral))
}
}
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^geosparql:wktLiteral))
}
}
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^geosparql:wktLiteral))
}
}
}
If you make two of the sub-queries comments then it retrieves the correct number of Soil Sending Nodes for the one which is filtered but it does not retrieve the max of all these three features (i.e. Hilltop, Swale and Riverbank) having soil sensing nodes which should be 7 in this case.
If you need my ontology which contains the data I can send it to you but a) kindly provide me your personal email address and b) it is highly confidential, so, kindly do not disclose/share it to/with other people.
Many thanks in advance.
Best,
Izhar
________________________________________
Sent: 10 March 2017 07:53
Subject: Re: Complex SPARQL Query
It's almost unreadable in the current formatting...
At first, it would be good to see
1. the current SPARQL query
2. minimal sample data
3. the data that you expect to be returned
I guess, the pseudo query is (please correct me if I'm wrong)
"Which geographic feature contains the maximum number of soil sensing
nodes?"
And you expect as result
envoi:A_Swale
With the current formatting issues, it's pretty hard, because I don't
know the structure of the data. Once you provide this + the current
query, it's more or less using the COUNT aggregate function and probably
GROUP BY
Post by Ullah, Izhar
Hi all,
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node
geo
gwkt
1
enviot:A0_SoilSensingNode<http://localhost:7200/resource/enviot/A0_SoilSensingNode>
enviot:A0_Geometry<http://localhost:7200/resource/enviot/A0_Geometry>
"POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A1_SoilSensingNode<http://localhost:7200/resource/enviot/A1_SoilSensingNode>
enviot:A1_Geometry<http://localhost:7200/resource/enviot/A1_Geometry>
"POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A2_SoilSensingNode<http://localhost:7200/resource/enviot/A2_SoilSensingNode>
enviot:A2_Geometry<http://localhost:7200/resource/enviot/A2_Geometry>
"POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
4
enviot:A3_SoilSensingNode<http://localhost:7200/resource/enviot/A3_SoilSensingNode>
enviot:A3_Geometry<http://localhost:7200/resource/enviot/A3_Geometry>
"POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
5
enviot:A5_SoilSensingNode<http://localhost:7200/resource/enviot/A5_SoilSensingNode>
enviot:A5_Geometry<http://localhost:7200/resource/enviot/A5_Geometry>
"POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
6
enviot:A6_SoilSensingNode<http://localhost:7200/resource/enviot/A6_SoilSensingNode>
enviot:A6_Geometry<http://localhost:7200/resource/enviot/A6_Geometry>
"POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
7
enviot:A7_SoilSensingNode<http://localhost:7200/resource/enviot/A7_SoilSensingNode>
enviot:A7_Geometry<http://localhost:7200/resource/enviot/A7_Geometry>
"POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
8
enviot:A8_SoilSensingNode<http://localhost:7200/resource/enviot/A8_SoilSensingNode>
enviot:A8_Geometry<http://localhost:7200/resource/enviot/A8_Geometry>
"POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
9
enviot:A9_SoilSensingNode<http://localhost:7200/resource/enviot/A9_SoilSensingNode>
enviot:A9_Geometry<http://localhost:7200/resource/enviot/A9_Geometry>
"POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
10
enviot:AA_SoilSensingNode<http://localhost:7200/resource/enviot/AA_SoilSensingNode>
enviot:AA_Geometry<http://localhost:7200/resource/enviot/AA_Geometry>
"POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
11
enviot:AB_SoilSensingNode<http://localhost:7200/resource/enviot/AB_SoilSensingNode>
enviot:AB_Geometry<http://localhost:7200/resource/enviot/AB_Geometry>
"POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
12
enviot:AC_SoilSensingNode<http://localhost:7200/resource/enviot/AC_SoilSensingNode>
enviot:AC_Geometry<http://localhost:7200/resource/enviot/AC_Geometry>
"POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
13
enviot:AD_SoilSensingNode<http://localhost:7200/resource/enviot/AD_SoilSensingNode>
enviot:AD_Geometry<http://localhost:7200/resource/enviot/AD_Geometry>
"POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
14
enviot:AE_SoilSensingNode<http://localhost:7200/resource/enviot/AE_SoilSensingNode>
enviot:AE_Geometry<http://localhost:7200/resource/enviot/AE_Geometry>
"POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
15
enviot:AF_SoilSensingNode<http://localhost:7200/resource/enviot/AF_SoilSensingNode>
enviot:AF_Geometry<http://localhost:7200/resource/enviot/AF_Geometry>
"POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature
fgeo
fwkt
1
enviot:A_Hilltop<http://localhost:7200/resource/enviot/A_Hilltop>
enviot:A_HillTopLineGeometry<http://localhost:7200/resource/enviot/A_HillTopLineGeometry>
"LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A_Riverbank<http://localhost:7200/resource/enviot/A_Riverbank>
enviot:A_RiverbankLineGeometry<http://localhost:7200/resource/enviot/A_RiverbankLineGeometry>
"LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A_Swale<http://localhost:7200/resource/enviot/A_Swale>
enviot:A_SwalePolygonGeometry<http://localhost:7200/resource/enviot/A_SwalePolygonGeometry>
"POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
I
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes.
I would be really grateful if someone could give me any idea/solution how to retrieve this?
If you require any further information please let me know.
Many thanks in advance.
Best regards,
Izhar
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
Ullah, Izhar
2017-03-14 13:29:10 UTC
Permalink
Hi Lorenz,

Yes, that's true but I can't retrieve all features along with their number of sensing nodes. So, when I run one sub-query separately I get the correct number of nodes in that feature.

I slightly changed my ontology and then ran the following query against my ontology file:

SELECT ?feature (MAX(?nodecount) AS ?featuremaxnodes) WHERE {

{
SELECT ?feature (COUNT(?node) AS ?nodecount) WHERE {

?feature rdf:type enviot:Field ;
ssn:hasDeployment ?node .
?node rdf:type enviot:SoilSensingNode .

}
GROUP BY ?feature
ORDER BY DESC(?nodecount)
}
}
GROUP BY ?feature
ORDER BY DESC(?nodecount)

The output of the above query is:


feature featuremaxnodes

1 enviot:A_Hilltop "3"^^xsd:integer

2 enviot:A_Riverbank "5"^^xsd:integer

3 enviot:A_Swale "7"^^xsd:integer

Now I am very close to my desired output but still not getting it i.e. I need to show the feature having maximum number of nodes. In other words, I need to show the following:

feature featuremaxnodes

enviot:A_Swale "7"^^xsd:integer

Any idea how to get the above output?

Many thanks for your time, help and patience.

Best regards,

Izhar
________________________________________
From: Lorenz B. [***@informatik.uni-leipzig.de]
Sent: 14 March 2017 06:56
To: ***@jena.apache.org
Subject: Re: Complex SPARQL Query

Just to clarify, each of the sub-SELECT queries returns the number of
nodes for the features Hilltop, Riverbank and Swale, right? And if you
run such a SELECT query separately, the number is correct?
Post by Ullah, Izhar
Dear Lorenz,
Apologies for the belated reply, for I was travelling, arrived today.
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node gwkt
enviot:A0_SoilSensingNode "POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A1_SoilSensingNode "POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A2_SoilSensingNode "POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A3_SoilSensingNode "POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A5_SoilSensingNode "POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A6_SoilSensingNode "POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A7_SoilSensingNode "POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A8_SoilSensingNode "POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A9_SoilSensingNode "POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AA_SoilSensingNode "POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AB_SoilSensingNode "POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AC_SoilSensingNode "POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AD_SoilSensingNode "POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AE_SoilSensingNode "POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AF_SoilSensingNode "POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature fgeo fwkt
enviot:A_Hilltop enviot:A_HillTopLineGeometry "LINESTRING (-3.780833 53.203055, -3.781111 53.202777,
-3.780833 53.202222)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A_Riverbank enviot:A_RiverbankLineGeometry "LINESTRING (-3.783055 53.202777, -3.783063 53.202309,
-3.783065 53.202158, -3.783092 53.202007,
-3.782898 53.201828)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A_Swale enviot:A_SwalePolygonGeometry "POLYGON ((-3.782222 53.202777, -3.782024 53.202193,
-3.782638 53.202189, -3.783003 53.202191, -3.781964
53.201765, -3.782518 53.201841, -3.782877 53.201788,
-3.782222 53.202777))
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes, which is the maximum.
PREFIX geosparql: <http://www.opengis.net/ont/geosparql#>
PREFIX sf: <http://www.opengis.net/ont/sf#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX enviot: <http://www.environmental-iot.com/enviot_ontology/IotSemanticModel#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX DUL: <http://www.loa-cnr.it/ontologies/DUL.owl#>
PREFIX ssn: <http://purl.oclc.org/NET/ssnx/ssn#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
SELECT (MAX(?nodecount) AS ?maxnodecount) WHERE {
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfTouches(?gwkt, "POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^geosparql:wktLiteral))
}
}
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^geosparql:wktLiteral))
}
}
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^geosparql:wktLiteral))
}
}
}
If you make two of the sub-queries comments then it retrieves the correct number of Soil Sending Nodes for the one which is filtered but it does not retrieve the max of all these three features (i.e. Hilltop, Swale and Riverbank) having soil sensing nodes which should be 7 in this case.
If you need my ontology which contains the data I can send it to you but a) kindly provide me your personal email address and b) it is highly confidential, so, kindly do not disclose/share it to/with other people.
Many thanks in advance.
Best,
Izhar
________________________________________
Sent: 10 March 2017 07:53
Subject: Re: Complex SPARQL Query
It's almost unreadable in the current formatting...
At first, it would be good to see
1. the current SPARQL query
2. minimal sample data
3. the data that you expect to be returned
I guess, the pseudo query is (please correct me if I'm wrong)
"Which geographic feature contains the maximum number of soil sensing
nodes?"
And you expect as result
envoi:A_Swale
With the current formatting issues, it's pretty hard, because I don't
know the structure of the data. Once you provide this + the current
query, it's more or less using the COUNT aggregate function and probably
GROUP BY
Post by Ullah, Izhar
Hi all,
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node
geo
gwkt
1
enviot:A0_SoilSensingNode<http://localhost:7200/resource/enviot/A0_SoilSensingNode>
enviot:A0_Geometry<http://localhost:7200/resource/enviot/A0_Geometry>
"POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A1_SoilSensingNode<http://localhost:7200/resource/enviot/A1_SoilSensingNode>
enviot:A1_Geometry<http://localhost:7200/resource/enviot/A1_Geometry>
"POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A2_SoilSensingNode<http://localhost:7200/resource/enviot/A2_SoilSensingNode>
enviot:A2_Geometry<http://localhost:7200/resource/enviot/A2_Geometry>
"POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
4
enviot:A3_SoilSensingNode<http://localhost:7200/resource/enviot/A3_SoilSensingNode>
enviot:A3_Geometry<http://localhost:7200/resource/enviot/A3_Geometry>
"POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
5
enviot:A5_SoilSensingNode<http://localhost:7200/resource/enviot/A5_SoilSensingNode>
enviot:A5_Geometry<http://localhost:7200/resource/enviot/A5_Geometry>
"POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
6
enviot:A6_SoilSensingNode<http://localhost:7200/resource/enviot/A6_SoilSensingNode>
enviot:A6_Geometry<http://localhost:7200/resource/enviot/A6_Geometry>
"POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
7
enviot:A7_SoilSensingNode<http://localhost:7200/resource/enviot/A7_SoilSensingNode>
enviot:A7_Geometry<http://localhost:7200/resource/enviot/A7_Geometry>
"POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
8
enviot:A8_SoilSensingNode<http://localhost:7200/resource/enviot/A8_SoilSensingNode>
enviot:A8_Geometry<http://localhost:7200/resource/enviot/A8_Geometry>
"POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
9
enviot:A9_SoilSensingNode<http://localhost:7200/resource/enviot/A9_SoilSensingNode>
enviot:A9_Geometry<http://localhost:7200/resource/enviot/A9_Geometry>
"POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
10
enviot:AA_SoilSensingNode<http://localhost:7200/resource/enviot/AA_SoilSensingNode>
enviot:AA_Geometry<http://localhost:7200/resource/enviot/AA_Geometry>
"POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
11
enviot:AB_SoilSensingNode<http://localhost:7200/resource/enviot/AB_SoilSensingNode>
enviot:AB_Geometry<http://localhost:7200/resource/enviot/AB_Geometry>
"POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
12
enviot:AC_SoilSensingNode<http://localhost:7200/resource/enviot/AC_SoilSensingNode>
enviot:AC_Geometry<http://localhost:7200/resource/enviot/AC_Geometry>
"POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
13
enviot:AD_SoilSensingNode<http://localhost:7200/resource/enviot/AD_SoilSensingNode>
enviot:AD_Geometry<http://localhost:7200/resource/enviot/AD_Geometry>
"POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
14
enviot:AE_SoilSensingNode<http://localhost:7200/resource/enviot/AE_SoilSensingNode>
enviot:AE_Geometry<http://localhost:7200/resource/enviot/AE_Geometry>
"POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
15
enviot:AF_SoilSensingNode<http://localhost:7200/resource/enviot/AF_SoilSensingNode>
enviot:AF_Geometry<http://localhost:7200/resource/enviot/AF_Geometry>
"POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature
fgeo
fwkt
1
enviot:A_Hilltop<http://localhost:7200/resource/enviot/A_Hilltop>
enviot:A_HillTopLineGeometry<http://localhost:7200/resource/enviot/A_HillTopLineGeometry>
"LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A_Riverbank<http://localhost:7200/resource/enviot/A_Riverbank>
enviot:A_RiverbankLineGeometry<http://localhost:7200/resource/enviot/A_RiverbankLineGeometry>
"LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A_Swale<http://localhost:7200/resource/enviot/A_Swale>
enviot:A_SwalePolygonGeometry<http://localhost:7200/resource/enviot/A_SwalePolygonGeometry>
"POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
I
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes.
I would be really grateful if someone could give me any idea/solution how to retrieve this?
If you require any further information please let me know.
Many thanks in advance.
Best regards,
Izhar
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
Lorenz B.
2017-03-15 07:15:54 UTC
Permalink
Sure, you don't need grouping here. You could just use ORDER BY
ASC(?nodecount) LIMIT 1, i.e. sorting in the other direction and just
take the first result.
Post by Ullah, Izhar
Hi Lorenz,
Yes, that's true but I can't retrieve all features along with their number of sensing nodes. So, when I run one sub-query separately I get the correct number of nodes in that feature.
SELECT ?feature (MAX(?nodecount) AS ?featuremaxnodes) WHERE {
{
SELECT ?feature (COUNT(?node) AS ?nodecount) WHERE {
?feature rdf:type enviot:Field ;
ssn:hasDeployment ?node .
?node rdf:type enviot:SoilSensingNode .
}
GROUP BY ?feature
ORDER BY DESC(?nodecount)
}
}
GROUP BY ?feature
ORDER BY DESC(?nodecount)
feature featuremaxnodes
1 enviot:A_Hilltop "3"^^xsd:integer
2 enviot:A_Riverbank "5"^^xsd:integer
3 enviot:A_Swale "7"^^xsd:integer
feature featuremaxnodes
enviot:A_Swale "7"^^xsd:integer
Any idea how to get the above output?
Many thanks for your time, help and patience.
Best regards,
Izhar
________________________________________
Sent: 14 March 2017 06:56
Subject: Re: Complex SPARQL Query
Just to clarify, each of the sub-SELECT queries returns the number of
nodes for the features Hilltop, Riverbank and Swale, right? And if you
run such a SELECT query separately, the number is correct?
Post by Ullah, Izhar
Dear Lorenz,
Apologies for the belated reply, for I was travelling, arrived today.
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node gwkt
enviot:A0_SoilSensingNode "POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A1_SoilSensingNode "POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A2_SoilSensingNode "POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A3_SoilSensingNode "POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A5_SoilSensingNode "POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A6_SoilSensingNode "POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A7_SoilSensingNode "POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A8_SoilSensingNode "POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A9_SoilSensingNode "POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AA_SoilSensingNode "POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AB_SoilSensingNode "POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AC_SoilSensingNode "POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AD_SoilSensingNode "POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AE_SoilSensingNode "POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AF_SoilSensingNode "POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature fgeo fwkt
enviot:A_Hilltop enviot:A_HillTopLineGeometry "LINESTRING (-3.780833 53.203055, -3.781111 53.202777,
-3.780833 53.202222)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A_Riverbank enviot:A_RiverbankLineGeometry "LINESTRING (-3.783055 53.202777, -3.783063 53.202309,
-3.783065 53.202158, -3.783092 53.202007,
-3.782898 53.201828)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A_Swale enviot:A_SwalePolygonGeometry "POLYGON ((-3.782222 53.202777, -3.782024 53.202193,
-3.782638 53.202189, -3.783003 53.202191, -3.781964
53.201765, -3.782518 53.201841, -3.782877 53.201788,
-3.782222 53.202777))
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes, which is the maximum.
PREFIX geosparql: <http://www.opengis.net/ont/geosparql#>
PREFIX sf: <http://www.opengis.net/ont/sf#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX enviot: <http://www.environmental-iot.com/enviot_ontology/IotSemanticModel#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX DUL: <http://www.loa-cnr.it/ontologies/DUL.owl#>
PREFIX ssn: <http://purl.oclc.org/NET/ssnx/ssn#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
SELECT (MAX(?nodecount) AS ?maxnodecount) WHERE {
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfTouches(?gwkt, "POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^geosparql:wktLiteral))
}
}
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^geosparql:wktLiteral))
}
}
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^geosparql:wktLiteral))
}
}
}
If you make two of the sub-queries comments then it retrieves the correct number of Soil Sending Nodes for the one which is filtered but it does not retrieve the max of all these three features (i.e. Hilltop, Swale and Riverbank) having soil sensing nodes which should be 7 in this case.
If you need my ontology which contains the data I can send it to you but a) kindly provide me your personal email address and b) it is highly confidential, so, kindly do not disclose/share it to/with other people.
Many thanks in advance.
Best,
Izhar
________________________________________
Sent: 10 March 2017 07:53
Subject: Re: Complex SPARQL Query
It's almost unreadable in the current formatting...
At first, it would be good to see
1. the current SPARQL query
2. minimal sample data
3. the data that you expect to be returned
I guess, the pseudo query is (please correct me if I'm wrong)
"Which geographic feature contains the maximum number of soil sensing
nodes?"
And you expect as result
envoi:A_Swale
With the current formatting issues, it's pretty hard, because I don't
know the structure of the data. Once you provide this + the current
query, it's more or less using the COUNT aggregate function and probably
GROUP BY
Post by Ullah, Izhar
Hi all,
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node
geo
gwkt
1
enviot:A0_SoilSensingNode<http://localhost:7200/resource/enviot/A0_SoilSensingNode>
enviot:A0_Geometry<http://localhost:7200/resource/enviot/A0_Geometry>
"POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A1_SoilSensingNode<http://localhost:7200/resource/enviot/A1_SoilSensingNode>
enviot:A1_Geometry<http://localhost:7200/resource/enviot/A1_Geometry>
"POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A2_SoilSensingNode<http://localhost:7200/resource/enviot/A2_SoilSensingNode>
enviot:A2_Geometry<http://localhost:7200/resource/enviot/A2_Geometry>
"POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
4
enviot:A3_SoilSensingNode<http://localhost:7200/resource/enviot/A3_SoilSensingNode>
enviot:A3_Geometry<http://localhost:7200/resource/enviot/A3_Geometry>
"POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
5
enviot:A5_SoilSensingNode<http://localhost:7200/resource/enviot/A5_SoilSensingNode>
enviot:A5_Geometry<http://localhost:7200/resource/enviot/A5_Geometry>
"POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
6
enviot:A6_SoilSensingNode<http://localhost:7200/resource/enviot/A6_SoilSensingNode>
enviot:A6_Geometry<http://localhost:7200/resource/enviot/A6_Geometry>
"POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
7
enviot:A7_SoilSensingNode<http://localhost:7200/resource/enviot/A7_SoilSensingNode>
enviot:A7_Geometry<http://localhost:7200/resource/enviot/A7_Geometry>
"POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
8
enviot:A8_SoilSensingNode<http://localhost:7200/resource/enviot/A8_SoilSensingNode>
enviot:A8_Geometry<http://localhost:7200/resource/enviot/A8_Geometry>
"POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
9
enviot:A9_SoilSensingNode<http://localhost:7200/resource/enviot/A9_SoilSensingNode>
enviot:A9_Geometry<http://localhost:7200/resource/enviot/A9_Geometry>
"POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
10
enviot:AA_SoilSensingNode<http://localhost:7200/resource/enviot/AA_SoilSensingNode>
enviot:AA_Geometry<http://localhost:7200/resource/enviot/AA_Geometry>
"POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
11
enviot:AB_SoilSensingNode<http://localhost:7200/resource/enviot/AB_SoilSensingNode>
enviot:AB_Geometry<http://localhost:7200/resource/enviot/AB_Geometry>
"POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
12
enviot:AC_SoilSensingNode<http://localhost:7200/resource/enviot/AC_SoilSensingNode>
enviot:AC_Geometry<http://localhost:7200/resource/enviot/AC_Geometry>
"POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
13
enviot:AD_SoilSensingNode<http://localhost:7200/resource/enviot/AD_SoilSensingNode>
enviot:AD_Geometry<http://localhost:7200/resource/enviot/AD_Geometry>
"POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
14
enviot:AE_SoilSensingNode<http://localhost:7200/resource/enviot/AE_SoilSensingNode>
enviot:AE_Geometry<http://localhost:7200/resource/enviot/AE_Geometry>
"POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
15
enviot:AF_SoilSensingNode<http://localhost:7200/resource/enviot/AF_SoilSensingNode>
enviot:AF_Geometry<http://localhost:7200/resource/enviot/AF_Geometry>
"POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature
fgeo
fwkt
1
enviot:A_Hilltop<http://localhost:7200/resource/enviot/A_Hilltop>
enviot:A_HillTopLineGeometry<http://localhost:7200/resource/enviot/A_HillTopLineGeometry>
"LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A_Riverbank<http://localhost:7200/resource/enviot/A_Riverbank>
enviot:A_RiverbankLineGeometry<http://localhost:7200/resource/enviot/A_RiverbankLineGeometry>
"LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A_Swale<http://localhost:7200/resource/enviot/A_Swale>
enviot:A_SwalePolygonGeometry<http://localhost:7200/resource/enviot/A_SwalePolygonGeometry>
"POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
I
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes.
I would be really grateful if someone could give me any idea/solution how to retrieve this?
If you require any further information please let me know.
Many thanks in advance.
Best regards,
Izhar
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
Ullah, Izhar
2017-03-15 16:34:00 UTC
Permalink
Well, you are right, I'll get the desired output using your method but the question arises then why don't/can't I use the MAX() function here to get the same result.

Best,

Izhar
________________________________________
From: Lorenz B. [***@informatik.uni-leipzig.de]
Sent: 15 March 2017 07:15
To: ***@jena.apache.org
Subject: Re: Complex SPARQL Query

Sure, you don't need grouping here. You could just use ORDER BY
ASC(?nodecount) LIMIT 1, i.e. sorting in the other direction and just
take the first result.
Post by Ullah, Izhar
Hi Lorenz,
Yes, that's true but I can't retrieve all features along with their number of sensing nodes. So, when I run one sub-query separately I get the correct number of nodes in that feature.
SELECT ?feature (MAX(?nodecount) AS ?featuremaxnodes) WHERE {
{
SELECT ?feature (COUNT(?node) AS ?nodecount) WHERE {
?feature rdf:type enviot:Field ;
ssn:hasDeployment ?node .
?node rdf:type enviot:SoilSensingNode .
}
GROUP BY ?feature
ORDER BY DESC(?nodecount)
}
}
GROUP BY ?feature
ORDER BY DESC(?nodecount)
feature featuremaxnodes
1 enviot:A_Hilltop "3"^^xsd:integer
2 enviot:A_Riverbank "5"^^xsd:integer
3 enviot:A_Swale "7"^^xsd:integer
feature featuremaxnodes
enviot:A_Swale "7"^^xsd:integer
Any idea how to get the above output?
Many thanks for your time, help and patience.
Best regards,
Izhar
________________________________________
Sent: 14 March 2017 06:56
Subject: Re: Complex SPARQL Query
Just to clarify, each of the sub-SELECT queries returns the number of
nodes for the features Hilltop, Riverbank and Swale, right? And if you
run such a SELECT query separately, the number is correct?
Post by Ullah, Izhar
Dear Lorenz,
Apologies for the belated reply, for I was travelling, arrived today.
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node gwkt
enviot:A0_SoilSensingNode "POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A1_SoilSensingNode "POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A2_SoilSensingNode "POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A3_SoilSensingNode "POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A5_SoilSensingNode "POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A6_SoilSensingNode "POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A7_SoilSensingNode "POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A8_SoilSensingNode "POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A9_SoilSensingNode "POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AA_SoilSensingNode "POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AB_SoilSensingNode "POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AC_SoilSensingNode "POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AD_SoilSensingNode "POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AE_SoilSensingNode "POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AF_SoilSensingNode "POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature fgeo fwkt
enviot:A_Hilltop enviot:A_HillTopLineGeometry "LINESTRING (-3.780833 53.203055, -3.781111 53.202777,
-3.780833 53.202222)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A_Riverbank enviot:A_RiverbankLineGeometry "LINESTRING (-3.783055 53.202777, -3.783063 53.202309,
-3.783065 53.202158, -3.783092 53.202007,
-3.782898 53.201828)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A_Swale enviot:A_SwalePolygonGeometry "POLYGON ((-3.782222 53.202777, -3.782024 53.202193,
-3.782638 53.202189, -3.783003 53.202191, -3.781964
53.201765, -3.782518 53.201841, -3.782877 53.201788,
-3.782222 53.202777))
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes, which is the maximum.
PREFIX geosparql: <http://www.opengis.net/ont/geosparql#>
PREFIX sf: <http://www.opengis.net/ont/sf#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX enviot: <http://www.environmental-iot.com/enviot_ontology/IotSemanticModel#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX DUL: <http://www.loa-cnr.it/ontologies/DUL.owl#>
PREFIX ssn: <http://purl.oclc.org/NET/ssnx/ssn#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
SELECT (MAX(?nodecount) AS ?maxnodecount) WHERE {
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfTouches(?gwkt, "POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^geosparql:wktLiteral))
}
}
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^geosparql:wktLiteral))
}
}
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^geosparql:wktLiteral))
}
}
}
If you make two of the sub-queries comments then it retrieves the correct number of Soil Sending Nodes for the one which is filtered but it does not retrieve the max of all these three features (i.e. Hilltop, Swale and Riverbank) having soil sensing nodes which should be 7 in this case.
If you need my ontology which contains the data I can send it to you but a) kindly provide me your personal email address and b) it is highly confidential, so, kindly do not disclose/share it to/with other people.
Many thanks in advance.
Best,
Izhar
________________________________________
Sent: 10 March 2017 07:53
Subject: Re: Complex SPARQL Query
It's almost unreadable in the current formatting...
At first, it would be good to see
1. the current SPARQL query
2. minimal sample data
3. the data that you expect to be returned
I guess, the pseudo query is (please correct me if I'm wrong)
"Which geographic feature contains the maximum number of soil sensing
nodes?"
And you expect as result
envoi:A_Swale
With the current formatting issues, it's pretty hard, because I don't
know the structure of the data. Once you provide this + the current
query, it's more or less using the COUNT aggregate function and probably
GROUP BY
Post by Ullah, Izhar
Hi all,
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node
geo
gwkt
1
enviot:A0_SoilSensingNode<http://localhost:7200/resource/enviot/A0_SoilSensingNode>
enviot:A0_Geometry<http://localhost:7200/resource/enviot/A0_Geometry>
"POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A1_SoilSensingNode<http://localhost:7200/resource/enviot/A1_SoilSensingNode>
enviot:A1_Geometry<http://localhost:7200/resource/enviot/A1_Geometry>
"POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A2_SoilSensingNode<http://localhost:7200/resource/enviot/A2_SoilSensingNode>
enviot:A2_Geometry<http://localhost:7200/resource/enviot/A2_Geometry>
"POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
4
enviot:A3_SoilSensingNode<http://localhost:7200/resource/enviot/A3_SoilSensingNode>
enviot:A3_Geometry<http://localhost:7200/resource/enviot/A3_Geometry>
"POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
5
enviot:A5_SoilSensingNode<http://localhost:7200/resource/enviot/A5_SoilSensingNode>
enviot:A5_Geometry<http://localhost:7200/resource/enviot/A5_Geometry>
"POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
6
enviot:A6_SoilSensingNode<http://localhost:7200/resource/enviot/A6_SoilSensingNode>
enviot:A6_Geometry<http://localhost:7200/resource/enviot/A6_Geometry>
"POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
7
enviot:A7_SoilSensingNode<http://localhost:7200/resource/enviot/A7_SoilSensingNode>
enviot:A7_Geometry<http://localhost:7200/resource/enviot/A7_Geometry>
"POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
8
enviot:A8_SoilSensingNode<http://localhost:7200/resource/enviot/A8_SoilSensingNode>
enviot:A8_Geometry<http://localhost:7200/resource/enviot/A8_Geometry>
"POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
9
enviot:A9_SoilSensingNode<http://localhost:7200/resource/enviot/A9_SoilSensingNode>
enviot:A9_Geometry<http://localhost:7200/resource/enviot/A9_Geometry>
"POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
10
enviot:AA_SoilSensingNode<http://localhost:7200/resource/enviot/AA_SoilSensingNode>
enviot:AA_Geometry<http://localhost:7200/resource/enviot/AA_Geometry>
"POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
11
enviot:AB_SoilSensingNode<http://localhost:7200/resource/enviot/AB_SoilSensingNode>
enviot:AB_Geometry<http://localhost:7200/resource/enviot/AB_Geometry>
"POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
12
enviot:AC_SoilSensingNode<http://localhost:7200/resource/enviot/AC_SoilSensingNode>
enviot:AC_Geometry<http://localhost:7200/resource/enviot/AC_Geometry>
"POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
13
enviot:AD_SoilSensingNode<http://localhost:7200/resource/enviot/AD_SoilSensingNode>
enviot:AD_Geometry<http://localhost:7200/resource/enviot/AD_Geometry>
"POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
14
enviot:AE_SoilSensingNode<http://localhost:7200/resource/enviot/AE_SoilSensingNode>
enviot:AE_Geometry<http://localhost:7200/resource/enviot/AE_Geometry>
"POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
15
enviot:AF_SoilSensingNode<http://localhost:7200/resource/enviot/AF_SoilSensingNode>
enviot:AF_Geometry<http://localhost:7200/resource/enviot/AF_Geometry>
"POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature
fgeo
fwkt
1
enviot:A_Hilltop<http://localhost:7200/resource/enviot/A_Hilltop>
enviot:A_HillTopLineGeometry<http://localhost:7200/resource/enviot/A_HillTopLineGeometry>
"LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A_Riverbank<http://localhost:7200/resource/enviot/A_Riverbank>
enviot:A_RiverbankLineGeometry<http://localhost:7200/resource/enviot/A_RiverbankLineGeometry>
"LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A_Swale<http://localhost:7200/resource/enviot/A_Swale>
enviot:A_SwalePolygonGeometry<http://localhost:7200/resource/enviot/A_SwalePolygonGeometry>
"POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
I
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes.
I would be really grateful if someone could give me any idea/solution how to retrieve this?
If you require any further information please let me know.
Many thanks in advance.
Best regards,
Izhar
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
james anderson
2017-03-15 22:07:02 UTC
Permalink
good evening;
Post by Ullah, Izhar
Well, you are right, I'll get the desired output using your method but the question arises then why don't/can't I use the MAX() function here to get the same result.
in the construct which you have expressed, the maximum is not applied to the domain from which you want to select a solution.
Post by Ullah, Izhar
Best,
Izhar
________________________________________
Sent: 15 March 2017 07:15
Subject: Re: Complex SPARQL Query
Sure, you don't need grouping here. You could just use ORDER BY
ASC(?nodecount) LIMIT 1, i.e. sorting in the other direction and just
take the first result.
Post by Ullah, Izhar
Hi Lorenz,
Yes, that's true but I can't retrieve all features along with their number of sensing nodes. So, when I run one sub-query separately I get the correct number of nodes in that feature.
SELECT ?feature (MAX(?nodecount) AS ?featuremaxnodes) WHERE {
{
SELECT ?feature (COUNT(?node) AS ?nodecount) WHERE {
?feature rdf:type enviot:Field ;
ssn:hasDeployment ?node .
?node rdf:type enviot:SoilSensingNode .
}
GROUP BY ?feature
ORDER BY DESC(?nodecount)
}
}
GROUP BY ?feature
ORDER BY DESC(?nodecount)
feature featuremaxnodes
1 enviot:A_Hilltop "3"^^xsd:integer
2 enviot:A_Riverbank "5"^^xsd:integer
3 enviot:A_Swale "7"^^xsd:integer
feature featuremaxnodes
enviot:A_Swale "7"^^xsd:integer
Any idea how to get the above output?
Many thanks for your time, help and patience.
Best regards,
Izhar
________________________________________
Sent: 14 March 2017 06:56
Subject: Re: Complex SPARQL Query
Just to clarify, each of the sub-SELECT queries returns the number of
nodes for the features Hilltop, Riverbank and Swale, right? And if you
run such a SELECT query separately, the number is correct?
Post by Ullah, Izhar
Dear Lorenz,
Apologies for the belated reply, for I was travelling, arrived today.
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node gwkt
enviot:A0_SoilSensingNode "POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A1_SoilSensingNode "POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A2_SoilSensingNode "POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A3_SoilSensingNode "POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A5_SoilSensingNode "POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A6_SoilSensingNode "POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A7_SoilSensingNode "POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A8_SoilSensingNode "POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A9_SoilSensingNode "POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AA_SoilSensingNode "POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AB_SoilSensingNode "POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AC_SoilSensingNode "POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AD_SoilSensingNode "POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AE_SoilSensingNode "POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:AF_SoilSensingNode "POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature fgeo fwkt
enviot:A_Hilltop enviot:A_HillTopLineGeometry "LINESTRING (-3.780833 53.203055, -3.781111 53.202777,
-3.780833 53.202222)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A_Riverbank enviot:A_RiverbankLineGeometry "LINESTRING (-3.783055 53.202777, -3.783063 53.202309,
-3.783065 53.202158, -3.783092 53.202007,
-3.782898 53.201828)
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
enviot:A_Swale enviot:A_SwalePolygonGeometry "POLYGON ((-3.782222 53.202777, -3.782024 53.202193,
-3.782638 53.202189, -3.783003 53.202191, -3.781964
53.201765, -3.782518 53.201841, -3.782877 53.201788,
-3.782222 53.202777))
"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes, which is the maximum.
PREFIX geosparql: <http://www.opengis.net/ont/geosparql#>
PREFIX sf: <http://www.opengis.net/ont/sf#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX enviot: <http://www.environmental-iot.com/enviot_ontology/IotSemanticModel#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX DUL: <http://www.loa-cnr.it/ontologies/DUL.owl#>
PREFIX ssn: <http://purl.oclc.org/NET/ssnx/ssn#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
SELECT (MAX(?nodecount) AS ?maxnodecount) WHERE {
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfTouches(?gwkt, "POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^geosparql:wktLiteral))
}
}
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^geosparql:wktLiteral))
}
}
{
SELECT (COUNT(?node) AS ?nodecount) WHERE {
?node rdf:type enviot:SoilSensingNode;
geosparql:hasGeometry ?geo .
?geo geosparql:asWKT ?gwkt.
FILTER (geof:sfIntersects(?gwkt, "LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^geosparql:wktLiteral))
}
}
}
If you make two of the sub-queries comments then it retrieves the correct number of Soil Sending Nodes for the one which is filtered but it does not retrieve the max of all these three features (i.e. Hilltop, Swale and Riverbank) having soil sensing nodes which should be 7 in this case.
If you need my ontology which contains the data I can send it to you but a) kindly provide me your personal email address and b) it is highly confidential, so, kindly do not disclose/share it to/with other people.
Many thanks in advance.
Best,
Izhar
________________________________________
Sent: 10 March 2017 07:53
Subject: Re: Complex SPARQL Query
It's almost unreadable in the current formatting...
At first, it would be good to see
1. the current SPARQL query
2. minimal sample data
3. the data that you expect to be returned
I guess, the pseudo query is (please correct me if I'm wrong)
"Which geographic feature contains the maximum number of soil sensing
nodes?"
And you expect as result
envoi:A_Swale
With the current formatting issues, it's pretty hard, because I don't
know the structure of the data. Once you provide this + the current
query, it's more or less using the COUNT aggregate function and probably
GROUP BY
Post by Ullah, Izhar
Hi all,
Table 1: Showing results from 1 to 15 of 15. Query took 0.127 s.
node
geo
gwkt
1
enviot:A0_SoilSensingNode<http://localhost:7200/resource/enviot/A0_SoilSensingNode>
enviot:A0_Geometry<http://localhost:7200/resource/enviot/A0_Geometry>
"POINT(-3.783065 53.202158)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A1_SoilSensingNode<http://localhost:7200/resource/enviot/A1_SoilSensingNode>
enviot:A1_Geometry<http://localhost:7200/resource/enviot/A1_Geometry>
"POINT(-3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A2_SoilSensingNode<http://localhost:7200/resource/enviot/A2_SoilSensingNode>
enviot:A2_Geometry<http://localhost:7200/resource/enviot/A2_Geometry>
"POINT(-3.783092 53.202007)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
4
enviot:A3_SoilSensingNode<http://localhost:7200/resource/enviot/A3_SoilSensingNode>
enviot:A3_Geometry<http://localhost:7200/resource/enviot/A3_Geometry>
"POINT(-3.781964 53.201765)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
5
enviot:A5_SoilSensingNode<http://localhost:7200/resource/enviot/A5_SoilSensingNode>
enviot:A5_Geometry<http://localhost:7200/resource/enviot/A5_Geometry>
"POINT(-3.783055 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
6
enviot:A6_SoilSensingNode<http://localhost:7200/resource/enviot/A6_SoilSensingNode>
enviot:A6_Geometry<http://localhost:7200/resource/enviot/A6_Geometry>
"POINT(-3.782222 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
7
enviot:A7_SoilSensingNode<http://localhost:7200/resource/enviot/A7_SoilSensingNode>
enviot:A7_Geometry<http://localhost:7200/resource/enviot/A7_Geometry>
"POINT(-3.781111 53.202777)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
8
enviot:A8_SoilSensingNode<http://localhost:7200/resource/enviot/A8_SoilSensingNode>
enviot:A8_Geometry<http://localhost:7200/resource/enviot/A8_Geometry>
"POINT(-3.780833 53.203055)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
9
enviot:A9_SoilSensingNode<http://localhost:7200/resource/enviot/A9_SoilSensingNode>
enviot:A9_Geometry<http://localhost:7200/resource/enviot/A9_Geometry>
"POINT(-3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
10
enviot:AA_SoilSensingNode<http://localhost:7200/resource/enviot/AA_SoilSensingNode>
enviot:AA_Geometry<http://localhost:7200/resource/enviot/AA_Geometry>
"POINT(-3.783063 53.202309)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
11
enviot:AB_SoilSensingNode<http://localhost:7200/resource/enviot/AB_SoilSensingNode>
enviot:AB_Geometry<http://localhost:7200/resource/enviot/AB_Geometry>
"POINT(-3.782638 53.202189)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
12
enviot:AC_SoilSensingNode<http://localhost:7200/resource/enviot/AC_SoilSensingNode>
enviot:AC_Geometry<http://localhost:7200/resource/enviot/AC_Geometry>
"POINT(-3.783003 53.202191)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
13
enviot:AD_SoilSensingNode<http://localhost:7200/resource/enviot/AD_SoilSensingNode>
enviot:AD_Geometry<http://localhost:7200/resource/enviot/AD_Geometry>
"POINT(-3.782518 53.201841)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
14
enviot:AE_SoilSensingNode<http://localhost:7200/resource/enviot/AE_SoilSensingNode>
enviot:AE_Geometry<http://localhost:7200/resource/enviot/AE_Geometry>
"POINT(-3.782024 53.202193)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
15
enviot:AF_SoilSensingNode<http://localhost:7200/resource/enviot/AF_SoilSensingNode>
enviot:AF_Geometry<http://localhost:7200/resource/enviot/AF_Geometry>
"POINT(-3.782877 53.201788)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
Table 2: Showing results from 1 to 3 of 3. Query took 0.081 s.
feature
fgeo
fwkt
1
enviot:A_Hilltop<http://localhost:7200/resource/enviot/A_Hilltop>
enviot:A_HillTopLineGeometry<http://localhost:7200/resource/enviot/A_HillTopLineGeometry>
"LINESTRING(-3.780833 53.203055, -3.781111 53.202777, -3.780833 53.202222)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
2
enviot:A_Riverbank<http://localhost:7200/resource/enviot/A_Riverbank>
enviot:A_RiverbankLineGeometry<http://localhost:7200/resource/enviot/A_RiverbankLineGeometry>
"LINESTRING(-3.783055 53.202777, -3.783063 53.202309, -3.783065 53.202158, -3.783092 53.202007, -3.782898 53.201828)"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
3
enviot:A_Swale<http://localhost:7200/resource/enviot/A_Swale>
enviot:A_SwalePolygonGeometry<http://localhost:7200/resource/enviot/A_SwalePolygonGeometry>
"POLYGON((-3.782222 53.202777, -3.782024 53.202193, -3.782638 53.202189, -3.783003 53.202191, -3.781964 53.201765, -3.782518 53.201841, -3.782877 53.201788, -3.782222 53.202777))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
I
NOTE: In the above table (Table 2), the column 'fwkt' has got exactly the same geometry values (Point(long lat) which are the geometry values of individual soil sensing nodes given in column named 'gwkt' in Table 1.
Which geographic feature contains the maximum number of soil sensing nodes?
The query/answer should retrieve envoi:A_Swale which has 7 soil sensing nodes.
I would be really grateful if someone could give me any idea/solution how to retrieve this?
If you require any further information please let me know.
Many thanks in advance.
Best regards,
Izhar
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
--
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center
Loading...