问题描述
我很难根据我的 URIRef(即 SPAQRL 查询的输出)打印 SKOS 更广泛和更狭窄的概念。我想根据捕获的 URI REF(即生物量)打印更广泛和更窄的概念。我正在解析的文件不包含 broader 和 Narrowers 概念。我不知道在对它们运行查询之前是否需要手动将它们添加到文件中。
我已经看到类似 skos broader and narrow inverse not working 的类似问题,但找不到解决方案。
import rdflib
g = rdflib.Graph()
result = g.parse("C://Users/support/Documents/Re.txt",format=("turtle"))
qres = g.query(
"""
prefix skos: <http://www.w3.org/2004/02/skos/core#>
SELECT *
WHERE { ?s skos:prefLabel "Biomass"}
""")
for row in qres: print(row)
for row in qres: print(row)
(rdflib.term.URIRef('http://aims.fao.org/aos/agrovoc/c_926'),)
我尝试嵌套 SELECT 查询,但它不起作用。
我的查询
qres = g.query(
"""
prefix skos: <http://www.w3.org/2004/02/skos/core#>
SELECT *
WHERE { ?s skos:broader ?o . {
SELECT ?s
WHERE { ?s skos:prefLabel "Biomass" .}
}
""")
for row in qres: print(row)
解决方法
如果您只是在为查询而苦苦挣扎,那么我认为您将其复杂化了。这应该有效
qres = g.query(
"""
prefix skos: <http://www.w3.org/2004/02/skos/core#>
SELECT * WHERE {
?s skos:broader ?o ; skos:prefLabel "Biomass" . }
""")