This is my query:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rs: <http://www.welovethesemanticweb.com/rs#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
construct {
?subject0 rs:similarityValue ?similairty0.
?subject1 rs:similarityValue ?similairty1
}
WHERE {
{
?subject0 ?predicate0 ?object0.
rs:Impromptu_No._1 ?predicate0 ?object0.
?predicate0 rs:hasSimilarityValue ?similairty0Helper.
BIND(?similairty0Helper * (4/9) AS ?similairty0)
FILTER (?subject0 != rs:Impromptu_No)
}
union {
?subject1 ?predicate ?object.
?object ?predicate1 ?object1.
?predicate1 rs:hasSimilarityValue ?similairty1Helper.
rs:Impromptu_No._1 ?predicateHelper ?objectHelper.
?objectHelper ?predicate1 ?object1
BIND(?similairty1Helper * (1/9) AS ?similairty1)
FILTER (?subject1 != rs:Impromptu_No._1)
}
}
and the result is:
rs:5th_Symphony
rs:similarityValue
0.011111111111111112e0 .
rs:Polonaise_heroique
rs:similarityValue
0.011111111111111112e0 , 0.17777777777777778e0 , 0.26666666666666666e0 .
rs:Preludes
rs:similarityValue
0.011111111111111112e0 , 0.26666666666666666e0 , 0.17777777777777778e0 .
rs:Requiem_Sequentia
rs:similarityValue
0.011111111111111112e0 .
rs:Le_nozze_di_Figaro
rs:similarityValue
0.011111111111111112e0 .
rs:Symphony_No._29_in_A_major
rs:similarityValue
0.011111111111111112e0 .
rs:Piano_Concerto_No._24
rs:similarityValue
0.011111111111111112e0 .
rs:Impromptu_No._1
rs:similarityValue
0.26666666666666666e0 , 0.17777777777777778e0 .
rs:Sonata_Pathetique
rs:similarityValue
0.011111111111111112e0 .
rs:Dies_Irae
rs:similarityValue
0.011111111111111112e0 .
rs:Piano_Sonata_No._31
rs:similarityValue
0.011111111111111112e0 , 0.26666666666666666e0 .
rs:Violin_Concerto_No._5_in_A_major
rs:similarityValue
0.011111111111111112e0 .
As you see, for each instance, there are many values, I want to aggregate them and make the SUM of them for each instance. I would do that with SELECT, but with CONSTRUCT, I didn't know how to apply the aggregation.
After reading, i found that we can't use the aggregation directly from CONSTRUCT, but i'd need to use SELECT and CONSTRUCT together, it seems i have to use something named "named graph" but i didn't know how to do that even i tried.
your help is highly appreciated.
Many thanks, best regards,
Update 1
One of the ways I've tried is:
construct {
?subject0 rs:similarityValue ?similairty0.
?subject1 rs:similarityValue ?similairty1
}
WHERE {
GRAPH ?g {?subject0 rs:similarityValue ?similairty0}.
{
?subject0 ?predicate0 ?object0.
....
but i got empty results
similairtyshould besimilarity(switched 'airty' and 'arity').?s ?p ?o . ?p :hasSimilarityValue ?r, and while you certainly can have properties on your properties, I wonder if that's how your data is actually structured. That would be a little bit unusual.#introduces a comment in SPARQL.)