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. > > >>> > > >> > > > > > > > > > >
