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

推荐阅读更多精彩内容