From b6a8b58a974d91ecfd6c8acb918630839b89f338 Mon Sep 17 00:00:00 2001 From: Peter Sefton Date: Fri, 24 Jul 2026 15:53:45 +1000 Subject: [PATCH] Updated to use PropertyValue method for fixed values / regexes --- masp-profile/profile-crate/index.html | 36 ++++++++++++++---- .../profile-crate/profile-documentation.md | 13 +++++-- .../profile-crate/ro-crate-metadata.json | 37 +++++++++++++++---- .../schema-crate/ro-crate-metadata.json | 2 +- 4 files changed, 68 insertions(+), 20 deletions(-) diff --git a/masp-profile/profile-crate/index.html b/masp-profile/profile-crate/index.html index 0179c12..675a6f7 100644 --- a/masp-profile/profile-crate/index.html +++ b/masp-profile/profile-crate/index.html @@ -1238,7 +1238,7 @@

References


Examples

https://www.mpi.nl/ISLE/documents/docs_frame.html

-

30 classes · 101 properties

+

30 classes · 102 properties

Classes

@@ -1281,6 +1281,7 @@

Properties

  • @id — README file #README.id
  • +
  • @id #property_CreativeWork_README.id
  • About — This property on the RO-Crate Metadata Descriptor references the Root Data Entity. In a SoSS+ profile there may be Schemas present for more than one 'flavour' of Root Data Entity with different @type arrays or `@conformsTo` references (or other specializations). #RO-Crate_Metadata_Descriptor.about
  • Access — Whether this is an open or restricted access license. #prop_ldac:access_DataReuseLicense
  • Access Control List — When a license has an authorizationWorkflow property with a value of the DefinedTerm AccessControlList this property has a URI value that points to a list of userIDs. #prop_ldac:accessControlList_DataReuseLicense
  • @@ -3337,8 +3338,8 @@

    < Yes This is the 'magic' entity that identifies the RO-Crate Metadata Descriptor, which is the root of the graph and the entry point for validation. It must have a @type of RO-Crate_Metadata_Descriptor and its @id must be 'ro-crate-metadata.json'. -Root Data Entity -ro-crate-metadata.json +RO-Crate Metadadata Descriptor Identifier Constraint + @@ -3385,8 +3386,8 @@

    Class: README Entity

    Yes There must with the path README.html in the root of the RO-Crate, and it must be described by an entity of type README_Entity with an @id of README.html. -README Entity -README.html +@id + @@ -3479,8 +3480,29 @@

    Property: @id

    @id There must with the path README.html in the root of the RO-Crate, and it must be described by an entity of type README_Entity with an @id of README.html. +@id README Entity -README Entity + + + +

    Property: @id

    + + + + + + + + + + + + + + + + +
    PropertySpecialization OfDescriptionRangeOccurs in Domain(s)
    @idREADME file must have an @id matching /^readme.md$/i.propertyValue_property_CreativeWork_README.idclass_CreativeWork_README
    @@ -4529,7 +4551,7 @@

    @id This is the 'magic' entity that identifies the RO-Crate Metadata Descriptor, which is the root of the graph and the entry point for validation. It must have a @type of RO-Crate_Metadata_Descriptor and its @id must be 'ro-crate-metadata.json'. -Root Data Entity +RO-Crate Metadadata Descriptor Identifier Constraint RO-Crate Metadata Descriptor diff --git a/masp-profile/profile-crate/profile-documentation.md b/masp-profile/profile-crate/profile-documentation.md index 8250864..ee17fd1 100644 --- a/masp-profile/profile-crate/profile-documentation.md +++ b/masp-profile/profile-crate/profile-documentation.md @@ -1176,7 +1176,7 @@ At least 1 instances of this type MUST be present in the crate. | -------- | ----------------- | -------- | ----------- | ----- | ----- | | @type | | Yes | | | CreativeWork | | about | http://schema.org/about | Yes | This property on the RO-Crate Metadata Descriptor references the Root Data Entity. In a SoSS+ profile there may be Schemas present for more than one 'flavour' of Root Data Entity with different @type arrays or `@conformsTo` references (or other specializations). | Root Data Entity | | -| @id | | Yes | This is the 'magic' entity that identifies the RO-Crate Metadata Descriptor, which is the root of the graph and the entry point for validation. It must have a @type of RO-Crate_Metadata_Descriptor and its @id must be 'ro-crate-metadata.json'. | Root Data Entity | ro-crate-metadata.json | +| @id | | Yes | This is the 'magic' entity that identifies the RO-Crate Metadata Descriptor, which is the root of the graph and the entry point for validation. It must have a @type of RO-Crate_Metadata_Descriptor and its @id must be 'ro-crate-metadata.json'. | RO-Crate Metadadata Descriptor Identifier Constraint | | ### Class: README Entity @@ -1194,7 +1194,7 @@ At least 1 instances of this type MUST be present in the crate. | Property | Specialization Of | Required | Description | Range | Value | | -------- | ----------------- | -------- | ----------- | ----- | ----- | | @type | | Yes | | | MediaObject | -| @id | | Yes | There must with the path `README.html` in the root of the RO-Crate, and it must be described by an entity of type README_Entity with an @id of `README.html`. | README Entity | README.html | +| @id | | Yes | There must with the path `README.html` in the root of the RO-Crate, and it must be described by an entity of type README_Entity with an @id of `README.html`. | @id | | ### Class: Root Data Entity @@ -1223,7 +1223,12 @@ At least 1 instances of this type MUST be present in the crate. | Property | Specialization Of | Description | Range | Occurs in Domain(s) | | -------- | ----------------- | ----------- | ----------- | ----------- | -| @id | | There must with the path `README.html` in the root of the RO-Crate, and it must be described by an entity of type README_Entity with an @id of `README.html`. | README Entity | README Entity | +| @id | | There must with the path `README.html` in the root of the RO-Crate, and it must be described by an entity of type README_Entity with an @id of `README.html`. | @id | README Entity | +### Property: @id + +| Property | Specialization Of | Description | Range | Occurs in Domain(s) | +| -------- | ----------------- | ----------- | ----------- | ----------- | +| @id | | README file must have an @id matching /^readme\.md$/i. | propertyValue_property_CreativeWork_README.id | class_CreativeWork_README | ### Property: About | Property | Specialization Of | Description | Range | Occurs in Domain(s) | @@ -1473,7 +1478,7 @@ At least 1 instances of this type MUST be present in the crate. | Property | Specialization Of | Description | Range | Occurs in Domain(s) | | -------- | ----------------- | ----------- | ----------- | ----------- | -| @id | | This is the 'magic' entity that identifies the RO-Crate Metadata Descriptor, which is the root of the graph and the entry point for validation. It must have a @type of RO-Crate_Metadata_Descriptor and its @id must be 'ro-crate-metadata.json'. | Root Data Entity | RO-Crate Metadata Descriptor | +| @id | | This is the 'magic' entity that identifies the RO-Crate Metadata Descriptor, which is the root of the graph and the entry point for validation. It must have a @type of RO-Crate_Metadata_Descriptor and its @id must be 'ro-crate-metadata.json'. | RO-Crate Metadadata Descriptor Identifier Constraint | RO-Crate Metadata Descriptor | ### Property: Identifier | Property | Specialization Of | Description | Range | Occurs in Domain(s) | diff --git a/masp-profile/profile-crate/ro-crate-metadata.json b/masp-profile/profile-crate/ro-crate-metadata.json index c01bf5d..bfefde2 100644 --- a/masp-profile/profile-crate/ro-crate-metadata.json +++ b/masp-profile/profile-crate/ro-crate-metadata.json @@ -1150,12 +1150,25 @@ }, "rdfs:comment": "README file", "rangeIncludes": { - "@id": "#README_Entity" + "@id": "#property_CreativeWork_README.id" }, "sh:minCount": "1", "sh:maxCount": "1", - "description": "There must with the path `README.html` in the root of the RO-Crate, and it must be described by an entity of type README_Entity with an @id of `README.html`.", - "value": "README.html" + "description": "There must with the path `README.html` in the root of the RO-Crate, and it must be described by an entity of type README_Entity with an @id of `README.html`." + }, + { + "@id": "#property_CreativeWork_README.id", + "@type": "rdf:Property", + "description": "README file must have an @id matching /^readme\\.md$/i.", + "rdfs:label": "@id", + "rangeIncludes": { + "@id": "#propertyValue_property_CreativeWork_README.id" + }, + "domainIncludes": { + "@id": "#class_CreativeWork_README" + }, + "sh:minCount": 1, + "sh:maxCount": 1 }, { "@id": "#Root_Data_Entity", @@ -3354,16 +3367,24 @@ "@id": "#RO-Crate_Metadata_Descriptor" }, "rdfs:comment": "The RO-Crate Metadata Descriptor", - "rangeIncludes": { - "@id": "#Root_Data_Entity" + "rangeIncludes": { + "@id": "#propertyValue_RO-Crate_Metadata_Descriptor.id" }, "sh:minCount": "1", "isPartOf": { "@id": "#hasSpecializedSchema" }, "sh:maxCount": "1", - "description": "This is the 'magic' entity that identifies the RO-Crate Metadata Descriptor, which is the root of the graph and the entry point for validation. It must have a @type of RO-Crate_Metadata_Descriptor and its @id must be 'ro-crate-metadata.json'.", - "value": "ro-crate-metadata.json" + "description": "This is the 'magic' entity that identifies the RO-Crate Metadata Descriptor, which is the root of the graph and the entry point for validation. It must have a @type of RO-Crate_Metadata_Descriptor and its @id must be 'ro-crate-metadata.json'." + }, + { + "@id": "#propertyValue_RO-Crate_Metadata_Descriptor.id", + "@type": "PropertyValue", + "name": "RO-Crate Metadadata Descriptor Identifier Constraint", + "description": "Allowed identifier value constraint for RO-Crate Metadadata Descriptor.", + "value": "ro-crate-metadata.json", + "sh:minCount": 1, + "sh:maxCount": 1 }, { "@id": "ldac:AccessControlList", @@ -4188,4 +4209,4 @@ "name": "Language Data Commons RO-Crate Profile: Collection" } ] -} \ No newline at end of file +} diff --git a/masp-schema/schema-crate/ro-crate-metadata.json b/masp-schema/schema-crate/ro-crate-metadata.json index a7f9944..c9cdeb0 100644 --- a/masp-schema/schema-crate/ro-crate-metadata.json +++ b/masp-schema/schema-crate/ro-crate-metadata.json @@ -1,4 +1,4 @@ -{ + "@context": [ "https://w3id.org/ro/crate/1.2/context", {