H:::SPARQL

GeoSparql with Stardog

joyHong 2023. 6. 28. 00:28

위경도 정보를 활용해 반경 내 특정 정보를 찾아야 하는 태스크가 생겨

스타독을 활용하여 반경 내 검색을 적용하였다.

스타독에서 기본적으로 지원하는 Geospatial  스펙은  WGS84와 GeoSPARQL 이기 때문에

WGS84 위경도 좌표만 입력하면  공간좌표를 활용한 검색이 가능하다.

테스트를 위해 특정 위치의 반경 2km내에 존재하는 다른 데이터를 검색하니 매우 빠른 속도로 결과를 내주었다.

반경  km를 늘려가며 테스트 했을 때 속도 저하는 거의 없었으며

limit 1000 건까지는 1초 내로 결과를 내주는 성능을 보이고 있었다.

리미트 1000건 이후로는 큰 의미가 없을 것 같아 테스트 하지 않았고, 이정도라면

무난한 서비스가 가능할 것 같다.

 

물론 SPARQL을 어떻게 작성하는냐에 따라 성능 차이는 있을 것이다.

아래는 테스트에 사용한 예제 쿼리이다.

SELECT ?s ?label ?slat ?slong 
WHERE {
    {
        {
            SELECT ?lat ?long
            WHERE {
                joyhong:AB1234 geo:hasGeometry ?geom.
                ?geom wgs:lat ?lat.
                ?geom wgs:long ?long.
            }
        }
        ?s geo:hasGeometry ?sgeo.
        ?s rdfs:label ?label.
        
        ?sgeo geof:nearby (?lat ?long 2 unit:Kilometer).
        ?sgeo wgs:lat ?slat.
        ?sgeo wgs:long ?slong.
    }
}
LIMIT 100