Project:SPARQL/examples: Difference between revisions

No edit summary
Line 1,234: Line 1,234:


==Dates==
==Dates==
===All the Dates for Women FSAs===
<sparql tryit="1">
# union query to get [hopefully] every date associated with women FSAs including main dates and qualifier dates and date precision
PREFIX bnwd: <https://beyond-notability.wikibase.cloud/entity/>
PREFIX bnwds: <https://beyond-notability.wikibase.cloud/entity/statement/>
PREFIX bnwdv: <https://beyond-notability.wikibase.cloud/value/>
PREFIX bnwdt: <https://beyond-notability.wikibase.cloud/prop/direct/>
PREFIX bnp: <https://beyond-notability.wikibase.cloud/prop/>
PREFIX bnps: <https://beyond-notability.wikibase.cloud/prop/statement/>
PREFIX bnpq: <https://beyond-notability.wikibase.cloud/prop/qualifier/>
PREFIX bnpsv: <https://beyond-notability.wikibase.cloud/prop/statement/value/>
PREFIX bnpqv: <https://beyond-notability.wikibase.cloud/prop/qualifier/value/>
SELECT distinct ?person ?personLabel ?date_prop_label ?date_value ?date_precision ?qual ?qualLabel  ?date_prop_type
#?s  #statement url [for grouping]
#?date_prop  #property url/id
WHERE {
{  # main dates
 
  ?person bnwdt:P3 bnwd:Q3 . #select women
  ?person bnwdt:P75 bnwd:Q8. # find only BN subjects having a FSA
 
  # get stuff about ?person 
  ?person ?p ?s . 
 
    # get stuff about ?p .
      ?date_prop wikibase:claim ?p;   
        wikibase:statementProperty ?ps ; 
        wikibase:statementValue ?psv .   
      ?date_prop wikibase:propertyType ?date_prop_type .
      ?date_prop rdfs:label ?date_prop_label. filter(lang(?date_prop_label)="en-gb") .
 
  # get dates detail via ?s and psv
  # TODO: I think this gets edtf dates in simplified std wiki date format. could handle them separately to keep the extra info.
  # https://github.com/ProfessionalWiki/WikibaseEdtf
 
      ?s ?psv ?wdv .
        ?wdv wikibase:timeValue ?date_value ;
          wikibase:timePrecision ?date_precision .
  } # /main dates
 
  UNION
 
  { # qualifier dates
   
    ?person bnwdt:P3 bnwd:Q3 . # women
    ?person bnwdt:P75 bnwd:Q8. # only BN subjects having a FSA
 
    # get stuff about ?person 
    ?person ?p ?s . 
 
      # get stuff about ?p .
      ?prop wikibase:claim ?p;     
        #wikibase:propertyType ?prop_type ;
        wikibase:statementProperty ?ps.   
      ?prop rdfs:label ?prop_label. filter(lang(?prop_label)="en-gb") .
      # get stuff about ?s.
      ?s ?ps ?qual.
 
        # get stuff about qual if you want
        # optional { 
        # what sort of thing is qual
        #  ?qual bnwdt:P12 ?inst .  # instance of can be multiple so could get some dups
        #} # /qual optional
 
      # get qualifier dates  [are there any Edtf in qualifier dates?] 
      ?s ?pq ?pqs . 
     
      # this needs to be limited to dates... I think
      FILTER(DATATYPE(?pqs) = xsd:dateTime).
 
        # get stuff about pq
        ?qual_prop wikibase:qualifier ?pq;     
            wikibase:propertyType ?date_prop_type.
        ?qual_prop rdfs:label ?date_prop_label . filter(lang(?date_prop_label)="en-gb") . # what sort of date is it.
 
      # get dates detail. TODO: how to get the /entity/ url for date_prop?
      ?s ?date_prop ?pqv .
        ?pqv wikibase:timeValue ?date_value.
        ?pqv wikibase:timePrecision ?date_precision.
   
  }  # /qual dates
 
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en-gb". }
 
} # /where
ORDER BY ?person ?date_value
</sparql>


===Fetch any of multiple kinds of EDTF date for a woman===
===Fetch any of multiple kinds of EDTF date for a woman===
Line 1,308: Line 1,405:


</sparql>
</sparql>


==Admin==
==Admin==
579

edits