Python中SPARQL查询的语法,用于查询ttl文件

时间:2016-10-20 14:25:59

标签: python sparql ttl rdflib

我正在尝试使用Python中的RDFLib查询(原始.ttl)文件。该文件的摘录如下所示。

  

http://id.vlaanderen.be/statistieken/dq/kubus-kadaster/observatie/0/0/0#id a qb:观察;       qb:dataSet http://id.vlaanderen.be/statistieken/dq/kubus-kadaster#id;       statsvl:refArea http://id.fedstats.be/nis/11001#id;       statsvl:timePeriod http://id.vlaanderen.be/statistieken/concept/jaar_1997#id;       statsvl:oppervlaktetype http://id.vlaanderen.be/statistieken/concept/appartementen#id;       sdmx-attribute:unitMeasure单位:欧元;       qb:measureType statsvl:totaleki;       statsvl:totaleki“916371”^^ xsd:int。

我想为此示例提取 totaleki 的值。我正在使用SPARQLWrapper来执行此操作。但是,我认为WHERE子句有问题。有谁知道如何为这个特定的refArea获取此值?

import rdflib
from SPARQLWrapper import SPARQLWrapper, JSON

g = rdflib.Graph()
result = g.parse('cube7.ttl', format='n3')

sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery("""
PREFIX statsvl: <http://id.vlaanderen.be/statistieken/def#>
SELECT ?refArea ?totaleki
WHERE { <http://id.fedstats.be/nis/11001#id> statsvl:refArea ?refArea 
        statsvl:totaleki ?totaleki}
""")

这会产生错误: QueryBadFormed:一个错误的请求已发送到端点,可能是sparql查询错误形成。

1 个答案:

答案 0 :(得分:1)

Semicolon is missing after the first triple pattern:

PREFIX statsvl: <http://id.vlaanderen.be/statistieken/def#>
SELECT ?refArea ?totaleki
WHERE { <http://id.fedstats.be/nis/11001#id> statsvl:refArea ?refArea ;
                                             statsvl:totaleki ?totaleki .
}