Hey,

I'm working on a SPIN-based query builder. One of the last things I added 
is a possibility to specify a Variable or expression to be used in ORDER BY.
This is working fine, except that the supplied Variable might not be used 
in the WHERE pattern, which produces an invalid SPARQL query.

I want to fix this by checking if the supplied Variable is present in the 
WHERE pattern, and throw an exception if it's not. The method I'm using:

protected boolean isWhereVariable(Variable var)
{
    Iterator<Element> it = getWhere().getElements().iterator();

    while (it.hasNext())
    {
        Element element = it.next();

        RDFNode subject = 
element.getRequiredProperty(SP.subject).getObject();
        if (subject.canAs(Variable.class) && 
subject.as(Variable.class).getName().equals(var.getName()))
            return true;

        RDFNode predicate = 
element.getRequiredProperty(SP.predicate).getObject();
        if (predicate.canAs(Variable.class) && 
predicate.as(Variable.class).getName().equals(var.getName()))
            return true;

        RDFNode object = element.getRequiredProperty(SP.object).getObject();
        if (object.canAs(Variable.class) && 
object.as(Variable.class).getName().equals(var.getName()))
            return true;
    }

    return false;
}

The problem is that subject.canAs(Variable.class) returns false, even if 
stepping through the code I can see, that subject.as(Variable.class) is 
"?instance" for example (the variable I'm expecting).
Any ideas on why the canAs() check doesn't work, or how this could be 
implemented in a better way?

Thanks,

Martynas
graphity.org

-- 
-- You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include Enterprise Vocabulary 
Network (EVN), TopBraid Composer, TopBraid Live,
TopBraid Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/topbraid-users?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to