Que mas, ya respondió Sergio y esta feísimo como ha hecho Sebastian. Ahora si 
estoy perdido a nivel de base de datos esta cagado.


> El 3/6/2015, a las 3:40, Sergio Fernández <[email protected]> escribió:
> 
> Hi Francisco,
> 
> KiWi extensions are registered using Java ServiceLoader [1]. I'd recommend
> you to check the original email where Sebastian reported the new feature
> [2].
> 
> Hope that helps.
> 
> Cheers,
> 
> [1] https://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html 
> <https://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html>
> [2] http://markmail.org/message/dnshapfwr37nyfc5 
> <http://markmail.org/message/dnshapfwr37nyfc5>
> 
> 
> 
> On Mon, Jun 1, 2015 at 8:26 AM, FRANCISCO XAVIER SUMBA TORAL <
> [email protected] <mailto:[email protected]>> wrote:
> 
>> I am trying to register a function  ( SfIntersectsFunction) , such as
>> fulltextquery function, using nativefunction  interface , but it no
>> register.
>> 
>> 
>> IN SfIntersectsFunction.java
>> 
>> public class SfIntersectsFunction implements NativeFunction {
>> 
>>    // auto-register for SPARQL environment
>>    static {
>>        if(!FunctionRegistry.getInstance().has(FN_GEOSPARQL
>> .SF_INTERSECTS.toString())) {
>>            FunctionRegistry.getInstance().add(new SfIntersectsFunction());
>>        }
>>    }
>> 
>>    @Override
>>    public Value evaluate(ValueFactory valueFactory, Value... args) throws
>> ValueExprEvaluationException {
>>        throw new UnsupportedOperationException("cannot evaluate
>> in-memory, needs to be supported by the database");
>>    }
>> 
>>    @Override
>>    public String getURI() {
>>        return FN_GEOSPARQL .SF_INTERSECTS.toString();
>>    }
>> 
>> 
>>    /**
>>     * Return true if this function has available native support for the
>> given dialect
>>     *
>>     * @param dialect
>>     * @return
>>     */
>>    @Override
>>    public boolean isSupported(KiWiDialect dialect) {
>>        return dialect instanceof PostgreSQLDialect;
>>    }
>> 
>>    /**
>>     * Return a string representing how this function is translated into
>> SQL in the given dialect
>>     *
>>     * @param dialect
>>     * @param args
>>     * @return
>>     */
>>    @Override
>>    public String getNative(KiWiDialect dialect, String... args) {
>>        if(dialect instanceof PostgreSQLDialect) {
>>            if(args.length == 2) {
>>                return String.format("(to_tsvector('simple' ::
>> regconfig,%1$s) @@ plainto_tsquery('simple' :: regconfig,%2$s))", args[0],
>> args[1]);
>>            } else if(args.length == 3) {
>>                return String.format("(to_tsvector(kiwi_ft_lang(%3$s) ::
>> regconfig, %1$s) @@ plainto_tsquery(kiwi_ft_lang(%3$s) :: regconfig,
>> %2$s))", args[0], args[1], args[2]);
>>            }
>> 
>>        }
>>        throw new UnsupportedOperationException("fulltext search not
>> supported by dialect "+dialect);
>>    }
>> 
>>    /**
>>     * Get the return type of the function. This is needed for SQL type
>> casting inside KiWi.
>>     *
>>     * @return
>>     */
>>    @Override
>>    public ValueType getReturnType() {
>>        return ValueType.BOOL;
>>    }
>> 
>>    /**
>>     * Get the argument type of the function for the arg'th argument
>> (starting to count at 0).
>>     * This is needed for SQL type casting inside KiWi.
>>     *
>>     * @param arg
>>     * @return
>>     */
>>    @Override
>>    public ValueType getArgumentType(int arg) {
>>        return ValueType.STRING;
>>    }
>> 
>>    /**
>>     * Return the minimum number of arguments this function requires.
>>     *
>>     * @return
>>     */
>>    @Override
>>    public int getMinArgs() {
>>        return 2;
>>    }
>> 
>>    /**
>>     * Return the maximum number of arguments this function can take
>>     *
>>     * @return
>>     */
>>    @Override
>>    public int getMaxArgs() {
>>        return 3;
>>    }
>> }
>> 
>> 
>> 
>> 
>> 
>> 
>> IN FN_GEOSPARQL.java
>> 
>> 
>> public class FN_GEOSPARQL {
>> 
>>    public static final String NAMESPACE = "
>> http://www.opengis.net/def/function/geosparql/ <
>> http://www.opengis.net/def/function/geosparql/ 
>> <http://www.opengis.net/def/function/geosparql/>>";
>> 
>> 
>>    public static final String PREFIX = "geof";
>> 
>> 
>>    public static final Namespace NS = new NamespaceImpl(PREFIX,
>> NAMESPACE);
>> 
>>    //BOOLEAN FUNCTIONS
>>    public static final URI SF_INTERSECTS;
>> 
>> 
>>    static {
>>        ValueFactory f = new ValueFactoryImpl();
>> 
>>        SF_INTERSECTS = f.createURI(NAMESPACE,"sfIntersects");
>> 
>>    }
>> 
>> 
>> 
>> do I need some aditional step for registering the function?
>> 
>> My first intention is to register the function to avoid the error
>> 
>> org.openrdf.query.QueryEvaluationException: Unknown function '
>> http://www.opengis <http://www.opengis/> <http://www.opengis/ 
>> <http://www.opengis/>>
>> .net/def/function/geosparql/sfIntersects'
>> 
>> 
>> with this query
>> 
>> PREFIX geof: <http://www.opengis.net/def/function/geosparql/ 
>> <http://www.opengis.net/def/function/geosparql/> <
>> http://www.opengis.net/def/function/geosparql/ 
>> <http://www.opengis.net/def/function/geosparql/>>>
>> SELECT ?subject ?property WHERE {
>>  ?subject a ?object.
>>  ?subject ?property ?object.
>>   FILTER( geof:sfIntersects("valor1", "valor2") )
>>  }
>> 
>> is right what I am trying to do?
>> 
>> 
>> 
>> Thanks
> 
> 
> 
> 
> -- 
> Sergio Fernández
> Partner Technology Manager
> Redlink GmbH
> m: +43 6602747925
> e: [email protected] <mailto:[email protected]>
> w: http://redlink.co <http://redlink.co/>

Reply via email to