3 votes

Fonction logarithme dans la requête SPARQL

Je cherche à créer une requête SPARQL qui effectue la fonction logarithme sur les résultats retournés. J'ai implémenté le moteur SPARQL Jena dans mon programme Java, mais je n'ai pu trouver que ces fonctions disponibles : http://jena.sourceforge.net/ARQ/library-function.html

Est-ce que quelqu'un sait comment prendre le logarithme (de préférence le logarithme naturel) d'une variable de retour SPARQL ?

Exemple de requête qui fonctionne :

SELECT DISTINCT ((?Transactions_Num) AS ?BusinessValue) 
WHERE {{?BusinessProcess relation:Transactions_Num ?Transactions_Num ;} }

Exemple de requête que je veux faire fonctionner (mais qui ne fonctionne actuellement pas) :

SELECT DISTINCT (LOG(?Transactions_Num) AS ?BusinessValue) 
WHERE {{?BusinessProcess relation:Transactions_Num ?Transactions_Num ;} }

Merci beaucoup pour l'aide apportée!

2voto

user205512 Points 4848

Log n'est pas partie de la norme ou des ajouts d'ARQ, cependant il est très facile d'écrire le vôtre.

package app;

public class log extends FunctionBase1
{
    public log() { super() ; }

    public NodeValue exec(NodeValue v)
    {
        return Math.log(v.getDouble());
    }
}

La manière la plus simple de le enregistrer est comme ceci :

FunctionRegistry.get().put("http://example.org/function#log", log.class) ;

Vous pouvez ensuite l'utiliser comme ceci :

PREFIX myfun: 
SELECT DISTINCT (myfun:log(?Transactions_Num) AS ?BusinessValue)
{
   ...
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X