2016-04-20 2 views
-1

Этот вопрос касательно как-, так что это не о ** почему-не работает *, поэтому я не предоставил вам минимальные данные, но если вам нужно , я более чем счастлив сделать это.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 

это мой результат

enter image description here

Я не хочу, чтобы заказать по ?avg, но я хочу, чтобы упорядочить по:

?avg-(log(?count)+1)

Любая идея pl легкость, как это сделать.

Честно говоря, я даже не знаю, как сделать log в первую очередь, потому что here они не говорят, что есть какие-либо логарифм функции, которые должны применяться на числовых значениях

+1

Если конечная точка поддерживает функцию журнала, вы можете просто добавить 'заказ (ср -? LOG (кол-во))' , (Обратите внимание, что +1 не влияет на упорядочение, так как это просто константа.) Если конечная точка не поддерживает его, вам нужно как-то приблизиться к нему. –

+0

@JoshuaTaylor Я использую fuseki, который звучит еще не поддерживает, ну, я пытаюсь заказать предметы на основе их ** значения **, среднее здесь не помогает (это среднее значение рейтинга), потому что посмотрите на «bo: 1984», у него есть один рейтинг, который является максимально возможным (1), но «bo: animalFarm» имеет 4 рейтинга со средним значением «0.92», поэтому логически я должен рекомендовать «bo: animalFarm» not 'bo: 1984', поэтому я подумал, что« журнал »может дать мне правильный заказ. Знаете ли вы, пожалуйста, каким-либо другим способом заказать и применимы к SPARQL? –

+0

Вы можете умножить 'avg' на' count', а затем отсортировать по убыванию? –

ответ

Смежные вопросы