Jump to content

Extension:External Data/Web pages/examples

From mediawiki.org

The following are example uses of the #get_web_data parser function (along with calls to #external_value and #for_external_table to display the information).

You can see these calls in action, with actual results, here.

NCBI taxonomy

[edit]

Retrieve data from the National Center for Biotechnology Information.

{{#for_external_table:* Scientific name: {{{ScientificName}}}
* Common name: {{{CommonName}}}
* Division: {{{Division}}}
|url=https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=taxonomy&rettype=fasta&retmode=xml&id=8371
|format=xml
|use xpath
|data=ScientificName=/TaxaSet/Taxon/ScientificName,CommonName=/TaxaSet/Taxon/OtherNames/CommonName,Division=/TaxaSet/Taxon/Division}}

PubMed

[edit]

Retrieve data from PubMed, run by the National Center for Biotechnology Information.

{{#for_external_table:* Title: {{{ArticleTitle}}}
* Name: {{{LastName}}}, {{{ForeName}}}
* Journal: {{{JournalTitle}}}
* Year: {{{Year}}}
* Volume: {{{Volume}}}
|url=https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=19782018&retmode=xml
|format=xml
|use xpath
|data=ArticleTitle=/PubmedArticleSet/PubmedArticle/MedlineCitation/Article/ArticleTitle,LastName=/PubmedArticleSet/PubmedArticle/MedlineCitation/Article/AuthorList/Author/LastName,ForeName=/PubmedArticleSet/PubmedArticle/MedlineCitation/Article/AuthorList/Author/ForeName,JournalTitle=/PubmedArticleSet/PubmedArticle/MedlineCitation/Article/Journal/Title,Year=/PubmedArticleSet/PubmedArticle/PubmedData/History/PubMedPubDate[1]/Year,Volume=/PubmedArticleSet/PubmedArticle/MedlineCitation/Article/Journal/JournalIssue/Volume}}

Scopus

[edit]

Retrieve data from Elsevier's Scopus database.

{{#for_external_table:* Title: {{{dc_title}}}
* Author: {{{dc_creator}}}
* "Cited by" count: {{{citedby-count}}}
|url=https://api.elsevier.com/content/search/scopus?query=DOI(10.1103/PhysRevA.20.1521)&apiKey=ELSEVIER_KEY
|format=json
|data=dc_title=dc:title,dc_creator=dc:creator,citedby-count=citedby-count}}

You must also obtain an Elsevier API key, and add the following to LocalSettings.php:

$wgExternalDataSources['api.elsevier.com']['replacements'] = [
    'ELSEVIER_KEY'=> '...your key here...'
];

Wikidata - individual entry

[edit]

SPARQL query:

SELECT ?item ?itemLabel ?symbol ?atomicNumber ( YEAR( ?discoveryDate ) AS ?discoveryYear ) ?discoverer ?discovererLabel
WHERE {
  VALUES ?item { wd:Q654 } .
  ?item wdt:P246 ?symbol .
  ?item wdt:P1086 ?atomicNumber .
  ?item wdt:P575 ?discoveryDate .
  ?item wdt:P61 ?discoverer
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

Actual wikitext (which includes this query):

{{#for_external_table:* Name: {{{itemLabel}}}
* Symbol: {{{symbol}}}
* Atomic number: {{{atomicNumber}}}
* Year discovered: {{{discoveryYear}}}
|url=https://query.wikidata.org/sparql?query=SELECT%20%3Fitem%20%3FitemLabel%20%3Fsymbol%20%3FatomicNumber%20%28%20YEAR%28%20%3FdiscoveryDate%20%29%20AS%20%3FdiscoveryYear%20%29%20%3Fdiscoverer%20%3FdiscovererLabel%0AWHERE%20%7B%0A%20%20VALUES%20%3Fitem%20%7B%20wd%3AQ654%20%7D%20.%0A%20%20%3Fitem%20wdt%3AP246%20%3Fsymbol%20.%0A%20%20%3Fitem%20wdt%3AP1086%20%3FatomicNumber%20.%0A%20%20%3Fitem%20wdt%3AP575%20%3FdiscoveryDate%20.%0A%20%20%3Fitem%20wdt%3AP61%20%3Fdiscoverer%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20"en".%20%7D%0A%7D&format=json
|format=json
|use jsonpath
|data=itemLabel=$.results.bindings[0].itemLabel.value,
symbol=$.results.bindings[0].symbol.value,
atomicNumber=$.results.bindings[0].atomicNumber.value,
discoveryYear=$.results.bindings[0].discoveryYear.value,
discovererURL=$.results.bindings[*].discoverer.value,
discovererLabel=$.results.bindings[*].discovererLabel.value
}}
* Discoverers: {{#for_external_table:[{{{discovererURL}}} {{{discovererLabel}}}], <nowiki />
|url=https://query.wikidata.org/sparql?query=SELECT%20%3Fitem%20%3FitemLabel%20%3Fsymbol%20%3FatomicNumber%20%28%20YEAR%28%20%3FdiscoveryDate%20%29%20AS%20%3FdiscoveryYear%20%29%20%3Fdiscoverer%20%3FdiscovererLabel%0AWHERE%20%7B%0A%20%20VALUES%20%3Fitem%20%7B%20wd%3AQ654%20%7D%20.%0A%20%20%3Fitem%20wdt%3AP246%20%3Fsymbol%20.%0A%20%20%3Fitem%20wdt%3AP1086%20%3FatomicNumber%20.%0A%20%20%3Fitem%20wdt%3AP575%20%3FdiscoveryDate%20.%0A%20%20%3Fitem%20wdt%3AP61%20%3Fdiscoverer%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20"en".%20%7D%0A%7D&format=json
|format=json
|use jsonpath
|data=itemLabel=$.results.bindings[0].itemLabel.value,
symbol=$.results.bindings[0].symbol.value,
atomicNumber=$.results.bindings[0].atomicNumber.value,
discoveryYear=$.results.bindings[0].discoveryYear.value,
discovererURL=$.results.bindings[*].discoverer.value,
discovererLabel=$.results.bindings[*].discovererLabel.value
}}

Wikidata - full query

[edit]

All paintings that depict a squirrel.

SPARQL query:

SELECT DISTINCT ?painting ?paintingLabel ?creator ?creatorLabel ( YEAR( ?inception ) as ?year ) ?genre ?genreLabel ( SUBSTR( ?str_image, 52 ) AS ?fileName )
WHERE
{
  ?painting wdt:P180 wd:Q9482 .
  ?painting wdt:P170 ?creator .
  ?painting wdt:P571 ?inception .
  ?painting wdt:P136 ?genre .
  ?painting wdt:P18 ?image .
  BIND (STR(?image) AS ?str_image)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY ?paintingLabel

Actual wikitext (which includes this query):

{| class="wikitable"
! Name
! Artist
! Year
! Genre
! Image {{#for_external_table:<nowiki/>
{{!}}-
{{!}} [{{{paintingURL}}} {{{paintingLabel}}}]
{{!}} [{{{creatorURL}}} {{{creatorLabel}}}]
{{!}} {{{year}}}
{{!}} {{{genre}}}
{{!}} [[File:{{{fileName}}}|80px]]

|url=https://query.wikidata.org/sparql?query=SELECT%20DISTINCT%20%3Fpainting%20%3FpaintingLabel%20%3Fcreator%20%3FcreatorLabel%20%28%20YEAR%28%20%3Finception%20%29%20as%20%3Fyear%20%29%20%3Fgenre%20%3FgenreLabel%20%28%20SUBSTR%28%20%3Fstr_image%2C%2052%20%29%20AS%20%3FfileName%20%29%0AWHERE%0A%7B%0A%20%20%3Fpainting%20wdt%3AP180%20wd%3AQ9482%20.%0A%20%20%3Fpainting%20wdt%3AP170%20%3Fcreator%20.%0A%20%20%3Fpainting%20wdt%3AP571%20%3Finception%20.%0A%20%20%3Fpainting%20wdt%3AP136%20%3Fgenre%20.%0A%20%20%3Fpainting%20wdt%3AP18%20%3Fimage%20.%0A%20%20BIND%20%28STR%28%3Fimage%29%20AS%20%3Fstr_image%29%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22.%20%7D%0A%7D%0AORDER%20BY%20%3FpaintingLabel&format=json
|format=json
|use jsonpath
|data=paintingURL=$.results.bindings[*].painting.value,
paintingLabel=$.results.bindings[*].paintingLabel.value,
creatorURL=$.results.bindings[*].creator.value,
creatorLabel=$.results.bindings[*].creatorLabel.value,
year=$.results.bindings[*].year.value,
genre=$.results.bindings[*].genreLabel.value,
fileName=$.results.bindings[*].fileName.value
}}
|}