Hello Rob,

I have a string variable ss for string John kim, so when user enter name,
it is saved in ss. how can we then use  FILTER(REGEX(?name, “John|kim”, “i”)

Or, I just use two text boxes for first name and last name and then ?

FILTER(REGEX(?name, “firstname”, “i”) && REGEX(?name, “lastname”, “i”))


On Fri, Sep 1, 2017 at 6:12 PM, Rob Vesse <[email protected]> wrote:

> Really it depends on exactly what you want to do
>
> It is entirely possible to create a regular expression that looks for only
> a partial match, however you will have to implement logic in your
> application to convert the user provided search string into an appropriate
> regular expression for your use case.
>
> For example if you want any of the search words entered to be matched you
> might translate into the following:
>
>   FILTER(REGEX(?name, “John|kim”, “i”)
>
> Alternatively if you wanted all that search words to be matched you might
> do the following:
>
>   FILTER(REGEX(?name, “John”, “i”) && REGEX(?name, “kim”, “i”))
>
> However you have to do some work to decide how you want to translate the
> user search words into an appropriate regular expression.
>
> Rob
>
> On 01/09/2017 16:01, "Sidra shah" <[email protected]> wrote:
>
>     I am sorry Lorenz, but I do not understand
>
>     How to split the string by white space and then combine? I have no idea
>     about it, currently.
>
>     Could you please guide?
>
>     On Fri, Sep 1, 2017 at 5:30 PM, Lorenz Buehmann <
>     [email protected]> wrote:
>
>     > It should be clear that the REGEX "John kim" does not match the
> literal
>     > "John".
>     >
>     > Simply split the string by white space and combine this in your REGEX
>     >
>     >
>     > On 01.09.2017 15:31, Sidra shah wrote:
>     > > Hello Lorenz, thank you
>     > >
>     > > It matches now matches the name when some one enter opposite case
> like
>     > > john, John etc.
>     > >
>     > > But in my owl file, only first name is given i.e John and I want
> if some
>     > > one even type John kim, the query matches. The above query
> supposed to
>     > work
>     > > for it but it does not display the record when full name is typed.
>     > >
>     > > + "Filter regex(str(?name),'"+ss+"', 'i') . " // ss is java
> variable
>     > >
>     > > The properties in owl are like:
>     > >
>     > >  Publication   publishedBy   authors
>     > >  authors        authorname               someName  //not string
> literal,
>     > > plain
>     > >
>     > >
>     > >
>     > >
>     > >
>     > > On Fri, Sep 1, 2017 at 9:07 AM, Lorenz Buehmann <
>     > > [email protected]> wrote:
>     > >
>     > >> Jena version please.
>     > >>
>     > >> Show the other query please.
>     > >>
>     > >> Share some sample data please.
>     > >>
>     > >> Note, REGEX is case-sensitive, i.e.
>     > >>
>     > >> FILTER(regex(?name ,'john')) won't match the literal "John kim"
>     > >>
>     > >>
>     > >> As I don't know the data nor your query, I only know that the
> query
>     > >>
>     > >> SELECT  *
>     > >> WHERE
>     > >>   { ?x  mo:publishedBy  ?y ;
>     > >>         mo:authorname   ?name ;
>     > >>         rdfs:label      ?label
>     > >>     FILTER regex(str(?name), "john", "i")
>     > >>   }
>     > >>
>     > >> would match "John kim"
>     > >>
>     > >> On 31.08.2017 19:42, Sidra shah wrote:
>     > >>> Hello
>     > >>>
>     > >>> I used Filter query in Jena which will filter the query using a
> name in
>     > >>> text area. In my dataset, the name is John Kim but I want if a
> user
>     > enter
>     > >>> even John, it display the result. I use this query but it does
> not
>     > >> display.
>     > >>> select *  WHERE { ?x mo:publishedBy ?y.?x mo:authorname ?name. ?x
>     > >>> rdfs:label ?label .Filter regex(?name ,'John kim') . }
>     > >>>
>     > >>> the ?name is plain literal. The query works when I put the exact
> name
>     > in
>     > >>> the text area but not working when I enter first name or last
> name.
>     > >>>
>     > >>
>     >
>     >
>
>
>
>
>
>

Reply via email to