-
Notifications
You must be signed in to change notification settings - Fork 1
3.2 Search for resources
To search for resource we need to create a query to the symbIoTe Core. In our example we use https://symbiote-open.man.poznan.pl/coreInterface/query endpoint and provide parameters for querying. Requests need properly generated security headers. More on topic of secure access to symbIoTe component can be read on SymbIoTeSecurity project page https://github.com/symbiote-h2020/SymbIoTeSecurity.
All possible query parameters can be seen below:
Query parameters {
platform_id: String
platform_name: String
owner: String
name: String
id: String
description: String
location_name: String
location_lat: Double
location_long: Double
max_distance: Integer
observed_property: List<String>
resource_type: String
should_rank: Boolean
}
NOTE1
To query using geospatial properties, all 3 properties need to be set: location_lat
(latitude), location_long (longitude) and max_distance (distance from specified point in meters).
NOTE2
Text parameters allow substring searches using '*' character which can be placed at the
beginning and/or end of the word to search for. For example querying for name "Sensor*" finds all resources
with name starting with Sensor, and search for name "*12*" will find all resources containing string "12"
in its name. Using substring search can be done for the following fields:
- name
- platform_name
- owner
- description
- location_name
- observed_property
NOTE3
The should_rank parameter can be set to enable ranking of the resources from the response. This
allows currently available and popular resources to be returned with higher ranking than others. Also, if
geolocation point is used in the query resources closer to the point of interest are returned with higher
ranking.
For our example, let's search for resources with name Stationary 1. We do it by sending a HTTP GET request on symbIoTe Core Interface (https://symbiote-open.man.poznan.pl/coreInterface/query?name=Stationary1). Response contains a list of resources fulfilling the criteria:
{
"resources": [
{
"platformId": "test1Plat",
"platformName": "Test 1 Plat",
"owner": null,
"name": "Stationary1",
"id": "591ae23eb80b283c012fdf26",
"description": "This is stationary 1",
"locationName": "SomeLocation",
"locationLatitude": 25.864716,
"locationLongitude": 5.349014,
"locationAltitude": 35,
"observedProperties": [
"temperature",
"humidity"
],
"resourceType": [
"http://www.symbiote-h2020.eu/ontology/core#StationarySensor"
],
"ranking": 0.2
}
]
}
Starting with Release 0.2.1, an additional endpoint was created to allow sending SPARQL queries to symbIoTe
Core. To send SPARQL requests we need to send request by using HTTP POST to the url:
https://symbiote-open.man.poznan.pl/coreInterface/sparqlQuery
The endpoint accepts the following payload:
{
"sparqlQuery" : "<sparql>",
"outputFormat" : "<format>"
}
Possible output formats include: SRX, XML, JSON, SRJ, SRT, THRIFT, SSE, CSV, TSV, SRB, TEXT, COUNT, TUPLES, NONE, RDF, RDF_N3, RDF_XML, N3, TTL, TURTLE, GRAPH, NT, N_TRIPLES, TRIG.
SPARQL allows for powerful access to all the meta information stored within symbIoTe Core. Below, you can find few example queries
Query all resources of the core
{
"sparqlQuery" : "PREFIX cim: <http://www.symbiote-h2020.eu/ontology/core#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?res ?resourceName WHERE { ?res a cim:Resource. ?res rdfs:label ?resourceName . }",
"outputFormat" : "TEXT"
}
returns the following output:
------------------------------------------------------------------------------------------------------
| res | resourceName |
======================================================================================================
| <http://www.symbiote-h2020.eu/ontology/resources/591ae23eb80b283c012fdf26> | "Stationary 1" |
| <http://www.symbiote-h2020.eu/ontology/resources/591ae5edb80b283c012fdf29> | "Actuating Service 1" |
------------------------------------------------------------------------------------------------------
Query for Services and display information about input they are requiring: name and datatype
{
"sparqlQuery" : "PREFIX cim: <http://www.symbiote-h2020.eu/ontology/core#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?res ?resourceName ?inputName ?inputDatatype WHERE { ?res a cim:Service. ?res rdfs:label ?resourceName . ?res cim:hasInputParameter ?input . ?input cim:name ?inputName . ?input cim:datatype ?inputDatatype }",
"outputFormat" : "TEXT"
}
returns the following output:
--------------------------------------------------------------------------------------------------------------------------------------
| res | resourceName | inputName | inputDatatype |
======================================================================================================================================
| <http://www.symbiote-h2020.eu/ontology/resources/591af131b80b2847be1d62eb> | "Actuating Service 1" | "inputParam1" | "xsd:string" |
--------------------------------------------------------------------------------------------------------------------------------------
Getting Started
Migration to 3.0.0
Migration to Docker
-
Preparation steps
1.1. Register user and configure platform in symbIoTe Core
1.2. Installation of required tools for symbIoTe platform components
1.3. Downloading jars
1.4. Downloading sources -
Configuring and starting components
2.1. Configuration of NGINX
2.2. Starting third party tools that are prerequisite for symbIoTe
2.3. Starting (generic) symbIoTe Cloud components
2.4. Configuration of cloud components
2.4.1. Starting symbIoTe Cloud components
2.5. Setting up the Platform Authentication and Authorization Manager (PAAM)
2.6. Starting Registration Handler and resource management
2.7. Set up of Resource Access Proxy
2.8. Manage resources
2.9. Set up of the Monitoring component
2.10. Other configuration topics -
Test integrated resource
3.1. Security
3.2. Search for resources
3.3. Obtaining resource access URL
3.4. Accessing the resource and actuating and invoking service for default (dummy) resources -
Creating RAP plugin
4.1. Customizing internal RAP plugin
4.2. Using RAP plugin starter
4.3. Creating RAP plugin in other languages -
Resource Description Examples
5.1. JSON Description Examples
5.2. RDF Description Examples - Preparation for L2 compliance
-
Configuring and starting components for L2
7.1. Starting Federation Manager
7.2. Starting Subscription Manager
7.3. Starting Platform Registry
7.4. Starting Trust Manager
7.5. Starting Bartering And Trading
7.6. Starting SLA Manager
7.7. Create a federation
7.8. Manage resources in L2
7.9. Register Subscription - Test Integrated L2 Resources
- Developing symbIoTe enabled apps