-
Notifications
You must be signed in to change notification settings - Fork 7
/
search_person.rq
49 lines (49 loc) · 1.58 KB
/
search_person.rq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Text search for persons, with additional data for identification
#
# Uses diverse literal properties, brings the best match on top
# of the list
#
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX text: <http://jena.apache.org/text#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
#
select distinct ?gndId ?person ?personLabel
(concat(?life, coalesce(concat("; ", group_concat(distinct str(?occupation) ;
separator = "; ")), "")) as ?shortInfo)
(group_concat(distinct ?affiliation ;
separator = "; ") as ?affiliations)
(group_concat(distinct ?info ;
separator = "; ") as ?biographicalInformation)
where {
# searched name
values ( ?name ) {
( "William K. Black" )
}
# limit number of results to 20
(?person ?score) text:query (?name 20) .
?person a gndo:DifferentiatedPerson ;
gndo:preferredNameForThePerson ?personLabel ;
gndo:gndIdentifier ?gndId .
#
# get additional information
optional {
?person gndo:professionOrOccupation/gndo:preferredNameForTheSubjectHeading ?occupation .
}
optional {
?person gndo:affiliation/gndo:preferredNameForTheCorporateBody ?affiliation .
}
optional {
?person gndo:biographicalOrHistoricalInformation ?info .
}
optional {
?person gndo:dateOfBirth ?birthDate .
}
optional {
?person gndo:dateOfDeath ?deathDate .
}
bind(if(bound(?birthDate), str(?birthDate), '') as ?birth)
bind(if(bound(?deathDate), str(?deathDate), '') as ?death)
bind(concat(?birth, ' - ', ?death) as ?life)
}
group by ?person ?score ?personLabel ?gndId ?life
order by desc(?score)