How to get born date of personalities from Wikipedia - api

I am making a web application and I want the born date of the personalities on my pages. I want to use the Wikipedia API to get the born data but I can't find the correct URL to get the born date. Can anyone help?

You need to use the Wikidata API for this. wikidata api retrieve properties from entity (wikidata entry) has an example and expanding upon that, use e.g. https://en.wikipedia.org/w/api.php?action=query&prop=pageprops&ppprop=wikibase_item&titles=Donald%20Trump&formatversion=2 to get the Wikidata ID, then use https://www.wikidata.org/w/api.php?action=wbgetentities&props=claims&ids=Q22686&format=json and the date of birth exists at e.g.
json['entities']['Q22686']['claims']['P569'][0]['mainsnak']['datavalue']['value']['time']
There's probably a more elegant way to do it using SPARQL too https://wdqs-tutorial.toolforge.org/

Related

Is it possible to find the Wikipedia ID by property, e.g. Grid ID

Wikidata stores the Grid ID of educational institutions in property 2427 (https://www.wikidata.org/wiki/Property:P2427). Is it possible to retrieve the Wikipedia ID for a given Grid ID.
Example: I know the value "grid.1012.2" as Grid ID.
I would like to get Q1517021 back!
I tried
https://www.wikidata.org/w/api.php?action=wbgetclaims&format=json&property=P2427&claim=grid.1012.2
without success...
You can use the search API with the haswbstatement keyword (docs): action=query&format=json&list=search&srsearch=haswbstatement%3AP2427%3Dgrid.1012.2
Although as suggested by others using SPARQL might be easier for these kinds of things.

How to get information of a specific Wikidata ID using SPARQL query?

I know how to find all movies in Wikidata. So, I get a list of IDs like "Q18644475". If I try to get all film info for every film in the database in one query, I get a timeout. So, I decided to get the film info in individual queries.
Is there an SPARQL query to get the title and release year(optionally all possible info) for this ID?
I find the hoops you have to jump through to use an entity ID in SPARQL to be quite nuts.
If anyone else stumbles across this question then an alternative is to download the complete entity information in JSON format.
For example:
https://www.wikidata.org/wiki/Special:EntityData/Q18644475.json

Why does this Wikidata query return no results?

Shouldn't this Wikidata query return something?
https://www.wikidata.org/w/api.php?action=query&titles=Kevin_Bacon
What am I missing?
Not, it shouldn't, there is no Wikidata page titled "Kevin Bacon". The Wikidata page containing information about the actor Kevin Bacon is https://www.wikidata.org/wiki/Q3454165.
This means that the API query https://www.wikidata.org/w/api.php?action=query&titles=Q3454165 will return something (specifically, the page id). Without knowing what do you actually want, it's hard to help you further, though it's likely the Wikidata-specific API methods are what you want, instead of action=query.

Freebase API - listing a city's tourist attractions by relevance

I'm trying to use Freebase to list tourist attractions for cities by relevance.
Using the Topic API, it's simple to retrieve results for a certain city using its MID (e.g. "/m/04jpl" for London)
https:// www.googleapis.com/freebase/v1/topic/m/04jpl/?&filter=/travel/travel_destination/tourist_attractions
However, this gives a limited 10 results. The response ends with "count": 87.0". How do I get all 87? It's possible to click a "87 values total" link on London's Freebase page. Effectively, I want to do the same here.
I realise I could use MQL, but I want the results to be ranked by relevance, not by timestamp. Using the Search API, it's possible to rank by freebase, entity or schema, so I'd rather use that.
First, I looked at the Search Output schema for the Search API. However, even outputting "all" didn't produce Tourist Attraction results. Using metaschema with the Search API DID work. I used "part_of" to select London. However, it only works for some locations:
https:// www.googleapis.com/freebase/v1/search?limit=50&filter=(all%20type:/travel/tourist_attraction%20part_of:/m/04jpl)&indent=true
What I REALLY want to be able to do is make it work for a relatively unknown location like "Loughborough" (MID /m/01z21p). As you can see, substituting /m/04jpl for /m/01z21p produces no results:
https:// www.googleapis.com/freebase/v1/search?limit=50&filter=(all%20type:/travel/tourist_attraction%20part_of:/m/01z21p)&indent=true
Looking at "Loughborough", we see that its tourist attraction like "Loughborough Town Hall" has a "/travel/tourist_attraction/near_travel_destination" of "Loughborough". How would I compose this filter?
I want something like the following (that actually works):
https:// www.googleapis.com/freebase/v1/search?limit=50&filter=(all%20type:/travel/tourist_attraction)&filter=(/travel/tourist_attraction/near_travel_destination:/m/01z21p)&indent=true
Thanks!
NOTE: To enter the links into your browser you need to remove the space between the https:// and www. I would have done so, but I don't have the required permissions here yet to post more than 2 links.
I solved this problem using 2 Freebase API calls.
1) An MQL query that gets a list of all the tourist attractions for a particular MID. These results are not ranked in any useful way. I am also returning the result number to make processing a little easier later
https://www.googleapis.com/freebase/v1/mqlread?query={"mid":"/m/04jpl","/travel/travel_destination/tourist_attractions":[{"mid":null}],"resultnumber:/travel/travel_destination/tourist_attractions":[{"return":"count"}]}
The list of returned MIDs are then used to create a new query (using a for loop). You must enter all MIDs returned from the above query, so that they can all be ranked together.
2) https://www.googleapis.com/freebase/v1/search?limit=10&filter=(any%20mid:/m/0gsxw%20mid:/m/01d_0p%20mid:/m/07gyc)&scoring=entity
It's best to choose a return format that just returns MIDs, to ensure that loading times aren't extensive.
You then have a ranked list of MIDs! You'll need one final query to return whatever details you desire.
I hope this has proved helpful.

Automatic SPARQL Query Generation for DBpedia

I am working on semantic web project where user will input text query like "Name the presidents of US who died under an age of 60 ? " and I have to generate automatic sparql query based on user's inputed text and this will be fired on http://dbpedia.org/snorql using DBpedia endpoint. I am confused how to select subject, predicate and object as we don't know all properties of specific resource.
Check out GATE (general architecture for text engineering).
I suppose you could analyze the natural query, and with Annie and JAPE, you might have a good start to transform your query into sparql.
Hope this helps