Skip to content

SPARQL query examples

jindrichmynarz edited this page Dec 5, 2014 · 8 revisions

Bidirectional CPV expansion with 2 hops

PREFIX adms:    <http://www.w3.org/ns/adms#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX ex:      <http://example.com/>
PREFIX gr:      <http://purl.org/goodrelations/v1#>
PREFIX pc:      <http://purl.org/procurement/public-contracts#>
PREFIX pccz:    <http://purl.org/procurement/public-contracts-czech#>
PREFIX rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rov:     <http://www.w3.org/ns/regorg#>
PREFIX schema:  <http://schema.org/>
PREFIX sd:      <http://www.w3.org/ns/sparql-service-description#>
PREFIX skos:    <http://www.w3.org/2004/02/skos/core#>
PREFIX xsd:     <http://www.w3.org/2001/XMLSchema#>

SELECT ?match (SAMPLE(?_label) AS ?label) ?score
WHERE {
  {
    SELECT ?match (SUM(?inScoreModifier * ?outScoreModifier * ?contractCount) AS ?score)
    WHERE {
      {
        SELECT ?match ?inScoreModifier ?outScoreModifier (COUNT(DISTINCT ?contract) AS ?contractCount)
        WHERE {
          {
            SELECT ?cpv ?inScoreModifier
            WHERE {
              {
                SELECT ?cpv (1 AS ?inScoreModifier)
                WHERE {
                  GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
                    <http://linked.opendata.cz/resource/vestnikverejnychzakazek.cz/public-contract/60042437-       6004243703001> pc:mainObject ?cpv .
                  }
                }
              } UNION {
                SELECT ?cpv (1 * ?idf AS ?inScoreModifier)
                WHERE {
                  GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
                    <http://linked.opendata.cz/resource/vestnikverejnychzakazek.cz/public-contract/60042437-       6004243703001> pc:additionalObject ?cpv .
                  }
                  GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25/explicit-cpv-idfs> {
                    ?cpv ex:idf ?idf .
                  }
                }
              } UNION {
                SELECT ?cpv (1 * ?idf AS ?inScoreModifier)
                WHERE {
                  GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
                    <http://linked.opendata.cz/resource/vestnikverejnychzakazek.cz/public-contract/60042437-6004243703001> pc:mainObject ?_cpv .
                  }
                  GRAPH <http://linked.opendata.cz/resource/dataset/cpv-2008> {
                    {
                      ?_cpv skos:narrowerTransitive{1,2} ?cpv .
                    } UNION {
                      ?_cpv skos:broaderTransitive{1,2} ?cpv .
                    }
                  }
                  GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25/inferred-cpv-idfs> {
                    ?cpv ex:idf ?idf .
                  }
                }
              }
            }
          }
          GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {

            VALUES (?objectProperty     ?outScoreModifier) {
                   (pc:mainObject       1)
                   (pc:additionalObject 1)
            }
            ?contract pc:awardedTender [
                pc:bidder ?match
              ] ;
              ?objectProperty ?cpv .
          }
}
        GROUP BY ?match ?inScoreModifier ?outScoreModifier
      }
    }
    GROUP BY ?match
    ORDER BY DESC(?score)
    LIMIT 100
    OFFSET 0
  }
  GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
    OPTIONAL {
      ?match gr:legalName ?_label .
    }
  }
}
GROUP BY ?match ?score

Clone this wiki locally