I believe that dc:identifier is your only option - unless you create your
own triple in RELS-EXT, with a literal object corresponding to the PID -
there is no other triple that is automatically created that as the PID as a
literal object.
I see that you are actually restricting your query on the PID being "demo*"
- ie on the namespace part of the PID.
What is your overall objective with this "PID=demo*" part of the query?
Are you trying to exclude "system" objects and only include "user" objects?
-----Original Message-----
From: Janna Wemekamp [mailto:[email protected]]
Sent: 15 April 2009 01:45
To: Steve Bayliss
Cc: [email protected]; 'Gramsbergen, Egbert'
Subject: Re: [Fedora-commons-users] Questions re iTQL queries involving PIDs
Yes, querying the DC identifier will work but I'd really prefer not to
build that assumption into my application.
One of the reasons I'm experimenting with FC's Resource Index Search API is
that iTQL has an 'order by' clause unlike the REST API's 'findObjects'
method. If the REST API provided an 'order by' clause, I probably wouldn't
need to use iTQL.
Thanks for your suggestion, though.
Janna
Steve Bayliss wrote:
I think using
and $object <dc:identifier> 'demo*' in <#ri-fullText>
in the full-text part of your where clause should work (ie the equivalent of
has-pid is to search for the dc:identifier). Obviously this depends on what
values you are actually putting in dc:identifier in the DC datastream; I'm
assuming from your earlier examples that you are just putting the PID in
this field.
NB you need to make sure you have turned on full-text indexing.
-----Original Message-----
From: Janna Wemekamp [mailto:[email protected]]
Sent: 14 April 2009 02:20
To: Steve Bayliss
Cc: [email protected]; 'Gramsbergen, Egbert'
Subject: Re: [Fedora-commons-users] Questions re iTQL queries involving PIDs
Hi all,
Thanks very much Steve; your comments did help!
I had mis-interpreted the Mulgara documentation on <mulgara:is> which states
that it requires a non-variable value as its object. I had assumed the
non-variable value had to be a literal.
(My apologies to Egbert who indicated that earlier.)
Still unresolved is the more general query I posed in the original posting:
select $object, $label, $identifier
from <#ri>
where $object <fedora-model:label> $label
and $object <dc:identifier> $identifier
and $object <has_pid> 'demo*' in <#ri-fullText>
How does one specify the <has_pid> predicate/property in this query?
I suspect it's not possible - anyone able to confirm that?
Cheers!
Janna
Steve Bayliss wrote:
You've got a mistake still in your query
> and $object <mulgara:is> 'info:fedora/demo:10'
You should be specifying your Fedora object identifier as a URI, not a
literal, ie
and $object <mulgara:is> <info:fedora/demo:10>
There's no such thing as "the '$object' concept" - $object is simply a
variable; you can substitue $object with $x (or $pid) and get the same
results.
NB for debugging, it's sometimes useful to show all relationships for a
particular object, so that you can see what triples actually exist whilst
debugging a query, for this you can use something like
select $s $p $o
from <#ri>
where
$s $p $o
and
$s <mulgara:is> <info:fedora/demo:10>
Hope that helps
Steve
-----Original Message-----
From: Janna Wemekamp [mailto:[email protected]]
Sent: 09 April 2009 04:31
To: Gramsbergen, Egbert
Cc: [email protected]
Subject: Re: [Fedora-commons-users] Questions re iTQL queries involving PIDs
Thanks for the responses.
However, the query
select $object $label $identifier $state
from <#ri>
where $object <fedora-model:label> $label
and $object <dc:identifier> $identifier
and $object <fedora-model:state> $state
and $object <mulgara:is> 'info:fedora/demo:10'
doesn't return any results either. (Yes, there is an object with pid
demo:10.)
I'm beginning to wonder whether '$object' and 'pid' are considered quite
different beasties by FedoraCommons even though they 'look' the same in a
query
result...
(And, I have read the documentation on the mulgara web-site several times.
It
doesn't define the '$object' concept.)
Cheers.
Janna Wemekamp
Gramsbergen, Egbert wrote:
Back to the original question: try with
$object <mulgara:is> <info:fedora/demo:10>
That should work.
Success,
Egbert Gramsbergen
-----Original Message-----
From: arne anka [mailto:[email protected]]
Sent: Wed 4/8/2009 12:37 PM
To: [email protected]
Subject: Re: [Fedora-commons-users] Questions re iTQL queries involving PIDs
fighting with itql since yesterday again ...
> (1) The query:
>
> select $object from <#ri> where $object <mulgara:is> 'demo'
>
> returns a single element:
>
> <result>
> <object>demo</object>
> </result>
>
> even though there is no object in the repository with this PID.
of course it does -- you defined that $object _is_ 'demo'.
so, that's what you get.
> I'd like to be able to issue queries like:
>
> select $object $label $identifier $state
> from <#ri>
> where $object <fedora-model:label> $label
> and $object <dc:identifier> $identifier
> and $object <fedora-model:state> $state
> and $object <mulgara:is> 'demo:10'
>
> This query returns no results even though the PID 'demo:10' exists.
> What am I doing wrong?
you never really got $object -- what you do is saying that $object has the
model $label.
but since $label is never assigned a value ...
> (2) I'd also like to perform wild-card searches on PIDs; for example
>
> select $object, $label, $identifier
> from <#ri>
> where $object <fedora-model:label> $label
> and $object <dc:identifier> $identifier
> and $object <has_pid> 'demo*' in <#ri-fullText>
>
> How does one specify the <has_pid> predicate/property in this query?
you might be able to taht with 'having'
> The following works quite happily but I'd not like to assume that the DC
> identifier always matched the PID.
>
> select $object $label $identifier
> from <#ri>
> where $object <fedora-model:label> $label
> and $object <fedora-model:ownerId> $ownerId
> and $object <dc:identifier> $identifier
> and $object <dc:identifier> 'demo*' in <#ri-fullText>
>
well, basically, $object should be your id -- what you are doing wrong is
getting $object at all.
imo it has to go like that:
select $object $label $identifier from <#ri> where $object
<fedora-model:hasModel> <info:fedora/my:model> and ...
or for your label (untested) something like:
select $object $label $identifier from <#ri> where $object
<fedora-model:label> 'a label name' and ...
see http://docs.mulgara.org/itqlcommands/select.html
----------------------------------------------------------------------------
--
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Fedora-commons-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
----------------------------------------------------------------------------
--
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Fedora-commons-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Fedora-commons-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fedora-commons-users