[redland-dev] querying using bNodes (blank nodes)
    Chris Mungall 
    cjm at fruitfly.org
       
    Wed May 23 04:57:13 BST 2007
    
    
  
On May 22, 2007, at 7:19 PM, Richard Newman wrote:
> Chris,
>
>   You cannot reuse blank node identifiers between two queries; if  
> you want a persistent identifier that you can put into a query,  
> *use a URI*, because that's what they are for.
I don't want an identifier that persists across sessions, but I do  
want an identifier that is persistent between queries in the same  
session.
So consider my use case - I am querying OWL layered on RDF. First of  
all, if I'm consuming OWL documents it isn't up to me to use a URI  
rather than bNodes, it's up to the provider, and *nobody* provides  
URIs for anonymous class expressions in OWL.
It's not uncommon for OWL documents to have multiply nested class  
expressions - bnodes to arbitrary depth.
>   You can only reference blank nodes by description (at least in  
> SPARQL). If "by description" is too slow, don't use bnodes.
Note that I said it was using $node->blank_identifier in RDQL that  
was too slow. If I am willing to live with this penalty, should I  
continue to use this method? It worries me because it's undocumented  
behaviour.
If not my only other alternative is to query (?s ?p ?o) into a big  
hash and simply do the graph traversal and matching in perl
Cheers
Chris
>   HTH,
>
> -R
>
>> So it seems that if I want to use SPARQL I can't split my query in  
>> two - I would have to say
>>
>> 	WHERE { ?x1 rdfs:subClassOf [ rdf:type owl:Restriction ; .... ] }
>>
>> And avoid explicitly mentioning bnodes altogether. This isn't my  
>> preferred way of doing things - there are too many combinations of  
>> axioms and descriptions.
>
    
    
More information about the redland-dev
mailing list