Print

Print


Or even using "optional"?
Bye. sb

SELECT ?personLabel ?archivesAtLabel ?describedAt WHERE {
  ?person wdt:P106 wd:Q49757;
    wdt:P135 wd:Q213457;
    p:P485 ?archivesStatement.
    OPTIONAL { ?archivesStatement ps:P485 ?archivesAt;
     pq:P973 ?describedAt. }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
ORDER BY (?personLabel)


> On 9 Mar 2022, at 16:16, Karly Wildenhaus <[log in to unmask]> wrote:
> 
> Hi Eric,
> 
> This should work, although others with more SPARQL experience may have
> suggestions on how to simplify it:
> 
> SELECT ?personLabel ?archivesAtLabel ?describedAt WHERE {
>>  ?person wdt:P106 wd:Q49757;
>>    wdt:P135 wd:Q213457;
>>    p:P485 ?archivesStatement.
>>  ?archivesStatement ps:P485 ?archivesAt;
>>    pq:P973 ?describedAt.
>>  SERVICE wikibase:label { bd:serviceParam wikibase:language
>> "[AUTO_LANGUAGE],en". }
>> }
>> ORDER BY (?personLabel)
> 
> Try it! ↗ <https://w.wiki/4w2G>
> 
> My understanding is that you need to retrieve the entire statement for P485
> (?archivesStatement) using p: instead of wdt:, and *then* retrieve the
> value and the qualifier (using pq:).
> 
> If you want to retrieve even those poets without a P973 qualifier for P485,
> you can add an "optional" wrapper around the P973 line (link
> <https://w.wiki/4w2J>).
> 
> Hope this helps!
> Karly
> 
> On Wed, Mar 9, 2022 at 9:07 AM Eric Lease Morgan <[log in to unmask]> wrote:
> 
>> How can I write a WikiData SPARQL query to return the URLs of a special
>> collection?
>> 
>> I have the following query:
>> 
>>  SELECT ?personLabel ?archivesatLabel WHERE {
>>    ?person wdt:P106 wd:Q49757;
>>      wdt:P135 wd:Q213457;
>>      wdt:P485 ?archivesat.
>>    SERVICE wikibase:label { bd:serviceParam wikibase:language
>> "[AUTO_LANGUAGE],en". }
>>  }
>>  ORDER BY (?person)
>> 
>> The query finds people who are beatnik poets and have archival
>> collections. The query outputs a little table such as this:
>> 
>>  personLabel      archivesatLabel
>>  Ira Cohen        Beinecke Rare
>>  Tuli Kupferberg  Fales Library
>>  Michael McClure  University of Victoria
>>  Jack Kerouac     Harry Ransom Center
>>  Jack Kerouac     University of Victoria
>>  Jack Kerouac     Stuart A. Rose Manuscript
>>  John Wieners     University of Delaware
>> 
>> This is nice, but some of the artchivesat properties also point to URL's
>> where the archives are described in greater detail. See, for example, the
>> "record" for Ed Dorn:
>> 
>>  https://www.wikidata.org/wiki/Q5334756
>> 
>> I want these URL's returned in my query, and the result would look
>> something like this:
>> 
>>  personLabel      archivesatLabel            describedat
>>  Ira Cohen        Beinecke Rare              http://foobfhdhar.edu/
>>  Tuli Kupferberg  Fales Library              http://fafdsasdfobar.edu/
>>  Michael McClure  University of Victoria     http://foasdfar.edu/
>>  Jack Kerouac     Harry Ransom Center        http://fossbar.edu/
>>  Jack Kerouac     University of Victoria     http://foobasr.edu/
>>  Jack Kerouac     Stuart A. Rose Manuscript  http://foobar.edu/
>>  John Wieners     University of Delaware     http://fasdoobar.edu/
>> 
>> But the following does NOT work:
>> 
>>  SELECT ?personLabel ?archivesatLabel ?describedat WHERE {
>>    ?person wdt:P106 wd:Q49757;
>>      wdt:P135 wd:Q213457;
>>      wdt:P485 ?archivesat;
>>      wdt:P973 ?describedat.
>>    SERVICE wikibase:label { bd:serviceParam wikibase:language
>> "[AUTO_LANGUAGE],en". }
>>  }
>>  ORDER BY (?person)
>> 
>> 
>> What am I doing wrong? Do I need an additional prefix? How can I get the
>> URLs associated with describedat to be included in the output?
>> 
>> --
>> Eric Morgan
>> University of Notre Dame
>> 
>