Dear all, I'm finally getting around to try out Virtuoso. I'm sure many of you know it allready, but for those who don't, I'm now working for a consultancy in Norway called Computas, 100% on Semantic Web technologies. Previously, I was at Opera, and my interest in RDF goes back more than 10 years.
So, to the problem: We are developing a site where SPARQL is used as the backend query language. One of the features for end users is to search by a simple freetext string (google type searches). Say that we have the graph <http://example.org/resource/foobar> dct:title "Foobar" ; dct:subject <http://example.org/topic/dahut> . <http://example.org/topic/dahut> skos:prefLabel "Dahut" . Now, I'd like to DESCRIBE the <http://example.org/resource/foobar> resource, by freetext matching. The simplest case is straightforward DESCRIBE ?resource WHERE { ?resource dct:title ?free . ?free bif:contains "Foo*" . } The next case is more complex, since there is a single search field, we don't know which predicate that holds the term we are searching for, and so, we need to search all literals, e.g.: DESCRIBE ?resource WHERE { ?resource dct:title ?free ; dct:subject ?var . ?var skos:prefLabel ?free . ?free bif:contains "Da*" . } Note that I'm now searching for the "Da"-prefix, and I suppose that this would also return a description of <http://example.org/resource/foobar> ? Now to the real problem: How about if the end-user searches for "Foo* and Da*"? In this case, the string will not match any of the literals, but it will match the combination of the literals, and it is the latter the end user is interested in. Up to now, we've been running Jena, and the way we have solved this problem is to concatenate all literals, create a "sub:literals" property, and then freetext search this property. It works, but queries that returns a few hundred entries usually takes around 40 seconds. Has Virtuoso any solution to this problem? I think I would prefer a solution that made the SPARQL very simple, like DESCRIBE ?resource WHERE { ?resource bi:any-contains "Foo* and Da*" . } Not that the index not only needs to index the literals linked to the subject I'm interested in here, but also to literals linked to subjects that is an object of this resource... Therefore, it would be nice to have the possibility of defining a pattern for this index. Kind regards Kjetil Kjernsmo -- Senior Knowledge Engineer Direct: +47 6783 1136 | Mobile: +47 986 48 234 Email: kjetil.kjern...@computas.com Web: http://www.computas.com/ | SHARE YOUR KNOWLEDGE | Computas AS Vollsveien 9, PO Box 482, N-1327 Lysaker | Phone:+47 6783 1000 | Fax:+47 6783 1001