-
Notifications
You must be signed in to change notification settings - Fork 0
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.
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
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