我正在尝试使用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查询错误形成。
答案 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 .
}