【问题标题】:Strange Apache Jena OPTIONAL behavior奇怪的 Apache Jena 可选行为
【发布时间】:2013-08-23 09:47:24
【问题描述】:

我正在使用来自 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 模式移动到 单独的 OPTIONAL 我得到了正确的结果。

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 .  
    }
}     

这是 Jena 中的错误还是我的查询错误? 干杯,丹尼尔

【问题讨论】:

  • 显示您从第二个查询中得到的答案会很有帮助。这个问题似乎是关于查询如何匹配数据的。
  • 整个 OPTIONAL 模式要么匹配要么不匹配;它不会使块中的每个子模式独立可选。这出现在最近的一个问题中,那里的答案可以解决您的问题。 Getting dbpedia results with optional properties 的可能重复项

标签: rdf sparql jena semantic-web tdb


【解决方案1】:

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

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 .  }
    }
}

所以如果第二个有一些结果,大概对于任何一个 ?supermarket,一个 OPTIONAL 匹配而另一个不匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多