Wikidata:WikiProject Czech Republic/Strategické spolupráce/Národní knihovna ČR/NK/Validace dat

From Wikidata
Jump to navigation Jump to search

Projekt[edit]

Toto je stránka projektu Validace dat pro National Library of the Czech Republic (Q1967876). Více na stránce strategické spolupráce.

Příklad validací[edit]

Konkrétní dotazy (monitorovací)[edit]

Výpis všech ID ve Wikidatech (bez zavržených)[edit]

SELECT ?item ?nkcr WHERE {
  ?item p:P691 [ps:P691 ?nkcr ; wikibase:rank ?rank]
  FILTER(?rank != wikibase:DeprecatedRank) .
}
Try it!

Počet všech Wikidata objektů, které mají více propojení na databázi autorit NK[edit]

# Počet všech Wikidata objektů, které mají více propojení na databázi autorit NK
SELECT ?item ?itemLabel ?count WHERE {
  {
    SELECT ?item (COUNT(?nkc_aut_id) AS ?count) {
      ?item wdt:P691 ?nkc_aut_id.
    } GROUP BY ?item
  }
  FILTER(?count > 1)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],cs". }
} ORDER BY DESC(?count)
Try it!

Nejčastější důvody zavržení ID[edit]

select ?duvod_zavrzeniLabel (count(distinct(?nkcr)) as ?count) where {

  ?item p:P691 [ps:P691 ?nkcr ; pq:P2241 ?duvod_zavrzeni ; wikibase:rank wikibase:DeprecatedRank ] .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "cs,en". }
}
group by ?duvod_zavrzeniLabel order by desc(?count)
Try it!

Položky s totožným ID[edit]

SELECT * WHERE {
  {
    SELECT ?nkcr (COUNT(?obj) AS ?count) (GROUP_CONCAT(?obj; SEPARATOR = " , ") AS ?items) WHERE { 
      ?obj p:P691 [ps:P691 ?nkcr ; wikibase:rank ?rank ] filter(?rank != wikibase:DeprecatedRank). 
    }
    GROUP BY ?nkcr 
  }
  FILTER(?count > 1)
}
order by desc (?count)
Try it!

Položky s datem narození z Národních autorit, druhé je inverzní (6. 8. vs. 8. 6. )[edit]

select ?item ?itemLabel ?datum_narozeni_nkcr ?datum_narozeni_druhe with { select * where {
  ?item p:P569 ?statement1, ?statement2 .
  ?statement1 ps:P569 ?datum_narozeni_nkcr ; prov:wasDerivedFrom/pr:P248 wd:Q13550863 ; psv:P569/wikibase:timePrecision ?precision1 . 
  ?statement2 ps:P569 ?datum_narozeni_druhe; psv:P569/wikibase:timePrecision ?precision2. 
  
  FILTER( ?statement1 != ?statement2 ) . 
  FILTER (?precision1 = 11 && ?precision2 = 11 )
  FILTER(day(?datum_narozeni_nkcr)=month(?datum_narozeni_druhe) && month(?datum_narozeni_nkcr)=day(?datum_narozeni_druhe) && day(?datum_narozeni_nkcr) != month(?datum_narozeni_nkcr)) 
 
  } } as %people where {
  include %people
  SERVICE wikibase:label { bd:serviceParam wikibase:language "cs,en". }
}
Try it!

Nahlášené duplicity IDs ve zdrojové databázi[edit]

SELECT ?item ?itemLabel ?id  ?url  where { 
  ?item p:P691 ?s .
  ?s ps:P691 ?id ; pq:P3831 wd:Q1263068.
  ?item wdt:P31 wd:Q5 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "cs,en,de,fr". }
  bind(concat("[https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=", ?id," ",?id,"]") as ?url) .
}
Try it!

Položky s více ID, s totožnými vymezeními[edit]

SELECT ?item ?vymezeni ?vymezeni2 ?vymezeni3 (group_concat(?nkcr; separator=", ") as ?nkcr_ids) (COUNT(?nkcr) as ?itemcount) WITH {

SELECT * WHERE {
  ?item p:P691 ?statement .
  ?statement ps:P691 ?nkcr ; wikibase:rank ?rank filter(?rank != wikibase:DeprecatedRank).
} } as %items 

WHERE {
  include %items
  optional {?statement pq:P1810 ?vymezeni .}
  optional {?statement pq:P407 ?vymezeni2 .}
  optional {?statement pq:P518 ?vymezeni3 .}
  minus {?statement pq:P3831 wd:Q1263068 .}
 } 

GROUP BY ?item ?vymezeni ?vymezeni2 ?vymezeni3
HAVING(?itemcount>1)
Try it!


Osoby s NKC, které se narodily poté, co zemřely[edit]

select ?item ?datnar ?datumr where {
  ?item wdt:P691 [] .
  ?item p:P569 [ps:P569 ?datnar ; psv:P569/wikibase:timePrecision ?p1 ; wikibase:rank ?r1 ] 
        filter(?p1 > 8 && ?r1 != wikibase:DeprecatedRank) .
  ?item p:P570 [ps:P570 ?datumr ; psv:P570/wikibase:timePrecision ?p2 ; wikibase:rank ?r2 ] 
        filter(?p2 > 8 && ?r2 != wikibase:DeprecatedRank && (?datumr - ?datnar < 0) ) .
  }
Try it!

Položky s vícekrát vyplněnou totožnou hodnotou ID[edit]

select distinct ?item ?value where {

  ?item p:P691 ?s1, ?s2 filter(?s1 != ?s2) .
  ?s1 ps:P691 ?value .
  ?s2 ps:P691 ?value .

}
Try it!

Nejčastější spolupracovníci českých vědců, kteří ale nemají ID autorit[edit]

SELECT ?osoba ?osobaLabel (count(?prace) as ?count) WITH {
  SELECT ?prace {
   
  ?autor wdt:P19/wdt:P17 wd:Q213 .
  ?autor wdt:P496 [] .
  ?prace wdt:P50 ?autor .
  } LIMIT 1000
} AS %prace WHERE {
  INCLUDE %prace .

  ?prace wdt:P50 ?osoba .
  minus {?osoba wdt:P691 [] .}
  SERVICE wikibase:label { bd:serviceParam wikibase:language "cs,en". }
} 
GROUP BY ?osoba ?osobaLabel
ORDER BY DESC(?count)
Try it!

Konkrétní dotazy (vizualizační)[edit]

Vizualizace nejčastějších vztahů mezi záznamy[edit]

#defaultView:BubbleChart
select ?prop ?propLabel (count (?prop) as ?pocet)  where {
               {   
select ?item ?prop ?item2 where
  {
  ?item wdt:P691 [] .
  ?item2 wdt:P691 [] .
  ?item ?prop ?item2 .
  ?item wdt:P31 wd:Q5 .
  ?item2 wdt:P31 wd:Q5 .
  optional {?item rdfs:label ?itemLabel filter(lang(?itemLabel)="cs") .}
  optional {?item2 rdfs:label ?item2Label filter(lang(?item2Label)="cs") .}

  }
limit 5000
              }
?property wikibase:directClaim ?prop .
optional {?property rdfs:label ?propLabel filter(lang(?propLabel)="cs") .}

  }
      
group by ?prop ?propLabel
having(?pocet > 5)
limit 100
Try it!

Vizualizace častých vlastností v položkách s ID[edit]

#defaultView:BubbleChart
SELECT ?label (COUNT(*) AS ?number) WITH {
  SELECT DISTINCT ?wdt ?label {
    ?property wikibase:propertyType wikibase:ExternalId;
              wikibase:directClaim ?wdt;
              rdfs:label ?label .
    FILTER( LANG( ?label ) = 'en' ) .
    FILTER( ?property != wd:P691 ) .
  }
} AS %properties WITH {
  SELECT DISTINCT ?item {
    ?item wdt:P691 [] .
    ?item wdt:P31 wd:Q5 .
    #BIND( MD5(CONCAT(STR(?item), STR(RAND()))) AS ?hash ) .
  }
  #ORDER BY ?hash
  LIMIT 100
} AS %samples WHERE {
  INCLUDE %properties .
  INCLUDE %samples .
  ?item ?wdt [] .
} 
GROUP BY ?wdt ?label
Try it!

Vizualizace častých vlastností v položkách s ID - jen české identifikátory[edit]

#defaultView:BubbleChart
SELECT ?property ?propertyLabel ?procento WHERE {
{
SELECT ?property ?procento WHERE {
{
SELECT ?property (count(?item) as ?numberof) WHERE {
      {
SELECT distinct ?property ?item WHERE {

  ?item ?p [] .
  ?property wikibase:claim ?p .
  ?property wikibase:propertyType wikibase:ExternalId filter( ?property != wd:P691) .
  #{?property wdt:P31/wdt:P279 wd:Q18614948 .} union { ?property wdt:P31 wd:Q18614948 .}
  {?property wdt:P17 wd:Q213 . } union {?property wdt:P1629/wdt:P17 wd:Q213 .} union {?property wdt:P2378/wdt:P17 wd:Q213 .}
  
  {
  select ?item where 
         {
     ?item wdt:P691 [] .
     ?item wdt:P31 wd:Q5 .
         }
  }
  
} 
limit 10000
      }
  }
GROUP BY ?property
         }
  bind((100 * ?numberof / 10000) as ?procento)
         }
  }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "cs,en". }

}
order by desc(?procento)
Try it!

Položky s referencí na ID, které je v položce výslovně zavrženo jako chybné[edit]

select ?item ?id ?rel ?s with {
   select * where {
   ?item p:P691 [ps:P691 ?id ; pq:P2241 wd:Q35773207 ] .
   } } as %wrong where {
 include %wrong
 ?item ?rel ?s .
 ?s prov:wasDerivedFrom/pr:P691 ?id .
 minus {?s wikibase:rank wikibase:DeprecatedRank .}
}
Try it!

Referencování národními autoritami - dle vlastností[edit]

SELECT ?rel (count(?prop) as ?count) WHERE {
  ?item ?rel ?prop.
  ?prop (prov:wasDerivedFrom/pr:P248) wd:Q13550863.

} group by ?rel
Try it!

500 nejnovějších položek s ID[edit]

select ?item ?itemLabel ?desc ?nkcr with {
  select * where {
    ?item wdt:P691 ?nkcr .
    bind(substr(str(?item),33) as ?no ).

  } order by desc(xsd:integer(?no)) limit 500 
} as %first where {

  include %first
  optional {?item schema:description ?desccs filter(lang(?desccs)="cs" ). }
  optional {?item schema:description ?descen filter(lang(?descen)="en" ). }
  bind(coalesce(?desccs,?descen) as ?desc) .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "cs,en,de,nl,ru". }
} order by desc(xsd:integer(?no))
Try it!

Přiklad validační situace[edit]

Objekt na Wikidatech má dva a více odkazů na NL CR AUT ID (P691)[edit]

Jsou tady tři možné situace:

  1. Všechny odkazy jsou jedna a tatáž osoba
    • Chyba je na straně Wikidat a to taková, že jeden odkaz je platný a druhý není. V tom případě je nutné detekovat, který je špatný a ten odstranit (je nutné invalidovat propojení na Mix'n'match (Q28054658)).
    • Chyba je na straně Czech National Authority Database (Q13550863) a to taková, že tam existuje duplicita. Po vyřešení na straně Národní knihovny je nutné přejít na předešlý krok na straně Wikidat.
  2. Odkazy jsou jiné osoby
    • Chyba je na straně Wikidat, že tyto osoby spojuje do jedné.

Stav projektu[edit]

  • 14.4.2022 - Sepisování záměru

Související projekty[edit]