查看查詢結(jié)果戳DBPedia sparql endpoint
PREFIX
定義如下:
PREFIX prop: <http://dbpedia.org/property/>
PREFIX ont: <http://dbpedia.org/ontology/>
PREFIX res: <http://dbpedia.org/resource/>
查詢所有謂詞
SELECT DISTINCT ?p
WHERE {
?s ?p ?o. #WHERE中只有一句條件的時候.可省略
}
一個類似的需求是查詢所有屬性
SELECT COUNT DISTINCT ?prop
WHERE {
?prop a rdf:Property #a是rdf:type的簡寫
}
ORDER BY ?prop #可選衍锚,只是為了展示ORDER BY的語法
查詢一個類的所有子類
select ?p { #WHERE在sparql中可省略
?p rdfs:subClassOf* ont:Person . #加*表示此步操作需要迭代進行坑雅,不僅查找Person的子類還查找子類的子類尊浪;去掉*則只查找Person的子類
}
類似的查詢一個類的所有超類
select ?p {
ont:Actor rdfs:subClassOf* ?p .
}
類似的語法還可以用于查詢一個屬性的子屬性
select ?p {
?p rdfs:subPropoertyOf* prop:height .
}
列出一個類的所有屬性
select distinct ?property where {
?property rdfs:domain ont:Actor.
}
子查詢(列出所有有生卒年份記載的聲優(yōu)的相關(guān)事實)
SELECT DISTINCT ?birth ?death ?actor ?p ?o
WHERE{
?actor ?p ?o.
{
SELECT DISTINCT ?actor ?birth ?death
WHERE {
?actor rdf:type ont:VoiceActor .
?actor prop:birthDate ?birth.
?actor prop:deathDate ?death.
}
}
}
使用FILTER正則匹配
SELECT DISTINCT ?p
WHERE {
?p a rdf:Property.
?s ?p ?o.
FILTER (REGEX(str(?p), "date", "i")) # "i"代表大小寫不敏感儒拂,匹配?p中出現(xiàn)date
}
顯示所有的named graph
SELECT DISTINCT ?g {
GRAPH ?g {}
}
MINUS只顯示一些有用的predicate
select *
{
{
term: ?p ?o.
MINUS {term: owl:sameAs ?o}
MINUS {term: rdf:type ?o}
MINUS {term: rdfs:label ?o}
MINUS {term: rdfs:comment ?o}
MINUS {term: ont:abstract ?o}
MINUS {term: dct:subject ?o}
}
UNION
{
?s ?p term:
MINUS {?s ont:wikiPageRedirects term:}
}
}
聚合語句的寫法(顯示配偶信息大于1條的演員)
SELECT ?s, (COUNT(?s) AS ?cnt)
{
?s a ont:Actor.
?s prop:spouse ?o.
FILTER(isLiteral(?o))
}
GROUP BY ?s
HAVING (COUNT(?s) > 1)
使用VALUES關(guān)鍵詞一次給一個變量賦多個值(返回wikidata對應的dbpedia實體的信息)
PREFIX wd: <http://www.wikidata.org/entity/>
select DISTINCT * {
VALUES ?x {wd:Q309486 wd:Q4653 wd:Q76}
?s owl:sameAs ?x .
?s ?p ?o .
FILTER(STRSTARTS(STR(?p), "http://dbpedia.org/") )
}