International-Data-Spaces-Association / ids-specification

The Dataspace Protocol is a set of specifications designed to facilitate interoperable data sharing between entities governed by usage control and based on Web technologies. These specifications define the schemas and protocols required for entities to publish data, negotiate Agreements, and access data in a data space
https://docs.internationaldataspaces.org/dataspace-protocol/
Apache License 2.0
26 stars 14 forks source link

Inconsistences between schema and example files #252

Open IgorBalog-Eng opened 3 months ago

IgorBalog-Eng commented 3 months ago

While implementing new catalog classes following schema and provided example files I have discovered that there are some differences between schema and examples. Here are those differences:

https://github.com/International-Data-Spaces-Association/ids-specification/blob/main/catalog/message/schema/dataset-schema.json

Dataset

"odrl:hasPolicy": {
    "type": "array",
    "items": {
        "$ref": "https://w3id.org/dspace/schemas/2024/1/contract-schema.json#/definitions/Offer"
    },
    "minItems": 1
},

in example not as array ( "odrl:hasPolicy" : [ {):

"odrl:hasPolicy": {
    "@type": "odrl:Offer",
    "@id": "urn:uuid:2828282:3dd1add8-4d2d-569e-d634-8394a8836a88",

"Distribution": { dct:format not defined in schema

example: https://github.com/International-Data-Spaces-Association/ids-specification/blob/main/catalog/message/example/dataset.json

 "dcat:distribution": [
    {
      "@type": "dcat:Distribution",
      "dct:format": {
        "@id": "dspace:s3+push"
      },

example catalog: Catalog->dcat:dataset->dcat:distribution->"dct:format": "dspace:s3+push", vs example dataset "dct:format": { "@id": "dspace:s3+push" }

Missing: dataset->dcat:distribution->dcat:accessService->"@type": "dcat:DataService",


example catalog dcat:dataset->odrl:hasPolicy "dspace:providerId": "http://example.com/Provider", missing @id of the policy/offer

vs defined Offer object in negotiation schema https://github.com/International-Data-Spaces-Association/ids-specification/blob/main/negotiation/message/schema/contract-schema.json

Hope I managed to collect all differences for catalog and referenced objects from negotiation module. It could be also that I did not read schema files correct and this ticket is not applicable.

sebbader-sap commented 3 months ago

Adding another one: https://github.com/International-Data-Spaces-Association/ids-specification/blob/63e5a401192336177f1d547ebd1f8e8f6f129269/negotiation/message/schema/contract-schema.json#L156 should be "odrl:target"

IgorBalog-Eng commented 3 months ago

Is this diagram still valid? There is "link" between offer and catalog https://docs.internationaldataspaces.org/ids-knowledgebase/v/dataspace-protocol/catalog/catalog.protocol#id-3.1-ack-catalog It states before A Catalog must not have an odrl:hasPolicy attribute, since it is not intended to negotiate on the access to Catalog objects.

schoenenberg commented 3 months ago

Adding another one:

https://github.com/International-Data-Spaces-Association/ids-specification/blob/63e5a401192336177f1d547ebd1f8e8f6f129269/negotiation/message/schema/contract-schema.json#L156

should be "odrl:target"

Already reported (but not yet fixed) in #232

IgorBalog-Eng commented 3 months ago

https://docs.internationaldataspaces.org/ids-knowledgebase/v/dataspace-protocol/contract-negotiation/contract.negotiation.protocol#id-2.1-contract-request-message Link to message points to offer_message not contract_request_message

IgorBalog-Eng commented 3 months ago

The Consumer must include an offer property, which itself must have a @id property

https://github.com/International-Data-Spaces-Association/ids-specification/blob/main/negotiation/message/example/contract-request-message.json

Where is offer.@id? Initial message contains offer.@id

--

https://github.com/International-Data-Spaces-Association/ids-specification/blob/2024-1/catalog/message/example/catalog.json Should this one also contain offer.@id in response? How will consumer know which offer.@id to send in initial_request_message?

"odrl:hasPolicy": [ { "@type": "odrl:Offer", "@id" : "missing offerId", "dspace:providerId": "http://example.com/Provider", "odrl:permission": [ {

sebbader-sap commented 3 months ago

The example for the catalog contains a odrl:EQ: https://github.com/International-Data-Spaces-Association/ids-specification/blob/b3ff872f7b482bf1cd81de3bc554ed699be7a298/catalog/message/example/catalog.json#L49 But ODRL only has a odrl:eq, which is correctly stated in the JSON Schema.

Additionally, the distribution in this file is a JSON Object: https://github.com/International-Data-Spaces-Association/ids-specification/blob/b3ff872f7b482bf1cd81de3bc554ed699be7a298/catalog/message/example/catalog.json#L60 But the JSON Schema says it must be a JSON Array.

IgorBalog-Eng commented 3 months ago

https://github.com/International-Data-Spaces-Association/ids-specification/blob/main/negotiation/message/schema/contract-schema.json#L156 required element @target; should this one be changed with odrl:target?

sebbader-sap commented 2 weeks ago

@schoenenberg @IgorBalog-Eng please check whether https://github.com/International-Data-Spaces-Association/ids-specification/pull/264 has solved your findings.