Skip to content

SPARQL query examples

jindrichmynarz edited this page Dec 5, 2014 · 8 revisions

Exact CPV

PREFIX gr:      <http://purl.org/goodrelations/v1#>
PREFIX pc:      <http://purl.org/procurement/public-contracts#>
PREFIX skos:    <http://www.w3.org/2004/02/skos/core#>

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 ?cpvObject ?inScoreModifier 
            WHERE {
              GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
                VALUES (?objectProperty     ?inScoreModifier) {
                       (pc:mainObject       1)
                       (pc:additionalObject 0.1)    
                }
                <http://linked.opendata.cz/resource/vestnikverejnychzakazek.cz/public-contract/479352-7403012079352> ?objectProperty ?cpvObject .
              }
            }
          }
          GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
            VALUES (?objectProperty     ?outScoreModifier) {
                   (pc:mainObject       1)
                   (pc:additionalObject 0.1) 
            }
            ?contract pc:awardedTender [
                pc:supplier ?match
              ] ;
              ?objectProperty ?cpvObject .
          }
        }
        GROUP BY ?match ?inScoreModifier ?outScoreModifier
      }
    }
    GROUP BY ?match
    ORDER BY DESC(?score)
    LIMIT 100
    OFFSET 0
  }
  OPTIONAL {
    GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
      ?match gr:legalName ?_label .
    }
  }
}
GROUP BY ?match ?score

Bidirectional CPV expansion with 2 hops

PREFIX ex:      <http://example.com/>
PREFIX gr:      <http://purl.org/goodrelations/v1#>
PREFIX pc:      <http://purl.org/procurement/public-contracts#>
PREFIX skos:    <http://www.w3.org/2004/02/skos/core#>

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