Jump to content

Talk:Wikidata Query Service/User Manual/MWAPI

Add topic
From mediawiki.org

Preserve result order from MediaWiki API?

[edit]

The following discussion is closed. Please do not modify it. Subsequent comments should be made on the appropriate discussion page. No further edits should be made to this discussion.


When using wbsearchentities, like so:

https://www.wikidata.org/w/api.php?search=las&language=en&uselang=en&format=jsonfm&limit=25&action=wbsearchentities

the API returns the results ordered by by relevance. When obtaining these results via SPARQL and modifying them, the order is lost (example). This is understandable, but is there a way to preserve the original order, e.g., by transforming it into an ordinal for use by ORDER BY? If not, should the wbsearchentities API be modified to make it possible to obtain the score for each result?

The practical application here is to modify autocomplete results on-the-fly with a single query, which seems like a great use case for the MWAPI integration into the query service. Eloquence (talk) 00:16, 28 September 2017 (UTC)Reply

I'll look into it. Generally the SPARQL results are not ordered, but if they come from ordered source (e.g. MWAPI) it might be possible to preserve order maybe. I'll check.
Adding score should not be hard if the score is present in result's XML. Smalyshev (WMF) (talk) 17:22, 28 September 2017 (UTC)Reply
Thank you for taking a look! Unfortunately, the wbsearchentities API's XML output does not include a score that could be used for ordering. I think we'd either have to infer an ordinal from the sequence of results somehow, or perhaps optionally add the score to the output on the MediaWiki side. Eloquence (talk) 21:47, 28 September 2017 (UTC)Reply
Yes, the API of entity search does not allow for score currently :( And extracting ordinal number from XML seems non-trivial... I am not sure why results appear out of order - the service delivers them in order, but somewhere inside Blazegraph the order is lost. I'll look into why that happens. Smalyshev (WMF) (talk) 05:19, 29 September 2017 (UTC)Reply
It looks like the order breaks only when join (?item wdt:P31 ?instance) is applied... If you just call the service, the order is preserved. Which makes sense since joins are parallelized and do not guarantee preserving order. It then may be possible to just create simulated variable that returns ordinal - like "?position wikibase:apiOutput mwapi:ordinal" or something like that - for each result. That probably would allow to re-sort them after joins. Smalyshev (WMF) (talk) 20:07, 1 October 2017 (UTC)Reply
Something like that would be excellent, yes, and might help with other queries as well :) Eloquence (talk) 23:04, 1 October 2017 (UTC)Reply
Further tracking in https://phabricator.wikimedia.org/T177275 Smalyshev (WMF) (talk) 20:09, 4 October 2017 (UTC)Reply
This is now implemented, see https://phabricator.wikimedia.org/T177275 and Wikidata query service/User Manual/MWAPI#Output Smalyshev (WMF) (talk) 08:00, 7 November 2017 (UTC)Reply
The discussion above is closed. Please do not modify it. No further edits should be made to this discussion.

increase maximum numbe of elements returned

[edit]

The following discussion is closed. Please do not modify it. Subsequent comments should be made on the appropriate discussion page. No further edits should be made to this discussion.


As it was discussed earlier on Wikidata, the query

SELECT (IRI(concat("https://commons.wikimedia.org/wiki/", ?creatorTemplate)) as ?creatorLink) ?creatorName ?categoryName ?commonsCatItem ?commonsCatItemLabel {
  SERVICE wikibase:mwapi { # list of all creator templates without Wikidata link
     bd:serviceParam wikibase:api "Generator" .
     bd:serviceParam wikibase:endpoint "commons.wikimedia.org" .
     bd:serviceParam mwapi:gcmtitle "Category:Creator templates without Wikidata link" .
     bd:serviceParam mwapi:generator "categorymembers" .
     bd:serviceParam mwapi:gcmtype "page" .
     bd:serviceParam mwapi:gcmlimit "max" .
     bd:serviceParam mwapi:gcmsort "timestamp" .
     bd:serviceParam mwapi:gcmdir "descending" .
     ?creatorTemplate wikibase:apiOutput mwapi:title  .
  }
  hint:Prior hint:runFirst 1 . 
  SERVICE wikibase:mwapi { # get home category
     bd:serviceParam wikibase:api "Categories" .
     bd:serviceParam wikibase:endpoint "commons.wikimedia.org" .
     bd:serviceParam mwapi:titles ?creatorTemplate .
     bd:serviceParam mwapi:clshow "!hidden" .
     ?category wikibase:apiOutput mwapi:category  .
  }
  BIND(substr(?creatorTemplate,9) as ?creatorName ) .
  BIND(substr(?category,10)       as ?categoryName) .
  OPTIONAL { 
    ?commonsCatItem wdt:P373 ?categoryName . # category is linked from Wikidata
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
  }
  FILTER ( BOUND(?commonsCatItem) ) .
  FILTER ( ?commonsCatItem!=wd:Q24731821 ) .
}
Try it!

does not return all the results because the generator does not show all the pages from c:Category:Creator templates without Wikidata link. Can we fix it somehow? At the moment I can get different results if I remove gcmsort or gcmdir. I would like to catch all the pages that are in that directory which have home category linked from Wikidara through P373, so I can add link to Wikidata. The current number of pages returned is 500. I would need it be be at least 1300 for the query to work Jarekt (talk) 19:01, 19 October 2017 (UTC)Reply

I think the largest number of results the API can request is 500, this is the API limit. There's 5000 limit for bots, but this I assume requires login. Unfortunately, the service does not support continuations yet (making it in generic way, especially with generators, is kinda complex). I'll add it to the todo list. But in the meantime I assume the best way to work around this would be to fetch the list directly in the application and then issue a series of queries using VALUES clause. Smalyshev (WMF) (talk) 19:02, 20 October 2017 (UTC)Reply
Created https://phabricator.wikimedia.org/T178712 to track it. Smalyshev (WMF) (talk) 19:04, 20 October 2017 (UTC)Reply
I did not try it in this context but with other queries I tried there seems to be a limit on the size of the text of the query (number of characters?), that prevent long lists in VALUES clause. For example when I have externally generated list of q-codes and I want to look up some property for them, I have to do it in batches of less than 200 q-codes for the query to finish. I doubt I would be able to build a query with 1300 page names. Jarekt (talk) 19:14, 20 October 2017 (UTC)Reply
You don't have to put everything in one query. You can run several queries and combine the results. Smalyshev (WMF) (talk) 19:15, 20 October 2017 (UTC)Reply
Continuations are now supported for most API calls. Smalyshev (WMF) (talk) 18:26, 5 February 2018 (UTC)Reply
The discussion above is closed. Please do not modify it. No further edits should be made to this discussion.

Outdated examples(?)

[edit]

The following discussion is closed. Please do not modify it. Subsequent comments should be made on the appropriate discussion page. No further edits should be made to this discussion.


3 of 4 examples timed out for me, the fourth returned 0 rows. Is that expected? Papuass (talk) 15:46, 26 April 2018 (UTC)Reply

No, that's not what is supposed to happen. I'll check. I think some queries need limits now that MWAPI supports continuation, that may be reason for some timeouts. Smalyshev (WMF) (talk) 17:57, 26 April 2018 (UTC)Reply
Examples now all work for me. Smalyshev (WMF) (talk) 01:27, 3 May 2018 (UTC)Reply
The discussion above is closed. Please do not modify it. No further edits should be made to this discussion.

Document more Input params

[edit]

This page and Wikidata Query Service/User Manual#MediaWiki API give examples using the following params:

gsrsearch, gsrlimit, gcmprop, gcmlimit

Where are they documented?

The page says "It is permissible to add input parameters not specified in the configuration, they will be passed to the service query. Please refer to the API documentation for the lists of parameters each service has". I searched in API:Query#Generators and can't find them there.

It would be very useful for SPARQL devs to have a full list of params listed on this page, maybe with links to their definitions in the MW API page. Vladimir Alexiev (talk) 11:06, 11 February 2019 (UTC)Reply

These are the same parameters you put in actual API request, e.g. when using API sandbox. There's no full list of parameters, because each API has its own parameters and those can be anything. So what I would suggest is using API tool - like API sandbox - first to assemble the API call and ensure it works properly, and then copy the parameter names/values from there to MWAPI call in WDQS. Smalyshev (WMF) (talk) 07:41, 14 February 2019 (UTC)Reply
It would be very useful if you could illustrate finding info in the API sandbox. Eg I wanted to see the params for "Generator" but the sandbox field "action" doesn't have such choice. API:Query#Generators doesn't mention "gsrsearch".
Please make it easier for folk who know SPARQL but not MWAPI to use this exension. Thanks in advance! Vladimir Alexiev (talk) 09:13, 26 February 2019 (UTC)Reply
I agree with Vladimir - I found these through a random StackOverflow answer. Further attempts to understand how they work (or even what they are doing) have been fruitless, because seemingly there is zero - zip - nada - no documentation whatsoever. I can't even find the source code to read! 120.21.201.69 (talk) 07:10, 14 December 2022 (UTC)Reply
Dunno, the documentation at Special:ApiSandbox seems quite readable to me (after you click around a bit). E.g. the generator/search parameters gsrsearch and gsrlimit are documented by clicking at the “generator=search” section at the left menu of e.g. Special:ApiSandbox#action=query&format=json&generator=search&formatversion=2&gsrsearch=test. Mormegil (talk) 09:16, 28 March 2023 (UTC)Reply
I'm sure the interactive API and the automatically generated documentation are very useful as a reference, if you already know the MWAPI well. But they are hard to use if it's the first time you're trying MWAPI. Vladimir Alexiev (talk) 06:41, 30 April 2023 (UTC)Reply
When you select action=query, a section for action=query appears in the main tree on the left. When you click the section, all available parameters for action=query are offered, and generator is among them. You can choose search in its dropdown; after that, the corresponding generator=search section appears in the main tree again. When you click on it, all parameters for generator=search appear, and among those, gsrsearch, gsrlimit. (gcmprop and gcmlimit are properties for generator=categorymembers, so, by choosing categorymembers for generator, and by clicking on generator=categorymembers which appears in the main tree, you’ll see offered those). Mormegil (talk) 14:46, 2 May 2023 (UTC)Reply
Take a look at the Examples at the bottom of the last page:
Search for meaning.
api.php?action=query&list=search&srsearch=meaning [open in sandbox]
Search texts for meaning.
api.php?action=query&list=search&srwhat=text&srsearch=meaning [open in sandbox]
Get page info about the pages returned for a search for meaning.
api.php?action=query&generator=search&gsrsearch=meaning&prop=info [open in sandbox]
A novel user like me would have the following questions:
  • What's the difference between list=search and generator=search, and how do I know which to use in which case?
  • Why two links use srsearch but one uses gsrsearch, and how do I know which to use when?
What is even the difference between the 3 examples?
  • How is "search for" different from "search texts for"? The two examples return the same data
  • Ok, I get how the third call is different: it returns page title and metadata, not search hits. From this I can surmise that generator returns a list of pages, whereas list returns a list of search hits Vladimir Alexiev (talk) 06:50, 30 April 2023 (UTC)Reply

read imageinfo metadata?

[edit]

Can this be done? e.g. with

      bd:serviceParam wikibase:endpoint "commons.wikimedia.org" .
      bd:serviceParam wikibase:api "Generator" .
      bd:serviceParam mwapi:generator "imageinfo" .
      bd:serviceParam mwapi:gcmprop "metadata" .      
      bd:serviceParam mwapi:gcmtitle "File:Iphone 3GS grass.jpg" .

Jura1 (talk) 20:12, 9 May 2019 (UTC)Reply

If API returns it as generator, then MWAPI service should support it. Smalyshev (WMF) (talk) 05:15, 10 May 2019 (UTC)Reply
Does that mean it already does (if queried correctly)
or it should do so in the future (once developed)? Jura1 (talk) 05:56, 10 May 2019 (UTC)Reply
Check out https://w.wiki/3p7 - is this something you've been looking for?

Smalyshev (WMF) (talk) 08:07, 10 May 2019 (UTC)Reply
Unfortunately, looks like it's a bit tricky to extract metadata itself as it returns multiple values and current MWAPI syntax allows only single value per row (since SPARQL doesn't have arrays or any other structures). Smalyshev (WMF) (talk) 08:15, 10 May 2019 (UTC)Reply
I'm trying to fetch "model" (and "make") from [1]. This to populate d:Property:P2009/d:Property:P2010 from categories at d:Property:P2033. Jura1 (talk) 08:29, 10 May 2019 (UTC)Reply
I tried a couple of ways at https://w.wiki/3rR
None worked. Jura1 (talk) 09:33, 11 May 2019 (UTC)Reply
Try this one: https://w.wiki/3sq Smalyshev (WMF) (talk) 19:34, 11 May 2019 (UTC)Reply
You can see the structure here: https://commons.wikimedia.org/w/api.php?action=query&format=xml&prop=imageinfo&generator=allpages&iiprop=metadata&gapprefix=Iphone%203GS%20grass.jpg&gapnamespace=6 and write the XPath query. Only condition is that it should return single node, it can not process multiple nodes in one variable now.

Smalyshev (WMF) (talk) 19:37, 11 May 2019 (UTC)Reply
It seems to work, at least to get the two fields ([2]).
I was trying to get just 1-5 files per category, but that part didn't quite work out. Jura1 (talk) 21:13, 11 May 2019 (UTC)Reply
Is there a way to get only 1-5 results for each category from the categorymembers-generator? Jura1 (talk) 14:45, 16 May 2019 (UTC)Reply

recursive category members?

[edit]

Is there an example of how to get the WD items of all members of a WP category recursively? Other tools maybe? SCIdude (talk) 07:05, 7 November 2019 (UTC)Reply

You can do it with PetScan if you need just a list of wikidata id:s
1.) Select target categories and wiki in "Categories" tab
2.) Set "use wiki" value to "Wikidata" in "Other sources" tab so it will fetch the wikidata ids
3.) Select preferred format in "Output" tab
Example query
- https://petscan.wmflabs.org/?psid=17439495 Zache (talk) 07:37, 22 September 2020 (UTC)Reply

using MWAPI with wcqs-beta

[edit]

Hi now that https://wcqs-beta.wmflabs.org is up and running I was experimenting with how to combine SDC SPARQL queries with information stored in SQL database like category membership, presence of specific templates, etc. I could not fine any way with exception of wikibase:mwapi service, I tried

SELECT  ?file ?wd ?fileStr {
  SERVICE wikibase:mwapi {
	 bd:serviceParam wikibase:api "Generator" .
     bd:serviceParam wikibase:endpoint "commons.wikimedia.org" .
     bd:serviceParam mwapi:gcmtitle "Category:Artworks with mismatching structured data P6243 property" .
     bd:serviceParam mwapi:generator "categorymembers" .
     bd:serviceParam mwapi:gcmtype "page" .
     bd:serviceParam mwapi:gcmlimit "max" .
     bd:serviceParam mwapi:gcmsort "timestamp" .
     ?pageid wikibase:apiOutputItem mwapi:pageid.
     ?ns     wikibase:apiOutput "@ns".
  }
  #?file schema:contentUrl ?url .
  FILTER (?ns = "6") # files only
  BIND (replace(str(?pageid),'http://www.wikidata.org/entity/','https://commons.wikimedia.org/entity/M')  as ?fileStr)
  BIND (str(?file)  as ?fileStr)
  ?file wdt:P6243 ?wd .
}

Try it!

but so far I did not managed to get it to work. I was thinking that since

SELECT  ?file ?wd ?fileStr {
  BIND (str(?file)  as ?fileStr)
  ?file wdt:P6243 ?wd .
} limit 10

Try it!

and

SELECT  ?fileStr {
  SERVICE wikibase:mwapi {
	 bd:serviceParam wikibase:api "Generator" .
     bd:serviceParam wikibase:endpoint "commons.wikimedia.org" .
     bd:serviceParam mwapi:gcmtitle "Category:Artworks with mismatching structured data P6243 property" .
     bd:serviceParam mwapi:generator "categorymembers" .
     bd:serviceParam mwapi:gcmtype "page" .
     bd:serviceParam mwapi:gcmlimit "max" .
     bd:serviceParam mwapi:gcmsort "timestamp" .
     ?pageid wikibase:apiOutputItem mwapi:pageid.
     ?ns     wikibase:apiOutput "@ns".
  }
  #?file schema:contentUrl ?url .
  FILTER (?ns = "6") # files only
  BIND (replace(str(?pageid),'http://www.wikidata.org/entity/','https://commons.wikimedia.org/entity/M')  as ?fileStr)
} limit 10

Try it!

both create ?fileStr like "https://commons.wikimedia.org/entity/M9094174" than I can combine them in order to query SDC statements within a category. Any idea how to get this to work? Jarekt (talk) 02:01, 6 August 2020 (UTC)Reply

I think that just converting the FileStr to URI should make it a proper M-item for SDC. However, my example query below is pretty slow so i think that it may needs to be splitted to two (like here).
:SELECT  ?file ?p6243 {
:<code>  SERVICE wikibase:mwapi {</code>
:	 bd:serviceParam wikibase:api "Generator" .
:<code>     bd:serviceParam wikibase:endpoint "commons.wikimedia.org" .</code>
:<code>     bd:serviceParam mwapi:gcmtitle "Category:Artworks with mismatching structured data P6243 property" .</code>
:<code>     bd:serviceParam mwapi:generator "categorymembers" .</code>
:<code>     bd:serviceParam mwapi:gcmtype "page" .</code>
:<code>     bd:serviceParam mwapi:gcmlimit "max" .</code>
:<code>     bd:serviceParam mwapi:gcmsort "timestamp" .</code>
:<code>     ?pageid wikibase:apiOutputItem mwapi:pageid.</code>
:<code>     ?ns     wikibase:apiOutput "@ns".</code>
:<code>  }</code>
:<code>  #?file schema:contentUrl ?url .</code>
:<code>  FILTER (?ns = "6") # files only</code>
:<code>  BIND (URI(replace(str(?pageid),'http://www.wikidata.org/entity/','https://commons.wikimedia.org/entity/M'))  as ?file)</code>
:<code>  ?file wdt:P6243 ?p6243 </code>
:} limit 10
:
Try it! Zache (talk) 07:24, 22 September 2020 (UTC)Reply
With help from other forums I did managed to get the query to work. See c:Commons:SPARQL_query_service/queries/examples#Wikidata_items_of_files_in_Category:Artworks_with_structured_data_with_redirected_P6243_property . Jarekt (talk) 12:21, 23 September 2020 (UTC)Reply

How I can read content of revision (wikitext) using MWAPI?

[edit]

The following discussion is closed. Please do not modify it. Subsequent comments should be made on the appropriate discussion page. No further edits should be made to this discussion.


Hi, I tried to fetch revision like this, but i could not figure out how to access to actual content which should be under the key "*". Do you know how i should do that?

SOLVED: Example is now fixed based on answer below

SELECT * WHERE {
  BIND(wd:Q42 AS ?item)
  ?item wdt:P18 ?image.
  BIND(STRAFTER(wikibase:decodeUri(STR(?image)), "http://commons.wikimedia.org/wiki/Special:FilePath/") AS ?fileTitle)

  SERVICE wikibase:mwapi {
    bd:serviceParam wikibase:endpoint "commons.wikimedia.org";
                    wikibase:api "Generator";
                    wikibase:limit "once";
                    mwapi:generator "allpages";
                    mwapi:gapfrom ?fileTitle;
                    mwapi:gapnamespace 6; # NS_FILE
                    mwapi:gaplimit 1;
                    mwapi:prop "revisions";
                    mwapi:rvprop "content".
    ?contentmodel wikibase:apiOutput 'revisions/rev/@contentmodel'.
    ?contentformat wikibase:apiOutput 'revisions/rev/@contentformat'.
    ?content wikibase:apiOutput 'revisions/rev/text()' .
  }
}
Try it! Zache (talk) 07:07, 22 September 2020 (UTC)Reply
There is no key "*". MWAPI request output in XML format from the API and uses the XPath query language to find the wanted elements in the XML output. The XML has the context as the text in a "rev" element that haves "revisions" as parent element, so you have to add the triple
  ?content wikibase:apiOutput 'revisions/rev/text()' .
to the "SERVICE wikibase:mwapi" call in your SPARQL query. Dipsacus fullonum (talk) 08:41, 22 September 2020 (UTC)Reply
It worked! Thank you very much. Zache (talk) 08:58, 22 September 2020 (UTC)Reply
The discussion above is closed. Please do not modify it. No further edits should be made to this discussion.

EntitySearch returns empty result

[edit]

Hi,

I tried to query wikidata with entietySearch and I get no result. A few weeks ago everything was working.

Also the first example in this article does not return any result.

Has anything changed or is this a temporary issue? 77.183.100.132 (talk) 11:34, 28 September 2020 (UTC)Reply

same here, entity search return empty. Even when one the examples on the article is used. 2607:FEA8:91E0:1170:C0A9:6CF7:3B40:995D (talk) 17:21, 30 September 2020 (UTC)Reply
The WDQS team have identified the issue and are working on it - see the task here: https://phabricator.wikimedia.org/T263952.
A better place to contact the development team is on Wikidata here - they keep track of this page: https://www.wikidata.org/wiki/Wikidata:Contact_the_development_team/Query_Service_and_search#Mwapi_service_not_working_for_the_last_couple_of_days_(September_30) Kdutia (talk) 08:45, 1 October 2020 (UTC)Reply

MWAPI source code or configuration

[edit]

How the MWAPI is technically implemented? IE is it some Blazegraph extension or is there some externeal code in github etc? Zache (talk) 12:49, 10 December 2020 (UTC)Reply

It's a Blazegraph extension that you can find here: https://github.com/wikimedia/wikidata-query-rdf/tree/master/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/mwapi Abbe98 (talk) 19:10, 16 December 2020 (UTC)Reply

Is it possible to get the list of articles created by a user in SPARQL

[edit]

Following the examples in the page https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual/MWAPI#Examples, I try to get the list of articles created by a user inside SPARQL. I've tried the following request :

SELECT ?title WHERE {
  SERVICE wikibase:mwapi {
     bd:serviceParam wikibase:endpoint "fr‧wikipedia.org";
                     wikibase:api "Generator";
                     mwapi:generator "usercontribs"; 
                     mwapi:user "PAC2";
                     mwapi:show "new";.    
     ?title wikibase:apiOutput mwapi:title.
  } 
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }    
}

Try it!

But this doesn't work. Is it possible to do it or not ? PAC2 (talk) 21:03, 2 March 2021 (UTC)Reply

As you can see at API:Query "usercontribs" is only available in API action=query calls as a list parameter, and not as a generator. List queries are not a directly supported service for MWAPI. But a possible hack is that it is possible to make a query API call with both a generator and a list section. The drawback is that only one result can be fetched (to the same variables) per API call because the output configuration will be for the generator part of the call.
There is a recent example of an MWAPI call with a combined generator and list query for usercontribs at https://www.wikidata.org/wiki/Wikidata:Request_a_query/Archive/2021/02#Wikidata_items_I_created Dipsacus fullonum (talk) 22:52, 2 March 2021 (UTC)Reply
Thanks for the tip. That's mysterious but really powerful. PAC2 (talk) 06:56, 3 March 2021 (UTC)Reply

Mysterous bug

[edit]

The following query get the number of items by gender in a Wikipedia article.

SELECT ?gender ?genderLabel (COUNT(?item) AS ?count) 
WHERE {
  SERVICE wikibase:mwapi {
     bd:serviceParam wikibase:endpoint "fr‧wikipedia.org"; 
                     wikibase:api "Generator";
                     mwapi:generator "links"; 
                     mwapi:titles "Sociologie";. 
     ?item wikibase:apiOutputItem mwapi:item.
  } 
  FILTER BOUND (?item)                                         # Safeguard to not get a timeout from unbound items when using ?item below
  ?item wdt:P21 ?gender .                                  
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }    
}
GROUP BY ?gender ?genderLabel

Try it!

I've been using thus query regularly this last two weeks and there was no bug but since yesterday night (March, 2nd 2021), this doesn't work anymore. Do you have any explanation for this behaviour change? PAC2 (talk) 20:18, 3 March 2021 (UTC)Reply

I doubt very much that this query have ever worked. The MWAPI endpoint is misspelled: ""fr‧wikipedia.org" instead of "fr.wikipedia.org" Dipsacus fullonum (talk) 20:27, 3 March 2021 (UTC)Reply
PS: I recommend using (COUNT(*) AS ?count) instead of (COUNT(?item) AS ?count). There is no need here to check that ?item is bound and that the value is error free which the latter version does. The change wont save much time here, but it is a good thing to remember to use when possible as it can save considerably time when counting large numbers. Dipsacus fullonum (talk) 20:37, 3 March 2021 (UTC)Reply

Text nodes in output

[edit]

Can this service handle output elements that contain text nodes? I'm struggling to get back any output for the pageviews property:

SELECT ?title ?wd ?pageviews WHERE {
  SERVICE wikibase:mwapi {
    bd:serviceParam wikibase:api "Generator" .
    bd:serviceParam wikibase:endpoint "en.wikipedia.org" .
    bd:serviceParam mwapi:titles "List of mountain peaks by prominence" .
    bd:serviceParam mwapi:generator "links" .
    bd:serviceParam mwapi:gplprop "ids|title|type" .
    bd:serviceParam mwapi:gpllimit "max" .
    bd:serviceParam mwapi:pvipmetric "pageviews" .
    bd:serviceParam mwapi:pvipdays "1" .
    bd:serviceParam wikibase:limit 50 .
    
    ?title wikibase:apiOutput mwapi:title.
    ?wd wikibase:apiOutputItem mwapi:item.
    ?pageviews wikibase:apiOutput "pageviews/pvip/text()".
  }
}

I've tried a variety of XPaths, even pageviews/pvip/@date, but the ?pageviews column always ends up empty.

Each item in the API response looks like this:

      <page _idx="220167" pageid="220167" ns="0" title="Aconcagua">
        <pageviews>
          <pvip date="2021-04-27" xml:space="preserve">1266</pvip>
        </pageviews>
      </page>

Minh Nguyễn 💬 05:38, 28 April 2021 (UTC)Reply

This seems to work
SELECT ?title ?wd ?pageviews WHERE {
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "Generator" .
bd:serviceParam wikibase:endpoint "en.wikipedia.org" .
bd:serviceParam mwapi:titles "List of mountain peaks by prominence" .
bd:serviceParam mwapi:generator "links" .
bd:serviceParam mwapi:gplprop "ids|title|type" .
bd:serviceParam mwapi:gpllimit "max" .
bd:serviceParam mwapi:prop "info|pageprops|pageviews" .
bd:serviceParam mwapi:pvipdays "1" .
bd:serviceParam wikibase:limit 50 .
?title wikibase:apiOutput mwapi:title.
?wd wikibase:apiOutputItem mwapi:item.
?pageviews wikibase:apiOutput "pageviews/pvip/text()".
}
} 91.159.71.53 (talk) 18:36, 18 June 2021 (UTC)Reply

Not sure if it works

[edit]

Hi, I was looking in latvian wiki with a string search inside full text. This query does not look to work properly :https://w.wiki/B3Ct returns result but if you do look "neizmantots" inside the wikicode, it is not findable. Bouzinac (talk) 21:06, 28 August 2024 (UTC)Reply

Files/pages in category or its subcats (deepcategory)

[edit]

There is mwapi:generator "categorymembers"; for files/pages directly in a category but how to see files/pages directly in a category or any of its subcategories like it's possible with the deepcategory search operator on Commons? Prototyperspective (talk) 18:14, 21 November 2024 (UTC)Reply