Simple Example

Below is a collection of simpler queries.

All examples use the following context details.

CONTEXT= {
    "ds": "https://vocab.sti2.at/ds/",
    "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
    "schema": "https://schema.org/",
    "sh": "http://www.w3.org/ns/shacl#",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "odta": "https://odta.io/voc/",
    "sq": "http://www.onlim.com/shapequery/",
    "@vocab": "http://www.onlim.com/shapequery/"
  }

Search by type and location with exact match

{	"@context": $CONTEXT
	"sq:query":[ 
		{
			"@type":"schema:LocalBusiness",
			"schema:address": {
				"schema:addressLocality": "Vienna"
			}
		}
	]
}

Search by type and location with contains in, ignore case match

{	"@context": $CONTEXT
	"sq:query":[ 
		{
			"@type":"schema:LocalBusiness",
			"schema:address": {
				"schema:addressLocality": {
        			"sq:value": "Vienna",
              "sq:op":"iContains"
				}
			}
		}
	]
}

Search for objects belonging to the POI DS with nearby


{	"@context": $CONTEXT
	"sq:query":[ 
		{
			"ds:compliesWith": {
        "sq:value":"https://semantify.it/ds/sloejGAwT",
        "sq:datatype":"iri"
      },		 
      "schema:geo": {
          "sq:nearby":{
            "sq:latitude":"$LAT",
            "sq:longitude":"$LONG",
            "sq:distance":"$DIST"
          }
        }	
    }
	]
}

Search by type and domain specification filter

Here is a search for objects belonging to the DZT POI domain specification, with an additional filter for a specific type.


{	"@context": $CONTEXT
	"sq:query":[ 
		{
			"ds:compliesWith": {
        "sq:value":"https://semantify.it/ds/sloejGAwT",
        "sq:datatype":"iri"
      },		 
     "@type":"schema:Museeum",
    }
	]
}

Search for objects belonging to one of several types and domain specification filter


{	"@context": $CONTEXT
	"sq:query":[ 
		{
			"ds:compliesWith": {
        "sq:value":"https://semantify.it/ds/sloejGAwT",
        "sq:datatype":"iri"
      },		 
     "@type": ["schema:Museeum", "schema:ParkingFacility"],
    }
	]
}

Search for objects given a text string in different properties

If you want to search for an object which contains a certain string in one more properties then you can define a query such as the following: Here we search for an object that contains the string Vienna in either the name or description of the object.


{	"@context": $CONTEXT
	"sq:query":[ 
		{
			"sq:or":[
 				{
 					"schema:name": {
 						"sq:value": "Vienna",
 						"sq:op":"iContains"
					}
    		},
				{
 					"schema:description": {
 						"sq:value": "Vienna",
 						"sq:op":"iContains"
					}
    		}
			]
		}
	]
}

Search for objects which are in a given radius to a defined lat /long pair

Another use case is to find objects in a certain radius/geo-proximity to a point. To do so, we can run the following shape query which searches for objects whose schema:geo property (with a schema:GeoCoordindate) has a certain straight line distance to a defined lat/long pair.


{	"@context": $CONTEXT
	"sq:query":[ 
		{
			"schema:geo": {
          "sq:nearby":{
            "sq:latitude":"LAT_VALUE",
            "sq:longitude":"LONG_VALUE",
            "sq:distance":"DIST_IN_KM"
          }
        }
		}
	]
}

Search for objects in or around a given city

In the following query, we define two search conditions that are joined by an OR statement. The city name to search for we set to "Jena". For the second condition, we define a nearby statement where we search in a radius of 10 kilometres around a given point. If a "thing" matches condition one, two or both, it will be in the result set of the query.

{	"@context": $CONTEXT
	"sq:query": [
        {
            "sq:or": [
                {
                    "schema:address": {
                        "schema:addressLocality": {
                            "sq:op": "iContains",
                            "sq:value": "Jena"
                        }
                    }
                },
                {
                    "schema:geo": {
                        "sq:nearby": {
                            "sq:latitude": "50.9225599",
                            "sq:longitude": "11.5447746",
                            "sq:distance": "10"
                        }
                    }
                }
            ]
        }
    ]

}

Example API call

🚧

V1 is deprecated, please use V2

Version 1 of this endpoitn is deprecated, please use V2. The difference in calling the API is minor (the /v1 needs to be replaced with /v2). The changes in the response concern the quantity and nesting-depth of the properties. While V1 was responding with all properties of an object, V2 will only respond with the @id, @type and ds:compliesWith property. The actual data lookup needs to happen in a second step over the endpoint to retrieve an entity by id: https://changelog-dzt-kg.readme.io/reference/getthingbyid.

curl --location 'https://proxy.opendatagermany.io/api/ts/v2/kg/things' \
--header 'Content-Type: application/ld+json' \
--header 'x-api-key: $API_KEY' \
--data-raw '{	"@context":{
    "ds": "https://vocab.sti2.at/ds/",
    "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
    "schema": "https://schema.org/",
    "sh": "http://www.w3.org/ns/shacl#",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "odta": "https://odta.io/voc/",
    "sq": "http://www.onlim.com/shapequery/",
    "@vocab": "http://www.onlim.com/shapequery/"
  },
	"sq:query":[ 
		{
			"@type":"schema:LocalBusiness",
			"schema:address": {
				"schema:addressLocality": "Vienna"
			}
		}
	]
}'

What’s Next