Skip to content

SPARQL query examples

Jindřich Mynarz edited this page Jan 12, 2015 · 8 revisions

This pages contains illustrative examples of the SPARQL queries used in matchmaking.

Exact CPV

The following query employs exact matching over CPV concepts using 0.1 as a weight (inhibition) for pc:additionalObject.

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(?qWeight * ?mWeight * ?contractCount) AS ?score) 
    WHERE {
      {
        SELECT ?match ?qWeight ?mWeight (COUNT(DISTINCT ?contract) AS ?contractCount)
        WHERE {
          {
            SELECT ?cpv ?qWeight 
            WHERE {
              GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
                VALUES (?objectProperty     ?qWeight) {
                       (pc:mainObject       1)
                       (pc:additionalObject 0.1)    
                }
                <http://linked.opendata.cz/resource/vestnikverejnychzakazek.cz/public-contract/479352-7403012079352> ?objectProperty ?cpv .
              }
            }
          }
          GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
            VALUES (?objectProperty     ?mWeight) {
                   (pc:mainObject       1)
                   (pc:additionalObject 0.1) 
            }
            ?contract pc:awardedTender/pc:bidder ?match ;
              ?objectProperty ?cpv .
          }
        }
        GROUP BY ?match ?qWeight ?mWeight
      }
    }
    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

2-hop expansion to broader CPV concepts

This query uses 2-hop expansion to broader CPV concepts. The concepts inferred in this way are weighted by concept specificity.

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(?qWeight * ?mWeight * ?contractCount) AS ?score)
    WHERE {
      {
        SELECT ?match ?qWeight ?mWeight (COUNT(DISTINCT ?contract) AS ?contractCount)
        WHERE {
          {
            SELECT ?cpv ?qWeight
            WHERE {
              {
                SELECT ?cpv (1 AS ?qWeight)
                WHERE {
                  GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
                    <http://linked.opendata.cz/resource/vestnikverejnychzakazek.cz/public-contract/50017676-5001767603001> pc:mainObject ?cpv .
                  }
                }
              } UNION {
                SELECT ?cpv (0.1 * ?cs AS ?qWeight)
                WHERE {
                  GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
                    <http://linked.opendata.cz/resource/vestnikverejnychzakazek.cz/public-contract/50017676-5001767603001> pc:additionalObject ?cpv .
                  }
                  GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25/explicit-cpv-specificities> {
                    ?cpv ex:conceptSpecificity ?cs .
                  }
                }
              } UNION {
                SELECT ?cpv (1 * ?cs AS ?qWeight)
                WHERE {
                  GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
                    <http://linked.opendata.cz/resource/vestnikverejnychzakazek.cz/public-contract/50017676-5001767603001> pc:mainObject ?_cpv .
                  }
                  GRAPH <http://linked.opendata.cz/resource/dataset/cpv-2008> {
                    ?_cpv skos:broaderTransitive{1,2} ?cpv .
                  }
                  GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25/inferred-cpv-specificities> {
                    ?cpv ex:conceptSpecificity ?cs .
                  }
                }
              }
            }
          }
          GRAPH <http://linked.opendata.cz/resource/dataset/vestnikverejnychzakazek.cz/2014-08-25> {
            VALUES (?objectProperty     ?mWeight) {
                   (pc:mainObject       1)
                   (pc:additionalObject 0.1)
            }
            ?contract pc:awardedTender/pc:bidder ?match ;
              ?objectProperty ?cpv .
          }
        }
        GROUP BY ?match ?qWeight ?mWeight
      }
    }
    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