diff --git a/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_01_exc.robot b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_01_exc.robot new file mode 100644 index 0000000000000000000000000000000000000000..b75414114ac6b0a0b45ed44f37f50b8069855a7b --- /dev/null +++ b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_01_exc.robot @@ -0,0 +1,61 @@ +*** Settings *** +Documentation Check that if one request the Context Broker to delete an attribute without the deleteAll flag nor a datasetId, the default Attribute instance is deleted in the Context Source. +Resource ${EXECDIR}/resources/ApiUtils/Common.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/MockServerUtils.resource + + +Test Setup Create Entity And Setup Registration And Start Context Source Mock Server +Test Teardown Delete Registration And Stop Context Source Mock Server + +*** Variables *** +${entity_payload_filename} vehicle-simple-attributes.jsonld +${registration_payload_file_path} csourceRegistrations/context-source-registration-vehicle-speed.jsonld +${attribute_id} speed + +*** Test Cases *** +D006_01_exc Delete Entity Attributes + [Documentation] Verify that, when one has an exclusive registration on a Context Broker with redirectionOps, one is able to delete entities attributes on a Context Source + [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 proxy-exclusive 4_3_6_3 5_6_5 + + Set Stub Reply DELETE /broker1/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} 204 + ${response}= Delete Entity Attributes + ... ${entity_id} + ... ${attribute_id} + ... ${EMPTY} + ... ${ngsild_test_suite_context} + Wait For Request + Check Response Status Code 204 ${response.status_code} + + ${stub_count}= Get Stub Count DELETE /broker1/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} + Should Be True ${stub_count} > 0 + +*** Keywords *** +Create Entity And Setup Registration And Start Context Source Mock Server + ${entity_id}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id} + + ${response}= Create Entity ${entity_payload_filename} ${entity_id} local=true + Check Response Status Code 201 ${response.status_code} + + ${registration_id}= Generate Random CSR Id + Set Suite Variable ${registration_id} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id} + ... ${registration_payload_file_path} + ... entity_id=${entity_id} + ... mode=exclusive + ... endpoint=/broker1 + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + Start Context Source Mock Server + +Delete Registration And Stop Context Source Mock Server + Delete Context Source Registration ${registration_id} + Delete Entity by Id ${entity_id} + Stop Context Source Mock Server \ No newline at end of file diff --git a/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_01_inc.robot b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_01_inc.robot new file mode 100644 index 0000000000000000000000000000000000000000..8d0db7198cfceae14c6968ab8aa5d0593b9ac083 --- /dev/null +++ b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_01_inc.robot @@ -0,0 +1,60 @@ +*** Settings *** +Documentation Check that if one request the Context Broker to delete an attribute without the deleteAll flag nor a datasetId, the default Attribute instance is deleted. +Resource ${EXECDIR}/resources/ApiUtils/Common.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/MockServerUtils.resource + + +Test Setup Create Entity And Setup Registration And Start Context Source Mock Server +Test Teardown Delete Registration And Stop Context Source Mock Server + +*** Variables *** +${entity_payload_filename} expectations/vehicle-delete-two-datasetid-speed.jsonld +${registration_payload_file_path} csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld +${attribute_id} speed + +*** Test Cases *** +D006_01_inc Delete Entity Attributes + [Documentation] Verify that, when one has an inclusive registration on a Context Broker with redirectionOps, one is able to delete entities attributes on a Context Source too + [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 additive-inclusive 4_3_6_2 5_6_5 + + Set Stub Reply DELETE /ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} 204 + ${response}= Delete Entity Attributes + ... ${entity_id} + ... ${attribute_id} + ... ${EMPTY} + ... ${ngsild_test_suite_context} + Wait For Request + Check Response Status Code 204 ${response.status_code} + + ${response}= Retrieve Entity by Id ${entity_id} context=${ngsild_test_suite_context} local=true + Should Contain ${response.json()} speed + +*** Keywords *** +Create Entity And Setup Registration And Start Context Source Mock Server + ${entity_id}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id} + + ${response}= Create Entity ${entity_payload_filename} ${entity_id} + Check Response Status Code 201 ${response.status_code} + + ${registration_id}= Generate Random CSR Id + Set Suite Variable ${registration_id} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id} + ... ${registration_payload_file_path} + ... entity_id=${entity_id} + ... mode=inclusive + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + Start Context Source Mock Server + +Delete Registration And Stop Context Source Mock Server + Delete Context Source Registration ${registration_id} + Delete Entity by Id ${entity_id} + Stop Context Source Mock Server \ No newline at end of file diff --git a/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_01_red.robot b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_01_red.robot new file mode 100644 index 0000000000000000000000000000000000000000..95ee39adc56e101cb0b20bbaa82e9c6d99e1d98b --- /dev/null +++ b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_01_red.robot @@ -0,0 +1,76 @@ +*** Settings *** +Documentation Check that if one request the Context Broker to delete an attribute without the deleteAll flag nor a datasetId, the default Attribute instance is deleted on the Context Sources. +Resource ${EXECDIR}/resources/ApiUtils/Common.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/MockServerUtils.resource + + +Test Setup Create Entity And Setup Registration And Start Context Source Mock Server +Test Teardown Delete Registration And Stop Context Source Mock Server + +*** Variables *** +${entity_payload_filename} expectations/vehicle-delete-two-datasetid-speed.jsonld +${registration_payload_file_path} csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld +${attribute_id} speed + +*** Test Cases *** +D006_01_red Delete Entity Attributes + [Documentation] Verify that, when one has a redirect registration on a Context Broker with redirectionOps, one is able to delete entities attributes on a Context Source + [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 proxy-redirect 4_3_6_3 5_6_5 + + Set Stub Reply DELETE /broker1/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} 204 + Set Stub Reply DELETE /broker2/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} 204 + ${response}= Delete Entity Attributes + ... ${entity_id} + ... ${attribute_id} + ... ${EMPTY} + ... ${ngsild_test_suite_context} + Wait For Request + Check Response Status Code 204 ${response.status_code} + + ${stub_count}= Get Stub Count DELETE /broker1/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} + Should Be True ${stub_count} > 0 + ${stub_count}= Get Stub Count DELETE /broker2/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} + Should Be True ${stub_count} > 0 + +*** Keywords *** +Create Entity And Setup Registration And Start Context Source Mock Server + ${entity_id}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id} + + ${response}= Create Entity ${entity_payload_filename} ${entity_id} + Check Response Status Code 201 ${response.status_code} + + ${registration_id}= Generate Random CSR Id + Set Suite Variable ${registration_id} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id} + ... ${registration_payload_file_path} + ... entity_id=${entity_id} + ... mode=redirect + ... endpoint=/broker1 + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + + ${registration_id2}= Generate Random CSR Id + Set Suite Variable ${registration_id2} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id2} + ... ${registration_payload_file_path} + ... entity_id=${entity_id} + ... mode=redirect + ... endpoint=/broker2 + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + Start Context Source Mock Server + +Delete Registration And Stop Context Source Mock Server + Delete Context Source Registration ${registration_id} + Delete Context Source Registration ${registration_id2} + Delete Entity by Id ${entity_id} + Stop Context Source Mock Server \ No newline at end of file diff --git a/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_02_exc.robot b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_02_exc.robot new file mode 100644 index 0000000000000000000000000000000000000000..d10d1949703e5fc7cb6477ccd294e2688ea243ca --- /dev/null +++ b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_02_exc.robot @@ -0,0 +1,62 @@ +*** Settings *** +Documentation Check that if one request the Context Broker to delete an attribute with the deleteAll flag, all the instances of that attribute are deleted in the Context Source. +Resource ${EXECDIR}/resources/ApiUtils/Common.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/MockServerUtils.resource + + +Test Setup Create Entity And Setup Registration And Start Context Source Mock Server +Test Teardown Delete Registration And Stop Context Source Mock Server + +*** Variables *** +${entity_payload_filename} vehicle-simple-attributes.jsonld +${registration_payload_file_path} csourceRegistrations/context-source-registration-vehicle-speed.jsonld +${attribute_id} speed + +*** Test Cases *** +D006_02_exc Delete Entity Attributes + [Documentation] Verify that, when one has an exclusive registration on a Context Broker with redirectionOps, one is able to delete entities attributes on a Context Source + [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 proxy-exclusive 4_3_6_3 5_6_5 + + Set Stub Reply DELETE /broker1/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} 204 + ${response}= Delete Entity Attributes + ... ${entity_id} + ... ${attribute_id} + ... ${EMPTY} + ... true + ... ${ngsild_test_suite_context} + Wait For Request + Check Response Status Code 204 ${response.status_code} + + ${stub_count}= Get Stub Count DELETE /broker1/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} + Should Be True ${stub_count} > 0 + +*** Keywords *** +Create Entity And Setup Registration And Start Context Source Mock Server + ${entity_id}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id} + + ${response}= Create Entity ${entity_payload_filename} ${entity_id} local=true + Check Response Status Code 201 ${response.status_code} + + ${registration_id}= Generate Random CSR Id + Set Suite Variable ${registration_id} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id} + ... ${registration_payload_file_path} + ... entity_id=${entity_id} + ... mode=exclusive + ... endpoint=/broker1 + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + Start Context Source Mock Server + +Delete Registration And Stop Context Source Mock Server + Delete Context Source Registration ${registration_id} + Delete Entity by Id ${entity_id} + Stop Context Source Mock Server \ No newline at end of file diff --git a/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_02_inc.robot b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_02_inc.robot new file mode 100644 index 0000000000000000000000000000000000000000..7ccf2197e6e1d512d4e5927e5eab1a4ca2a83728 --- /dev/null +++ b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_02_inc.robot @@ -0,0 +1,61 @@ +*** Settings *** +Documentation Check that if one request the Context Broker to delete an attribute with the deleteAll flag, all the instances of that attribute are deleted. +Resource ${EXECDIR}/resources/ApiUtils/Common.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/MockServerUtils.resource + + +Test Setup Create Entity And Setup Registration And Start Context Source Mock Server +Test Teardown Delete Registration And Stop Context Source Mock Server + +*** Variables *** +${entity_payload_filename} expectations/vehicle-delete-two-datasetid-speed.jsonld +${registration_payload_file_path} csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld +${attribute_id} speed + +*** Test Cases *** +D006_02_inc Delete Entity Attributes + [Documentation] Verify that, when one has an inclusive registration on a Context Broker with redirectionOps, one is able to delete entities attributes on a Context Source + [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 additive-inclusive 4_3_6_2 5_6_5 + + Set Stub Reply DELETE /ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} 204 + ${response}= Delete Entity Attributes + ... ${entity_id} + ... ${attribute_id} + ... ${EMPTY} + ... true + ... ${ngsild_test_suite_context} + Wait For Request + Check Response Status Code 204 ${response.status_code} + + ${response}= Retrieve Entity by Id ${entity_id} context=${ngsild_test_suite_context} local=true + Should Not Contain ${response.json()} speed + +*** Keywords *** +Create Entity And Setup Registration And Start Context Source Mock Server + ${entity_id}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id} + + ${response}= Create Entity ${entity_payload_filename} ${entity_id} + Check Response Status Code 201 ${response.status_code} + + ${registration_id}= Generate Random CSR Id + Set Suite Variable ${registration_id} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id} + ... ${registration_payload_file_path} + ... entity_id=${entity_id} + ... mode=inclusive + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + Start Context Source Mock Server + +Delete Registration And Stop Context Source Mock Server + Delete Context Source Registration ${registration_id} + Delete Entity by Id ${entity_id} + Stop Context Source Mock Server \ No newline at end of file diff --git a/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_02_red.robot b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_02_red.robot new file mode 100644 index 0000000000000000000000000000000000000000..8e486055f1845bd6ea3c48ac3f4ba437d5bd4392 --- /dev/null +++ b/TP/NGSI-LD/DistributedOperations/Provision/EntityAttributes/DeleteEntityAttributes/D006_02_red.robot @@ -0,0 +1,77 @@ +*** Settings *** +Documentation Check that if one request the Context Broker to delete an attribute with the deleteAll flag, all the instances of that attribute are deleted. +Resource ${EXECDIR}/resources/ApiUtils/Common.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/MockServerUtils.resource + + +Test Setup Create Entity And Setup Registration And Start Context Source Mock Server +Test Teardown Delete Registration And Stop Context Source Mock Server + +*** Variables *** +${entity_payload_filename} expectations/vehicle-delete-two-datasetid-speed.jsonld +${registration_payload_file_path} csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld +${attribute_id} speed + +*** Test Cases *** +D006_02_red Delete Entity Attributes + [Documentation] Verify that, when one has a redirect registration on a Context Broker with redirectionOps, one is able to delete entities attributes on a Context Source + [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 proxy-redirect 4_3_6_3 5_6_5 + + Set Stub Reply DELETE /broker1/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} 204 + Set Stub Reply DELETE /broker2/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} 204 + ${response}= Delete Entity Attributes + ... ${entity_id} + ... ${attribute_id} + ... ${EMPTY} + ... true + ... ${ngsild_test_suite_context} + Wait For Request + Check Response Status Code 204 ${response.status_code} + + ${stub_count}= Get Stub Count DELETE /broker1/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} + Should Be True ${stub_count} > 0 + ${stub_count}= Get Stub Count DELETE /broker2/ngsi-ld/v1/entities/${entity_id}/attrs/${attribute_id} + Should Be True ${stub_count} > 0 + +*** Keywords *** +Create Entity And Setup Registration And Start Context Source Mock Server + ${entity_id}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id} + + ${response}= Create Entity ${entity_payload_filename} ${entity_id} + Check Response Status Code 201 ${response.status_code} + + ${registration_id}= Generate Random CSR Id + Set Suite Variable ${registration_id} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id} + ... ${registration_payload_file_path} + ... entity_id=${entity_id} + ... mode=redirect + ... endpoint=/broker1 + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + + ${registration_id2}= Generate Random CSR Id + Set Suite Variable ${registration_id2} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id2} + ... ${registration_payload_file_path} + ... entity_id=${entity_id} + ... mode=redirect + ... endpoint=/broker2 + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + Start Context Source Mock Server + +Delete Registration And Stop Context Source Mock Server + Delete Context Source Registration ${registration_id} + Delete Context Source Registration ${registration_id2} + Delete Entity by Id ${entity_id} + Stop Context Source Mock Server \ No newline at end of file diff --git a/data/csourceRegistrations/context-source-registration-vehicle-speed.jsonld b/data/csourceRegistrations/context-source-registration-vehicle-speed.jsonld new file mode 100644 index 0000000000000000000000000000000000000000..b1798060b56ef16a88b88829b549d2cad3f63e69 --- /dev/null +++ b/data/csourceRegistrations/context-source-registration-vehicle-speed.jsonld @@ -0,0 +1,21 @@ +{ + "id": "urn:ngsi-ld:ContextSourceRegistration:randomUUID", + "type": "ContextSourceRegistration", + "information": [ + { + "entities": [ + { + "id": "urn:ngsi-ld:Vehicle:randomUUID", + "type": "Vehicle" + } + + ], + "propertyNames":["speed"] + } + ], + "operations": ["redirectionOps"], + "endpoint": "http://my.csource.org:1026/", + "@context":[ + "https://forge.etsi.org/rep/cim/ngsi-ld-test-suite/-/raw/develop/resources/jsonld-contexts/ngsi-ld-test-suite-compound.jsonld" + ] +} \ No newline at end of file diff --git a/data/entities/expectations/vehicle-delete-two-datasetid-speed.jsonld b/data/entities/expectations/vehicle-delete-two-datasetid-speed.jsonld new file mode 100644 index 0000000000000000000000000000000000000000..9080bb4b8ca14f6751f04d9b22f3a4462a1bee5c --- /dev/null +++ b/data/entities/expectations/vehicle-delete-two-datasetid-speed.jsonld @@ -0,0 +1,38 @@ +{ + "id": "urn:ngsi-ld:Vehicle:randomUUID", + "type": "Vehicle", + "brandName": { + "type": "Property", + "value": "Mercedes" + }, + "isParked": { + "type": "Relationship", + "object": "urn:ngsi-ld:OffStreetParking:Downtown1", + "observedAt": "2017-07-29T12:00:04Z", + "providedBy": { + "type": "Relationship", + "object": "urn:ngsi-ld:Person:Bob" + }, + "datasetId": "urn:ngsi-ld:Relationship:parked12345" + }, + "speed": { + "type": "Property", + "value": 55, + "source": { + "type": "Property", + "value": "Speedometer" + } + }, + "speed": { + "type": "Property", + "value": 70, + "source": { + "type": "Property", + "value": "Speedometer" + }, + "datasetId": "urn:ngsi-ld:Property:gpsBxyz123-speed" + }, + "@context": [ + "https://forge.etsi.org/rep/cim/ngsi-ld-test-suite/-/raw/develop/resources/jsonld-contexts/ngsi-ld-test-suite-compound.jsonld" + ] +} \ No newline at end of file