我有在電影中找到類似品味的查詢。這樣用戶在同一類型的平均排名之差的絕對值小於1:優化SPARQL查詢
SELECT ?p ?p1 ?genre
WHERE{
?p movies:hasRated ?rate.
?p1 foaf:knows ?p.
?rate movies:ratedMovie ?mov.
?rate movies:hasRating ?rating.
?mov movies:hasGenre ?genre.
?p1 movies:hasRated ?ratep1.
?ratep1 movies:ratedMovie ?movp1.
?ratep1 movies:hasRating ?ratingp1.
?movp1 movies:hasGenre ?genre.
FILTER (?p=movies:user1)
}
GROUP BY ?p ?p1 ?genre
HAVING (abs (AVG(?rating)-AVG(?ratingp1))<1.0)
我想問一下,是否可以優化呢?因爲它看起來那麼糟糕(
這裏是數據集,它將被使用的部分:
movies:Man_of_steel movies:hasGenre "action", "thriller" .
movies:Elysium movies:hasGenre "drama", "sci-fi" .
movies:Gravity movies:hasGenre "sci-fi", "drama" .
movies:Django_Unchained movies:hasGenre "thriller", "action" .
movies:user1 movies:hasGender "male" ;
movies:hasAge "30"^^xsd:float ;
movies:hasRated movies:Rating1, movies:Rating2 .
movies:Rating1 movies:ratedMovie movies:Gravity ;
movies:hasRating "4.0"^^xsd:float .
movies:Rating2 movies:ratedMovie movies:Django_Unchained ;
movies:hasRating "9.0"^^xsd:float .
movies:user2 movies:hasGender "female" ;
movies:hasAge "27"^^xsd:float ;
movies:hasRated movies:Rating3, movies:Rating4 ;
foaf:knows movies:user1 .
movies:Rating3 movies:ratedMovie movies:Elysium ;
movies:hasRating "3.0"^^xsd:float .
movies:Rating4 movies:ratedMovie movies:Gravity ;
movies:hasRating "5.0"^^xsd:float .
你是指「優化」它是什麼意思?它運行速度是否太慢?還是你想更好地格式化它? –
「看起來很糟糕」是優化查詢的一個奇怪原因,你擔心它看起來像什麼嗎?通常,優化查詢是爲了獲得最佳執行性能,但有時您可以重寫查詢以提高可讀性。那麼你在這之後會有什麼結果? –
我真的很擔心它是怎麼樣的。也許有更好的解決方案,而不是我的查詢。 – nlimits