Re: query RDF dataset

Thank you very much for your help, it works :-)


On Sat, May 30, 2009 at 21:51, Lee Feigenbaum <lee@thefigtrees.net> wrote:

> Jitao Yang wrote:
>
>> Dear all,
>>
>> if there is a RDF like:
>>
>> <?xml version="1.0" encoding="utf-8"?>
>> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>>         xmlns:dc="http://purl.org/dc/elements/1.1/">
>>    <rdf:Description rdf:about="http://example.org/BookJava">
>>        <dc:fullname>Book Java</dc:fullname>
>>        <dc:author>
>>            <rdf:Description rdf:about="
>> http://example.org/BookJava/authorA">
>>                 <dc:fullname>Bob Smith</dc:fullname>
>>                 <dc:country>Italy</dc:country>
>>            </rdf:Description>
>>        </dc:author>              <dc:author>
>>            <rdf:Description rdf:about="
>> http://example.org/BookJava/authorB">
>>                 <dc:fullname>Tom Bush</dc:fullname>
>>                 <dc:country>Italy</dc:country>
>>            </rdf:Description>
>>        </dc:author>
>>    </rdf:Description>
>>
>>    <rdf:Description rdf:about="http://example.org/BookCpp">
>>        <dc:fullname>Book Cpp</dc:fullname>
>>        <dc:author>
>>            <rdf:Description rdf:about="http://example.org/BookCpp/author1
>> ">
>>                 <dc:fullname>Alice Bird</dc:fullname>
>>                 <dc:country>Italy</dc:country>
>>            </rdf:Description>
>>        </dc:author>          <dc:author>
>>            <rdf:Description rdf:about="http://example.org/BookCpp/author2
>> ">
>>                 <dc:fullname>Mike Luck</dc:fullname>
>>                 <dc:country>France</dc:country>
>>            </rdf:Description>
>>        </dc:author>
>>    </rdf:Description>
>> </rdf:RDF>
>>
>>
>> and I query the RDF by:
>>
>> PREFIX dc:<http://purl.org/dc/elements/1.1/>
>> SELECT DISTINCT ?bookName
>> WHERE {
>>                  ?bookName dc:author ?author .
>>                  {?author dc:country ?country . FILTER(?country =
>> "Italy")}
>>              };
>>
>> the query results are:
>>
>> ---------------------------------
>> | bookName                      |
>> =================================
>> | <http://example.org/BookCpp>  |
>> | <http://example.org/BookJava> |
>> ---------------------------------
>>
>> can anybody tell me how to query out the "book whose authors' country are
>> all Italy "?
>> which means the query results should be:
>>
>> ---------------------------------
>> | bookName                      |
>> =================================
>> | <http://example.org/BookJava> |
>> ---------------------------------
>>
>
> Jitao,
>
> It's not pretty, but you should be able to do it with something like:
>
> PREFIX dc:<http://purl.org/dc/elements/1.1/>
> SELECT DISTINCT ?bookName
> WHERE {
>  # first, make sure there's an author from italy
>  ?bookName dc:author ?author .
>  ?author dc:country ?country . FILTER(?country = "Italy") .
>  # next, "try" to find another author not from italy
>  OPTIONAL {
>    ?bookName dc:author ?author2 .
>    ?author2 dc:country ?country2 .
>    FILTER(?country2 != "Italy")
>  }
>  # finally, we only want this book if we didn't find any non-Italy
>  # authors
>  FILTER(!bound(?country2))
> }
>
> (Warning, untested query.)
>
> hope this helps,
> Lee
>
>
>
>> Thank you very much for your help!
>>
>> Best wishes,
>> Jitao
>>
>
>

Received on Saturday, 30 May 2009 20:22:54 UTC