sparql语句进行查询

depedia

1、打开网站:http://dbpedia.org/sparql/ 2、查询有哪些书和书的简介 输入:

SELECT ?book ?com
WHERE 
{
  ?book rdf:type dbo:Book.
  ?book rdfs:comment ?com.
}

结果:

image.png

3、程序进行查询 安装SPARQLWrapper

from SPARQLWrapper import SPARQLWrapper, JSON
import json
sparql = SPARQLWrapper("http://dbpedia.org/sparql")

sparql.setQuery("""
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    SELECT ?book ?com
    WHERE 
    {
      ?book rdf:type dbo:Book.
      ?book rdfs:comment ?com.
    }
""")
#英语的过滤语言的简写是EN,在这里中文语言是ZH,FILTER是一个过滤器
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
# result_1=json.loads(results)
print(results)
for result in results["results"]["bindings"]:
    print(result["name"]["value"],result["date"]["value"],result["abstract"]["value"],"\n")

完整查询

    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX dbo: <http://dbpedia.org/ontology/>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX dc: <http://purl.org/dc/elements/1.1/>

    Select distinct ?birthdate ?thumbnail ?scientist ?name ?description WHERE {
    ?scientist rdf:type dbo:Scientist ;
               dbo:birthDate ?birthdate ;
               rdfs:label ?name ;
               dct:description ?description
    FILTER ((lang(?name)="en")&&(lang(?description)="en")&&(STRLEN(STR(?birthdate))>6)&&(SUBSTR(STR(?birthdate),6)=STR("05-14")) ).
    OPTIONAL { ?scientist dbo:thumbnail ?thumbnail .} 
    } ORDER BY ?birthdate
    """

wikidata

1、网站:https://query.wikidata.org/ 2、sparql语句查询有哪些猫

SELECT ?item ?itemLabel 
WHERE 
{
  ?item wdt:P31 wd:Q146.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "zh". }
}
  • 以中文进行反向排序

order by desc(?itemLabel)

  • 解释 所有属性是猫的实体, wdt表示关系,P31表示性质 wd表示实体,Q146表示猫 3、查询结果

image.png 4、练习:查询中国唐朝的皇帝有哪些? 步骤1:从一个实体出发 wikidata查一个具体的皇帝 找到属性和实体代号 P39职业,Q268218,中国皇帝

SELECT ?person ?personLabel 
WHERE 
{
  ?person wdt:P39 wd:Q268218.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "zh". }
}
order by desc(?personLabel) 

结果如下:查到了中国所有的皇帝

image.png

步骤二: 再添加条件 朝代P27,唐朝,Q9683

SELECT ?person ?personLabel 
WHERE 
{
  ?person wdt:P39 wd:Q268218.
  ?person wdt:P27 wd:Q9683
  SERVICE wikibase:label { bd:serviceParam wikibase:language "zh". }
}
order by desc(?personLabel) 

结果:

image.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券