Hi!

Thanks for your detailed reply and suggestions.

But look at this query, which proves that there are indeed authors starting 
with 'B' at this endpoint:

SELECT DISTINCT * WHERE {
?a a foaf:Agent .
?a foaf:name ?n .
FILTER (?n = "Bertram Poettering")
}
LIMIT 10

I dont know, why the REGEX queries do not return this result.

for my example above (and according to your suggestion) the following query 
should also have the same result as above, but it hasn't:

SELECT DISTINCT * WHERE {
?a a foaf:Agent .
?a foaf:name ?n .
FILTER  regex(?n, "bertram","i")
}
limit 10

to me it seems as if the REGEX and String-functions only operate on a subset of 
the endpoint, i.e. on authors starting with an "A". Why it is like that, i 
don't know.

Best,
Peter

Von: Saud Al-Jaloud [mailto:saud.aljal...@gmail.com]
Gesendet: Freitag, 04. April 2014 13:04
An: Wetz Peter
Cc: public-lod@w3.org
Betreff: Re: DBLP Sparql Endpoint


Hi,

It's alway worth trying the query without the filter just to make sure of what 
to expect from regex.

Or, negate the first regex like:

SELECT DISTINCT * WHERE {

?a a foaf:Agent .

?a foaf:name ?n .

FILTER  regex(?n, '^[^a]', 'i')

}

You will see that names that don't start with an 'a' are like these:

"(Max) Zong-Ming Cheng"
"Á. B. Nagy"

This means that there are no names start with 'b'. That's why you got no 
results.


If you are just searching for names, why not just write like this:

SELECT DISTINCT * WHERE {

?a a foaf:Agent .

?a foaf:name ?n .

FILTER  regex(?n, 'b', 'i')

}

This above query will match any 'b' character at any position. Or write more 
specific regex to match a position.

Also, as suggested, other functions from SPARQL 1.1 like : STRSTARTS or 
CONTAINS would be, in principles, more efficient, but this would depend if the 
sparql engine is compatible with 1.1.
I might be wrong but it seems not working on this endpoint so far.

Cheers,

Saud.

Reply via email to