Skip to Main Content

Database Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Curly brace query with URI as an object

772653Jun 1 2010 — edited Jun 4 2010
Hello,

I'm having trouble running a query where I specify the object, whereas it seems to work fine if it's also queried.


I've inserted a few statements using the Sesame adapter.

The output of:
SELECT a.triple.GET_TRIPLE() AS triple FROM test_rdf_data a
is:
MDSYS.SDO_RDF_TRIPLE(<http://example.com/#me>,<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>,<http://xmlns.com/foaf/0.1/Person>)
MDSYS.SDO_RDF_TRIPLE(<http://example.com/#me>,<http://xmlns.com/foaf/0.1/givenName>,"John")
MDSYS.SDO_RDF_TRIPLE(<http://example.com/#me>,<http://xmlns.com/foaf/0.1/familyName>,"Smith")
When I run this query, I get the expected result:
SELECT  givenName, familyName, s, t
  FROM TABLE(SEM_MATCH(
    '{ ?s rdf:type ?t.  OPTIONAL { ?s foaf:givenName ?givenName }. OPTIONAL { ?s foaf:familyName ?familyName }. }',
    SEM_Models('test'),
    null, 
    SEM_ALIASES(SEM_ALIAS('foaf','http://xmlns.com/foaf/0.1/')),
    null));
In particular, t is
http://xmlns.com/foaf/0.1/Person
However, the following produces 0 rows:
SELECT  givenName, familyName, s
  FROM TABLE(SEM_MATCH(
    '{ ?s rdf:type foaf:Person. OPTIONAL { ?s foaf:givenName ?givenName }. OPTIONAL { ?s foaf:familyName ?familyName }. }',
    SEM_Models('test'),
    null, 
    SEM_ALIASES(SEM_ALIAS('foaf','http://xmlns.com/foaf/0.1/')),
    null));
I don't understand why foaf:Person, explicitly written here doesn't work. Did I miss something in the documentation? foaf:givenName and foaf:familyName seem to work just fine.
(I'm sure the triples were created using a URI, not a literal string, if it matters.)


------
(edit)

I've realised that the query seems to work fine with the parenthesis notation:
SELECT  givenName, familyName, s
  FROM TABLE(SEM_MATCH(
    '(?s rdf:type foaf:Person) (?s foaf:givenName ?givenName) (?s foaf:familyName ?familyName)',
    SEM_Models('test'),
    null, 
    SEM_ALIASES(SEM_ALIAS('foaf','http://xmlns.com/foaf/0.1/')),
    null));
Any idea what the correct syntax to say something like foaf:Person with the curly brackets ought to be?



Best wishes,

Bruno.

Edited by: harbulot on 03-Jun-2010 02:38

(I've edited the title and added the parenthesis example.)
This post has been answered by alwu-Oracle on Jun 4 2010
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 2 2010
Added on Jun 1 2010
2 comments
1,359 views