Hi Luís, I would suggest reporting this issue on the Virtuoso open source git issue tracker at:
https://github.com/openlink/virtuoso-opensource/issues which is where most now report issues or ask questions since we move to using git ... Also, do you have a minimal test case for recreating the issue, as if so that should be provided as well ... Best Regards Hugh Williams Professional Services OpenLink Software Home Page: http://www.openlinksw.com <http://www.openlinksw.com/> Community Support: https://community.openlinksw.com <https://community.openlinksw.com/> Company Blog: https://medium.com/openlink-software-blog <https://medium.com/openlink-software-blog> Virtuoso Blog: https://medium.com/virtuoso-blog <https://medium.com/virtuoso-blog> Data Access Drivers Blog: https://medium.com/openlink-odbc-jdbc-ado-net-data-access-drivers <https://medium.com/openlink-odbc-jdbc-ado-net-data-access-drivers> LinkedIn -- http://www.linkedin.com/company/openlink-software/ Twitter -- http://twitter.com/OpenLink Google+ -- http://plus.google.com/100570109519069333827/ Facebook -- http://www.facebook.com/OpenLinkSoftware Universal Data Access, Integration, and Management Technology Providers > On 11 May 2022, at 10:56, Luís Moreira de Sousa via Virtuoso-users > <virtuoso-users@lists.sourceforge.net> wrote: > > Dear all, > > after a few more tests it is starting to look like the problem is actually > with the geof:buffer function. A full example is at the of this message. > Whatever the function is returning, it is certainly not a 10 metre buffer > around the point. > > What could be going wrong here? If it is relevant the version I am using is > 07.20.3233. > > Thank you. > > > SPARQL > PREFIX geo: <http://www.opengis.net/ont/geosparql# > <http://www.opengis.net/ont/geosparql#>> > PREFIX geof: <http://www.opengis.net/def/function/geosparql/ > <http://www.opengis.net/def/function/geosparql/>> > PREFIX ex: <https://example.com <https://example.com/>#> > > SELECT geof:buffer(?lit_b, 10, <http://www.opengis.net/def/uom/OGC/1.0/metre > <http://www.opengis.net/def/uom/OGC/1.0/metre>>) > FROM <https://example.com <https://example.com/>#> > WHERE { > ex:point_b geo:asWKT ?lit_b . > }; > Type the rest of statement, end with a semicolon (;)> Type the rest of > statement, end with a semicolon (;)> Type the rest of statement, end with a > semicolon (;)> Type the rest of statement, end with a semicolon (;)> Type the > rest of statement, end with a semicolon (;)> Type the rest of statement, end > with a semicolon (;)> Type the rest of statement, end with a semicolon (;)> > Type the rest of statement, end with a semicolon (;)> Type the rest of > statement, end with a semicolon (;)> callret-0 > LONG VARCHAR > _______________________________________________________________________________ > > POLYGON((61 51,60.807852804032 49.049096779839,60.238795325113 > 47.173165676349,59.314696123025 45.444297669804,58.071067811865 > 43.928932188135,56.555702330196 42.685303876975,54.826834323651 > 41.761204674887,52.950903220161 41.192147195968,51 41,49.049096779839 > 41.192147195968,47.173165676349 41.761204674887,45.444297669804 > 42.685303876975,43.928932188135 43.928932188135,42.685303876975 > 45.444297669804,41.761204674887 47.173165676349,41.192147195968 > 49.049096779839,41 51,41.192147195968 52.950903220161,41.761204674887 > 54.826834323651,42.685303876975 56.555702330196,43.928932188134 > 58.071067811865,45.444297669804 59.314696123025,47.173165676349 > 60.238795325113,49.049096779839 60.807852804032,51 61,52.950903220161 > 60.807852804032,54.826834323651 60.238795325113,56.555702330196 > 59.314696123025,58.071067811865 58.071067811865,59.314696123025 > 56.555702330196,60.238795325113 54.826834323651,60.807852804032 > 52.950903220161,61 51)) > > 1 Rows. -- 29 msec. > > > -- > Luís > ------- Original Message ------- > On Tuesday, May 10th, 2022 at 9:25 AM, Luís Moreira de Sousa via > Virtuoso-users <virtuoso-users@lists.sourceforge.net> wrote: > >> Dear all, >> >> I am currently unable to use the geof:sfIntersects function as it produces >> unexpected results. As an example consider the following graph: >> >> @prefix geo: <http://www.opengis.net/ont/geosparql# >> <http://www.opengis.net/ont/geosparql#>> . >> @prefix ex: <https://example.com <https://example.com/>#> . >> >> ex:point_a a geo:Point ; >> geo:asWKT "POINT(50 50)"^^geo:wktLiteral . >> >> ex:point_b a geo:Point ; >> geo:asWKT "POINT(51 51)"^^geo:wktLiteral . >> >> >> The use case is to identify points that lay within a certain distance from >> each other. This can be obtained with a query like: >> >> SPARQL >> PREFIX geo: <http://www.opengis.net/ont/geosparql# >> <http://www.opengis.net/ont/geosparql#>> >> PREFIX geof: <http://www.opengis.net/def/function/geosparql/ >> <http://www.opengis.net/def/function/geosparql/>> >> PREFIX ex: <https://example.com <https://example.com/>#> >> >> SELECT geo:sfIntersects(?lit_a, geof:buffer(?lit_b, 10, >> <http://www.opengis.net/def/uom/OGC/1.0/metre >> <http://www.opengis.net/def/uom/OGC/1.0/metre>>)) >> FROM <https://example.com <https://example.com/>#> >> WHERE { >> ex:point_a geo:asWKT ?lit_a . >> ex:point_b geo:asWKT ?lit_b . >> }; >> >> Which produces the following result: >> >> INTEGER NOT NULL >> _______________________________________________________________________________ >> >> 1 >> >> 1 Rows. -- 6 msec. >> >> >> One obvious problem is the return type, it should be a xsd:boolean literal >> (OGC 11-052r4 >> Table 5), but is an integer instead (also not xsd:integer). But beyond that, >> it seems to point to a "true", whereas those two points lay much farther >> apart than 10 metres. >> >> As a sanity check, with a buffer of width zero the result is 0 (again >> integer type): >> >> SQL> SPARQL >> PREFIX geo: <http://www.opengis.net/ont/geosparql# >> <http://www.opengis.net/ont/geosparql#>> >> PREFIX geof: <http://www.opengis.net/def/function/geosparql/ >> <http://www.opengis.net/def/function/geosparql/>> >> PREFIX ex: <https://example.com <https://example.com/>#> >> >> SELECT geo:sfIntersects(?lit_a, geof:buffer(?lit_b, 0, >> <http://www.opengis.net/def/uom/OGC/1.0/metre >> <http://www.opengis.net/def/uom/OGC/1.0/metre>>)) >> FROM <https://example.com <https://example.com/>#> >> WHERE { >> ex:point_a geo:asWKT ?lit_a . >> ex:point_b geo:asWKT ?lit_b . >> }; >> Type the rest of statement, end with a semicolon (;)> Type the rest of >> statement, end with a semicolon (;)> Type the rest of statement, end with a >> semicolon (;)> Type the rest of statement, end with a semicolon (;)> Type >> the rest of statement, end with a semicolon (;)> Type the rest of statement, >> end with a semicolon (;)> Type the rest of statement, end with a semicolon >> (;)> Type the rest of statement, end with a semicolon (;)> Type the rest of >> statement, end with a semicolon (;)> Type the rest of statement, end with a >> semicolon (;)> callret-0 >> INTEGER NOT NULL >> _______________________________________________________________________________ >> >> 0 >> >> 1 Rows. -- 5 msec. >> >> Looks like something is going wrong. How can I obtain a correct result from >> geof:sfIntersects? >> >> Thank you. >> >> -- >> Luís >> > > _______________________________________________ > Virtuoso-users mailing list > Virtuoso-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/virtuoso-users
_______________________________________________ Virtuoso-users mailing list Virtuoso-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/virtuoso-users