Help
Difference between revisions of "SPARQL"
Help:SPARQL gathers a list of SPARQL queries in the context of Lingua Libre, ready to use, alongside with beginner-friendly inline-comments, introductions to concepts, code snippets and a few tools. To dive into it, first check the content's structure visible in the outline. This page allows users not familiar with SPARQL to easily query the LinguaLibre knowledge graph, and to download or directly feed that data into an application. To fit with most frequent uses, the page focuses towards web development.
(259 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{#Subtitle:'''Help:SPARQL''' gathers a list of SPARQL queries in the context of Lingua Libre, ready to use, alongside with beginner-friendly inline-comments, introductions to concepts, code snippets and a few tools. To dive into it, first check the content's structure visible in the outline. This page allows users not familiar with SPARQL to easily query the LinguaLibre knowledge graph, and to download or directly feed that data into an application. To fit with most frequent uses, the page focuses towards web development.}} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | {{Draft|December 2021 rewriting : '''work in progress, '''please do not translate yet'''. |
− | {| | + | <div style{{=}}"text-align:left;"> |
+ | # '''NOW/Opened:''' General content review. You may help by: a) reading and copy-editing the page's English, b) testing queries on [https://lingualibre.org/bigdata/#query LLQS], edit in or [[Help talk:SPARQL|discuss improvements]], <s>3) increase comments' concistency</s>. | ||
+ | # Legend: 🇶 minor aspects to improve, see hidden comment ; ❌ query too heavy to run in this page. | ||
+ | # '''Later/not yet:''' translations. | ||
+ | <!-- # '''Later:''' Improve Base section with core SPARQL concepts ? --> | ||
+ | Help welcome. | ||
+ | </div> | ||
+ | }} | ||
+ | |||
+ | == Base == | ||
+ | === Useful elements === | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: auto 3em auto auto;width:60%"| | ||
+ | * [[Special:ListProperties]] – exhaustive list of LinguaLibre's Wikibase properties. | ||
+ | * [[LinguaLibre:List of languages]] – exhaustive list of LinguaLibre's languages | ||
+ | || | ||
+ | <query _pagination="4" > | ||
+ | #All properties with descriptions and aliases and types | ||
+ | SELECT ?property ?propertyLabel ?propertyDescription | ||
+ | # ?propertyType | ||
+ | # ?propertyAltLabel | ||
+ | WHERE { | ||
+ | ?property wikibase:propertyType ?propertyType . | ||
+ | SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } | ||
+ | } | ||
+ | ORDER BY ASC(xsd:integer(STRAFTER(STR(?property), 'P'))) | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Tools === | ||
+ | [[File:Wikidata_Query_-_Query_Helper_-_Build_query_from_scratch.webm|thumb|450px|On Wikidata, the WDQS allows to practice SPARQL queries creation in an intuitive way.]] | ||
+ | * [{{SERVER}}/bigdata/#query <span class="mw-ui-button mw-ui-progressive" role="button" aria-disabled="false">Endpoint LinguaLibre</span>] [{{SERVER}}/bigdata/#query LinguaLibre Query Service (LLQS)] – run SPARQL Queries upon LinguaLibre. Run, test, download the data as json, csv or tsv. | ||
+ | * [https://query.wikidata.org <span class="mw-ui-button mw-ui-progressive" role="button" aria-disabled="false">Endpoint Wikidata</span>] [https://query.wikidata.org Wikidata Query Service (WDQS)] – run SPARQL Queries upon Wikidata. Run, test, download the data as json, csv or tsv. Has advanced user-friendly features such as : word hovering too see a term's meaning, code optimization, etc. | ||
+ | * [https://commons-query.wikimedia.org <span class="mw-ui-button mw-ui-progressive" role="button" aria-disabled="false">Endpoint Wikimedia Commons</span>] [https://commons-query.wikimedia.org Wikimedia Commons Query Service (WCQS)] run SPARQL Queries upon Wikimedia Commons wikibase (need to log in). | ||
+ | * [https://sinaahmadi.github.io/posts/sparql-query-generator-for-lexicographical-data.html Wikidata Lexeme Queries generators] ([https://jsfiddle.net/hugolpz/rygo9s5b/ hack me]) by @sina_ahm – helps to create queries for Wikidata's Lexeme. | ||
+ | * [[Special:ApiSandbox]] – API queries generator for Lingualibre wikipage and wikibase contents. An alternative to SPARQL queries. | ||
+ | |||
+ | === References === | ||
+ | * [https://www.w3.org/TR/sparql11-query/ SPARQL 1.1 Query Language] | ||
+ | * [https://www.iro.umontreal.ca/~lapalme/ift6281/sparql-1_1-cheat-sheet.pdf SPARQL Cheatsheet] | ||
+ | |||
+ | == Code snippets == | ||
+ | === Fetch data using SPARQL === | ||
+ | LinguaLibre data can be fetched using various coding languages such as Python, Javascript, R and others, returning JSON or other formats. | ||
+ | * For code snippet in your language : open [https://query.wikidata.org query.wikidata.org] (WikiData Query Service, aka WDQS), run your SPARQL query, click "Code" : a pop up window appears with various implementations. | ||
+ | * For downloading data, click "Download". | ||
+ | |||
+ | '''Javascript:'''<br> | ||
+ | At least 3 methods exists ([https://jsfiddle.net/hugolpz/tsg9ewa7/ code snippet]), example: | ||
+ | {| style="width:100%" | ||
+ | |- | ||
+ | ! Query || Result's basic unit | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| '''SPARQL:'''<br> | ||
+ | <syntaxhighlight lang="sparql" style="width:100%"> | ||
+ | SELECT ?item WHERE { ?item prop:P2 entity:Q5 } LIMIT 10 | ||
+ | </syntaxhighlight> | ||
+ | |rowspan="2"| | ||
+ | <syntaxhighlight lang="javascript"> | ||
+ | { … }, | ||
+ | { | ||
+ | "item": { | ||
+ | "type": "uri", | ||
+ | "value": "https://lingualibre.org/entity/Q12" | ||
+ | }, | ||
+ | "itemLabel": { | ||
+ | "xml:lang": "en", | ||
+ | "type": "literal", | ||
+ | "value": "beginner" | ||
+ | } | ||
+ | }, | ||
+ | { … } | ||
+ | </syntaxhighlight> | ||
+ | |- | ||
+ | | '''Javascript:''' | ||
+ | <syntaxhighlight lang="javascript"> | ||
+ | var endpoint = 'https://lingualibre.org/sparql'; | ||
+ | var sparql = 'SELECT ?item WHERE { ?item prop:P2 entity:Q5 } LIMIT 10'; | ||
+ | $.getJSON(endpoint, | ||
+ | { query: sparql, format: 'json' }, | ||
+ | function(data){ console.log('JQuery: ',data)} | ||
+ | ); | ||
+ | </syntaxhighlight> | ||
+ | |} | ||
+ | |||
+ | === Merging data === | ||
+ | Advanced SPARQL queries with <code>COUNT()</code> and others are often slow (>3secs, sometime >100secs). You are encouraged to do multiple smaller SPARQL queries to then merge their responded data. By example, the complementary Javascript snippet below would help web developers to do so. | ||
+ | |||
+ | <syntaxhighlight lang="javascript"> | ||
+ | // Data from 3 sparql queries. | ||
+ | // Important: One key must be similar in all datasets, here: 'qid' | ||
+ | const langs = [{ qid: 'Q209', label: 'Breton', iso:'bre' }, { qid: 'Q34', label: 'Marathi', iso: 'mar' }], | ||
+ | speakersFemales = [{ qid: 'Q209', genderF: 3, recordsF: 60 }, { qid: 'Q34', genderF: 21, recordsF:5046 }], | ||
+ | speakersMales = [{ qid: 'Q209', genderM: 7, recordsM: 218 }, { qid: 'Q34', genderM: 85, recordsM:32964 }]; | ||
+ | // Toolbox for merging data by same id | ||
+ | var merge2ArraysBySameId = function(arr1,arr2,id1){ | ||
+ | return arr1.map( item1 => { | ||
+ | var identical = arr2.find(obj => obj[id1] === item1[id1]); | ||
+ | return Object.assign(identical, item1) | ||
+ | } ); | ||
+ | } | ||
+ | // Mergings | ||
+ | var step1 = merge2ArraysBySameId(langs,speakersFemales,'qid'); | ||
+ | var step2 = merge2ArraysBySameId(step1,speakersMales,'qid'); | ||
+ | alert(JSON.stringify(step2)) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Lingualibre's ground == | ||
+ | === Is Language ([[d:Q34770]]) → List existing languages with: LL Qid, ISO 639-3, Name === | ||
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?lang ?iso ?langLabel | ||
+ | WHERE { | ||
+ | # First get the relevant languages by first looking up all records | ||
+ | { | ||
+ | SELECT DISTINCT ?lang WHERE { | ||
+ | _:record wdt:P31 wd:Q108167708 ; # Filter to get wd:Q108167708 (pronunciation file) | ||
+ | wdt:P407 ?lang . # For each pronunciation file, fetch the language | ||
+ | } | ||
+ | } | ||
+ | |||
+ | # From this point on, ?lang is bound. Get the label and ISO code on Wikidata | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | ?lang wdt:P31 wd:Q34770 . # Filter: P31 'instance of' is Q1193409 'language or dialect'. | ||
+ | ?lang wdt:P220 ?iso . # Assign value: P220 'ISO-639-3' into ?iso. | ||
+ | } | ||
+ | |||
+ | SERVICE wikibase:label { | ||
+ | # Add label to each variable used. | ||
+ | # ?lang now has twin variable ?langLabel | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5" > | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?lang ?iso ?langLabel | ||
+ | WHERE { | ||
+ | # First get the relevant languages by first looking up all records | ||
+ | { | ||
+ | SELECT DISTINCT ?lang WHERE { | ||
+ | _:record wdt:P31 wd:Q108167708 ; # Filter to get wd:Q108167708 (pronunciation file) | ||
+ | wdt:P407 ?lang . # For each pronunciation file, fetch the language | ||
+ | } | ||
+ | } | ||
+ | |||
+ | # From this point on, ?lang is bound. Get the label and ISO code on Wikidata | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | ?lang wdt:P31 wd:Q34770 . # Filter: P31 'instance of' is Q1193409 'language or dialect'. | ||
+ | ?lang wdt:P220 ?iso . # Assign value: P220 'ISO-639-3' into ?iso. | ||
+ | } | ||
+ | |||
+ | SERVICE wikibase:label { | ||
+ | # Add label to each variable used. | ||
+ | # ?lang now has twin variable ?langLabel | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Is Speaker ([[Q3]]) → List existing speakers === | ||
+ | ''This query is going to be DEPRECATED as the queried data will no longer be available.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?speaker ?speakerLabel | ||
+ | WHERE { | ||
+ | ?speaker prop:P2 entity:Q3 . # Filter: P2 'instance of' is Q3 'speaker'. | ||
+ | # Add labels to each variable used. | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5" speaker="Item" speakerLabel="Speaker" langLabel="Language"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?speaker ?speakerLabel | ||
+ | WHERE { | ||
+ | ?speaker prop:P2 entity:Q3 . # Filter: P2 'instance of' is Q3 'speaker'. | ||
+ | # Add labels to each variable used. | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Is Language level ([[Q5]]) → List existing levels === | ||
+ | ''This query is going to be DEPRECATED as the queried data will no longer be available.'' | ||
+ | {| style="width:100%" | ||
|- style="vertical-align:top;" | |- style="vertical-align:top;" | ||
|style="padding: 0 3em;width:60%"| | |style="padding: 0 3em;width:60%"| | ||
<syntaxhighlight lang="sparql"> | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
SELECT ?item ?itemLabel | SELECT ?item ?itemLabel | ||
WHERE { | WHERE { | ||
− | ?item prop:P2 | + | ?item prop:P2 entity:Q5 # Filter: P2 'instance of' is Q5 'language level'. |
+ | # Add labels to each variable used. | ||
SERVICE wikibase:label { | SERVICE wikibase:label { | ||
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
Line 21: | Line 217: | ||
| | | | ||
<query _pagination="6" item="Property" itemLabel="Values"> | <query _pagination="6" item="Property" itemLabel="Values"> | ||
+ | #defaultEndpoint:Lingualibre | ||
SELECT ?item ?itemLabel | SELECT ?item ?itemLabel | ||
WHERE { | WHERE { | ||
− | ?item prop:P2 | + | ?item prop:P2 entity:Q5 # Filter: P2 'instance of' is Q5 'language level'. |
+ | # Add labels to each variable used. | ||
SERVICE wikibase:label { | SERVICE wikibase:label { | ||
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
Line 31: | Line 229: | ||
|} | |} | ||
− | == | + | === Is Sex or Gender ([[Q7]]) → List existing sexes or genders === |
− | {| | + | ''This query is going to be DEPRECATED as the queried data will no longer be available.'' |
+ | {| style="width:100%" | ||
|- style="vertical-align:top;" | |- style="vertical-align:top;" | ||
|style="padding: 0 3em;width:60%"| | |style="padding: 0 3em;width:60%"| | ||
<syntaxhighlight lang="sparql"> | <syntaxhighlight lang="sparql"> | ||
− | + | #defaultEndpoint:Lingualibre | |
− | + | SELECT ?item ?itemLabel | |
− | ? | + | WHERE { |
+ | ?item prop:P2 entity:Q7 # Filter: P2 'instance of' is Q7 'sex or gender'. | ||
+ | # Add labels to each variable used. | ||
SERVICE wikibase:label { | SERVICE wikibase:label { | ||
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
Line 44: | Line 245: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | | | |
− | <query _pagination=" | + | <query _pagination="6" item="Property" itemLabel="Values"> |
− | + | #defaultEndpoint:Lingualibre | |
− | + | SELECT ?item ?itemLabel | |
− | ? | + | WHERE { |
+ | ?item prop:P2 entity:Q7 # Filter: P2 'instance of' is Q7 'sex or gender'. | ||
+ | # Add labels to each variable used. | ||
SERVICE wikibase:label { | SERVICE wikibase:label { | ||
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
Line 55: | Line 258: | ||
</query> | </query> | ||
|} | |} | ||
− | |||
− | {| | + | == Speaker == |
+ | === 🇶 Speaker name(s) → Speaker Qid(s) === | ||
+ | ''This query is going to be DEPRECATED as the queried data will no longer be available.'' | ||
+ | <!-- REVIEW REQUIRED --> | ||
+ | {| style="width:100%" | ||
|- style="vertical-align:top;" | |- style="vertical-align:top;" | ||
|style="padding: 0 3em;width:60%"| | |style="padding: 0 3em;width:60%"| | ||
<syntaxhighlight lang="sparql"> | <syntaxhighlight lang="sparql"> | ||
− | + | #defaultEndpoint:Lingualibre | |
− | + | SELECT ?speakerName ?speakerId | |
− | VALUES ?speakerName { "Yug" "VIGNERON" } # | + | WHERE { |
+ | VALUES ?speakerName { "Yug" "VIGNERON" } # Assign value: one or multiple values | ||
+ | # note: need to comment BIND | ||
BIND ( STRLANG(?speakerName, "en") AS ?speakerLabel ) | BIND ( STRLANG(?speakerName, "en") AS ?speakerLabel ) | ||
− | ?speakerId prop:P2 entity:Q3 ; rdfs:label ?speakerLabel . | + | # Grammatical note: ';' allows to chain actions |
+ | ?speakerId prop:P2 entity:Q3 ; # Filter: P2 'instance of' is Q3 'speaker'. | ||
+ | rdfs:label ?speakerLabel . # Filter by value: label equal ?speakerLabel's value | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 71: | Line 281: | ||
<query _pagination="5"> | <query _pagination="5"> | ||
− | + | #defaultEndpoint:Lingualibre | |
− | + | SELECT ?speakerName ?speakerId | |
− | VALUES ?speakerName { "Yug" "VIGNERON" } | + | WHERE { |
+ | VALUES ?speakerName { "Yug" "VIGNERON" } | ||
BIND ( STRLANG(?speakerName, "en") AS ?speakerLabel ) | BIND ( STRLANG(?speakerName, "en") AS ?speakerLabel ) | ||
− | ?speakerId prop:P2 entity:Q3 ; rdfs:label ?speakerLabel . | + | ?speakerId prop:P2 entity:Q3 ; |
+ | rdfs:label ?speakerLabel . | ||
} | } | ||
</query> | </query> | ||
|} | |} | ||
− | == Speaker Qid ([[ | + | === 🇶 Speaker Qid ([[Q445757]]) → Speaker data, all === |
− | {| | + | ''This query is going to be DEPRECATED as the queried data will no longer be available.'' |
+ | <!-- Q: alternative words for "predicate" and "object". "property" and "value" ?--> | ||
+ | {| style="width:100%" | ||
|- style="vertical-align:top;" | |- style="vertical-align:top;" | ||
|style="padding: 0 3em;width:60%"| | |style="padding: 0 3em;width:60%"| | ||
<syntaxhighlight lang="sparql"> | <syntaxhighlight lang="sparql"> | ||
− | SELECT ? | + | #defaultEndpoint:Lingualibre |
+ | # Get Q445757 (User:SangeetaRH)'s data | ||
+ | SELECT ?anyProperty ?anyValue ?anyValueLabel | ||
WHERE { | WHERE { | ||
− | entity: | + | entity:Q445757 ?anyProperty ?anyValue . # Filter: of Q445757 'SangeetaRH', get any property and any values |
+ | # Add labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|| | || | ||
<query _pagination="10" > | <query _pagination="10" > | ||
− | SELECT ? | + | #defaultEndpoint:Lingualibre |
+ | SELECT ?anyProperty ?anyValue ?anyValueLabel | ||
+ | WHERE { | ||
+ | entity:Q445757 ?anyProperty ?anyValue . # Filter: of Q445757 'SangeetaRH', get any property and any values | ||
+ | # Add labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === 🇶 Speaker Qid ([[Q445757]]) → Speaker languages ([[Property:P4|P4]]) === | ||
+ | ''This query is going to be DEPRECATED as the queried data will no longer be available.'' | ||
+ | <!-- Q: Add languages iso P:13 --> | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?languages ?languagesLabel | ||
+ | WHERE { | ||
+ | entity:Q445757 prop:P4 ?languages . # Assign value: for Q445757 'SangeetaRH', P4 'language' into ?languages | ||
+ | # Add labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5" > | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?languages ?languagesLabel | ||
+ | WHERE { | ||
+ | entity:Q445757 prop:P4 ?languages . # Assign value: for Q445757 'SangeetaRH', P4 'language' into ?languages | ||
+ | # Add labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === 🇶 Count speaker gender ([[Property:P8|P8]]) === | ||
+ | |||
+ | <!-- Q: Add languages iso P:13 --> | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?genderLabel (count(?speaker) AS ?nb) | ||
+ | WHERE { | ||
+ | ?speaker prop:P2 entity:Q3 ; | ||
+ | prop:P8 ?gender . | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | GROUP BY ?genderLabel | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5" > | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?genderLabel (count(?speaker) AS ?nb) | ||
+ | WHERE { | ||
+ | ?speaker prop:P2 entity:Q3 ; | ||
+ | prop:P8 ?gender . | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | GROUP BY ?genderLabel | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Speaker Qid (speakers/1 ???) + Language LL Qid ([[d:Q1571]]) → List records === | ||
+ | ''This query is IN WORK for Commons SPARQL Endpoint. One Wikidata property is missing; please update this query with the right property URI.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?audio ?audioLabel | ||
+ | WHERE { | ||
+ | ?audio wdt:SPEAKER_PROPERTY_MISSING <http://lingualibre.org/speakers/1> ; # Filter: ??? 'speaker' P5 Speaker is User:SangeetaRH | ||
+ | wdt:P407 wd:Q1571 . # Filter: P407 'language' is Q1571 'Marathi' | ||
+ | |||
+ | # Add labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5" > | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?audio ?audioLabel | ||
+ | WHERE { | ||
+ | ?audio wdt:SPEAKER_PROPERTY_MISSING <http://lingualibre.org/speakers/1> ; # Filter: ??? 'speaker' P5 Speaker is User:SangeetaRH | ||
+ | wdt:P407 wd:Q1571 . # Filter: P407 'language' is Q1571 'Marathi' | ||
+ | |||
+ | # Add labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Speaker Qid (speakers/1 ???) + Language LL Qid ([[d:Q1571]]) → Count records === | ||
+ | ''This query is IN WORK for Commons SPARQL Endpoint. One Wikidata property is missing; please update this query with the right property URI.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?language ?speaker (COUNT(?audio) AS ?audio) | ||
+ | WHERE { | ||
+ | # Comment out the below pattern to filter by language, e.g. Q1571 or others | ||
+ | # VALUES ?language { wd:Q1571 } # Bind value: Q1571 'Marathi' into ?language | ||
+ | VALUES ?speaker { <http://lingualibre.org/speakers/1> } # Assign value: ll.org/speakers/1 (for 'SangeetaRH') into ?speaker | ||
+ | |||
+ | ?audio wdt:SPEAKER_PROPERTY_MISSING ?speaker ; # Filter: ??? 'speaker' is ?speaker | ||
+ | wdt:P407 ?language ; # Filter: P407 'language' bound to ?language | ||
+ | wdt:P31 wd:Q108167708 . # Filter: P31 'instance of' is Q108167708 'pronunciation file' | ||
+ | } | ||
+ | GROUP BY ?language ?speaker # Sorting first groups per language and speaker | ||
+ | </syntaxhighlight> | ||
+ | | | ||
+ | <query _pagination="6" item="Property" itemLabel="Values"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?language ?speaker (COUNT(?audio) AS ?audio) | ||
+ | WHERE { | ||
+ | # Comment out the below pattern to filter by language. | ||
+ | # E.g. Q1571 or others | ||
+ | |||
+ | # VALUES ?language { wd:Q1571 } # Bind value: Q1571 'Marathi' into ?language | ||
+ | VALUES ?speaker { <http://lingualibre.org/speakers/1> } # Assign value: ll.org/speakers/1 (for 'SangeetaRH') into ?speaker | ||
+ | |||
+ | ?audio wdt:SPEAKER_PROPERTY_MISSING ?speaker ; # Filter: ??? 'speaker' is ?speaker | ||
+ | wdt:P407 ?language ; # Filter: P407 'language' bound to ?language | ||
+ | wdt:P31 wd:Q108167708 . # Filter: P31 'instance of' is Q108167708 'pronunciation file' | ||
+ | } | ||
+ | GROUP BY ?language ?speaker # Sorting first groups per language and speaker | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Is Speaker ([[Q3]]) → List of accounts and associated speakers === | ||
+ | ''This query is going to be DEPRECATED as the queried data will no longer be available.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?linkedUser ?speakerLabel (SUBSTR(STR(?speaker),32) AS ?speakerQid) | ||
+ | WHERE { | ||
+ | ?speaker prop:P2 entity:Q3 . # Filter: P2 'instance of' is Q3 'speaker'. | ||
+ | ?speaker prop:P11 ?linkedUser . # Assign value: P11 'linked users' into ?linkedUser. | ||
+ | # Add labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } ORDER BY DESC (?speakerLabel) | ||
+ | </syntaxhighlight> | ||
+ | | | ||
+ | <query _pagination="6" item="Property" itemLabel="Values"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?linkedUser ?speakerLabel (SUBSTR(STR(?speaker),32) AS ?speakerQid) | ||
+ | WHERE { | ||
+ | ?speaker prop:P2 entity:Q3 . # Filter: P2 'instance of' is Q3 'speaker'. | ||
+ | ?speaker prop:P11 ?linkedUser . # Assign value: P11 'linked users' into ?linkedUser. | ||
+ | # Add labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } ORDER BY DESC (?speakerLabel) | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | == Languages == | ||
+ | === 🇶 LL Language (Q930) → List of words recorded === | ||
+ | ''This query could be run on Wikimedia Commons MediaWiki API. See [[Help:APIs]].'' | ||
+ | <!-- Q: Change exact match by CONTAINS() --> | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Wikidata | ||
+ | PREFIX prop: <https://lingualibre.org/prop/direct/> | ||
+ | PREFIX entity: <https://lingualibre.org/entity/> | ||
+ | SELECT ?writing WHERE { | ||
+ | SERVICE <https://lingualibre.org/sparql> { | ||
+ | SELECT ?writing WHERE { | ||
+ | ?record prop:P2 entity:Q2; | ||
+ | prop:P4 entity:Q930, ?language; | ||
+ | prop:P3 ?url; | ||
+ | prop:P7 ?writing. | ||
+ | # FILTER(CONTAINS(STR(?audio), "LL-Q35735")) # occitan | ||
+ | SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5"> | ||
+ | #defaultEndpoint:Wikidata | ||
+ | PREFIX prop: <https://lingualibre.org/prop/direct/> | ||
+ | PREFIX entity: <https://lingualibre.org/entity/> | ||
+ | SELECT ?writing WHERE { | ||
+ | SERVICE <https://lingualibre.org/sparql> { | ||
+ | SELECT ?writing WHERE { | ||
+ | ?record prop:P2 entity:Q2; | ||
+ | prop:P4 entity:Q930, ?language; | ||
+ | prop:P3 ?url; | ||
+ | prop:P7 ?writing. | ||
+ | # FILTER(CONTAINS(STR(?audio), "LL-Q35735")) # occitan | ||
+ | SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === 🇶 Language name(s) in English → Language LL Qid(s) === | ||
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint. '' | ||
+ | <!-- Q: Change exact match by CONTAINS() --> | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?languageId ?languageName | ||
+ | WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | VALUES ?languageName { "Marathi" "Atikamekw" "Central Bikol" } # Target values | ||
+ | |||
+ | BIND ( STRLANG(?languageName, "en") AS ?languageLabel ) # Bind filter by English | ||
+ | |||
+ | ?languageId rdfs:label ?languageLabel ; # Assign value label into ?languageLabel | ||
+ | wdt:P31 wd:Q34770 . # Filter: P2 'instance of' is Q4 'language' AND | ||
+ | |||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?languageId ?languageName | ||
+ | WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | VALUES ?languageName { "Marathi" "Atikamekw" "Central Bikol" } # Target values | ||
+ | |||
+ | BIND ( STRLANG(?languageName, "en") AS ?languageLabel ) # Bind filter by English | ||
+ | |||
+ | ?languageId rdfs:label ?languageLabel ; # Assign value label into ?languageLabel | ||
+ | wdt:P31 wd:Q34770 . # Filter: P2 'instance of' is Q4 'language' AND | ||
+ | |||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Language ISO-639-3 → Language LL Qid(s), Wikidata Qid, Label === | ||
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?langIso ?langId ?langIdLabel | ||
+ | WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | VALUES ?langIso { "mar" "bre" "bcl" "atj" "ban" } # Target ISO values | ||
+ | ?langId | ||
+ | wdt:P220 ?langIso ; # Assign value: P13 'Iso-639-3' to ?langIso AND | ||
+ | wdt:P31 wd:Q34770 ; # Filter: P2 'instance of' is Q4 'language' | ||
+ | |||
+ | } | ||
+ | |||
+ | # Labels | ||
+ | SERVICE wikibase:label {bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en"} | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5" > | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?langIso ?langId ?langIdLabel | ||
+ | WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | VALUES ?langIso { "mar" "bre" "bcl" "atj" "ban" } # Target ISO values | ||
+ | ?langId | ||
+ | wdt:P220 ?langIso ; # Assign value: P13 'Iso-639-3' to ?langIso AND | ||
+ | wdt:P31 wd:Q34770 ; # Filter: P2 'instance of' is Q4 'language' | ||
+ | |||
+ | } | ||
+ | |||
+ | # Labels | ||
+ | SERVICE wikibase:label {bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en"} | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Language LL All Languages → Count records === | ||
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?language ?languageLabel ?audios WHERE { | ||
+ | { | ||
+ | SELECT ?language (COUNT(?audio) AS ?audios) WHERE { | ||
+ | # Comment out the below statement to filter to only certain languages (e.g. Q34 or others) | ||
+ | # VALUES ?language { entity:Q34 } | ||
+ | |||
+ | ?audio wdt:P31 wd:Q108167708 ; # Filter: P2 'instance of' is Q2 'record' | ||
+ | wdt:P407 ?language . | ||
+ | } | ||
+ | GROUP BY ?language | ||
+ | } | ||
+ | |||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". | ||
+ | ?language rdfs:label ?languageLabel . | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | | | ||
+ | <query _pagination="6" item="Property" itemLabel="Values"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?language ?languageLabel ?audios WHERE { | ||
+ | { | ||
+ | SELECT ?language (COUNT(?audio) AS ?audios) WHERE { | ||
+ | # Comment out the below statement to filter to only certain languages (e.g. Q34) | ||
+ | # VALUES ?language { entity:Q34 } | ||
+ | |||
+ | ?audio wdt:P31 wd:Q108167708 ; # Filter: P2 'instance of' is Q2 'record' | ||
+ | wdt:P407 ?language . | ||
+ | } | ||
+ | GROUP BY ?language | ||
+ | } | ||
+ | |||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". | ||
+ | ?language rdfs:label ?languageLabel . | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === 🇶 Language LL All Languages → Count unique words, audios, ratio === | ||
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint.'' | ||
+ | <!-- Use smaller language for higher speed --> | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?language ?languageLabel ?words ?audios ?percent | ||
+ | WHERE { | ||
+ | { | ||
+ | SELECT ?language | ||
+ | (COUNT(DISTINCT(?itemLabel)) AS ?words) # Count and assign value to ?Audio | ||
+ | (COUNT(?audio) as ?audios) | ||
+ | (ROUND(10000*?words/?audios)/100 AS ?percent) | ||
+ | WHERE { | ||
+ | # Uncomment the below line to filter languages (e.g Q34 or others) | ||
+ | # VALUES ?language { wd:Q34 } | ||
+ | ?audio wdt:P407 ?language ; # Bind property P407 'language' to ?language | ||
+ | wdt:P31 wd:Q108167708 ; # Filter: P31 'instance of' Q108167708 (pronunciation file) | ||
+ | wdt:P9533 ?itemLabel . # Bind P9533 'transcription' to ?itemLabel. | ||
+ | } | ||
+ | GROUP BY ?language ?languageLabel | ||
+ | } | ||
+ | |||
+ | |||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". | ||
+ | ?language rdfs:label ?languageLabel . | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | | | ||
+ | <query _pagination="6" item="Property" itemLabel="Values"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?language ?languageLabel ?words ?audios ?percent | ||
WHERE { | WHERE { | ||
− | entity: | + | { |
+ | SELECT ?language | ||
+ | (COUNT(DISTINCT(?itemLabel)) AS ?words) # Count and assign value to ?Audio | ||
+ | (COUNT(?audio) as ?audios) | ||
+ | (ROUND(10000*?words/?audios)/100 AS ?percent) | ||
+ | WHERE { | ||
+ | |||
+ | # VALUES ?language { entity:Q34 } | ||
+ | ?audio wdt:P407 ?language ; # Bind property P407 'language' to ?language | ||
+ | wdt:P31 wd:Q108167708 ; # Filter: P31 'instance of' Q108167708 (pronunciation file) | ||
+ | wdt:P9533 ?itemLabel . # Bind P9533 'transcription' to ?itemLabel. | ||
+ | } | ||
+ | GROUP BY ?language ?languageLabel | ||
+ | } | ||
+ | |||
+ | |||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". | ||
+ | ?language rdfs:label ?languageLabel . | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Language LL All Languages → Count speakers === | ||
+ | ''This query is IN WORK for Commons SPARQL Endpoint. One Wikidata property is missing; please update this query with the right property URI.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?language ?languageLabel ?speakers WHERE { | ||
+ | { | ||
+ | SELECT ?language (COUNT(?speaker) AS ?speakers) WHERE { | ||
+ | |||
+ | # Uncomment the below line to filter to specific languages | ||
+ | # E.g Q34 and others | ||
+ | # VALUES ?language { wd:Q34 } | ||
+ | |||
+ | ?record wdt:P407 ?language ; # Bind P407 'language' to ?language (if unbound) | ||
+ | wdt:P31 wd:Q108167708 ; # P31 'instance of' Q108167708 'pronunciation file' | ||
+ | wdt:SPEAKER_PROPERTY_MISSING ?speaker ; # Bind ??? 'speaker' to ?speaker | ||
+ | } GROUP BY ?language | ||
+ | } | ||
+ | |||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". | ||
+ | ?language rdfs:label ?languageLabel | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | | | ||
+ | <query _pagination="6" item="Property" itemLabel="Values"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?language ?languageLabel ?speakers WHERE { | ||
+ | { | ||
+ | SELECT ?language (COUNT(?speaker) AS ?speakers) WHERE { | ||
+ | |||
+ | # Uncomment the below line to filter to specific languages | ||
+ | # E.g Q34 and others | ||
+ | # VALUES ?language { wd:Q34 } | ||
+ | |||
+ | ?record wdt:P407 ?language ; # Bind P407 'language' to ?language (if unbound) | ||
+ | wdt:P31 wd:Q108167708 ; # P31 'instance of' Q108167708 'pronunciation file' | ||
+ | wdt:SPEAKER_PROPERTY_MISSING ?speaker ; # Bind ??? 'speaker' to ?speaker | ||
+ | } GROUP BY ?language | ||
+ | } | ||
+ | |||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". | ||
+ | ?language rdfs:label ?languageLabel | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Language LL Qid (Q209) → List speakers === | ||
+ | ''This query is going to be DEPRECATED as the queried data will no longer be available.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?language ?speaker ?speakerLabel WHERE { | ||
+ | VALUES ?language { entity:Q209 } | ||
+ | ?speaker prop:P2 entity:Q3 . # P2 'instance of' is Q3 'speaker' | ||
+ | ?speaker prop:P4 ?language . # P4 'language' is Q34 'Marathi' | ||
+ | # Labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | | | ||
+ | <query _pagination="6" item="Property" itemLabel="Values"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?language ?speaker ?speakerLabel WHERE { | ||
+ | VALUES ?language { entity:Q209 } | ||
+ | ?speaker prop:P2 entity:Q3 . # P2 'instance of' is Q3 'speaker' | ||
+ | ?speaker prop:P4 ?language . # P4 'language' is Q34 'Marathi' | ||
+ | # Labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | }</query> | ||
+ | |} | ||
+ | |||
+ | === Language LL Qid ([[d:Q12107]]) → Language data, all === | ||
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?predicate ?object WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | # Given Q12107 language, get all properties and values | ||
+ | wd:Q12107 ?predicate ?object . | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="10" > | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?predicate ?object WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | # Given Q12107 language, get all properties and values | ||
+ | wd:Q12107 ?predicate ?object . | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Language LL Qid ([[d:Q12107]]) → Language data, Literals === | ||
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT * WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | # Given Q12107 'Breton language', get only literals | ||
+ | wd:Q12107 ?predicate ?object . | ||
+ | ?predicate rdf:type owl:DatatypeProperty . | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="10" > | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT * WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | # Given Q12107 'Breton language', get only literals | ||
+ | wd:Q12107 ?predicate ?object . | ||
+ | ?predicate rdf:type owl:DatatypeProperty . | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Language LL Qid ([[d:Q12107]]) → Property P220 (ISO 639-3) === | ||
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT * WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | wd:Q12107 wdt:P220 ?iso . # Assign value : Q209 'Breton', P13 'ISO 639-3', value into ?iso | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="10" > | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT * WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | wd:Q12107 wdt:P220 ?iso . # Assign value : Q209 'Breton', P13 'ISO 639-3', value into ?iso | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Languages → List existing languages' iso-639-3 === | ||
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT * WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | ?lang wdt:P220 ?code . | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5" > | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT * WHERE { | ||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | ?lang wdt:P220 ?code . | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === 🇶 Language WD Qid → Language data, core === | ||
+ | ''This query is going to be DEPRECATED as the queried data will no longer be available.'' | ||
+ | <!-- REQUIRE REVIEW FOR BETTER INLINE COMMENTS --> | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT * WHERE { | ||
+ | ?lang prop:P12 "Q12107" . # Filter: P12 'Wikidata id' is Wikidata's "Q12107" | ||
+ | ?lang ?predicate ?object . # | ||
+ | ?predicate rdf:type owl:DatatypeProperty . | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="10" > | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT * WHERE { | ||
+ | ?lang prop:P12 "Q12107" . | ||
+ | ?lang ?predicate ?object . | ||
+ | ?predicate rdf:type owl:DatatypeProperty . | ||
} | } | ||
</query> | </query> | ||
|} | |} | ||
− | == | + | == Records == |
− | {| | + | === Record LL Qid ([[sdc:M69288741]]) → Record data, all === |
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint.'' | ||
+ | {| style="width:100%" | ||
|- style="vertical-align:top;" | |- style="vertical-align:top;" | ||
|style="padding: 0 3em;width:60%"| | |style="padding: 0 3em;width:60%"| | ||
<syntaxhighlight lang="sparql"> | <syntaxhighlight lang="sparql"> | ||
− | SELECT ? | + | #defaultEndpoint:Commons |
+ | SELECT * WHERE { | ||
+ | sdc:M69288741 ?predicate ?object . | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="10" > | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT * WHERE { | ||
+ | sdc:M69288741 ?predicate ?object . | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Record LL Qid ([[sdc:M69288741]]) → Record data, core === | ||
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT * WHERE { | ||
+ | sdc:M69288741 ?predicate ?object . | ||
+ | |||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | ?predicate rdf:type owl:DatatypeProperty . | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="10" > | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT * WHERE { | ||
+ | sdc:M69288741 ?predicate ?object . | ||
+ | |||
+ | SERVICE <https://query.wikidata.org/sparql> { | ||
+ | ?predicate rdf:type owl:DatatypeProperty . | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Language ([[d:Q1860]]) + String → Record LL Qid(s) === | ||
+ | ''This query has been UPDATED to work on Commons SPARQL Endpoint.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?item | ||
+ | WHERE { | ||
+ | ?item wdt:P31 wd:Q108167708 . # Filter: P31 'instance of' Q108167708 'record' | ||
+ | ?item wdt:P407 wd:Q1860 . # Filter: P407 'language' is Q1860 'English' | ||
+ | ?item wdt:P9533 "apple"@en. # Filter: P9533 'transcription' is "apple" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT ?item | ||
+ | WHERE { | ||
+ | ?item wdt:P31 wd:Q108167708 . # Filter: P31 'instance of' Q108167708 'record' | ||
+ | ?item wdt:P407 wd:Q1860 . # Filter: P407 'language' is Q1860 'English' | ||
+ | ?item wdt:P9533 "apple"@en. # Filter: P9533 'transcription' is "apple" | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Language ([[d:Q12107]]) + Speaker (/speakers/1 ??) + String (ni) → Record LL Qid === | ||
+ | ''This query is IN WORK for Commons SPARQL Endpoint. One Wikidata property is missing; please update this query with the right property URI.'' | ||
+ | |||
+ | '''Case:''' Search in Breton language, with speaker 'ThonyVezbe', | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | SELECT ?audio ?urlPointer | ||
+ | WHERE { | ||
+ | ?audio wdt:P407 wd:Q12107 ; # P407 'language' is Q12107 'Breton' | ||
+ | wdt:SPEAKER_PROPERTY_MISSING <https://lingualibre.org/speakers/1> ; # ??? 'speaker' is ll.org/speakers/1 'ThonyVezbe' | ||
+ | wdt:P9533 "ni"@br ; | ||
+ | schema:url ?urlPointer . | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5" > | ||
+ | SELECT ?audio ?urlPointer | ||
+ | WHERE { | ||
+ | ?audio wdt:P407 wd:Q12107 ; # P407 'language' is Q12107 'Breton' | ||
+ | wdt:SPEAKER_PROPERTY_MISSING <https://lingualibre.org/speakers/1> ; # ??? 'speaker' is ll.org/speakers/1 'ThonyVezbe' | ||
+ | wdt:P9533 "ni"@br ; | ||
+ | schema:url ?urlPointer . | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Language ([[d:Q150]]) + Speaker (/speakers/1 ??) + String → URL pointer, filename === | ||
+ | ''This query is IN WORK for Commons SPARQL Endpoint. One Wikidata property is missing; please update this query with the right property URI.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | SELECT ?audio ?urlPointer | ||
+ | (REPLACE(REPLACE(REPLACE(SUBSTR(STR(?urlPointer),52),"%20","_"),"%28","("),"%29",")") AS ?filename) | ||
WHERE { | WHERE { | ||
− | + | ?audio wdt:P407 wd:Q150 ; # Filter: P407 'language' is Q150 'French' | |
+ | wdt:SPEARKER_PROPERTY_MISSING <https://lingualibre.org/speakers/1> ; # Filter: ??? 'speaker' is ll.org/speakers/1 'Aemines1' | ||
+ | wdt:P9533 "pomme"@fr ; # Filter: P9533 'audio transcription' of "pomme" in French | ||
+ | schema:url ?urlPointer # Bind the URI to the file to ?urlPointer | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|| | || | ||
<query _pagination="5" > | <query _pagination="5" > | ||
− | SELECT ? | + | SELECT ?audio ?urlPointer |
− | + | (REPLACE(REPLACE(REPLACE(SUBSTR(STR(?urlPointer),52),"%20","_"),"%28","("),"%29",")") AS ?filename) | |
WHERE { | WHERE { | ||
− | + | ?audio wdt:P407 wd:Q150 ; # Filter: P407 'language' is Q150 'French' | |
+ | wdt:SPEARKER_PROPERTY_MISSING <https://lingualibre.org/speakers/1> ; # Filter: ??? 'speaker' is ll.org/speakers/1 'Aemines1' | ||
+ | wdt:P9533 "pomme"@fr ; # Filter: P9533 'audio transcription' of "pomme" in French | ||
+ | schema:url ?urlPointer # Bind the URI to the file to ?urlPointer | ||
} | } | ||
</query> | </query> | ||
|} | |} | ||
− | == | + | === Files on Commons about records in Punjabi with transcription and LinguaLibre identifier === |
+ | |||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Commons | ||
+ | SELECT * WHERE { | ||
+ | ?m wdt:P31 wd:Q108167708 ; #record | ||
+ | wdt:P407 wd:Q58635 ; #in Punjabi | ||
+ | wdt:P9533 ?transcription ; #with transcription | ||
+ | wdt:P10369 ?idLili . #with LinguaLibre identifier | ||
+ | } | ||
+ | LIMIT 100 | ||
+ | </syntaxhighlight> | ||
+ | === 🇶 Count records by gender of the speaker ([[Property:P8|P8]]) === | ||
− | {| | + | {| style="width:100%" |
|- style="vertical-align:top;" | |- style="vertical-align:top;" | ||
|style="padding: 0 3em;width:60%"| | |style="padding: 0 3em;width:60%"| | ||
<syntaxhighlight lang="sparql"> | <syntaxhighlight lang="sparql"> | ||
− | SELECT ? | + | SELECT ?genderLabel (count(?record) AS ?nb) |
− | ? | + | WHERE { |
− | ? | + | ?record prop:P2 entity:Q2 ; |
+ | prop:P5 ?speaker . | ||
+ | ?speaker prop:P2 entity:Q3 ; | ||
+ | prop:P8 ?gender . | ||
+ | # Add labels to each variable used. | ||
+ | SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . } | ||
} | } | ||
+ | GROUP BY ?genderLabel | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|| | || | ||
<query _pagination="5" > | <query _pagination="5" > | ||
− | SELECT ? | + | SELECT ?genderLabel (count(?record) AS ?nb) |
− | ? | + | WHERE { |
− | ? | + | ?record prop:P2 entity:Q2 ; |
+ | prop:P5 ?speaker . | ||
+ | ?speaker prop:P2 entity:Q3 ; | ||
+ | prop:P8 ?gender . | ||
+ | # Add labels to each variable used. | ||
+ | SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . } | ||
} | } | ||
+ | GROUP BY ?genderLabel | ||
+ | GROUP BY ?genderLabel | ||
</query> | </query> | ||
|} | |} | ||
− | == Is Language ([[Q3]]) → list all languages with number of unique words and speakers == | + | == Heavy queries == |
− | == | + | Queries below are too large to run on LinguaLibre's wikipages, or even on [https://lingualibre.org/bigdata/#query Lingualibre Query Service]).<br> |
− | == | + | To do: do smaller sub-queries, with one <code>COUNT()</code> function. |
− | == | + | |
− | == Language | + | === ❌ Languages → Name, Wikidata Qid, LLQid, Iso-639-3, and genders === |
− | == | + | {| style="width:100%" |
− | == | + | |- |
− | == | + | ! Query || Result |
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?languageQidLabel ?wdQid ?languageQid ?isoCode | ||
+ | (COUNT(DISTINCT(?record)) AS ?recordCount) | ||
+ | (COUNT(DISTINCT(?speakerLangM)) AS ?speakerM) | ||
+ | (COUNT(DISTINCT(?speakerLangF)) AS ?speakerF) | ||
+ | wWHERE{ | ||
+ | ?record prop:P2 entity:Q2 . # Filter: items where P2 'instance of' is Q2 'record' | ||
+ | ?record prop:P4 ?languageQid . # Assign value: P4 'language' into variable ?language | ||
+ | ?languageQid prop:P12 ?wdQid . # Assign value: P12 'wikidata id' into variable ?WD | ||
+ | ?languageQid prop:P13 ?isoCode. # Assign value: P13 'iso639-3' into ?isoCode | ||
+ | |||
+ | #?record prop:P5 ?speakerQidM . # Assign value: P5 'speaker' into variable ?speakerQidM | ||
+ | #?speakerQidM prop:P8 entity:Q16 . # Filter: P8 'sex or gender' is Q16 'male | ||
+ | #?speakerQidM prop:P4 ?speakerLangM . # Assign value: P4 'language' into variable ?spakerLangM | ||
+ | |||
+ | ?record prop:P5 ?speakerQidF . # Assign value: P5 'speaker' into variable ?speakerQidF | ||
+ | ?speakerQidF prop:P8 entity:Q17 . # Filter: P8 'sex or gender' is Q17 'female | ||
+ | ?speakerQidF prop:P4 ?speakerLangF . # Assign value: P4 'language' into variable ?spakerLangF | ||
+ | |||
+ | SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . } | ||
+ | } | ||
+ | GROUP BY ?languageQidLabel ?languageQid ?wdQid ?isoCode | ||
+ | ORDER BY DESC(?recordCount) | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <pre> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | languageQidLabel wdQid languageQid isoCode recordCount speakerM speakerF | ||
+ | French Q150 Q21 fra 16761 0 18 | ||
+ | Marathi Q1571 Q34 mar 13153 0 5 | ||
+ | Polish Q809 Q298 pol 11686 0 1 | ||
+ | … | ||
+ | </pre> | ||
+ | |} | ||
+ | |||
+ | === ❌ Is Language ([[Q3]]) → list all languages with number of unique words and speakers === | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?language (COUNT(?audio) AS ?nbAudio) (COUNT(?speaker) AS ?nbSpeaker) WHERE { | ||
+ | ?language prop:P2 entity:Q4 . | ||
+ | ?audio prop:P4 ?language . | ||
+ | ?speaker prop:P4 ?language . | ||
+ | } | ||
+ | GROUP BY ?language | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Others == | ||
+ | ''(These old queries are not assessed yet.)'' | ||
+ | === Language ([[Q209]]) → Record, speaker's language level === | ||
+ | |||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | select ?record ?recordLabel ?speakerLabel ?languageLabel ?languageLevelLabel | ||
+ | where { | ||
+ | ?record prop:P2 entity:Q2 # Filter: P2 'instance of' is Q2 'record' AND P4 | ||
+ | ; prop:P4 entity:Q209 . # AND P4 'language' is Q209 'Breton' | ||
+ | ?record prop:P5 ?speaker . # Assign value: record's P5 'speaker' into ?speaker | ||
+ | ?record prop:P4 ?language . # Assign value: record's P4 'language' into ?language | ||
+ | |||
+ | ?speaker llp:P4 ?languageStatement . # P4 'language' | ||
+ | ?languageStatement llv:P4 ?language . # P4 'language' | ||
+ | ?languageStatement llq:P16 ?languageLevel . # P16 'language level' | ||
+ | # Adds labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } ORDER BY ?languageLabel ?languageLevelLabel | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | select ?record ?recordLabel ?speakerLabel ?languageLabel ?languageLevelLabel | ||
+ | where { | ||
+ | ?record prop:P2 entity:Q2 # Filter: P2 'instance of' is Q2 'record' AND P4 | ||
+ | ; prop:P4 entity:Q209 . # AND P4 'language' is Q209 'Breton' | ||
+ | ?record prop:P5 ?speaker . # Assign value: record's P5 'speaker' into ?speaker | ||
+ | ?record prop:P4 ?language . # Assign value: record's P4 'language' into ?language | ||
+ | |||
+ | ?speaker llp:P4 ?languageStatement . # P4 'language' | ||
+ | ?languageStatement llv:P4 ?language . # P4 'language' | ||
+ | ?languageStatement llq:P16 ?languageLevel . # P16 'language level' | ||
+ | # Adds labels | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } ORDER BY ?languageLabel ?languageLevelLabel | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Language ([[Q34]]) → Records of Wikidata concepts with WD Qid ([[Property:P12|P12]]) === | ||
+ | :''Those items were proposed to Lingualibre's recorder at step 3 via a SPARQL query upon Wikidata, so those words have WD's Qids.'' | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?languageLabel ?recordLabel ?record ?wid | ||
+ | WHERE { | ||
+ | ?record prop:P2 entity:Q2 . # Filter: P2 'instance of' is Q2 'record' | ||
+ | ?record prop:P4 entity:Q34 . # Filter: P4 'language' is Q34 'Marathi' | ||
+ | ?record prop:P4 ?language . # Assign value: record's P4 'language' to variable ?language | ||
+ | ?record prop:P12 ?wid . # Assign value: record's P12 'wikidata id' to variable ?wid | ||
+ | # Add labels capability | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query _pagination="5"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT ?languageLabel ?recordLabel ?record ?wid | ||
+ | WHERE { | ||
+ | ?record prop:P2 entity:Q2 . # Filter: P2 'instance of' is Q2 'record' | ||
+ | ?record prop:P4 entity:Q34 . # Filter: P4 'language' is Q34 'Marathi' | ||
+ | ?record prop:P4 ?language . # Assign value: record's P4 'language' to variable ?language | ||
+ | ?record prop:P12 ?wid . # Assign value: record's P12 'wikidata id' to variable ?wid | ||
+ | # Add labels capability | ||
+ | SERVICE wikibase:label { | ||
+ | bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . | ||
+ | } | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | === Records → Filter by date: late 2018 === | ||
+ | {| style="width:100%" | ||
+ | |- style="vertical-align:top;" | ||
+ | |style="padding: 0 3em;width:60%"| | ||
+ | <syntaxhighlight lang="sparql"> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT | ||
+ | (COUNT(DISTINCT ?record) AS ?records) | ||
+ | (COUNT(DISTINCT ?speaker) AS ?speakers) | ||
+ | (COUNT(DISTINCT ?language) AS ?languages) | ||
+ | WHERE { | ||
+ | ?record prop:P2 entity:Q2 . | ||
+ | ?record prop:P6 ?date . | ||
+ | ?record prop:P5 ?speaker . | ||
+ | ?record prop:P4 ?language . | ||
+ | # Filters: | ||
+ | FILTER(?date >= "2018-07-01T00:00:00Z"^^xsd:dateTime | ||
+ | && ?date < "2019-01-01T00:00:00Z"^^xsd:dateTime) | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | || | ||
+ | <query> | ||
+ | #defaultEndpoint:Lingualibre | ||
+ | SELECT | ||
+ | (COUNT(DISTINCT ?record) AS ?records) | ||
+ | (COUNT(DISTINCT ?speaker) AS ?speakers) | ||
+ | (COUNT(DISTINCT ?language) AS ?languages) | ||
+ | WHERE { | ||
+ | ?record prop:P2 entity:Q2 . | ||
+ | ?record prop:P6 ?date . | ||
+ | ?record prop:P5 ?speaker . | ||
+ | ?record prop:P4 ?language . | ||
+ | # Filters: | ||
+ | FILTER(?date >= "2018-07-01T00:00:00Z"^^xsd:dateTime | ||
+ | && ?date < "2019-01-01T00:00:00Z"^^xsd:dateTime) | ||
+ | } | ||
+ | </query> | ||
+ | |} | ||
+ | |||
+ | == See also == | ||
+ | * [[Help:SPARQL 2]] — next tutorial with focus on federate queries and Wikidata Lexemes. | ||
+ | ** [[d:Wikidata:Lexicographical data/Ideas of queries|Lexicographical data/Ideas of queries]] | ||
+ | ** [[LinguaLibre:Wikidata]] — stub, help write it ! | ||
+ | * [[Help:Querying Lingua Libre]] — general review, redirecting users to rightful place. | ||
+ | * [[Help:APIs]] — API queries over Wikimedia Commons or other Wikimedia wikis. | ||
+ | * [[:mw:Manual:Developing extensions]] — PHP-based modules enhancing wikis, can pull data via SPARQL queries. | ||
+ | |||
+ | {{Technicals}} | ||
− | + | [[Category:Lingua Libre:Help{{#translation:}}]] | |
− |
Latest revision as of 11:23, 28 April 2024
December 2021 rewriting : work in progress, please do not translate yet.
- NOW/Opened: General content review. You may help by: a) reading and copy-editing the page's English, b) testing queries on LLQS, edit in or discuss improvements,
3) increase comments' concistency. - Legend: 🇶 minor aspects to improve, see hidden comment ; ❌ query too heavy to run in this page.
- Later/not yet: translations.
Help welcome.
Base
Useful elements
|
|
Tools
- LinguaLibre Query Service (LLQS) – run SPARQL Queries upon LinguaLibre. Run, test, download the data as json, csv or tsv.
- Wikidata Query Service (WDQS) – run SPARQL Queries upon Wikidata. Run, test, download the data as json, csv or tsv. Has advanced user-friendly features such as : word hovering too see a term's meaning, code optimization, etc.
- Wikimedia Commons Query Service (WCQS) run SPARQL Queries upon Wikimedia Commons wikibase (need to log in).
- Wikidata Lexeme Queries generators (hack me) by @sina_ahm – helps to create queries for Wikidata's Lexeme.
- Special:ApiSandbox – API queries generator for Lingualibre wikipage and wikibase contents. An alternative to SPARQL queries.
References
Code snippets
Fetch data using SPARQL
LinguaLibre data can be fetched using various coding languages such as Python, Javascript, R and others, returning JSON or other formats.
- For code snippet in your language : open query.wikidata.org (WikiData Query Service, aka WDQS), run your SPARQL query, click "Code" : a pop up window appears with various implementations.
- For downloading data, click "Download".
Javascript:
At least 3 methods exists (code snippet), example:
Query | Result's basic unit |
---|---|
SPARQL:SELECT ?item WHERE { ?item prop:P2 entity:Q5 } LIMIT 10
|
{ … },
{
"item": {
"type": "uri",
"value": "https://lingualibre.org/entity/Q12"
},
"itemLabel": {
"xml:lang": "en",
"type": "literal",
"value": "beginner"
}
},
{ … }
|
Javascript:
var endpoint = 'https://lingualibre.org/sparql';
var sparql = 'SELECT ?item WHERE { ?item prop:P2 entity:Q5 } LIMIT 10';
$.getJSON(endpoint,
{ query: sparql, format: 'json' },
function(data){ console.log('JQuery: ',data)}
);
|
Merging data
Advanced SPARQL queries with COUNT()
and others are often slow (>3secs, sometime >100secs). You are encouraged to do multiple smaller SPARQL queries to then merge their responded data. By example, the complementary Javascript snippet below would help web developers to do so.
// Data from 3 sparql queries.
// Important: One key must be similar in all datasets, here: 'qid'
const langs = [{ qid: 'Q209', label: 'Breton', iso:'bre' }, { qid: 'Q34', label: 'Marathi', iso: 'mar' }],
speakersFemales = [{ qid: 'Q209', genderF: 3, recordsF: 60 }, { qid: 'Q34', genderF: 21, recordsF:5046 }],
speakersMales = [{ qid: 'Q209', genderM: 7, recordsM: 218 }, { qid: 'Q34', genderM: 85, recordsM:32964 }];
// Toolbox for merging data by same id
var merge2ArraysBySameId = function(arr1,arr2,id1){
return arr1.map( item1 => {
var identical = arr2.find(obj => obj[id1] === item1[id1]);
return Object.assign(identical, item1)
} );
}
// Mergings
var step1 = merge2ArraysBySameId(langs,speakersFemales,'qid');
var step2 = merge2ArraysBySameId(step1,speakersMales,'qid');
alert(JSON.stringify(step2))
Lingualibre's ground
Is Language (d:Q34770) → List existing languages with: LL Qid, ISO 639-3, Name
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT ?lang ?iso ?langLabel
WHERE {
# First get the relevant languages by first looking up all records
{
SELECT DISTINCT ?lang WHERE {
_:record wdt:P31 wd:Q108167708 ; # Filter to get wd:Q108167708 (pronunciation file)
wdt:P407 ?lang . # For each pronunciation file, fetch the language
}
}
# From this point on, ?lang is bound. Get the label and ISO code on Wikidata
SERVICE <https://query.wikidata.org/sparql> {
?lang wdt:P31 wd:Q34770 . # Filter: P31 'instance of' is Q1193409 'language or dialect'.
?lang wdt:P220 ?iso . # Assign value: P220 'ISO-639-3' into ?iso.
}
SERVICE wikibase:label {
# Add label to each variable used.
# ?lang now has twin variable ?langLabel
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
}
|
|
Is Speaker (speaker (Q3)) → List existing speakers
This query is going to be DEPRECATED as the queried data will no longer be available.
#defaultEndpoint:Lingualibre
SELECT ?speaker ?speakerLabel
WHERE {
?speaker prop:P2 entity:Q3 . # Filter: P2 'instance of' is Q3 'speaker'.
# Add labels to each variable used.
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
}
|
|
Is Language level (language level (Q5)) → List existing levels
This query is going to be DEPRECATED as the queried data will no longer be available.
#defaultEndpoint:Lingualibre
SELECT ?item ?itemLabel
WHERE {
?item prop:P2 entity:Q5 # Filter: P2 'instance of' is Q5 'language level'.
# Add labels to each variable used.
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
}
|
|
Is Sex or Gender (sex or gender (Q7)) → List existing sexes or genders
This query is going to be DEPRECATED as the queried data will no longer be available.
#defaultEndpoint:Lingualibre
SELECT ?item ?itemLabel
WHERE {
?item prop:P2 entity:Q7 # Filter: P2 'instance of' is Q7 'sex or gender'.
# Add labels to each variable used.
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
}
|
|
Speaker
🇶 Speaker name(s) → Speaker Qid(s)
This query is going to be DEPRECATED as the queried data will no longer be available.
#defaultEndpoint:Lingualibre
SELECT ?speakerName ?speakerId
WHERE {
VALUES ?speakerName { "Yug" "VIGNERON" } # Assign value: one or multiple values
# note: need to comment BIND
BIND ( STRLANG(?speakerName, "en") AS ?speakerLabel )
# Grammatical note: ';' allows to chain actions
?speakerId prop:P2 entity:Q3 ; # Filter: P2 'instance of' is Q3 'speaker'.
rdfs:label ?speakerLabel . # Filter by value: label equal ?speakerLabel's value
}
|
|
🇶 Speaker Qid (SangeetaRH (Q445757)) → Speaker data, all
This query is going to be DEPRECATED as the queried data will no longer be available.
#defaultEndpoint:Lingualibre
# Get Q445757 (User:SangeetaRH)'s data
SELECT ?anyProperty ?anyValue ?anyValueLabel
WHERE {
entity:Q445757 ?anyProperty ?anyValue . # Filter: of Q445757 'SangeetaRH', get any property and any values
# Add labels
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
}
|
|
🇶 Speaker Qid (SangeetaRH (Q445757)) → Speaker languages (P4)
This query is going to be DEPRECATED as the queried data will no longer be available.
#defaultEndpoint:Lingualibre
SELECT ?languages ?languagesLabel
WHERE {
entity:Q445757 prop:P4 ?languages . # Assign value: for Q445757 'SangeetaRH', P4 'language' into ?languages
# Add labels
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
}
|
|
🇶 Count speaker gender (P8)
#defaultEndpoint:Lingualibre
SELECT ?genderLabel (count(?speaker) AS ?nb)
WHERE {
?speaker prop:P2 entity:Q3 ;
prop:P8 ?gender .
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
}
GROUP BY ?genderLabel
|
|
Speaker Qid (speakers/1 ???) + Language LL Qid (d:Q1571) → List records
This query is IN WORK for Commons SPARQL Endpoint. One Wikidata property is missing; please update this query with the right property URI.
#defaultEndpoint:Commons
SELECT ?audio ?audioLabel
WHERE {
?audio wdt:SPEAKER_PROPERTY_MISSING <http://lingualibre.org/speakers/1> ; # Filter: ??? 'speaker' P5 Speaker is User:SangeetaRH
wdt:P407 wd:Q1571 . # Filter: P407 'language' is Q1571 'Marathi'
# Add labels
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
}
|
|
Speaker Qid (speakers/1 ???) + Language LL Qid (d:Q1571) → Count records
This query is IN WORK for Commons SPARQL Endpoint. One Wikidata property is missing; please update this query with the right property URI.
#defaultEndpoint:Commons
SELECT ?language ?speaker (COUNT(?audio) AS ?audio)
WHERE {
# Comment out the below pattern to filter by language, e.g. Q1571 or others
# VALUES ?language { wd:Q1571 } # Bind value: Q1571 'Marathi' into ?language
VALUES ?speaker { <http://lingualibre.org/speakers/1> } # Assign value: ll.org/speakers/1 (for 'SangeetaRH') into ?speaker
?audio wdt:SPEAKER_PROPERTY_MISSING ?speaker ; # Filter: ??? 'speaker' is ?speaker
wdt:P407 ?language ; # Filter: P407 'language' bound to ?language
wdt:P31 wd:Q108167708 . # Filter: P31 'instance of' is Q108167708 'pronunciation file'
}
GROUP BY ?language ?speaker # Sorting first groups per language and speaker
|
|
Is Speaker (speaker (Q3)) → List of accounts and associated speakers
This query is going to be DEPRECATED as the queried data will no longer be available.
#defaultEndpoint:Lingualibre
SELECT ?linkedUser ?speakerLabel (SUBSTR(STR(?speaker),32) AS ?speakerQid)
WHERE {
?speaker prop:P2 entity:Q3 . # Filter: P2 'instance of' is Q3 'speaker'.
?speaker prop:P11 ?linkedUser . # Assign value: P11 'linked users' into ?linkedUser.
# Add labels
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
} ORDER BY DESC (?speakerLabel)
|
|
Languages
🇶 LL Language (Q930) → List of words recorded
This query could be run on Wikimedia Commons MediaWiki API. See Help:APIs.
#defaultEndpoint:Wikidata
PREFIX prop: <https://lingualibre.org/prop/direct/>
PREFIX entity: <https://lingualibre.org/entity/>
SELECT ?writing WHERE {
SERVICE <https://lingualibre.org/sparql> {
SELECT ?writing WHERE {
?record prop:P2 entity:Q2;
prop:P4 entity:Q930, ?language;
prop:P3 ?url;
prop:P7 ?writing.
# FILTER(CONTAINS(STR(?audio), "LL-Q35735")) # occitan
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
}
}
|
|
🇶 Language name(s) in English → Language LL Qid(s)
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT ?languageId ?languageName
WHERE {
SERVICE <https://query.wikidata.org/sparql> {
VALUES ?languageName { "Marathi" "Atikamekw" "Central Bikol" } # Target values
BIND ( STRLANG(?languageName, "en") AS ?languageLabel ) # Bind filter by English
?languageId rdfs:label ?languageLabel ; # Assign value label into ?languageLabel
wdt:P31 wd:Q34770 . # Filter: P2 'instance of' is Q4 'language' AND
}
}
|
|
Language ISO-639-3 → Language LL Qid(s), Wikidata Qid, Label
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT ?langIso ?langId ?langIdLabel
WHERE {
SERVICE <https://query.wikidata.org/sparql> {
VALUES ?langIso { "mar" "bre" "bcl" "atj" "ban" } # Target ISO values
?langId
wdt:P220 ?langIso ; # Assign value: P13 'Iso-639-3' to ?langIso AND
wdt:P31 wd:Q34770 ; # Filter: P2 'instance of' is Q4 'language'
}
# Labels
SERVICE wikibase:label {bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en"}
}
|
|
Language LL All Languages → Count records
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT ?language ?languageLabel ?audios WHERE {
{
SELECT ?language (COUNT(?audio) AS ?audios) WHERE {
# Comment out the below statement to filter to only certain languages (e.g. Q34 or others)
# VALUES ?language { entity:Q34 }
?audio wdt:P31 wd:Q108167708 ; # Filter: P2 'instance of' is Q2 'record'
wdt:P407 ?language .
}
GROUP BY ?language
}
SERVICE <https://query.wikidata.org/sparql> {
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".
?language rdfs:label ?languageLabel .
}
}
}
|
|
🇶 Language LL All Languages → Count unique words, audios, ratio
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT ?language ?languageLabel ?words ?audios ?percent
WHERE {
{
SELECT ?language
(COUNT(DISTINCT(?itemLabel)) AS ?words) # Count and assign value to ?Audio
(COUNT(?audio) as ?audios)
(ROUND(10000*?words/?audios)/100 AS ?percent)
WHERE {
# Uncomment the below line to filter languages (e.g Q34 or others)
# VALUES ?language { wd:Q34 }
?audio wdt:P407 ?language ; # Bind property P407 'language' to ?language
wdt:P31 wd:Q108167708 ; # Filter: P31 'instance of' Q108167708 (pronunciation file)
wdt:P9533 ?itemLabel . # Bind P9533 'transcription' to ?itemLabel.
}
GROUP BY ?language ?languageLabel
}
SERVICE <https://query.wikidata.org/sparql> {
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".
?language rdfs:label ?languageLabel .
}
}
}
|
|
Language LL All Languages → Count speakers
This query is IN WORK for Commons SPARQL Endpoint. One Wikidata property is missing; please update this query with the right property URI.
#defaultEndpoint:Commons
SELECT ?language ?languageLabel ?speakers WHERE {
{
SELECT ?language (COUNT(?speaker) AS ?speakers) WHERE {
# Uncomment the below line to filter to specific languages
# E.g Q34 and others
# VALUES ?language { wd:Q34 }
?record wdt:P407 ?language ; # Bind P407 'language' to ?language (if unbound)
wdt:P31 wd:Q108167708 ; # P31 'instance of' Q108167708 'pronunciation file'
wdt:SPEAKER_PROPERTY_MISSING ?speaker ; # Bind ??? 'speaker' to ?speaker
} GROUP BY ?language
}
SERVICE <https://query.wikidata.org/sparql> {
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".
?language rdfs:label ?languageLabel
}
}
}
|
|
Language LL Qid (Q209) → List speakers
This query is going to be DEPRECATED as the queried data will no longer be available.
#defaultEndpoint:Lingualibre
SELECT ?language ?speaker ?speakerLabel WHERE {
VALUES ?language { entity:Q209 }
?speaker prop:P2 entity:Q3 . # P2 'instance of' is Q3 'speaker'
?speaker prop:P4 ?language . # P4 'language' is Q34 'Marathi'
# Labels
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
}
|
|
Language LL Qid (d:Q12107) → Language data, all
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT ?predicate ?object WHERE {
SERVICE <https://query.wikidata.org/sparql> {
# Given Q12107 language, get all properties and values
wd:Q12107 ?predicate ?object .
}
}
|
|
Language LL Qid (d:Q12107) → Language data, Literals
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT * WHERE {
SERVICE <https://query.wikidata.org/sparql> {
# Given Q12107 'Breton language', get only literals
wd:Q12107 ?predicate ?object .
?predicate rdf:type owl:DatatypeProperty .
}
}
|
|
Language LL Qid (d:Q12107) → Property P220 (ISO 639-3)
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT * WHERE {
SERVICE <https://query.wikidata.org/sparql> {
wd:Q12107 wdt:P220 ?iso . # Assign value : Q209 'Breton', P13 'ISO 639-3', value into ?iso
}
}
|
|
Languages → List existing languages' iso-639-3
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT * WHERE {
SERVICE <https://query.wikidata.org/sparql> {
?lang wdt:P220 ?code .
}
}
|
|
🇶 Language WD Qid → Language data, core
This query is going to be DEPRECATED as the queried data will no longer be available.
#defaultEndpoint:Lingualibre
SELECT * WHERE {
?lang prop:P12 "Q12107" . # Filter: P12 'Wikidata id' is Wikidata's "Q12107"
?lang ?predicate ?object . #
?predicate rdf:type owl:DatatypeProperty .
}
|
|
Records
Record LL Qid (sdc:M69288741) → Record data, all
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT * WHERE {
sdc:M69288741 ?predicate ?object .
}
|
|
Record LL Qid (sdc:M69288741) → Record data, core
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT * WHERE {
sdc:M69288741 ?predicate ?object .
SERVICE <https://query.wikidata.org/sparql> {
?predicate rdf:type owl:DatatypeProperty .
}
}
|
|
Language (d:Q1860) + String → Record LL Qid(s)
This query has been UPDATED to work on Commons SPARQL Endpoint.
#defaultEndpoint:Commons
SELECT ?item
WHERE {
?item wdt:P31 wd:Q108167708 . # Filter: P31 'instance of' Q108167708 'record'
?item wdt:P407 wd:Q1860 . # Filter: P407 'language' is Q1860 'English'
?item wdt:P9533 "apple"@en. # Filter: P9533 'transcription' is "apple"
}
|
|
Language (d:Q12107) + Speaker (/speakers/1 ??) + String (ni) → Record LL Qid
This query is IN WORK for Commons SPARQL Endpoint. One Wikidata property is missing; please update this query with the right property URI.
Case: Search in Breton language, with speaker 'ThonyVezbe',
SELECT ?audio ?urlPointer
WHERE {
?audio wdt:P407 wd:Q12107 ; # P407 'language' is Q12107 'Breton'
wdt:SPEAKER_PROPERTY_MISSING <https://lingualibre.org/speakers/1> ; # ??? 'speaker' is ll.org/speakers/1 'ThonyVezbe'
wdt:P9533 "ni"@br ;
schema:url ?urlPointer .
}
|
|
Language (d:Q150) + Speaker (/speakers/1 ??) + String → URL pointer, filename
This query is IN WORK for Commons SPARQL Endpoint. One Wikidata property is missing; please update this query with the right property URI.
SELECT ?audio ?urlPointer
(REPLACE(REPLACE(REPLACE(SUBSTR(STR(?urlPointer),52),"%20","_"),"%28","("),"%29",")") AS ?filename)
WHERE {
?audio wdt:P407 wd:Q150 ; # Filter: P407 'language' is Q150 'French'
wdt:SPEARKER_PROPERTY_MISSING <https://lingualibre.org/speakers/1> ; # Filter: ??? 'speaker' is ll.org/speakers/1 'Aemines1'
wdt:P9533 "pomme"@fr ; # Filter: P9533 'audio transcription' of "pomme" in French
schema:url ?urlPointer # Bind the URI to the file to ?urlPointer
}
|
|
Files on Commons about records in Punjabi with transcription and LinguaLibre identifier
#defaultEndpoint:Commons
SELECT * WHERE {
?m wdt:P31 wd:Q108167708 ; #record
wdt:P407 wd:Q58635 ; #in Punjabi
wdt:P9533 ?transcription ; #with transcription
wdt:P10369 ?idLili . #with LinguaLibre identifier
}
LIMIT 100
🇶 Count records by gender of the speaker (P8)
SELECT ?genderLabel (count(?record) AS ?nb)
WHERE {
?record prop:P2 entity:Q2 ;
prop:P5 ?speaker .
?speaker prop:P2 entity:Q3 ;
prop:P8 ?gender .
# Add labels to each variable used.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . }
}
GROUP BY ?genderLabel
|
|
Heavy queries
Queries below are too large to run on LinguaLibre's wikipages, or even on Lingualibre Query Service).
To do: do smaller sub-queries, with one COUNT()
function.
❌ Languages → Name, Wikidata Qid, LLQid, Iso-639-3, and genders
Query | Result |
---|---|
#defaultEndpoint:Lingualibre
SELECT ?languageQidLabel ?wdQid ?languageQid ?isoCode
(COUNT(DISTINCT(?record)) AS ?recordCount)
(COUNT(DISTINCT(?speakerLangM)) AS ?speakerM)
(COUNT(DISTINCT(?speakerLangF)) AS ?speakerF)
wWHERE{
?record prop:P2 entity:Q2 . # Filter: items where P2 'instance of' is Q2 'record'
?record prop:P4 ?languageQid . # Assign value: P4 'language' into variable ?language
?languageQid prop:P12 ?wdQid . # Assign value: P12 'wikidata id' into variable ?WD
?languageQid prop:P13 ?isoCode. # Assign value: P13 'iso639-3' into ?isoCode
#?record prop:P5 ?speakerQidM . # Assign value: P5 'speaker' into variable ?speakerQidM
#?speakerQidM prop:P8 entity:Q16 . # Filter: P8 'sex or gender' is Q16 'male
#?speakerQidM prop:P4 ?speakerLangM . # Assign value: P4 'language' into variable ?spakerLangM
?record prop:P5 ?speakerQidF . # Assign value: P5 'speaker' into variable ?speakerQidF
?speakerQidF prop:P8 entity:Q17 . # Filter: P8 'sex or gender' is Q17 'female
?speakerQidF prop:P4 ?speakerLangF . # Assign value: P4 'language' into variable ?spakerLangF
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
GROUP BY ?languageQidLabel ?languageQid ?wdQid ?isoCode
ORDER BY DESC(?recordCount)
|
#defaultEndpoint:Lingualibre languageQidLabel wdQid languageQid isoCode recordCount speakerM speakerF French Q150 Q21 fra 16761 0 18 Marathi Q1571 Q34 mar 13153 0 5 Polish Q809 Q298 pol 11686 0 1 … |
❌ Is Language (speaker (Q3)) → list all languages with number of unique words and speakers
#defaultEndpoint:Lingualibre
SELECT ?language (COUNT(?audio) AS ?nbAudio) (COUNT(?speaker) AS ?nbSpeaker) WHERE {
?language prop:P2 entity:Q4 .
?audio prop:P4 ?language .
?speaker prop:P4 ?language .
}
GROUP BY ?language
Others
(These old queries are not assessed yet.)
Language (Breton (Q209)) → Record, speaker's language level
#defaultEndpoint:Lingualibre
select ?record ?recordLabel ?speakerLabel ?languageLabel ?languageLevelLabel
where {
?record prop:P2 entity:Q2 # Filter: P2 'instance of' is Q2 'record' AND P4
; prop:P4 entity:Q209 . # AND P4 'language' is Q209 'Breton'
?record prop:P5 ?speaker . # Assign value: record's P5 'speaker' into ?speaker
?record prop:P4 ?language . # Assign value: record's P4 'language' into ?language
?speaker llp:P4 ?languageStatement . # P4 'language'
?languageStatement llv:P4 ?language . # P4 'language'
?languageStatement llq:P16 ?languageLevel . # P16 'language level'
# Adds labels
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
} ORDER BY ?languageLabel ?languageLevelLabel
|
|
Language (Marathi (Q34)) → Records of Wikidata concepts with WD Qid (P12)
- Those items were proposed to Lingualibre's recorder at step 3 via a SPARQL query upon Wikidata, so those words have WD's Qids.
#defaultEndpoint:Lingualibre
SELECT ?languageLabel ?recordLabel ?record ?wid
WHERE {
?record prop:P2 entity:Q2 . # Filter: P2 'instance of' is Q2 'record'
?record prop:P4 entity:Q34 . # Filter: P4 'language' is Q34 'Marathi'
?record prop:P4 ?language . # Assign value: record's P4 'language' to variable ?language
?record prop:P12 ?wid . # Assign value: record's P12 'wikidata id' to variable ?wid
# Add labels capability
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .
}
}
|
|
Records → Filter by date: late 2018
#defaultEndpoint:Lingualibre
SELECT
(COUNT(DISTINCT ?record) AS ?records)
(COUNT(DISTINCT ?speaker) AS ?speakers)
(COUNT(DISTINCT ?language) AS ?languages)
WHERE {
?record prop:P2 entity:Q2 .
?record prop:P6 ?date .
?record prop:P5 ?speaker .
?record prop:P4 ?language .
# Filters:
FILTER(?date >= "2018-07-01T00:00:00Z"^^xsd:dateTime
&& ?date < "2019-01-01T00:00:00Z"^^xsd:dateTime)
}
|
|
See also
- Help:SPARQL 2 — next tutorial with focus on federate queries and Wikidata Lexemes.
- Lexicographical data/Ideas of queries
- LinguaLibre:Wikidata — stub, help write it !
- Help:Querying Lingua Libre — general review, redirecting users to rightful place.
- Help:APIs — API queries over Wikimedia Commons or other Wikimedia wikis.
- mw:Manual:Developing extensions — PHP-based modules enhancing wikis, can pull data via SPARQL queries.