我正在尝试使用以下代码为鱼提取实体/概念,但我却很喜欢
Fish
سمك
Fische
Pisces
Poisson
Pesce
Vissen (dieren)
Ryby
Peixe
Рыбы
鱼
我希望能像 CAT FISH,GOLD FISH,GREEN FISH,FISHING 。我该怎么办?
from SPARQLWrapper import SPARQLWrapper, JSON
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery("""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT *
WHERE { <http://dbpedia.org/resource/Fish> rdfs:label ?name }
""")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
for result in results["results"]["bindings"]:
print(result["name"]["value"])
答案 0 :(得分:1)
您的查询正在请求实体rdfs:label
的所有<http://dbpedia.org/resource/Fish>
值。我认为您想要的是-
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?label ?entity
WHERE
{ ?entity rdfs:label ?label
FILTER ( regex ( ?label, "fish", "i" ) )
}
ORDER BY ?label
您可以添加LIMIT 10
或类似的行以获得更快(不完整)的结果。
您也可以使用Virtuoso内置函数(bif:contains
代替FILTER ( regex (...) )
,以便从DBpedia或其他由Virtuoso支持的端点获得更快的结果,例如-
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?label ?entity
WHERE
{ ?entity rdfs:label ?label .
?label bif:contains "fish"
}
ORDER BY ?label