How to query on fields

Hi

How can I query on fields? For example “schema:addressLocality” = “Karlstad” or “schema:latitude” > “59.3772841638403”. Is it at all possible?

What I want to accomplish is to only get items from a certain region in Sweden.

This for example: https://data.visitsweden.com/store/search?type=solr&query=rdfType:http\%3A%2F%2Fschema.org%2FFoodEstablishment+OR+rdfType:http\%3A%2F%2Fschema.org%2FEvent+OR+rdfType:http\%3A%2F%2Fschema.org%2FPlace+OR+rdfType:http\%3A%2F%2Fschema.org%2FStore+OR+rdfType:http\%3A%2F%2Fschema.org%2FLodgingBusiness+OR+rdfType:http\%3A%2F%2Fschema.org%2FTrip&rdfFormat=application/ld+json&offset=1&limit=1

Gives me this result:
{ "offset": 1, "resource": {"children": [{ "metadata": { "@graph": [{ "schema:alternateName": [ { "@value": "Välkommen in för att småhandla, storhandla eller bara strosa runt.", "@language": "sv" }, { "@value": "Welcome in to shop small, wholesale or just stroll around.", "@language": "en" } ], "dcterms:spatial": {"@id": "http://data.visitsweden.com/region/varmland"}, "schema:openingHoursSpecification": [ { "schema:closes": "20:00", "schema:dayOfWeek": [ {"@id": "schema:Monday"}, {"@id": "schema:Tuesday"}, {"@id": "schema:Wednesday"}, {"@id": "schema:Thursday"}, {"@id": "schema:Friday"} ], "@type": "schema:OpeningHoursSpecification", "schema:opens": "10:00", "@id": "_:5cdf8c1a13014b42b9bb843b9e75f9073327" }, { "schema:closes": "18:00", "schema:dayOfWeek": [ {"@id": "schema:Saturday"}, {"@id": "schema:Sunday"} ], "@type": "schema:OpeningHoursSpecification", "schema:opens": "10:00", "@id": "_:5cdf8c1a13014b42b9bb843b9e75f9073328" } ], "@type": "schema:Store", "schema:description": [ { "@value": "Bergvik är en skön och hållbar mötesplats med 80 butiker, generösa öppettider och gratis parkering. Här hittar du inspirerande butiker, service, härliga caféer/restauranger och ett gym under ett och samma tak.", "@language": "sv" }, { "@value": "Bergvik is a pleasant and sustainable meeting place with 80 shops, generous opening hours and free parking. Here you will find inspiring shops, service, lovely cafes/restaurants and a gym under one roof.", "@language": "en" } ], "schema:image": {"@id": "store:9/resource/19"}, "schema:additionalType": {"@id": "schema:DepartmentStore"}, "schema:address": { "@type": "schema:PostalAddress", "schema:addressCountry": "sweden", "schema:addressLocality": "Karlstad", "schema:streetAddress": "Frykmans väg 1, 653 46 Karlstad", "@id": "_:5cdf8c1a13014b42b9bb843b9e75f9073329" }, "@id": "store:9/resource/20", "schema:name": { "@value": "Bergviks köpcenter", "@language": "sv" }, "dcterms:abstract": [ { "@value": "Att bygga och verka på ett sätt som minskar människans miljötryck på jorden är en självklarhet för oss. Därför är Bergvik ett miljöcertifierat handelsområde där varje detalj är planerad utifrån ett långsiktigt hållbarhetsperspektiv.", "@language": "sv" }, { "@value": "Building and operating in a way that reduces man's environmental pressure on the earth is a matter of course for us. Therefore, Bergvik is an environmentally certified trading area where every detail is planned based on a long-term sustainability perspective.", "@language": "en" } ], "schema:geo": { "schema:latitude": "59.3772841638403", "@type": "schema:GeoCoordinates", "@id": "_:5cdf8c1a13014b42b9bb843b9e75f9073326", "schema:longitude": "13.425880578429952" } }], "@id": "store:9/metadata/20", "@context": { "schema": "http://schema.org/", "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "dcterms": "http://purl.org/dc/terms/", "store": "https://data.visitsweden.com/store/" } }, "rights": [ "readresource", "readmetadata" ], "contextId": "9", "relations": {}, "entryId": "20", "info": { "@graph": [{ "es:relation": {"@id": "store:9/relations/20"}, "dcterms:creator": {"@id": "store:_principals/resource/29"}, "dcterms:created": { "@value": "2023-03-07T16:19:01.058+01:00", "@type": "http://www.w3.org/2001/XMLSchema#dateTime" }, "@id": "store:9/entry/20", "dcterms:modified": { "@value": "2023-05-11T23:02:08.563+02:00", "@type": "http://www.w3.org/2001/XMLSchema#dateTime" }, "dcterms:contributor": [ {"@id": "store:_principals/resource/_admin"}, {"@id": "store:_principals/resource/29"} ], "es:metadata": {"@id": "store:9/metadata/20"}, "es:resource": {"@id": "store:9/resource/20"} }], "@id": "store:9/entry/20", "@context": { "dcterms": "http://purl.org/dc/terms/", "store": "https://data.visitsweden.com/store/", "es": "http://entrystore.org/terms/" } } }]}, "limit": 1, "results": 4245, "facetFields": [] }

I would like to query on certain localities or certain coordinates.

Regards Hans

1 Like

Hi Hans,

There will be some documentation including examples for API queries, until then I’d like you to point you the generic documentation of the backend, in particular the indexed info in the search documentation: Search - ENTRYSTORE

You can query specific object values using metadata.predicate.literal., metadata.predicate.uri., etc - the exact use is documented in the knowledge base under the link above.

Best regards,
Hannes

Thank you for your answer Hannes.

Just want to make sure, is it this one you mean?

metadata.predicate.literal.<md5>, metadata.predicate.uri.<md5>: Used to carry out queries for exact predicate-object combinations. Due to restrictions in Solr it was necessary to shorten the predicate URI, which was done using an MD5 hash (hex) of the predicate URI truncated after 8 characters. Collisions are unlikely and in case of occurence non-fatal. The field value is the string value of the object. The field names are different for URI and literal objects due to different indexing strategies in Solr for the respective object type (literals are indexed using “text_ngram” and URIs are indexed using “string”).

I find it a bit hard to comprehend the documentation. But this is how I get it. If I want to query:
schema:addressLocality = “Karlskoga”

I should do like this:

metadata.predicate.literal.{The first 8 characters of the MD 5 hash for schema:addressLocality}:“Karlskoga”

Am I on the right track you think?

Regards Hans

This is what I have tested. I am only allowed to put 2 links in a post as a new user thats why the text below.

schema:addressLocality = 8e27046d1b88e211d5aa373f5ebe1bc4 = 8e27046d (truncated after 8 characters)
addressLocality = 4f9d966d133888fed57b098795165936 = 4f9d966d (truncated after 8 characters)

https://data.visitsweden.com/store/search?type=solr&query=metadata.predicate.literal.8e27046d:* = 0 results
?type=solr&query=metadata.predicate.literal.8e27046d:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal.8e27046d:*örebro* = 0 results
?type=solr&query=metadata.predicate.literal_s.8e27046d:* = 0 results
?type=solr&query=metadata.predicate.literal_s.8e27046d:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal_s.8e27046d:*örebro* = 0 results
?type=solr&query=metadata.predicate.literal_t.8e27046d:* = 0 results
?type=solr&query=metadata.predicate.literal_t.8e27046d:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal_t.8e27046d:*örebro* = 0 results

?type=solr&query=metadata.predicate.literal.8e27046d1b88e211d5aa373f5ebe1bc4:* = 0 results
?type=solr&query=metadata.predicate.literal.8e27046d1b88e211d5aa373f5ebe1bc4:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal.8e27046d1b88e211d5aa373f5ebe1bc4:*örebro* = 0 results
?type=solr&query=metadata.predicate.literal_s.8e27046d1b88e211d5aa373f5ebe1bc4:* = 0 results
?type=solr&query=metadata.predicate.literal_s.8e27046d1b88e211d5aa373f5ebe1bc4:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal_s.8e27046d1b88e211d5aa373f5ebe1bc4:*örebro* = 0 results
?type=solr&query=metadata.predicate.literal_t.8e27046d1b88e211d5aa373f5ebe1bc4:* = 0 results
?type=solr&query=metadata.predicate.literal_t.8e27046d1b88e211d5aa373f5ebe1bc4:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal_t.8e27046d1b88e211d5aa373f5ebe1bc4:*örebro* = 0 results

?type=solr&query=metadata.predicate.literal.4f9d966d:* = 0 results
?type=solr&query=metadata.predicate.literal.4f9d966d:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal.4f9d966d:*örebro* = 0 results
?type=solr&query=metadata.predicate.literal_s.4f9d966d:* = 0 results
?type=solr&query=metadata.predicate.literal_s.4f9d966d:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal_s.4f9d966d:*örebro* = 0 results
?type=solr&query=metadata.predicate.literal_t.4f9d966d:* = 0 results
?type=solr&query=metadata.predicate.literal_t.4f9d966d:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal_t.4f9d966d:*örebro* = 0 results

?type=solr&query=metadata.predicate.literal.4f9d966d133888fed57b098795165936:* = 0 results
?type=solr&query=metadata.predicate.literal.4f9d966d133888fed57b098795165936:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal.4f9d966d133888fed57b098795165936:*örebro* = 0 results
?type=solr&query=metadata.predicate.literal_s.4f9d966d133888fed57b098795165936:* = 0 results
?type=solr&query=metadata.predicate.literal_s.4f9d966d133888fed57b098795165936:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal_s.4f9d966d133888fed57b098795165936:*örebro* = 0 results
?type=solr&query=metadata.predicate.literal_t.4f9d966d133888fed57b098795165936:* = 0 results
?type=solr&query=metadata.predicate.literal_t.4f9d966d133888fed57b098795165936:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal_t.4f9d966d133888fed57b098795165936:*örebro* = 0 results

?type=solr&query=metadata.predicate.literal.addressLocality:* = 0 results
?type=solr&query=metadata.predicate.literal.addressLocality:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal.addressLocality:*örebro* = 0 results
?type=solr&query=metadata.predicate.literal_s.addressLocality:* = 0 results
?type=solr&query=metadata.predicate.literal_s.addressLocality:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal_s.addressLocality:*örebro* = 0 results
?type=solr&query=metadata.predicate.literal_t.addressLocality:* = 0 results
?type=solr&query=metadata.predicate.literal_t.addressLocality:*rebro* = 0 results
?type=solr&query=metadata.predicate.literal_t.addressLocality:*örebro* = 0 results

?type=solr&query=title:* = 13237 results
?type=solr&query=title:*rebro* = 52 results
?type=solr&query=title:*örebro* = 50 results

The hash needs to be calculated over the fully expanded URI, so for schema:addressLocality this means http://schema.org/addressLocality after expanding the namespace “schema”.

This query should work: https://data.visitsweden.com/store/search?type=solr&query=metadata.predicate.literal.ad967f07:örebro

1 Like

Thank you very much Hannes
Nice
/Hans

2 Likes

Hi again

I just want to share what I came up with.

I have asked my team-leader about a site/url where I can see how the data is used. He gave me this:

https://data.visitsweden.com/apps/portal/sv/#esc_reg=http%3A%2F%2Fdata.visitsweden.com%2Fregion%2Forebro

If I inspect that page I find this call: (I had to manipulate the link below to not get an error on publish: “An error occurred: Sorry you cannot post a link to that host.”)

https://data.visitsweden.com/store/search?type=solr&query=(rdfType:http%5C%3A%2F%2Fschema.org%2FLodgingBusiness+OR+rdfType:http%5C%3A%2F%2Fschema.org%2FPlace+OR+rdfType:http%5C%3A%2F%2Fschema.org%2FFoodEstablishment+OR+rdfType:http%5C%3A%2F%2Fschema.org%2FEvent+OR+rdfType:http%5C%3A%2F%2Fschema.org%2FStore+OR+rdfType:http%5C%3A%2F%2Fschema.org%2FTrip)+AND+public:true+AND+(metadata.predicate.uri.c6e46bff:http%5C%3A%2F%2Fdata.visitsweden.com%2Fregion%2Forebro)&limit=100&sort=modified+desc&facetFields=rdfType,metadata.predicate.uri.cf7d9d3e,metadata.predicate.uri.c6e46bff

The limit was originally 9 but I changed it to 100 in the link above.

The above link seem to give me what I want for “/region/orebro”.

https://data.visitsweden.com/store/search?type=solr&query=metadata.object.uri:http\://data.visitsweden.com/region/orebro&limit=100

seem to give me the same result.

/Hans

1 Like

Looks very nice @Hans! Great work!

1 Like