This is a diff between 1.6 and 1.7 revisions:

530a530
< SQL> SELECT * FROM DB.DBA.SYS_V7PROJ4_SRIDS;
529d530
> SQL> SELECT * FROM DB.DBA.SYS_PROJ4_SRIDS;
523a523
< The <code>v7proj4</code> plugin automatically applies the <code><nowiki>RAD_TO_DEG</nowiki></code> multiplier before conversion and/or the <code><nowiki>RAD_TO_DEG</nowiki></code> multiplier after conversion, when source and/or destination coordinate systems are latitude-longitude or geocentric. Even if this conversion is done automatically, you should remember that it happens, because many "how-to" instructions for spatial data sets contain paragraphs like "how to convert these data to WGS-84," and much sample C/C++ code contains transformations like <code><nowiki>{ x *= RAD_TO_DEG; y *= RAD_TO_DEG; }</nowiki></code>. These transformations will probably be redundant in the corresponding Virtuoso/PL code, while <code>proj4</code> strings can be used unchanged and simply passed as the 3rd and 4th arguments of the <code>[[http://docs.openlinksw.com/virtuoso/fn_ST_Transform.html][ST_Transform()]]</code> function. If degrees-to-radians conversion is made twice, the data may be calculated as if the shape is located in a totally different place of ellipsoid. If the post-transformation radians-to-degrees conversion is also made twice, the resulting shape may <i>look</i> like the real one, but coordinates may be tens of kilometers away from the correct values.
522d523
> The <code>proj4</code> plugin automatically applies the <code><nowiki>RAD_TO_DEG</nowiki></code> multiplier before conversion and/or the <code><nowiki>RAD_TO_DEG</nowiki></code> multiplier after conversion, when source and/or destination coordinate systems are latitude-longitude or geocentric. Even if this conversion is done automatically, you should remember that it happens, because many "how-to" instructions for spatial data sets contain paragraphs like "how to convert these data to WGS-84," and much sample C/C++ code contains transformations like <code><nowiki>{ x *= RAD_TO_DEG; y *= RAD_TO_DEG; }</nowiki></code>. These transformations will probably be redundant in the corresponding Virtuoso/PL code, while <code>proj4</code> strings can be used unchanged and simply passed as the 3rd and 4th arguments of the <code>[[http://docs.openlinksw.com/virtuoso/fn_ST_Transform.html][ST_Transform()]]</code> function. If degrees-to-radians conversion is made twice, the data may be calculated as if the shape is located in a totally different place of ellipsoid. If the post-transformation radians-to-degrees conversion is also made twice, the resulting shape may <i>look</i> like the real one, but coordinates may be tens of kilometers away from the correct values.
521a521
< The coordinate systems can also be updated by directly manipulating the <code><nowiki>DB.DBA.SYS_V7PROJ4_SRIDS</nowiki></code> table. (This table is readable by public, and writable only by DBA.) After editing the table, the "<code><nowiki>Proj4 cache_reset()</nowiki></code>" function should be called to prevent the SQL runtime from using previously-prepared projections that might now be obsolete. Note that <code>proj4</code> projections are for normalized data in radians, while Virtuoso stores shapes using numbers that come from WKT; i.e., they're latitudes and longitudes in degrees, for almost all cases.
520d521
> The coordinate systems can also be updated by directly manipulating the <code><nowiki>DB.DBA.SYS_PROJ4_SRIDS</nowiki></code> table. (This table is readable by public, and writable only by DBA.) After editing the table, the "<code><nowiki>Proj4 cache_reset()</nowiki></code>" function should be called to prevent the SQL runtime from using previously-prepared projections that might now be obsolete. Note that <code>proj4</code> projections are for normalized data in radians, while Virtuoso stores shapes using numbers that come from WKT; i.e., they're latitudes and longitudes in degrees, for almost all cases.
511a515
< ( SELECT SR_PROJ4_STRING FROM DB.DBA.SYS_V7PROJ4_SRIDS WHERE SR_ID= :0 AND SR_FAMILY='PG' ),
< ( SELECT SR_PROJ4_STRING FROM DB.DBA.SYS_V7PROJ4_SRIDS WHERE SR_ID= :0 AND SR_FAMILY='EPSG' ),
< ( SELECT SR_PROJ4_STRING FROM DB.DBA.SYS_V7PROJ4_SRIDS WHERE SR_ID= :0 AND SR_FAMILY='ESRI' ),
< ( SELECT SR_PROJ4_STRING FROM DB.DBA.SYS_V7PROJ4_SRIDS WHERE SR_ID= :0 AND SR_FAMILY='NAD83' ),
< ( SELECT SR_PROJ4_STRING FROM DB.DBA.SYS_V7PROJ4_SRIDS WHERE SR_ID= :0 AND SR_FAMILY='NAD27' )
510d511
> ( SELECT SR_PROJ4_STRING FROM DB.DBA.SYS_PROJ4_SRIDS WHERE SR_ID= :0 AND SR_FAMILY='PG' ),
> ( SELECT SR_PROJ4_STRING FROM DB.DBA.SYS_PROJ4_SRIDS WHERE SR_ID= :0 AND SR_FAMILY='EPSG' ),
> ( SELECT SR_PROJ4_STRING FROM DB.DBA.SYS_PROJ4_SRIDS WHERE SR_ID= :0 AND SR_FAMILY='ESRI' ),
> ( SELECT SR_PROJ4_STRING FROM DB.DBA.SYS_PROJ4_SRIDS WHERE SR_ID= :0 AND SR_FAMILY='NAD83' ),
> ( SELECT SR_PROJ4_STRING FROM DB.DBA.SYS_PROJ4_SRIDS WHERE SR_ID= :0 AND SR_FAMILY='NAD27' )
498a502
< DB.DBA.V7PROJ4_LOAD_INIT_FILE (projdir || '/epsg', 'EPSG');
< DB.DBA.V7PROJ4_LOAD_INIT_FILE (projdir || '/esri', 'ESRI');
< DB.DBA.V7PROJ4_LOAD_INIT_FILE (projdir || '/esri.extra', 'ESRI');
< DB.DBA.V7PROJ4_LOAD_INIT_FILE (projdir || '/nad83', 'NAD83');
< DB.DBA.V7PROJ4_LOAD_INIT_FILE (projdir || '/nad27', 'NAD27');
497d498
> DB.DBA.PROJ4_LOAD_INIT_FILE (projdir || '/epsg', 'EPSG');
> DB.DBA.PROJ4_LOAD_INIT_FILE (projdir || '/esri', 'ESRI');
> DB.DBA.PROJ4_LOAD_INIT_FILE (projdir || '/esri.extra', 'ESRI');
> DB.DBA.PROJ4_LOAD_INIT_FILE (projdir || '/nad83', 'NAD83');
> DB.DBA.PROJ4_LOAD_INIT_FILE (projdir || '/nad27', 'NAD27');
496a496
< The main part of <code><nowiki>DB.DBA.V7PROJ4_LOAD_SYS_SRIDS()</nowiki></code> is a sequence of:
495d496
> The main part of <code><nowiki>DB.DBA.PROJ4_LOAD_SYS_SRIDS()</nowiki></code> is a sequence of:
488a488
< DB.DBA.V7PROJ4_LOAD_INIT_FILE
487d488
> DB.DBA.PROJ4_LOAD_INIT_FILE
486a486
< * <code><nowiki>DB.DBA.V7PROJ4_LOAD_INIT_FILE</nowiki></code> is a lower-level procedure:
485d486
> * <code><nowiki>DB.DBA.PROJ4_LOAD_INIT_FILE</nowiki></code> is a lower-level procedure:
480a480
< DB.DBA.V7PROJ4_LOAD_SYS_SRIDS
479d480
> DB.DBA.PROJ4_LOAD_SYS_SRIDS
478a478
< * <code><nowiki>DB.DBA.V7PROJ4_LOAD_SYS_SRIDS</nowiki></code> is called at server startup, if the <code>v7proj4</code> plugin is loaded:
477d478
> * <code><nowiki>DB.DBA.PROJ4_LOAD_SYS_SRIDS</nowiki></code> is called at server startup, if the <code>proj4</code> plugin is loaded:
465a465
< SQL> SELECT * FROM DB.DBA.SYS_V7PROJ4_SRIDS;
464d465
> SQL> SELECT * FROM DB.DBA.SYS_PROJ4_SRIDS;
438a438
< CREATE TABLE DB.DBA.SYS_V7PROJ4_SRIDS
437d438
> CREATE TABLE DB.DBA.SYS_PROJ4_SRIDS
430a431
< 21:30:28 PL LOG: Initial setup of DB.DBA.SYS_V7PROJ4_SRIDS data from files in "/usr/share/proj"
< 21:30:30 PL LOG: DB.DBA.SYS_V7PROJ4_SRIDS now contains 6930 spatial reference systems
429d430
> 21:30:28 PL LOG: Initial setup of DB.DBA.SYS_PROJ4_SRIDS data from files in "/usr/share/proj"
> 21:30:30 PL LOG: DB.DBA.SYS_PROJ4_SRIDS now contains 6930 spatial reference systems
426a426
< 21:30:11 SUCCESS plugin 2: loaded from ./plugins/v7proj4.so }
425d426
> 21:30:11 SUCCESS plugin 2: loaded from ./plugins/proj4.so }
423a423
< 21:30:10 { Loading plugin 2: Type `plain', file `v7proj4' in `.'
422d423
> 21:30:10 { Loading plugin 2: Type `plain', file `proj4' in `.'
414a414
< Load2 = plain, v7proj4
413d414
> Load2 = plain, proj4
409a409
< After the plugin (<code>v7proj4.so</code>) is built, it must be added to the <code>[Plugins]</code> section of the Virtuoso configuration file (<code>virtuoso.ini</code> or the like). This must be done on every node, if running in a cluster.
408d409
> After the plugin (<code>proj4.so</code>) is built, it must be added to the <code>[Plugins]</code> section of the Virtuoso configuration file (<code>virtuoso.ini</code> or the like). This must be done on every node, if running in a cluster.
407a407
< ---+++ Installation and Configuration of v7proj4 Plug-in
406d407
> ---+++ Installation and Configuration of proj4 Plug-in
396a404
< bash-3.2$ ls libsrc/plugin/.libs/v7proj4*
< libsrc/plugin/.libs/v7proj4.a
< libsrc/plugin/.libs/v7proj4.la
< libsrc/plugin/.libs/v7proj4.lai
< libsrc/plugin/.libs/v7proj4_la-import_gate_virtuoso.o
< libsrc/plugin/.libs/v7proj4_la-sql_v7proj4.o
< libsrc/plugin/.libs/v7proj4_la-v7proj4_plugin.o
< libsrc/plugin/.libs/v7proj4.so
< libsrc/plugin/.libs/v7proj4.ver
395d396
> bash-3.2$ ls libsrc/plugin/.libs/proj4*
> libsrc/plugin/.libs/proj4.a
> libsrc/plugin/.libs/proj4.la
> libsrc/plugin/.libs/proj4.lai
> libsrc/plugin/.libs/proj4_la-import_gate_virtuoso.o
> libsrc/plugin/.libs/proj4_la-sql_proj4.o
> libsrc/plugin/.libs/proj4_la-proj4_plugin.o
> libsrc/plugin/.libs/proj4.so
> libsrc/plugin/.libs/proj4.ver
386a386
< git clone https://github.com/v7fasttrack/virtuoso-opensource.git
385d386
> git clone https://github.com/openlink/virtuoso-opensource.git
383a383
< <i><b>Note:</b> The <code>proj.4</code> library (may come from the [[http://trac.osgeo.org/proj/wiki/WikiStart#Download][proj.4 download]] area) must first be installed on the system, which the configure script will detect, enabling the <code>v7proj4</code> plugin library to be built in <code>~/libsrc/plugin/.libs</code>.</i>
382d383
> <i><b>Note:</b> The <code>proj.4</code> library (may come from the [[http://trac.osgeo.org/proj/wiki/WikiStart#Download][proj.4 download]] area) must first be installed on the system, which the configure script will detect, enabling the <code>proj4</code> plugin library to be built in <code>~/libsrc/plugin/.libs</code>.</i>
381a381
< The <code>v7proj4</code> is currently available in the default <code>develop/7</code> branch of the <code>[[https://github.com/v7fasttrack/virtuoso-opensource][v7fasttrack]]</code> git repository, and can be built with the following command sequence.
380d381
> The <code>proj4</code> is currently available in the default <code>develop/7</code> branch of the <code>[[https://github.com/openlink/virtuoso-opensource][Virtuoso Open Source]]</code> git repository, and can be built with the following command sequence.
379a379
< ---+++ Compiling v7proj4 Plug-in
378d379
> ---+++ Compiling proj4 Plug-in
377a377
< The Virtuoso <code>v7proj4</code> Hosted Plugin Module is required for performing transformation between different coordinates systems using the <code>[[http://docs.openlinksw.com/virtuoso/fn_ST_Transform.html][ST_Transform()]]</code> function. The plugin is based on [[http://trac.osgeo.org/proj/][Frank Warmerdam's <code>proj4</code>]] library and it is practical to have the <code>proj4</code> package installed on every box of a Virtuoso cluster, even if the build is performed on single machine including one outside the cluster. The reason is that the plugin should load data about coordinate systems to work, and the simplest way to get the right data from a high-quality source is to use the package.
376d377
> The Virtuoso <code>proj4</code> Hosted Plugin Module is required for performing transformation between different coordinates systems using the <code>[[http://docs.openlinksw.com/virtuoso/fn_ST_Transform.html][ST_Transform()]]</code> function. The plugin is based on [[http://trac.osgeo.org/proj/][Frank Warmerdam's <code>proj4</code>]] library and it is practical to have the <code>proj4</code> package installed on every box of a Virtuoso cluster, even if the build is performed on single machine including one outside the cluster. The reason is that the plugin should load data about coordinate systems to work, and the simplest way to get the right data from a high-quality source is to use the package.
375a375
< ---++ Open Source v7proj4 Plug-in
374d375
> ---++ Open Source proj4 Plug-in
370a370
< %BR% Transforms the given shape from its current spatial reference system to one specified by <code><nowiki>dest_srid</nowiki></code>. Two optional arguments are for "cheating": the SRID of the resulting shape is set to <code><nowiki>dest_srid</nowiki></code>, but the conversion is done by <code>proj4</code> using <code><nowiki>origin_proj4_string</nowiki></code> for projection of original shape and <code><nowiki>dest_proj4_string</nowiki></code> for the result. If <code><nowiki>orig_proj4_string</nowiki></code> or <code><nowiki>dest_proj4_string</nowiki></code> argument is passed but is <code>NULL</code> instead of <code>string</code>, the projection corresponding to original or destination SRID is used. <code>[[http://docs.openlinksw.com/virtuoso/fn_ST_Transform.html][ST_Transform()]]</code> is provided by a separate plugin named <code>v7proj4</code>, as described below. When the plugin is loaded, functions like <code>[[http://docs.openlinksw.com/virtuoso/fn_ST_Intersects.html][ST_Intersects()]]</code> support pairs of arguments with different SRIDs by converting coords of second argument into the system of the first one, as required by OGC and <nowiki>GeoSPARQL</nowiki>.
369d370
> %BR% Transforms the given shape from its current spatial reference system to one specified by <code><nowiki>dest_srid</nowiki></code>. Two optional arguments are for "cheating": the SRID of the resulting shape is set to <code><nowiki>dest_srid</nowiki></code>, but the conversion is done by <code>proj4</code> using <code><nowiki>origin_proj4_string</nowiki></code> for projection of original shape and <code><nowiki>dest_proj4_string</nowiki></code> for the result. If <code><nowiki>orig_proj4_string</nowiki></code> or <code><nowiki>dest_proj4_string</nowiki></code> argument is passed but is <code>NULL</code> instead of <code>string</code>, the projection corresponding to original or destination SRID is used. <code>[[http://docs.openlinksw.com/virtuoso/fn_ST_Transform.html][ST_Transform()]]</code> is provided by a separate plugin named <code>proj4</code>, as described below. When the plugin is loaded, functions like <code>[[http://docs.openlinksw.com/virtuoso/fn_ST_Intersects.html][ST_Intersects()]]</code> support pairs of arguments with different SRIDs by converting coords of second argument into the system of the first one, as required by OGC and <nowiki>GeoSPARQL</nowiki>.