very good Richard, thank you. I was working along these lines with the following

BIND (REPLACE(STR(?url),"[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+","$0") AS ?email)

where ?url contains the match but binds the entire string again to ?email

eg data:

url = 
http://www.imagesnippets.com/imgtag/rdf/apple97...@hotmail.com/1598550_10204479279247862_1280347905880818932_o

query

SELECT ?email
WHERE  {
?s ?p ?o
BIND (REPLACE(STR(?s),"[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+","$0") AS ?email)
}

On Tue, Apr 23, 2019 at 6:00 PM Richard Cyganiak <rich...@cyganiak.de> wrote:
>
> Hi Marco,
>
> > On 23 Apr 2019, at 15:53, Marco Neumann <marco.neum...@gmail.com> wrote:
> >
> > I think I'm familiar with functions on strings in SPARQL but as far as
> > I can see there is nothing similar to a grep like pattern matching and
> > extraction on strings for SPARQL. Or is there one?
>
> The replace function does pattern matching and allows extraction of matched 
> sub-patterns:
> https://www.w3.org/TR/sparql11-query/#func-replace 
> <https://www.w3.org/TR/sparql11-query/#func-replace>
> https://www.w3.org/TR/xpath-functions/#func-replace 
> <https://www.w3.org/TR/xpath-functions/#func-replace>
>
>     replace(input, pattern, replacement)
>
> The special “variables” $1, $2, $3, and so on can be used in the replacement 
> string. They refer to parts of the input that were matched by the first, 
> second, third, and so on pair of parentheses in the regex pattern. For 
> example:
>
>     replace("23 April 2019", "^([0-9][0-9])", "$1")
>
> would return "23" because that is the part of the input matched by the first 
> (and only) pair of parentheses.
>
> Also useful might be Jena’s own apf:strSplit property function:
> https://jena.apache.org/documentation/query/library-propfunc.html 
> <https://jena.apache.org/documentation/query/library-propfunc.html>
>
> It can split a literal into multiple literals based on a regular expression.
>
> Taken together, these two functions can do a wide range of pattern matching 
> and extraction tasks.
>
> Hope that helps,
> Richard



-- 


---
Marco Neumann
KONA

Reply via email to