W3C home > Mailing lists > Public > semantic-web@w3.org > August 2008

Re: SPARQL question: get distinct list of datatypes used for literals

From: Andreas Langegger <al@jku.at>
Date: Fri, 22 Aug 2008 13:07:57 +0200
To: Lee Feigenbaum <lee@thefigtrees.net>
Message-Id: <FB2CB12C-4B36-4B33-A56A-3AE1556C248F@jku.at>
Cc: Semantic Web <semantic-web@w3.org>, public-rdf-dawg-comments@w3.org

hi,

Peter said:
> It seems like something you should be able to do in basic SPARQL,  
> especially if you are only going to bind ?dt into a CONSTRUCT'ed new  
> graph, and not utilise it further in the WHERE portion


Could you give me an example how you would do this? The basis for  
constructed graphs is still the result of an ordinary select, where do  
I get the datatype from? I could fetch it afterwards when getting the  
results, but what I want is a distinct list of data types used, not  
all the values (because of performance, transferring as few results as  
possible).

Lee said:
> Offhand, I don't know of any SPARQL implementations that do this: at  
> the same time, I don't know of any that don't, other than my own :-D
> SELECT ?dt {
>  :s :p ?val .
>  ?dt a rdfs:Datatype .
>  FILTER (datatype(?val) = ?dt) .
> }


Andy, would this work with ARQ, if the model in the dataset uses a D- 
entailment capable reasoner? At least it would require me to have  
control over the endpoint, which I don't have in general.

Because in my scenario most of the end-points use D2R-server, which  
uses ARQ, I'll try with ARQ select expressions (thanks Lee for the  
link!) and fallback to ordinary (and more expensive) fetching-all- 
values-queries if an Exception occured. It's better than nothing.

Thanks,
Andy

On Aug 21, 2008, at 7:25 PM, Lee Feigenbaum wrote:

> Andreas Langegger wrote:
>
>> Hi there,
>> maybe sb can tell me if this is still possible: I'd like to fetch  
>> all datatype URIs used for object literals in a dataset. There is  
>> the dataset predicate which can be used in filter expressions to  
>> filter literals to a known datatype like xsd:string:  
>> FILTER(datatype(?val) = xsd:string).
>> But can I bind the value to a variable somehow? With a filter it  
>> can't work (consider FILTER(datatype(?val) = ?dt) where ?val is  
>> bound to literal values and ?dt should give me the type). I could  
>> use property functions, but I'd like to stay with SPARQL specs.  
>> Maybe there is a way to do it I just can't see...
>> thanks,
>> AndyL
>
> AndyL,
>
> There's no way to do this (select functions of values from a graph/ 
> dataset) in the SPARQL specification.
>
> As you said, various implementations provide extensions that will do  
> this. Please see:
>
> http://esw.w3.org/topic/SPARQL/Extensions/Selecting_Expressions
>
> Lee
>
>> Web of Data Practitioners Days / Oct 22-23 / Vienna
>> http://www.webofdata.info
>> ----------------------------------------------------------------------
>> Dipl.-Ing.(FH) Andreas Langegger
>> Institute for Applied Knowledge Processing
>> Johannes Kepler University Linz
>> A-4040 Linz, Altenberger Straße 69
>> http://www.langegger.at



Web of Data Practitioners Days / Oct 22-23 / Vienna
http://www.webofdata.info
----------------------------------------------------------------------
Dipl.-Ing.(FH) Andreas Langegger
Institute for Applied Knowledge Processing
Johannes Kepler University Linz
A-4040 Linz, Altenberger Straße 69
http://www.langegger.at
Received on Friday, 22 August 2008 11:10:45 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 21:45:24 GMT