Thanks for your help, James. I'm now attempting to use a SPARQL query, and am having trouble returning the property labels. Here's the query I'm using:
PREFIX entity: <http://www.wikidata.org/entity/> PREFIX p: <http://www.wikidata.org/prop/direct/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?q ?q_label ?p ?p_label WHERE { entity:Q170790 ?p ?q . ?q rdfs:label ?q_label FILTER (LANG(?q_label) = "en") . OPTIONAL {?p rdfs:label ?p_label filter (lang(?p_label) = "en") .} } LIMIT 100 It is returning the following: { "head" : { "vars" : [ "q", "q_label", "p", "p_label" ] }, "results" : { "bindings" : [ { "p" : { "type" : "uri", "value" : "http://www.wikidata.org/prop/direct/P279" }, "q" : { "type" : "uri", "value" : "http://www.wikidata.org/entity/Q901" }, "q_label" : { "xml:lang" : "en", "type" : "literal", "value" : "scientist" } }, { "p" : { "type" : "uri", "value" : "http://www.wikidata.org/prop/direct/P425" }, "q" : { "type" : "uri", "value" : "http://www.wikidata.org/entity/Q395" }, "q_label" : { "xml:lang" : "en", "type" : "literal", "value" : "mathematics" } }, { "p" : { "type" : "uri", "value" : "http://www.wikidata.org/prop/direct/P910" }, "q" : { "type" : "uri", "value" : "http://www.wikidata.org/entity/Q7217485" }, "q_label" : { "xml:lang" : "en", "type" : "literal", "value" : "Category:Mathematicians" } }, { "p" : { "type" : "uri", "value" : "http://www.wikidata.org/prop/direct/P31" }, "q" : { "type" : "uri", "value" : "http://www.wikidata.org/entity/Q28640" }, "q_label" : { "xml:lang" : "en", "type" : "literal", "value" : "profession" } } ] } } My hope was to return property labels, but I obviously am missing something. I know that this isn't a SPARQL mailing list, but perhaps I'm overlooking something that could easily pointed out. Thanks, James Weaver On Sun, Nov 22, 2015, at 12:22 PM, James Heald wrote: > You could use the SPARQL API to extract any or all of the statements on > an item in one go, plus the labels in any language you wanted, depending > on what you put in the query. > > The JSON won't be formatted exactly as below -- you'd get back a > structure corresponding to a row for each statement, each row containing > the various fields you've asked for -- but the information would be > there. > > One thing to watch out for in general if you're looking up property > labels is that you might need to turn off the normal query optimiser, > and instead hand-order the lines in your SPARQL query, because the > optimiser often finds that irresistably tempting as a place to start. > However, it may not be a problem if you're looking up the statements on > a specific item, because there should usually be fewer of those. > > But if you do want to get the information in one call, SPARQL may be as > good a way as any to do it. > > -- James. > > > On 22/11/2015 14:54, [email protected] wrote: > > I would like to create a REST service in my application that has > > request/response behavior shown in the following two scenarios: > > > > > > http://example/claims?id=Q170790&lang=en > > > > { > > “id”: “Q170790”, > > “label”: “mathematician”, > > “claims”: [ > > { > > “property”: { > > “id”: “P279”, > > “label”: “subclass of” > > }, > > “value”: [ > > { > > “id”: “Q816264”, > > “label”: “formal science” > > } > > ] > > }, > > { > > “property”: { > > “id”: “P425”, > > “label”: “field of this profession” > > }, > > “value”: [ > > { > > “id”: “Q395”, > > “label”: “mathematics” > > } > > ] > > } > > ] > > } > > > > > > http://example/claims?id=Q170790&lang=fr > > > > { > > “id”: “Q170790”, > > “label”: “math\u00e9maticien”, > > “claims”: [ > > { > > “property”: { > > “id”: “P279”, > > “label”: “sous-classe de” > > }, > > “value”: [ > > { > > “id”: “Q816264”, > > “label”: “science formelle” > > } > > ] > > }, > > { > > “property”: { > > “id”: “P425”, > > “label”: “domaine d'occupation” > > }, > > “value”: [ > > { > > “id”: “Q395”, > > “label”: “math\u00e9matiques” > > } > > ] > > } > > ] > > } > > > > > > I'm trying to identify the best Wikidata API queries to support this > > functionality, ideally only requiring one invocation. The closest one > > I've found is something like the following, but it seems that I'd have > > to make an additional query to get the label for each Q item returned: > > https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q170790&languages=fr > > > > Is there a way to somehow include the desired information in one query? > > > > Regards, > > James Weaver > > > > _______________________________________________ > > Wikidata mailing list > > [email protected] > > https://lists.wikimedia.org/mailman/listinfo/wikidata > > > > > _______________________________________________ > Wikidata mailing list > [email protected] > https://lists.wikimedia.org/mailman/listinfo/wikidata _______________________________________________ Wikidata mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/wikidata
