Patrick,

I don't think SPARQL can do that, but the iTQL (Mulgara-specific) walk
function should help in your case:

http://docs.mulgara.org/itqlcommands/select.html#o1532

For example, if you have a tree where the relations are expressed via
fedora-rels-ext:isMemberOf arcs from child to parent, and the tree is
structured like this:

demo:root
    demo:child1
        demo:grandchild1a
    demo:child2
        demo:grandchild2a
        demo:grandchild2b

...then the following query would provide the path from a known
descendent (grandchild2b) to the root:

select $child $parent from <#ri>
where walk (
    <info:fedora/demo:grandchild2b>
    <fedora-rels-ext:isMemberOf>
    $parent
  and
    $child
    <fedora-rels-ext:isMemberOf>
    $parent
)

...expressed via the following tuples:

"child","parent"
info:fedora/demo:child2,info:fedora/demo:root
info:fedora/demo:grandchild2b,info:fedora/demo:child2

Or, if you want to go from the top down (root and all descendents),
the following query:

select $parent $child from <#ri>
where walk (
    $child
    <fedora-rels-ext:isMemberOf>
    <info:fedora/demo:root>
  and
    $child
    <fedora-rels-ext:isMemberOf>
    $parent
)

...would expresss the structure of the entire tree as:

"parent","child"
info:fedora/demo:root,info:fedora/demo:child1
info:fedora/demo:root,info:fedora/demo:child2
info:fedora/demo:child1,info:fedora/demo:grandchild1a
info:fedora/demo:child2,info:fedora/demo:grandchild2a
info:fedora/demo:child2,info:fedora/demo:grandchild2b

I think the latter query is more like what you want, but may quickly
become expensive to run (memory and performance-wise), if the root has
a large number of descendents.

- Chris

On Thu, Dec 16, 2010 at 4:25 PM, Yott, Patrick <p.y...@neu.edu> wrote:
> (fearing the brash laughter this might produce)
>
> Is there a way to perform a RI query that will retrieve all objects within a
> hierarchy?
>
> Consider this case.
>
> We might have a collection object for the chemistry department, which is in
> turn referenced in the RELS-EXT datastreams for 4 collection objects
> (Research Papers, Research Data, Theses, and Stuff).  Each of these
> collection objects may (and will quite likely) be similarly referenced by
> additional, ‘deeper down the tree’  collection objects.
>
> I’d like to be able to generate a list of all the collection objects that
> form a tree based on the chemistry object.  I can do this relatively easily
> if I create a “shadow” graph in SQL, but I’m not confident that its possible
> with a  SPARQL query.
>
> As always, my thanks in advance!
> p
>
>
> Patrick M. Yott
> Digital Library Manager
> Northeastern University Libraries
> 360 Huntington Avenue, SL270
> Boston, MA 02120
> p 617.373.4194
> f 617.373.5409
> p.y...@neu.edu

------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d
_______________________________________________
Fedora-commons-users mailing list
Fedora-commons-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fedora-commons-users

Reply via email to