query-b42488afecde2408257474d88a0f91b3

rq turtle/ttl


Many persons without statement family name

----------------------------------------------------------

Familienname

SELECT distinct ?item ?label_de ?lastname WHERE { SERVICE bd:slice { ?item wdt:P31 wd:Q5 . bd:serviceParam bd:slice.offset 0 . # Offset bd:serviceParam bd:slice.limit 5000 . # number of datasets to scan }
MINUS { ?item wdt:P734 [] } . # no family name

?item rdfs:label ?label_de . # only german label FILTER(LANG(?label_de) = 'de') .

FILTER(REGEX(STR(?label_de), "[^,]")) . # no commas "Prinzessin Elisabeth Helene, Markgrafin von Meißen" FILTER(!REGEX(STR(?label_de), "[0-9]")) . # no number "12th Planet" FILTER(!REGEX(STR(?label_de), "\?")) . # no Question mark "A.geh Wirklich?" FILTER(!REGEX(STR(?label_de), "\-")) . # no minus "Adib asch-Schischakli" FILTER(REGEX(STR(?label_de), " ")) . # minimum one space z.B. "Athenagoras" FILTER(!REGEX(STR(?label_de), "\.$")) . # no point at the end "Johann Reinhard III." FILTER(!REGEX(STR(?label_de), " (von|de|le|der|die|das|dem) ")) . # no nobiliary particle "Anton Günther Herzog von Oldenburg"

# only since 1875 OPTIONAL { ?item wdt:P569 ?date_of_birth }. # date of birth FILTER (?date_of_birth >= "1875-01-01T00:00:00Z"^^xsd:dateTime)

BIND(REPLACE(?label_de, "^. ([^\s]+)$", "$1") AS ?lastname) # get lastname FILTER(REGEX(STR(?lastname), "....")) . # minimum 3 letters

SERVICE wikibase:label { bd:serviceParam wikibase:language "de". } } order by ?lastname ?label_de limit 30

Use at

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bd: <http://www.bigdata.com/rdf#>
#----------------------------------------------------------
# Many persons without statement family name
#----------------------------------------------------------
#Familienname
SELECT distinct ?item ?label_de ?lastname
WHERE 
{
  SERVICE bd:slice {
    ?item wdt:P31 wd:Q5 .
    bd:serviceParam bd:slice.offset 0 .      # Offset 
    bd:serviceParam bd:slice.limit 5000 .   #  number of datasets to scan
  }      
  MINUS { ?item wdt:P734 [] } .              # no family name

  ?item rdfs:label ?label_de .               # only german label
  FILTER(LANG(?label_de) = 'de') .  

  FILTER(REGEX(STR(?label_de), "[^,]")) .    # no commas  "Prinzessin Elisabeth Helene, Markgrafin von Meißen"
  FILTER(!REGEX(STR(?label_de), "[0-9]")) .  # no number   "12th Planet" 
  FILTER(!REGEX(STR(?label_de), "\\?")) .    # no Question mark  "A.geh Wirklich?" 
  FILTER(!REGEX(STR(?label_de), "\\-")) .    # no minus  "Adib asch-Schischakli" 
  FILTER(REGEX(STR(?label_de), " ")) .       # minimum one space z.B.  "Athenagoras"
  FILTER(!REGEX(STR(?label_de), "\\.$")) .   # no point at the end  "Johann Reinhard III."
  FILTER(!REGEX(STR(?label_de), " (von|de|le|der|die|das|dem) ")) .  # no nobiliary particle   "Anton Günther Herzog von Oldenburg"

  # only since 1875
  OPTIONAL { ?item wdt:P569 ?date_of_birth }. # date of birth
  FILTER (?date_of_birth >= "1875-01-01T00:00:00Z"^^xsd:dateTime)  

  BIND(REPLACE(?label_de, "^.* ([^\\s]+)$", "$1") AS ?lastname)  # get lastname
  FILTER(REGEX(STR(?lastname), "....*")) .                       # minimum 3 letters  

  SERVICE wikibase:label { bd:serviceParam wikibase:language "de". } 
}
order by ?lastname ?label_de 
limit 30

Query found at

graph TD classDef projected fill:lightgreen; classDef literal fill:orange; classDef iri fill:yellow; v3("?date_of_birth") v4("?item"):::projected v2("?label_de"):::projected v5("?lastname"):::projected a1((" ")) c10(["de"]):::literal c18(["5000^^xsd:integer"]):::literal c16(["0^^xsd:integer"]):::literal c14(["bd:serviceParam"]):::iri c13(["wd:Q5"]):::iri f0[["regex(str(?lastname),'....*')"]] f0 --> v5 f1[["?date_of_birth >= '1875-01-01T00:00:00Z^^xsd:dateTime'"]] f1 --> v3 f2[["not regex(str(?label_de),' (von|de|le|der|die|das|dem) ')"]] f2 --> v2 f3[["not regex(str(?label_de),'\.$')"]] f3 --> v2 f4[["regex(str(?label_de),' ')"]] f4 --> v2 f5[["not regex(str(?label_de),'\-')"]] f5 --> v2 f6[["not regex(str(?label_de),'\?')"]] f6 --> v2 f7[["not regex(str(?label_de),'#91;0-9#93;')"]] f7 --> v2 f8[["regex(str(?label_de),'#91;^,#93;')"]] f8 --> v2 f9[["?label_de = 'de'"]] f9 --> v2 subgraph s1["http://www.bigdata.com/rdf#slice"] style s1 stroke-width:4px; v4 --"wdt:P31"--> c13 c14 --"bd:slice.offset"--> c16 c14 --"bd:slice.limit"--> c18 end subgraph minus10["MINUS"] style minus10 stroke-width:6px,fill:pink,stroke:red; v4 --"wdt:P734"--> a1 end v4 --"rdfs:label"--> v2 subgraph optional0["(optional)"] style optional0 fill:#bbf,stroke-dasharray: 5 5; v4 -."wdt:P569".-> v3 end bind11[/"replace(?label_de,'^.* (#91;^\s#93;+)$','$1')"/] v2 --o bind11 bind11 --as--o v5 subgraph s2["http://wikiba.se/ontology#label"] style s2 stroke-width:4px; c14 --"wikibase:language"--> c10 end