Gebruiksaanwijzing extensie External Data: verschil tussen versies

Uit MediaWikiGids
Ga naar: navigatie, zoeken
(Voorbeeld "Claims")
(Voorbeeld "Claims")
Regel 286: Regel 286:
 
|}
 
|}
  
P17: {{WB-label|P17}}
+
P17: {{WD-label|P17}}
 +
 
 
---------
 
---------
 
https://www.wikidata.org/w/api.php?action=query&prop=wbgetclaims&id=Q2155935
 
https://www.wikidata.org/w/api.php?action=query&prop=wbgetclaims&id=Q2155935

Versie van 4 mei 2020 om 18:15

Je vindt hier de officiële gebruiksaanwijzing van de Extension:External_Data.

De extensie werkt in twee stappen:

  1. Laad de gegevens uit externe bron met behulp van een #get - functie
  2. Geef de gegevens weer op de pagina (of: sla de gegevens op met behulp van Semantic MediaWiki)

External Data biedt vijf verschillende manieren om externe gegevens in je wiki-pagina te laden:

<!-- Vanaf een webpagina, inclusief API -->
{{#get_web_data: }}
{{#get_soap_data: }}

<!-- Vanuit een locale file -->
{{#get_file_data: }}

<!-- Vanuit een database -->
{{#get_db_data: }}

<!-- Vanuit een LDAP-server -->
{{#get_ldap_data: }}

Voor het weergeven zijn de volgende opties beschikbaar:

<!-- Geef een waarde van een variabele weer -->
{{#external_value: }}

<!-- Doorloop alle verkregen waarden van een set variabelen en geef elke waarde met omvattende ("container"-) tekst weer - meestal als een tabel. -->
{{#for_external_table: }} 

<!-- Doorloop een tabel met waarden sla deze op als "semantische eigenschap" met behulp van de Semantics MediaWiki estiensie. Dit gebeurt door het voor iedere rij aanroepen van de #subobject functie van SMW. -->
{{#store_external_table: }}

<!-- Doorloop alle verkregen waarden voor een set van variabelen en geef iedere "rij" weer door middel van een sjabloon. -->
{{#display_external_table: }}

Een laatste commando is beschikbaar voor het wissen van gegevens:

<!-- wis de huidige set van verkregen waarden. -->
{{#clear_external_data: }} 

Externe data vanaf een webpagina

{{#get_web_data:
url=data source URL
|format={CSV|CSV with header|GFF|JSON|XML}
|delimiter=delimiter
|data=local_variable_name1=external_variable_name1, etc.
|filters=external_variable_name1=filter_value1, etc.
|use xpath
|post data=additional data
|cache seconds=number of seconds
}}

SOAP

{{#get_soap_data:
url=data source URL
|request=the function used to request data
|requestData=parameter1=value1, etc.
|response=the function used to retrieve data
|data=local_variable_name1=external_variable_name1, etc.
}}

Externe data vanuit een database

Dit voorbeeld moet nog worden uitgewerkt.

Externe data vanuit een LDAP server

Dit voorbeeld moet nog worden uitgewerkt.

Testcase 1 - Gebruik External Data via de API van adlib

Documentatie adlib: [1]

Voorbeeld: Search all records: return all records from collect.inf

Specificatie API-verzoek:
http://test2.adlibsoft.com/api/wwwopac.ashx?database=collect.inf&search=all

Code External Data:

{{#get_web_data:
url=http://test2.adlibsoft.com/api/wwwopac.ashx?database=collect.inf&search=all
|format=XML
|delimiter=10
|data=creatie=created,
modificatie=modification,
geselecteerd=selected,
administratie naam=administration_name,
maker=creator,
categorie=object_category,
object nummer=object_number,
reproductiereferentie=reproduction.reference,
titel=title, 
taal=lang,
invariant=invariant
|cache seconds=1500
}}

Opmerkingen:

  1. Het attribuut / label (attribute, tag) priref is weggelaten, omdat het dubbel voorkomt. Het gebruik Xpath kan hiervoor een oplossing bieden.
  2. Het importeren van de letter à - geen ASCII-character - geeft een fout, veroorzaakt door het ontbreken van de multibyte string PHP-extensie (zie: http://php.net/manual/en/book.mbstring.php).


Creatie Modificatie Geselec
teerd
Administra
tienaam
Maker Categorie Object nummer Reproductie
referentie
Titel Taal

2007-02-07T13:40:36 2016-08-25T08:33:57 False PDP Ghirlandaio, Domenico (Domenico Bigordi) painting M.54 M.54.jpg The Nativity nl-NL
2007-02-07T13:40:36 2016-08-25T08:33:49 False PDP Bert Degenhart Drenth painting 99 99.jpg The Transfiguration nl-NL
2007-02-07T13:40:36 2016-08-25T08:34:09 False PDP Batoni, Pompeo Girolamo painting PD.4-1950 PD.4-1950.jpg The 7th Earl of Northampton nl-NL
2007-02-07T13:40:36 2016-08-25T08:34:09 False PDP Constable, John painting PD.207-1948 PD.207-1948.jpg Hampstead Heath nl-NL
2007-02-07T13:40:36 2016-08-25T08:34:09 False PDP Rosa, Salvator painting PD.53-1958 PD.53-1958.jpg L'Umana Fragilit nl-NL
2007-02-07T13:40:36 2016-08-25T08:34:09 False PDP Elmore, Alfred painting PD.108-1975 PD.108-1975.jpg à nl-NL
2007-02-07T13:40:36 2016-08-25T08:33:57 False PDP Sellaio, Jacopo del painting M.75 M.75.jpg On the Brink (1865) nl-NL
2007-02-07T13:40:36 2017-01-27T15:46:11 False PDP Rossetti, Dante Gabriel drawing 2151 2151.jpg The Story of Cupid and Psyche nl-NL
2007-02-07T13:40:36 2016-08-25T08:33:41 False PDP Turner, Joseph Mallord William drawing 2476 2476.jpg Mary Magdalene at the Door of Simon the Pharisee nl-NL
2007-02-07T13:40:36 2017-06-20T21:51:58 False PDP Sickert, Walter Richard painting 2458 2458.jpg The field of Waterloo nl-NL
The Old Bedford nl-NL
The boy I love is up in the gallery nl-NL
Cupid in the gallery

Testcase Ib - Gegevens uit adlib TE

Ref Naam Performer Functie

Testcase 2 - Gebruik External Data om gegevens uit Wikidata via API op te halen

Documentatie:

Voorbeeld labels

https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q2155935&props=labels&languages=nl

Gebruik External data om het "label" (naam van de pagina op Wikipedia ?) op te vragen van het item "Q2155935" in Wikidata.org:

{{#get_web_data: url=https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q2155935&props=labels&languages=nl
&format=json
|format=JSON
|data= wikilabel=value
}}

{{#external_value:wikilabel}}


Resultaat: De Brakke Grond

Alternatief (beter?) is het gebruik "?action=query"


Resultaat: De Brakke Grond

Resultaat lijkt goed, maar query werkt niet en geeft fouten.


api.php?action=query&prop=wbentityusage&titles=Main%20Page|Malayan%20civet

Voorbeeld Aliases

Aliases
Vlaams Cultuurhuis
Brakke Grond
Poortje 'De Brakke Grond'
rijksmonumentnummer 6157

Voorbeeld "Claims"

https://www.wikidata.org/w/api.php?action=wbgetclaims&entity=Q2155935


Eigenschap Claims
P17 Brakke grond.jpg
P143 Brakke grond gate.jpg
P131 45
P143 http://www.brakkegrond.nl/
P625 130852
P143 1012 KD
P625 1017 SG
P18 1012GL
P18 https://cultureelerfgoed.nl/monumenten/6157
P31 6157
P31 De Brakke Grond (Amsterdam)
P31 0363100012179547
P276 127643416
P669 viaf-127643416
P670 127643416
P856 a/5bbe4f22-2cde-4235-98bd-59f4552accc0
P407 Vlaams-Cultuurhuis-De-Brakke-Grond
P84 brakkegrond
P3820 brakkegrond
P281 a411d47d-5e4c-412c-9d51-794e43ded86c
P281
P281
P248
P854
P407
P813
P101
P6375
P6375
P359
P373
P1435
P580
P248
P5208
P214
P7859
P214
P8974
P3417
P2003
P2013
P1004
P248
P813

NB: De matching tussen Property en Value is nog niet correct in bovenstaand overzicht! Ook {{#if:{{{wikiclaims}}}|{{{wikiclaims}}} |Niet beschikbaar }} werkt niet Deze doet het ook: https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q2155935&props=claims

De resultaten van de bovenstaande call zijn pluriform: soms geeft de claim een "string", soms een "array" en soms een wikidata-d etc. Om goede resultaten te krijgen is het dus zaak de verschillende elementen filteren; daarvoor is Xpath het middel. De volgende combinatie Xpaths leidt tot alle waarden met interne claims (Qnummer-Pnummer-Q-nummer)

//api/claims/property/claim/mainsnak[@datatype="wikibase-item"]/@property
//api/claims/property/claim/mainsnak[@datatype="wikibase-item"]/datavalue/value/@id


Eigenschap Claims
P17 Q55
P131 Q9899
P31 Q24354
P31 Q1329623
P31 Q53060
P276 Q2306046
P669 Q2495849
P84 Q2344624
P101 Q184485
P1435 Q916333

Deze geeft dus wel de juiste resultaten (goed gesorteerd).

//api/claims/property/claim/mainsnak[@datatype="external-id"]/@property
//api/claims/property/claim/mainsnak[@datatype="external-id"]/datavalue/@value


Eigenschap Claims
P3820 130852
P359 6157
P5208 0363100012179547
P214 127643416
P7859 viaf-127643416
P8974 a/5bbe4f22-2cde-4235-98bd-59f4552accc0
P3417 Vlaams-Cultuurhuis-De-Brakke-Grond
P2003 brakkegrond
P2013 brakkegrond
P1004 a411d47d-5e4c-412c-9d51-794e43ded86c

P17: land


https://www.wikidata.org/w/api.php?action=query&prop=wbgetclaims&id=Q2155935

Bovenstaande geeft errors:

  • wbgetclaims is niet goed
  • id is niet goed

https://www.wikidata.org/w/api.php?action=query&prop=wbgetentities&id=Q2155935


Gebruik van Xpath om gegevens uit WikiData te halen

Dit is een voorbeeld om met behulp van ExternalData en Xpath informatie uit WikiData te importeren en weer te geven in een infobox. De informatie wordt gevonden op basis van het referentienummer ("Q-nummer"), dat semantisch wordt geregistreerd met Eigenschap:Wikidata_ID

Voorbeeld:


Resultaat: Het Muziektheater

Eigenschap Sitelinks (links naar Wikipedia):


Website Paginatitel
dewiki Nationale Opera en Ballet
eswiki Het Muziektheater (Amsterdam)
frwiki Muziektheater
itwiki Het Muziektheater
nlwiki Nationale Opera en Ballet

Gefilterde resultaten:


Website Paginatitel
nlwiki Nationale Opera en Ballet


Het resultaat: Nationale Opera en Ballet kan omgevormd worden tot een link naar Wikipedia:

Als link: Opera en Ballet| |_}} Naar Wikipedia

Gebruik de functie: {{#replace:Dit is een url waarde| |_}}

Direct een link naar wikipedia opvragen kan ook met props=sitelinks/urls

Vervolgstap is de claims lezen: https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q1325514&props=claims&languages=nl&format=xml

Is het een optie hiervoor Xpath te gebruiken?? Jawel!!Zie:


Het resultaat:
Dit is een afbeelding van commons, via Wikidata

Meer interessante eigenschappen:

  • Postcode: P281
  • Openingsdatum: P1619
  • Geolocatie: P625
  • Commonscategorie: P373
  • Gelegen in bestuurlijke eenheid: P131


Kun je al deze gegevens in 1 keer opvragen?



Amsterdam

Het Muziektheater

Opera en Ballet| |_}} Naar Wikipedia
Amsterdam - Stopera (30213475601).jpg
Info Waarde
Afbeelding Amsterdam - Stopera (30213475601).jpg
Postcode: 1017 SG
Openingsdatum: 23 sep 1986
Geolocatie: kaart...
Commons categorie: Stopera
Gelegen in: Q9899 - Id van Amsterdam


Link: