微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sparql、距离和非常长的响应时间

如何解决Sparql、距离和非常长的响应时间

我在 Spring Boot 项目中使用了 sparql。

我创建了一个查询,该查询将计算距离,然后过滤距离是否小于 x。

但是,我的处理时间很长(大约 2 秒,有时是 +)。在我的电脑上,我有 32GB 的内存,在我的生产服务器上少得多(1GB 的内存),但时间总是一样的。

    query1
         PREFIX (...)
        PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
        PREFIX geo: <http://www.opengis.net/ont/geosparql#>
        prefix sf: <http://www.opengis.net/ont/sf>
        PREFIX uom: <http://www.opengis.net/def/uom/OGC/1.0/>
                    SELECT
            ?url ?contactUri ?email ?id ?descri_courte ?geo ?lon ?lat ?x ?geom ?lattype ?wkt ?xr ?longitude
            WHERE {
              ?url   :isLocatedAt ?place.
              ?place schema:geo ?geo.## ?place a pour coordonnées géographiques ?geo
            ?geo schema:longitude ?longitude; ## ?geo a pour longitude ?longitude
            schema:latitude ?latitude.
            BIND (STRDT(CONCAT("POINT(",str(?longitude)," ",str(?latitude),")"),geo:wktLiteral) as ?wkt)
BIND (STRDT(CONCAT("POINT(",str(10.9999),str(52.9999),geo:wktLiteral) as ?wp2)
              BIND (geof:distance(?wkt,?wp2,uom:metre) as ?xr)
FILTER(?xr < 2000)

            ?url <https://www.datatourisme.gouv.fr/ontology/core#hasContact> ?contactUri.
              ?contactUri a <https://www.datatourisme.gouv.fr/ontology/core#Agent>.
                      optional {
                        ?contactUri schema:email ?email.
                        }
         ?url dc:identifier ?id.
             Optional { ?url rdfs:label ?descri_courte }
                 Optional { ?place schema:geo ?geo }
              Optional { ?geo schema:longitude ?lon; schema:latitude ?lat. }
              Optional {?geo rdf:type ?lattype}
              Optional {?geo <https://www.datatourisme.gouv.fr/ontology/core#latlon> ?x. }

            }

另一方面,算一算,处理时间明显更快

  query2:     
    PREFIX (...)
        PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
        PREFIX geo: <http://www.opengis.net/ont/geosparql#>
        prefix sf: <http://www.opengis.net/ont/sf>
        PREFIX uom: <http://www.opengis.net/def/uom/OGC/1.0/>
                    SELECT
                    (count(*) as ?resultat)
                    WHERE {
                      ?url   :isLocatedAt ?place.
                      ?place schema:geo ?geo.## ?place a pour coordonnées géographiques ?geo
                    ?geo schema:longitude ?longitude; ## ?geo a pour longitude ?longitude
                    schema:latitude ?latitude.
                    BIND (STRDT(CONCAT("POINT(",geo:wktLiteral) as ?wkt)
        BIND (STRDT(CONCAT("POINT(",geo:wktLiteral) as ?wp2)
                      BIND (geof:distance(?wkt,uom:metre) as ?xr)
        FILTER(?xr < 2000)
                    }

我使用耶拿。我已经尝试缩短查询 1,但我觉得处理时间没有改变……你能帮我提高查询 1 的性能吗?

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?