2016-04-20 15 views
-1

Diese Frage ist über eine how-to so ist es nicht über ** warum nicht arbeiten * so habe ich Ihnen nicht mit einem Minimum an Daten, aber wenn Sie brauchen Ich bin mehr als glücklich, das zu tun.SPARQL, wie man die Anmeldung auf Bestellung

Dies ist meine Abfrage

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 

diese

mein Ergebnis ist

enter image description here

Ich will nicht von ?avg aber ich möchte bestellen, indem Sie bestellen:

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

Irgendeine Idee pl erleichtern, wie man das macht.

Um ehrlich zu sein, ich wusste nicht einmal, wie die log in erster Linie zu tun, weil here sie nicht sagen, es irgendwelche Funktionen Logarithmus auf numerische Werte angewandt werden

+1

Wenn Ihr Endpunkt eine Log-Funktion unterstützt, können Sie fügen Sie einfach 'Auftrag von (avg -? Log (Anzahl))' . (Beachten Sie, dass sich die +1 nicht auf die Reihenfolge auswirkt, da es sich nur um eine Konstante handelt.) Wenn der Endpunkt dies nicht unterstützt, müssen Sie es irgendwie angleichen. –

+0

@JoshuaTaylor Ich benutze Fuseki, die Sounds unterstützt es noch nicht, nun versuche ich, die Elemente auf der Grundlage ihrer ** Wichtigkeit ** zu bestellen, der Durchschnitt hilft hier nicht (das ist der Durchschnitt der Bewertung), weil "bo: 1984" betrachtet, hat es eine Bewertung, die die höchstmögliche (1) ist, aber die 'bo: animalFarm' hat 4 Bewertungen mit einem Durchschnittswert von' 0,92'. Logischerweise sollte ich 'bo: animalFarm' nicht empfehlen 'bo: 1984' deshalb dachte ich, das 'log' könnte mir eine korrekte Reihenfolge geben. Kennen Sie bitte irgendeinen anderen Weg dies zu bestellen und anwendbar zu sein um auf SPARQL angewendet zu werden? –

+0

Sie können 'avg' mit' count' multiplizieren und dann absteigend sortieren? –

Antwort