【问题标题】:Sparql query for wgs84 rdf用于 wgs84 rdf 的 Sparql 查询
【发布时间】:2012-12-11 16:52:36
【问题描述】:

我有这个 RDF 文件,我想查询以选择单个标记,但我不能。请有人帮助我

<rdf:RDF xmlns="http://www.w3.org/2003/01/geo/wgs84_pos#"
     xml:base="http://www.w3.org/2003/01/geo/wgs84_pos"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     xmlns:foaf="http://xmlns.com/foaf/0.1/"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 

<owl:NamedIndividual rdf:about="http://www.co-ode.org/ontologies/ont.owl#mark">
        <lat rdf:datatype="&xsd;double">121231.0</lat>
        <alt rdf:datatype="&xsd;double">2131.0</alt>
</owl:NamedIndividual>

【问题讨论】:

  • 您想根据坐标选择这个特定的标记吗?您尝试了一些查询吗?
  • 是的,选择 ?x where { ?x :lat "121231.0" }

标签: rdf sparql


【解决方案1】:

您尝试选择的值具有数据类型,因此您必须将其包含在查询中,即

PREFIX : <http://www.w3.org/2003/01/geo/wgs84_pos>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?x
WHERE
{
  ?x :lat "121231.0"^^xsd:double
}

否则条款不匹配,将不会选择任何内容

【讨论】:

  • @user205512 根据 SPARQL 规范,这将被解释为十进制而不是双精度,因此这不起作用。普通文字需要存在指数才能被视为双精度
  • 唉,总有一天我会学会阅读的。 ?x :lat ?lat . filter (?lat = 121231) 会起作用。
  • @user205512 可以,但比根据数据库大小选择特定值要慢得多。这是线性扫描与索引查找
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多