strasak27
strasak27

Reputation: 1

SPARQL search query

I have some RDF data structured like this:

[ pref:ip_address  "127.0.0.1" ;
  pref:time        "1459630844.482" ;
  pref:url         "https://google.com" ;
  pref:user        "johndoe"
] .

I need query that will return all results matching given IP, time frame (between from time and end time), url (even partial match) and user (also even partial match).
What I have now is simple query to get results based on single value, like this:

PREFIX pref: <http://something> SELECT DISTINCT * WHERE { ?u pref:user USER_VALUE . ?u ?p ?o .  }

This returns all results with given user but only if given username is full match. Meaning it will return all results for johndoe if USER_VALUE is johndoe but not if it is john.
My knowledge of SPARQL is extremely limited and I appreciate any help. Thank you.

Upvotes: 0

Views: 42

Answers (1)

AndyS
AndyS

Reputation: 16630

To do anything more than exact match, you need to use a FILTER and use operations like CONTAINS or REGEX.

Example:

{ ?u pref:user ?user .
   ?u ?p ?o . 
  FILTER( CONTAINS(?user, "john") )
}

There are a number of FILTER functions that may be useful including REGEX. See the spec for details.

Upvotes: 1

Related Questions