Sidra As I have said in the past on this list please do not forget you are using a programming language. You are free to implement your application however you see fit, this will involve you writing some code and making some design decisions. This list does not exist to write code for you. We will do our best to answer Jena specific questions and those related to specific technologies that Jena supports i.e. RDF, SPARQL etc but we are not a programming helpdesk.
String manipulation is a basic task and Java contains substantial built-in functionality for this which you can use to achieve what both I and Lorenz have described. If you are struggling to do this then you should direct your questions to a general programming forum e.g. StackOverflow Rob On 01/09/2017 16:22, "Sidra shah" <[email protected]> wrote: 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. > > >>> > > >> > > > > > > > > > >
