Project:SPARQL/examples: Difference between revisions

Jump to navigation Jump to search
Line 435: Line 435:
   }
   }
}
}
</sparql>
===Generate QuickStatements to create new parent taxon items for symbionts based on Wikidata mapping===
<sparql tryit="1">
PREFIX pp: <https://ppsdb.wikibase.cloud/entity/>
PREFIX ppt: <https://ppsdb.wikibase.cloud/prop/direct/>
SELECT DISTINCT ?qid ?Len ?P18 ?P2
WITH {
  SELECT DISTINCT ?symb ?symbLabel ?wditem
  WHERE {
    ?host ppt:P19 ?symb.
    FILTER NOT EXISTS { ?symb ppt:P29 ?parent. }
    ?symb ppt:P2 ?wditem.
    ?symb rdfs:label ?symbLabel.
  }
} AS %in
WHERE {
  INCLUDE %in
  SERVICE <https://query.wikidata.org/sparql> {
    ?wditem wdt:P171 ?wdparent.
    ?wdparent rdfs:label ?wdparentlabel.
    FILTER ( LANG(?wdparentlabel) = "en" )
  }
  # Check that a parent taxon item with the same wikidata mapping
  # does not already exist
  FILTER NOT EXISTS { ?qid ppt:P2 ?wdparent }
  BIND (CONCAT('"', STR(?wdparent), '"') as ?P2)
  BIND (STR("Q1488") AS ?P18) # instance of higher taxon
  BIND (?wdparentlabel as ?Len)
} ORDER BY ?Len
</sparql>
===Generate QuickStatements to link symbiont items to their parent taxa based on Wikidata mappings===
<sparql tryit="1">
PREFIX pp: <https://ppsdb.wikibase.cloud/entity/>
PREFIX ppt: <https://ppsdb.wikibase.cloud/prop/direct/>
SELECT DISTINCT ?qid ?P29
WITH {
  SELECT DISTINCT ?symb ?symbLabel ?wditem ?qid
  WHERE {
    ?host ppt:P19 ?symb.
    FILTER NOT EXISTS { ?symb ppt:P29 ?parent. }
    ?symb ppt:P2 ?wditem.
    ?symb rdfs:label ?symbLabel.
    BIND (ENCODE_FOR_URI(REPLACE(STR(?symb), ".*Q", "Q")) AS ?qid)
  }
} AS %in
WHERE {
  INCLUDE %in
  SERVICE <https://query.wikidata.org/sparql> {
    ?wditem wdt:P171 ?wdparent.
    ?wdparent rdfs:label ?wdparentlabel.
    FILTER ( LANG(?wdparentlabel) = "en" )
  }
  OPTIONAL {
    ?parent ppt:P2 ?wdparent.
    ?parent rdfs:label ?parentLabel.
    BIND (ENCODE_FOR_URI(REPLACE(STR(?parent), ".*Q", "Q")) AS ?P29)
  }
} ORDER BY ?Len
</sparql>
</sparql>


Navigation menu