首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在与JENA FUSEKI合作时建立地理空间索引

在与JENA FUSEKI合作时建立地理空间索引
EN

Stack Overflow用户
提问于 2017-08-22 10:17:16
回答 1查看 602关注 0票数 3

我想使用附近的地理空间函数,这里描述为通过JENA FUSEKI - https://jena.apache.org/documentation/query/spatial-query.html支持的。

我需要构建地理空间索引,以便查询工作。说明如下(摘自上述链接):

构建TDB数据集:

java -cp $FUSEKI_HOME/fuseki-server.jar tdb.tdbloader --tdb=assembler_ data_file

使用包含在Fuseki中的TDB副本。或者,使用一个TDB实用程序tdbloader或tdbloader2:

$JENA_HOME/bin/tdbloader --loc= data_file目录

然后使用jena.spatialindexer构建空间索引:

java -cp jena-spatial.jar al.jar jena.spatialindexer --desc=assembler_file

假设我知道哪个文件是FUSEKI文件夹中的汇编程序文件(我不知道),我在最新的jena下载中搜索jena- search al.jar。在发现它不在那里之后,我搜索它,并在这里找到一个jar的副本- type=av&a=jena-spatial&p=1

我试着运行它,但是我得到了“无法找到或加载主类jena.spatialindexer”的错误。我做搜索jena.spatialindexer和我找到一个匹配(不能张贴在这里,在链接的帖子限制)。

在这一点上,我想知道是否有可能使这个问题变得更复杂一点?你知道,我显然有时间在世界上搜索谷歌,试图找出这些神秘的线索。

简言之,如果有人曾经这样做过,请你指出我的错在哪里?

致以最亲切的问候,

克里斯。

EN

回答 1

Stack Overflow用户

发布于 2018-04-02 08:08:19

以防万一有帮助,请在我的配置下面找到

代码语言:javascript
复制
@prefix fuseki:  <http://jena.apache.org/fuseki#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix :        <#> .

@prefix spatial: <http://jena.apache.org/spatial#> .


# TDB
[] ja:loadClass "org.apache.jena.tdb.TDB" .
tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
tdb:GraphTDB    rdfs:subClassOf  ja:Model .

# Spatial
[] ja:loadClass "org.apache.jena.query.spatial.SpatialQuery" .
spatial:SpatialDataset  rdfs:subClassOf  ja:RDFDataset .
#spatial:SpatialIndexSolr  rdfs:subClassOf  spatial:SpatialIndex .
spatial:SpatialIndexLucene  rdfs:subClassOf   spatial:SpatialIndex .

## ---------------------------------------------------------------
## This URI must be fixed - it's used to assemble the spatial dataset.

:spatial_dataset rdf:type     spatial:SpatialDataset ;
    spatial:dataset   <#tdb_dataset_readwrite> ;
    ##spatial:index   <#indexSolr> ;
    spatial:index     <#indexLucene> ;
    .

<#tdb_dataset_readwrite> rdf:type      tdb:DatasetTDB ;
    tdb:location "/myfolder" ;
##     # Query timeout on this dataset (milliseconds)
##     ja:context [ ja:cxtName "arq:queryTimeout" ;  ja:cxtValue "1000" ] ;
##     # Default graph for query is the (read-only) union of all named graphs.
       tdb:unionDefaultGraph true ;
    .

<#indexLucene> a spatial:SpatialIndexLucene ;
    #spatial:directory <file:Lucene> ;
   ## spatial:directory "mem" ;
    spatial:directory <file:/myfolder/spatial> ;
    spatial:definition <#definition> ;
    .

<#definition> a spatial:EntityDefinition ;
    spatial:entityField      "uri" ;
    spatial:geoField     "geo" ;
    # custom geo predicates for 1) Latitude/Longitude Format
    spatial:hasSpatialPredicatePairs (
         [ spatial:latitude :latitude_1 ; spatial:longitude :longitude_1 ]
         [ spatial:latitude :latitude_2 ; spatial:longitude :longitude_2 ]
         ) ;
    # custom geo predicates for 2) Well Known Text (WKT) Literal
    spatial:hasWKTPredicates (:wkt_1 :wkt_2) ;
    # custom SpatialContextFactory for 2) Well Known Text (WKT) Literal
    spatial:spatialContextFactory
         "org.locationtech.spatial4j.context.jts.JtsSpatialContextFactory"
    .
#         "com.spatial4j.core.context.jts.JtsSpatialContextFactory"


<#service_tdb1> rdf:type fuseki:Service ;
    rdfs:label                      "TDB Service" ;
    fuseki:name                     "tdb_spatial" ;
    fuseki:serviceQuery             "query" ;
    fuseki:serviceQuery             "sparql" ;
    fuseki:serviceUpdate            "update" ;
    fuseki:serviceUpload            "upload" ;
    fuseki:serviceReadWriteGraphStore      "data" ;
    # A separate read-only graph store endpoint:
    fuseki:serviceReadGraphStore       "get" ;
    fuseki:dataset                  :spatial_dataset  ;

如您所见,我已将类名更改为org.locationtech.spatial4j.context.jts.JtsSpatialContextFactory。此外,在运行fuseki时,我必须在类路径中包含另一个jar文件,否则我就有问题了。

代码语言:javascript
复制
EntityDefinitionAssembler WARN  Custom SpatialContextFactory lib is not ready in classpath:com/vividsolutions/jts/geom/CoordinateSequenceFactory

然后我的命令行看起来是:

java -cp "fuseki-server.jar:lib/jts-1.13.jar“org.apache.jena.fuseki.cmd.FusekiCmd -debug

我已经从jts-1.13.jar下载了这里

此外,我还要感谢Kai为我指明了正确的方向。

注意:我仍然需要完全理解spatial:EntityDefinition下的字段。我将尝试编辑更多的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45814956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档