rdf - 奇怪的 Apache Jena 可选行为

标签 rdf sparql jena semantic-web tdb

我正在使用 Maven 存储库中的 Jena(TDB 0.10.1,CORE/ARQ 2.10.1)。我导入了这个 file :

tdbloader --graph=http://linkedgeodata.org --loc=$bsdStore $lgdData"supermarkets.ttl"

我现在正尝试像这样查询这个模型:

PREFIX lgd: <http://linkedgeodata.org/ontology/> 
PREFIX wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>  
PREFIX geo: <http://geovocab.org/geometry#>  
PREFIX gis:     <http://www.opengis.net/ont/geosparql#>  
PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>  

SELECT DISTINCT ?supermarket ?label ?latitude ?longitude ?points  
FROM <http://linkedgeodata.org>  
WHERE {  
    ?supermarket a lgd:Supermarket .  
    ?supermarket ?p ?o .  
    OPTIONAL { 
      ?supermarket rdfs:label ?label .  
      ?supermarket geo:geometry ?geo .  
      ?geo gis:asWKT ?points .  
      ?supermarket wgs:lat ?latitude .  
      ?supermarket wgs:long ?longitude .  
    }
} 

不幸的是,这会返回空结果集。如果我现在将 wgs 模式移动到 单独的可选我得到正确的结果。

SELECT DISTINCT ?supermarket ?label ?latitude ?longitude ?points  
FROM <http://linkedgeodata.org>  
WHERE {  
    ?supermarket a lgd:Supermarket .  
    ?supermarket ?p ?o .  
    OPTIONAL { 
         ?supermarket rdfs:label ?label .  
         ?supermarket geo:geometry ?geo .  
         ?geo gis:asWKT ?points .  
    }
    OPTIONAL {
         ?supermarket wgs:lat ?latitude .  
         ?supermarket wgs:long ?longitude .  
    }
}     

这是耶拿的错误还是我的查询有误? 干杯,丹尼尔

最佳答案

整个可选 block 必须匹配;它不会使每个三重模式独立可选。那将是:

WHERE {  
    ?supermarket a lgd:Supermarket .  
    ?supermarket ?p ?o .  
    OPTIONAL { ?supermarket rdfs:label ?label .  }
    OPTIONAL { ?supermarket geo:geometry ?geo .  }
    OPTIONAL {   ?geo gis:asWKT ?points .  }
    OPTIONAL {   ?supermarket wgs:lat ?latitude .  }
    OPTIONAL {   ?supermarket wgs:long ?longitude .  }
    }
}

因此,如果第二个有一些结果,大概对于任何一个?超市,一个可选的匹配而另一个不匹配。

关于rdf - 奇怪的 Apache Jena 可选行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18399758/

相关文章:

date - SPARQL 日期转换

java - 匹配至少有一个共同词的字符串

java - 如何在给定名称的 Jena TDB 上查询模型

python - 使用空白节点 (rdflib) 时,Sparql 查询返回不期望的结果

java - 生成 Jena Bnode ID

MongoDB 和 RDF

javascript - 用于 NodeJS 的 N-triples 到 RDF/XML JavaScript 转换器

java - 替换耶拿 SPARQL 查询中的变量

java - 使用 jena fusioni 服务器查询 rdf 文件时出现异常

sparql - 有没有办法优化 SPARQL 查询?