Этот вопрос касательно как-, так что это не о ** почему-не работает *, поэтому я не предоставил вам минимальные данные, но если вам нужно , я более чем счастлив сделать это.SPARQL как сделать журнал на заказ
Это мой запрос
select ?item (AVG(?ratingValue) as ?avg) (COUNT(*) as ?count)
{
values ?specificUser {bo:ania}
?user a rs:User ; rs:hasRated [ rs:hasRatingDate ?ratingDate ; rs:aboutItem ?item ; a rs:Likes ; rs:ratesBy ?ratingValue ] .
FILTER (?ratingDate >= (now() - "P10000D"^^xsd:duration))
# FILTER (?user != ?specificUser)
}
group by ?item
это мой результат
Я не хочу, чтобы заказать по ?avg
, но я хочу, чтобы упорядочить по:
?avg-(log(?count)+1)
Любая идея pl легкость, как это сделать.
Честно говоря, я даже не знаю, как сделать log
в первую очередь, потому что here они не говорят, что есть какие-либо логарифм функции, которые должны применяться на числовых значениях
Если конечная точка поддерживает функцию журнала, вы можете просто добавить 'заказ (ср -? LOG (кол-во))' , (Обратите внимание, что +1 не влияет на упорядочение, так как это просто константа.) Если конечная точка не поддерживает его, вам нужно как-то приблизиться к нему. –
@JoshuaTaylor Я использую fuseki, который звучит еще не поддерживает, ну, я пытаюсь заказать предметы на основе их ** значения **, среднее здесь не помогает (это среднее значение рейтинга), потому что посмотрите на «bo: 1984», у него есть один рейтинг, который является максимально возможным (1), но «bo: animalFarm» имеет 4 рейтинга со средним значением «0.92», поэтому логически я должен рекомендовать «bo: animalFarm» not 'bo: 1984', поэтому я подумал, что« журнал »может дать мне правильный заказ. Знаете ли вы, пожалуйста, каким-либо другим способом заказать и применимы к SPARQL? –
Вы можете умножить 'avg' на' count', а затем отсортировать по убыванию? –