diff --git a/scripts/check-metadata-and-immutability-dir.py b/scripts/check-metadata-and-immutability-dir.py index 89e082d..a2e786e 100644 --- a/scripts/check-metadata-and-immutability-dir.py +++ b/scripts/check-metadata-and-immutability-dir.py @@ -3,7 +3,7 @@ check_metadata_and_immutability.py Validates SHACL shapes for: -- Required metadata (rdfs:label, dct:created, vs:term_status) +- Required metadata (sh:name, dct:created, vs:term_status) - Correct metadata formats - Status validity - Immutability rules (placeholder for future logic) @@ -12,7 +12,7 @@ import sys import glob from rdflib import Graph, Namespace -from rdflib.namespace import RDF, RDFS +from rdflib.namespace import RDF # Namespaces SH = Namespace("http://www.w3.org/ns/shacl#") @@ -49,18 +49,18 @@ def report_error(file, shape, property_name, message, value=None, expected=None) def check_shape_metadata(g, file, shape_uri): - label = g.value(shape_uri, RDFS.label) + label = g.value(shape_uri, SH.name) created = g.value(shape_uri, DCT.created) status = g.value(shape_uri, VS.term_status) - # rdfs:label + # sh:name if not label: report_error( file, shape_uri, - "rdfs:label", - "Missing required label for SHACL NodeShape.", - expected="Human readable label e.g. rdfs:label \"Person Shape\"" + "sh:name", + "Missing required name for SHACL NodeShape.", + expected="Human readable name e.g. sh:name \"Person Shape\"" ) # dct:created diff --git a/scripts/check-metadata-and-immutability-file.py b/scripts/check-metadata-and-immutability-file.py index f0eb00d..03dba7f 100644 --- a/scripts/check-metadata-and-immutability-file.py +++ b/scripts/check-metadata-and-immutability-file.py @@ -9,7 +9,7 @@ import sys from rdflib import Graph, Namespace -from rdflib.namespace import RDF, RDFS +from rdflib.namespace import RDF # Namespaces SH = Namespace("http://www.w3.org/ns/shacl#") @@ -36,14 +36,14 @@ def report_error(file, shape, property_name, message, value=None, expected=None) def check_shape_metadata(g, file, shape_uri): - label = g.value(shape_uri, RDFS.label) + label = g.value(shape_uri, SH.name) created = g.value(shape_uri, DCT.created) status = g.value(shape_uri, VS.term_status) if not label: - report_error(file, shape_uri, "rdfs:label", - "Missing required label.", - expected="Human readable label") + report_error(file, shape_uri, "sh:name", + "Missing required name.", + expected="Human readable name") if not created: report_error(file, shape_uri, "dct:created", "Creation date missing.", diff --git a/shapes/acp-access-control.ttl b/shapes/acp_access_control.ttl similarity index 71% rename from shapes/acp-access-control.ttl rename to shapes/acp_access_control.ttl index 3eec2a7..cb278e7 100644 --- a/shapes/acp-access-control.ttl +++ b/shapes/acp_access_control.ttl @@ -8,21 +8,21 @@ @prefix dct: . @prefix vs: . -@prefix acp-policy-shape: . +@prefix acp_policy_shape: . -@prefix acp-access-control-shape: . +@prefix acp_access_control_shape: . -acp-access-control-shape:AcpAccessControlShape a sh:NodeShape ; +acp_access_control_shape:AcpAccessControlShape a sh:NodeShape ; dc:source ; prov:wasDerivedFrom ; sh:codeIdentifier "AcpAccessControl"; - rdfs:label "ACP Access Control Shape"; + sh:name "ACP Access Control Shape"; dct:created "2026-03-18"^^xsd:date ; vs:term_status "testing"; sh:property [ sh:path acp:apply ; - sh:node acp-policy-shape:AcpPolicyShape ; - rdfs:label "apply"; + sh:node acp_policy_shape:AcpPolicyShape ; + sh:name "apply"; sh:codeIdentifier "apply"; ] . \ No newline at end of file diff --git a/shapes/acp-access-control-resource.ttl b/shapes/acp_access_control_resource.ttl similarity index 75% rename from shapes/acp-access-control-resource.ttl rename to shapes/acp_access_control_resource.ttl index 9c653fc..dbd83c7 100644 --- a/shapes/acp-access-control-resource.ttl +++ b/shapes/acp_access_control_resource.ttl @@ -8,22 +8,22 @@ @prefix dct: . @prefix vs: . -@prefix acp-access-control-shape: . -@prefix acp-access-control-resource-shape: . +@prefix acp_access_control_shape: . +@prefix acp_access_control_resource_shape: . # Shape for AccessControlResource -acp-access-control-resource-shape:AcpAccessControlResourceShape a sh:NodeShape ; +acp_access_control_resource_shape:AcpAccessControlResourceShape a sh:NodeShape ; dc:source ; prov:wasDerivedFrom ; sh:codeIdentifier "AccessControlResource"; - rdfs:label "Access Control Resource Shape"; + sh:name "Access Control Resource Shape"; dct:created "2026-03-18"^^xsd:date ; vs:term_status "testing"; # accessControl: multiple AccessControl objects sh:property [ sh:path acp:accessControl ; - sh:node acp-access-control-shape:AcpAccessControlShape ; + sh:node acp_access_control_shape:AcpAccessControlShape ; sh:codeIdentifier "accessControl"; ] ; diff --git a/shapes/acp-matcher.ttl b/shapes/acp_matcher.ttl similarity index 82% rename from shapes/acp-matcher.ttl rename to shapes/acp_matcher.ttl index 60344a4..a2fc812 100644 --- a/shapes/acp-matcher.ttl +++ b/shapes/acp_matcher.ttl @@ -8,20 +8,20 @@ @prefix dct: . @prefix vs: . -@prefix acp-matcher-shape: . +@prefix acp_matcher_shape: . -acp-matcher-shape:AcpMatcherShape a sh:NodeShape ; +acp_matcher_shape:AcpMatcherShape a sh:NodeShape ; dc:source ; prov:wasDerivedFrom ; sh:codeIdentifier "AcpMatcher"; - rdfs:label "ACP Matcher Shape"; + sh:name "ACP Matcher Shape"; dct:created "2026-03-18"^^xsd:date ; vs:term_status "testing"; sh:property [ sh:path acp:agent ; sh:nodeKind sh:IRI ; - rdfs:label "agent"; + sh:name "agent"; sh:codeIdentifier "agent"; ] ; diff --git a/shapes/acp-policy.ttl b/shapes/acp_policy.ttl similarity index 75% rename from shapes/acp-policy.ttl rename to shapes/acp_policy.ttl index aefe5f6..c055840 100644 --- a/shapes/acp-policy.ttl +++ b/shapes/acp_policy.ttl @@ -8,28 +8,28 @@ @prefix dct: . @prefix vs: . -@prefix acp-policy-shape: . -@prefix acp-matcher-shape: . +@prefix acp_policy_shape: . +@prefix acp_matcher_shape: . -acp-policy-shape:AcpPolicyShape a sh:NodeShape ; +acp_policy_shape:AcpPolicyShape a sh:NodeShape ; dc:source ; prov:wasDerivedFrom ; sh:codeIdentifier "AccessControlPolicy"; - rdfs:label "ACP Policy Shape"; + sh:name "ACP Policy Shape"; dct:created "2026-03-18"^^xsd:date ; vs:term_status "testing"; sh:property [ sh:path acp:allow ; sh:nodeKind sh:IRI ; - rdfs:label "allow"; + sh:name "allow"; sh:codeIdentifier "allow"; ] ; sh:property [ sh:path acp:anyOf ; - sh:node acp-matcher-shape:AcpMatcherShape; - rdfs:label "any of"; + sh:node acp_matcher_shape:AcpMatcherShape; + sh:name "any of"; sh:codeIdentifier "anyOf"; ] . \ No newline at end of file diff --git a/shapes/acp-typed.ttl b/shapes/acp_typed.ttl similarity index 79% rename from shapes/acp-typed.ttl rename to shapes/acp_typed.ttl index 51ace84..e0d41a2 100644 --- a/shapes/acp-typed.ttl +++ b/shapes/acp_typed.ttl @@ -5,23 +5,22 @@ @prefix prov: . @prefix dc: . @prefix rdf: . -@prefix rdfs: . @prefix dct: . @prefix vs: . -@prefix acp-typed-shape: . +@prefix acp_typed_shape: . -acp-typed-shape:AcpTypedShape a sh:NodeShape ; +acp_typed_shape:AcpTypedShape a sh:NodeShape ; dc:source ; prov:wasDerivedFrom ; sh:codeIdentifier "AccessControlPolicy"; - rdfs:label "ACP Policy Shape"; + sh:name "ACP Policy Shape"; dct:created "2026-03-18"^^xsd:date ; vs:term_status "testing"; sh:property [ sh:path rdf:type ; sh:nodeKind sh:IRI ; - rdfs:label "type"; + sh:name "type"; sh:codeIdentifier "type"; ] diff --git a/shapes/address.ttl b/shapes/address.ttl index 37ce3c7..7f7b84d 100644 --- a/shapes/address.ttl +++ b/shapes/address.ttl @@ -7,13 +7,10 @@ @prefix prov: . @prefix dc: . +@prefix address_shape: . -@prefix address-shape: . - - - -address-shape:AddressShape - rdfs:label "Address"; +address_shape:AddressShape + sh:name "Address"; sh:targetClass vcard:Address; a sh:NodeShape ; sh:codeIdentifier "Address"; @@ -24,7 +21,7 @@ address-shape:AddressShape sh:property [ - rdfs:label "Street Address"; + sh:name "Street Address"; sh:path vcard:street-address ; sh:datatype xsd:string ; sh:maxLength 128 ; @@ -33,7 +30,7 @@ address-shape:AddressShape ] ; sh:property [ - rdfs:label "Locality"; + sh:name "Locality"; sh:path vcard:locality ; sh:datatype xsd:string ; sh:maxLength 128 ; @@ -42,7 +39,7 @@ address-shape:AddressShape ] ; sh:property [ - rdfs:label "Postal Code"; + sh:name "Postal Code"; sh:path vcard:postal-code ; sh:datatype xsd:string ; sh:maxLength 25 ; @@ -51,7 +48,7 @@ address-shape:AddressShape ] ; sh:property [ - rdfs:label "Region"; + sh:name "Region"; sh:path vcard:region ; sh:datatype xsd:string ; sh:maxLength 128 ; @@ -60,7 +57,7 @@ address-shape:AddressShape ] ; sh:property [ - rdfs:label "Country Name"; + sh:name "Country Name"; sh:path vcard:country-name ; sh:datatype xsd:string ; sh:maxLength 128 ; diff --git a/shapes/address-book.ttl b/shapes/address_book.ttl similarity index 57% rename from shapes/address-book.ttl rename to shapes/address_book.ttl index 5a3093d..971f49d 100644 --- a/shapes/address-book.ttl +++ b/shapes/address_book.ttl @@ -7,13 +7,13 @@ @prefix prov: . @prefix dc: . -@prefix address-book-shape: . +@prefix address_book_shape: . -address-book-shape:AddressBookShape a sh:NodeShape ; - rdfs:label "AddressBook"; +address_book_shape:AddressBookShape a sh:NodeShape ; + sh:name "AddressBook"; sh:targetClass vcard:AddressBook ; - rdfs:comment "Represents a collection of vCard people and/or vCard groups" ; - rdfs:comment "This class is not part of vCard as defined by the IETF" ; + sh:description "Represents a collection of vCard people and/or vCard groups" ; + sh:description "This class is not part of vCard as defined by the IETF" ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; prov:wasDerivedFrom ; @@ -22,16 +22,16 @@ address-book-shape:AddressBookShape a sh:NodeShape ; sh:codeIdentifier "AddressBook"; sh:property [ - rdfs:label "Formatted name"; + sh:name "Formatted name"; sh:path vcard:fn ; sh:datatype xsd:string; sh:minCount 1; sh:codeIdentifier "formattedName"; ]; sh:property [ - rdfs:label "Name Email Index" ; - rdfs:comment "Links an AddressBook to a document containing Individuals that appear in it" ; - rdfs:comment "This property is not part of vCard as defined by the IETF" ; + sh:name "Name Email Index" ; + sh:description "Links an AddressBook to a document containing Individuals that appear in it" ; + sh:description "This property is not part of vCard as defined by the IETF" ; sh:path vcard:nameEmailIndex ; sh:datatype xsd:anyURI; sh:minCount 1; @@ -39,9 +39,9 @@ address-book-shape:AddressBookShape a sh:NodeShape ; ]; sh:property [ - rdfs:label "Group Index" ; - rdfs:comment "Links an AddressBook to a document containing all its includesGroup properties" ; - rdfs:comment "This property is not part of vCard as defined by the IETF" ; + sh:name "Group Index" ; + sh:description "Links an AddressBook to a document containing all its includesGroup properties" ; + sh:description "This property is not part of vCard as defined by the IETF" ; sh:path vcard:groupIndex ; sh:datatype xsd:anyURI; sh:minCount 1; @@ -50,9 +50,9 @@ address-book-shape:AddressBookShape a sh:NodeShape ; ] ; sh:property [ - rdfs:label "Includes Group" ; - rdfs:comment "When included in the group index document of an AddressBook, adds the group to the AddressBook" ; - rdfs:comment "This property is not part of vCard as defined by the IETF" ; + sh:name "Includes Group" ; + sh:description "When included in the group index document of an AddressBook, adds the group to the AddressBook" ; + sh:description "This property is not part of vCard as defined by the IETF" ; sh:path vcard:includesGroup ; sh:datatype xsd:anyURI; sh:codeIdentifier "includesGroup"; @@ -60,9 +60,9 @@ address-book-shape:AddressBookShape a sh:NodeShape ; ] ; sh:property [ - rdfs:label "in AddressBook" ; - rdfs:comment "Indicates that an Individual appears in an AddressBook" ; - rdfs:comment "This property is not part of vCard as defined by the IETF" ; + sh:name "in AddressBook" ; + sh:description "Indicates that an Individual appears in an AddressBook" ; + sh:description "This property is not part of vCard as defined by the IETF" ; sh:path vcard:inAddressBook ; ## Inverse sh:datatype xsd:anyURI; sh:minCount 1; diff --git a/shapes/agent.ttl b/shapes/agent.ttl index 5bf8808..8038329 100644 --- a/shapes/agent.ttl +++ b/shapes/agent.ttl @@ -12,36 +12,36 @@ @prefix pim: . @prefix solid: . -@prefix person-shape: . -@prefix organization-shape: . -@prefix software-agent-shape: . +@prefix person_shape: . +@prefix organization_shape: . +@prefix software_agent_shape: . -@prefix agent-shape: . +@prefix agent_shape: . -agent-shape:AgentShape +agent_shape:AgentShape a sh:NodeShape ; sh:targetClass foaf:Agent ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; - rdfs:label "Agent Shape" ; - rdfs:comment "SHACL shape representing an agent, which can be a person, organization, or software agent." ; + sh:name "Agent Shape" ; + sh:description "SHACL shape representing an agent, which can be a person, organization, or software agent." ; dc:source ; prov:wasDerivedFrom ; sh:codeIdentifier "Agent" ; sh:xone ( - [ sh:node person-shape:ContactPersonShape ] - [ sh:node organization-shape:ContactOrganizationShape ] - [ sh:node software-agent-shape::ContactSoftwareAgentShape ] + [ sh:node person_shape:ContactPersonShape ] + [ sh:node organization_shape:ContactOrganizationShape ] + [ sh:node software_agent_shape::ContactSoftwareAgentShape ] ) . -agent-shape:WebIdAgentShape +agent_shape:WebIdAgentShape a sh:NodeShape ; sh:targetClass foaf:Agent ; - rdfs:label "Agent Shape" ; - rdfs:comment "Represents an agent, which can be a person, organization, or software agent." ; + sh:name "Agent Shape" ; + sh:description "Represents an agent, which can be a person, organization, or software agent." ; dct:created "2026-03-18"^^xsd:date ; dc:source ; prov:wasDerivedFrom ; diff --git a/shapes/bookmark.ttl b/shapes/bookmark.ttl index 1298260..f261b15 100644 --- a/shapes/bookmark.ttl +++ b/shapes/bookmark.ttl @@ -7,30 +7,30 @@ @prefix dc: . @prefix prov: . -@prefix bookmark-shape: . +@prefix bookmark_shape: . -bookmark-shape:BookmarkShape +bookmark_shape:BookmarkShape a sh:NodeShape ; sh:targetClass bookmark:Bookmark ; - rdfs:label "Bookmark" ; - rdfs:comment "A Bookmark node with label, URL, topic, and description" ; + sh:name "Bookmark" ; + sh:description "A Bookmark node with label, URL, topic, and description" ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; prov:wasDerivedFrom ; dct:references ; # references the Annotea Bookmark schema, which defines the bookmark:Bookmark class and its properties dct:references ; # references the bookmark:Bookmark class in the W3C Bookmark vocabulary (the Annotea Bookmark ontology) - rdfs:comment "This shape does not include all properties defined for bookmark:Bookmark in the W3C Bookmark vocabulary (the Annotea Bookmark ontology), but only those relevant to the use case of representing bookmarks on a dashboard" ; + sh:description "This shape does not include all properties defined for bookmark:Bookmark in the W3C Bookmark vocabulary (the Annotea Bookmark ontology), but only those relevant to the use case of representing bookmarks on a dashboard" ; sh:codeIdentifier "Bookmark"; # Label property sh:property [ - sh:path rdfs:label ; + sh:path sh:name ; sh:datatype xsd:string ; - rdfs:label "Label" ; sh:name "Label" ; - rdfs:comment "Human-readable name of the bookmark" ; + sh:name "Label" ; + sh:description "Human-readable name of the bookmark" ; sh:codeIdentifier "label"; ] ; @@ -38,9 +38,9 @@ bookmark-shape:BookmarkShape sh:property [ sh:path bookmark:recalls ; sh:datatype xsd:anyURI ; - rdfs:label "URL" ; sh:name "URL" ; - rdfs:comment "The URL that the bookmark points to" ; + sh:name "URL" ; + sh:description "The URL that the bookmark points to" ; sh:codeIdentifier "url"; ] ; @@ -48,18 +48,18 @@ bookmark-shape:BookmarkShape sh:property [ sh:path bookmark:hasTopic ; sh:datatype xsd:string ; - rdfs:label "Topic" ; sh:name "Topic" ; - rdfs:comment "Topic or category of the bookmark" ; + sh:name "Topic" ; + sh:description "Topic or category of the bookmark" ; sh:codeIdentifier "topic"; ] ; # Description property sh:property [ - sh:path rdfs:comment ; + sh:path sh:description ; sh:datatype xsd:string ; - rdfs:label "Description" ; sh:name "Description" ; - rdfs:comment "Optional description of the bookmark" ; + sh:name "Description" ; + sh:description "Optional description of the bookmark" ; sh:codeIdentifier "description"; ] . diff --git a/shapes/chat.ttl b/shapes/chat.ttl index 158819c..7ff8265 100644 --- a/shapes/chat.ttl +++ b/shapes/chat.ttl @@ -15,271 +15,271 @@ @prefix dct: . @prefix vs: . @prefix prov: . -@prefix chat-shape: . +@prefix chat_shape: . ##################### Chat Channel Shape -chat-shape:ChatChannelShape a sh:NodeShape ; - rdfs:label "Chat Channel Shape" ; - rdfs:comment "SHACL NodeShape describing the properties and constraints for a Solid Chat" ; +chat_shape:ChatChannelShape a sh:NodeShape ; + sh:name "Chat Channel Shape" ; + sh:description "SHACL NodeShape describing the properties and constraints for a Solid Chat" ; sh:targetClass mee:LongChat ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; prov:wasDerivedFrom ; sh:codeIdentifier "ChatChannel" ; - sh:property chat-shape:ChatChannelShape_type, - chat-shape:ChatChannelShape_author, - chat-shape:ChatChannelShape_title, - chat-shape:ChatChannelShape_createdDate, - chat-shape:ChatChannelShape_sharedPreferences, - chat-shape:ChatChannelShape_participation . - -chat-shape:ChatChannelShape_type a sh:PropertyShape ; + sh:property chat_shape:chatchannelshape_type, + chat_shape:chatchannelshape_author, + chat_shape:chatchannelshape_title, + chat_shape:chatchannelshape_createddate, + chat_shape:chatchannelshape_sharedpreferences, + chat_shape:chatchannelshape_participation . + +chat_shape:chatchannelshape_type a sh:PropertyShape ; sh:path rdf:type ; sh:value mee:LongChat ; sh:minCount 1 ; - rdfs:label "Type" ; - rdfs:comment "Specifies that the node must be of type LongChat." ; + sh:name "Type" ; + sh:description "Specifies that the node must be of type LongChat." ; sh:codeIdentifier "type" . -chat-shape:ChatChannelShape_author a sh:PropertyShape ; +chat_shape:chatchannelshape_author a sh:PropertyShape ; sh:path dc:author ; sh:minCount 1 ; - rdfs:label "Author" ; - rdfs:comment "The author of the chat channel." ; + sh:name "Author" ; + sh:description "The author of the chat channel." ; sh:codeIdentifier "author" . -chat-shape:ChatChannelShape_title a sh:PropertyShape ; +chat_shape:chatchannelshape_title a sh:PropertyShape ; sh:path dc:title ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ; - rdfs:label "Title" ; - rdfs:comment "The title of the chat channel." ; + sh:name "Title" ; + sh:description "The title of the chat channel." ; sh:codeIdentifier "title" . -chat-shape:ChatChannelShape_createdDate a sh:PropertyShape ; +chat_shape:chatchannelshape_createddate a sh:PropertyShape ; sh:path dc:created ; sh:datatype xsd:dateTime ; sh:minCount 1 ; sh:maxCount 1 ; - rdfs:label "Created Date" ; - rdfs:comment "The creation date of the chat channel." ; + sh:name "Created Date" ; + sh:description "The creation date of the chat channel." ; sh:codeIdentifier "createdDate" . -chat-shape:ChatChannelShape_sharedPreferences a sh:PropertyShape ; +chat_shape:chatchannelshape_sharedpreferences a sh:PropertyShape ; sh:path ui:sharedPreferences ; - sh:node chat-shape:ChatSharedPreferencesShape ; + sh:node chat_shape:ChatSharedPreferencesShape ; sh:minCount 0 ; - rdfs:label "Shared Preferences" ; - rdfs:comment "References user interface preferences shared in the chat." ; + sh:name "Shared Preferences" ; + sh:description "References user interface preferences shared in the chat." ; sh:codeIdentifier "sharedPreferences" . -chat-shape:ChatChannelShape_participation a sh:PropertyShape ; +chat_shape:chatchannelshape_participation a sh:PropertyShape ; sh:path flow:participation ; - sh:node chat-shape:ChatParticipationShape ; - rdfs:label "Participation" ; - rdfs:comment "Indicates participants in the chat channel." ; + sh:node chat_shape:ChatParticipationShape ; + sh:name "Participation" ; + sh:description "Indicates participants in the chat channel." ; sh:codeIdentifier "participation" . ##################### Chat Message Shape -chat-shape:ChatMessageShape a sh:NodeShape ; - rdfs:label "Chat Message Shape" ; - rdfs:comment "SHACL NodeShape defining constraints for messages in Solid Chat." ; +chat_shape:ChatMessageShape a sh:NodeShape ; + sh:name "Chat Message Shape" ; + sh:description "SHACL NodeShape defining constraints for messages in Solid Chat." ; sh:targetObjectsOf flow:message ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; prov:wasDerivedFrom ; sh:codeIdentifier "ChatMessage" ; - sh:property chat-shape:ChatMessageShape_createdDate, - chat-shape:ChatMessageShape_author, - chat-shape:ChatMessageShape_content + sh:property chat_shape:chatmessageshape_createddate, + chat_shape:chatmessageshape_author, + chat_shape:chatmessageshape_content . - # chat-shape:ChatMessageShape_relatedChatChannel unsupported at this time + # chat_shape:chatmessageshape_relatedChatChannel unsupported at this time -chat-shape:ChatMessageShape_createdDate a sh:PropertyShape ; +chat_shape:chatmessageshape_createddate a sh:PropertyShape ; sh:path terms:created ; sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:dateTime ; - rdfs:label "Created Date" ; - rdfs:comment "The date and time when the message was created." ; + sh:name "Created Date" ; + sh:description "The date and time when the message was created." ; sh:codeIdentifier "createdDate" . -chat-shape:ChatMessageShape_author a sh:PropertyShape ; +chat_shape:chatmessageshape_author a sh:PropertyShape ; sh:path foaf:maker ; sh:minCount 1 ; sh:maxCount 1 ; - rdfs:label "Message Author" ; - rdfs:comment "The agent or person who authored the message." ; + sh:name "Message Author" ; + sh:description "The agent or person who authored the message." ; sh:codeIdentifier "author" . -chat-shape:ChatMessageShape_content a sh:PropertyShape ; +chat_shape:chatmessageshape_content a sh:PropertyShape ; sh:path sioc:content ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ; - rdfs:label "Message Content" ; - rdfs:comment "The textual content of the message." ; + sh:name "Message Content" ; + sh:description "The textual content of the message." ; sh:codeIdentifier "content" . -chat-shape:ChatMessageShape_relatedChatChannel a sh:PropertyShape ; +chat_shape:chatmessageshape_relatedchatchannel a sh:PropertyShape ; sh:path [ sh:inversePath flow:message ] ; sh:minCount 1 ; - rdfs:label "Related Chat" ; - rdfs:comment "The chat channel or conversation to which this message belongs." ; + sh:name "Related Chat" ; + sh:description "The chat channel or conversation to which this message belongs." ; sh:codeIdentifier "relatedChatChannel" . ##################### Chat Participation Shape -chat-shape:ChatParticipationShape a sh:NodeShape ; - rdfs:label "Participation Shape" ; - rdfs:comment "SHACL NodeShape defining constraints for a participant in a Solid Chat." ; +chat_shape:ChatParticipationShape a sh:NodeShape ; + sh:name "Participation Shape" ; + sh:description "SHACL NodeShape defining constraints for a participant in a Solid Chat." ; sh:targetObjectsOf flow:participation ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; prov:wasDerivedFrom ; sh:codeIdentifier "Participation" ; - sh:property chat-shape:ChatParticipationShape_startDate, - chat-shape:ChatParticipationShape_participant, - chat-shape:ChatParticipationShape_colorizeByAuthor, - chat-shape:ChatParticipationShape_expandImagesInline, - chat-shape:ChatParticipationShape_inlineImageHeight, - chat-shape:ChatParticipationShape_newestFirst, - chat-shape:ChatParticipationShape_backgroundColor . - -chat-shape:ChatParticipationShape_startDate a sh:PropertyShape ; + sh:property chat_shape:chatparticipationshape_startdate, + chat_shape:chatparticipationshape_participant, + chat_shape:chatparticipationshape_colorizebyauthor, + chat_shape:chatparticipationshape_expandimagesinline, + chat_shape:chatparticipationshape_inlineimageheight, + chat_shape:chatparticipationshape_newestfirst, + chat_shape:chatparticipationshape_backgroundcolor . + +chat_shape:chatparticipationshape_startdate a sh:PropertyShape ; sh:path ical:dtstart ; sh:datatype xsd:dateTime ; sh:minCount 1 ; sh:maxCount 1 ; - rdfs:label "Start Date" ; - rdfs:comment "The date and time when the participation started." ; + sh:name "Start Date" ; + sh:description "The date and time when the participation started." ; sh:codeIdentifier "startDate" . -chat-shape:ChatParticipationShape_participant a sh:PropertyShape ; +chat_shape:chatparticipationshape_participant a sh:PropertyShape ; sh:path flow:participant ; sh:minCount 1 ; sh:maxCount 1 ; - rdfs:label "Participant" ; - rdfs:comment "The agent or person participating in the chat." ; + sh:name "Participant" ; + sh:description "The agent or person participating in the chat." ; sh:codeIdentifier "participant" . -chat-shape:ChatParticipationShape_colorizeByAuthor a sh:PropertyShape ; +chat_shape:chatparticipationshape_colorizebyauthor a sh:PropertyShape ; sh:path solid:colorizeByAuthor ; sh:datatype xsd:boolean ; sh:maxCount 1 ; - rdfs:label "Colorize By Author" ; - rdfs:comment "Indicates if messages from this participant should be colorized by author." ; + sh:name "Colorize By Author" ; + sh:description "Indicates if messages from this participant should be colorized by author." ; sh:codeIdentifier "colorizeByAuthor" . -chat-shape:ChatParticipationShape_expandImagesInline a sh:PropertyShape ; +chat_shape:chatparticipationshape_expandimagesinline a sh:PropertyShape ; sh:path solid:expandImagesInline ; sh:datatype xsd:boolean ; sh:maxCount 1 ; - rdfs:label "Expand Images Inline" ; - rdfs:comment "Indicates if images should be displayed inline for this participant." ; + sh:name "Expand Images Inline" ; + sh:description "Indicates if images should be displayed inline for this participant." ; sh:codeIdentifier "expandImagesInline" . -chat-shape:ChatParticipationShape_inlineImageHeight a sh:PropertyShape ; +chat_shape:chatparticipationshape_inlineimageheight a sh:PropertyShape ; sh:path solid:inlineImageHeightEms ; sh:datatype xsd:integer ; sh:maxCount 1 ; - rdfs:label "Inline Image Height (ems)" ; + sh:name "Inline Image Height (ems)" ; sh:comment "Preferred height of inline images in em units for this participant." ; sh:codeIdentifier "inlineImageHeight" . -chat-shape:ChatParticipationShape_newestFirst a sh:PropertyShape ; +chat_shape:chatparticipationshape_newestfirst a sh:PropertyShape ; sh:path solid:newestFirst ; sh:datatype xsd:boolean ; sh:maxCount 1 ; - rdfs:label "Newest First" ; - rdfs:comment "If true, messages are displayed newest first for this participant." ; + sh:name "Newest First" ; + sh:description "If true, messages are displayed newest first for this participant." ; sh:codeIdentifier "newestFirst" . -chat-shape:ChatParticipationShape_backgroundColor a sh:PropertyShape ; +chat_shape:chatparticipationshape_backgroundcolor a sh:PropertyShape ; sh:path ui:backgroundColor ; sh:datatype xsd:string ; sh:maxCount 1 ; sh:pattern "#[0-9a-f]{6}" ; - rdfs:label "Background Color" ; - rdfs:comment "Preferred background color for the participant in hexadecimal format." ; + sh:name "Background Color" ; + sh:description "Preferred background color for the participant in hexadecimal format." ; sh:codeIdentifier "backgroundColor" . ##################### Chat Shared Preferences Shape -chat-shape:ChatSharedPreferencesShape a sh:NodeShape ; - rdfs:label "Chat Shared Preferences Shape" ; - rdfs:comment "NodeShape defining shared UI preferences for chat participants." ; +chat_shape:ChatSharedPreferencesShape a sh:NodeShape ; + sh:name "Chat Shared Preferences Shape" ; + sh:description "NodeShape defining shared UI preferences for chat participants." ; sh:targetObjectsOf ui:sharedPreferences ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; prov:wasDerivedFrom ; sh:codeIdentifier "ChatSharedPreferences" ; - sh:property chat-shape:ChatSharedPreferencesShape_expandImagesInline, - chat-shape:ChatSharedPreferencesShape_inlineImageHeight, - chat-shape:ChatSharedPreferencesShape_newestFirst . + sh:property chat_shape:chatsharedpreferencesshape_expandimagesinline, + chat_shape:chatsharedpreferencesshape_inlineimageheight, + chat_shape:chatsharedpreferencesshape_newestfirst . -chat-shape:ChatSharedPreferencesShape_expandImagesInline a sh:PropertyShape ; +chat_shape:chatsharedpreferencesshape_expandimagesinline a sh:PropertyShape ; sh:path solid:expandImagesInline ; sh:datatype xsd:boolean ; sh:maxCount 1 ; - rdfs:label "Expand Images Inline" ; - rdfs:comment "Indicates whether images should be expanded inline in the chat UI." ; + sh:name "Expand Images Inline" ; + sh:description "Indicates whether images should be expanded inline in the chat UI." ; sh:codeIdentifier "expandImagesInline" . -chat-shape:ChatSharedPreferencesShape_inlineImageHeight a sh:PropertyShape ; +chat_shape:chatsharedpreferencesshape_inlineimageheight a sh:PropertyShape ; sh:path solid:inlineImageHeightEms ; sh:datatype xsd:integer ; sh:maxCount 1 ; - rdfs:label "Inline Image Height (ems)" ; - rdfs:comment "Preferred height for inline images in em units." ; + sh:name "Inline Image Height (ems)" ; + sh:description "Preferred height for inline images in em units." ; sh:codeIdentifier "inlineImageHeight" . -chat-shape:ChatSharedPreferencesShape_newestFirst a sh:PropertyShape ; +chat_shape:chatsharedpreferencesshape_newestfirst a sh:PropertyShape ; sh:path solid:newestFirst ; sh:datatype xsd:boolean ; sh:maxCount 1 ; - rdfs:label "Newest First" ; - rdfs:comment "If true, messages are displayed newest first in the chat UI." ; + sh:name "Newest First" ; + sh:description "If true, messages are displayed newest first in the chat UI." ; sh:codeIdentifier "newestFirst" . ##################### Chat Action Shape -chat-shape:ChatActionShape a sh:NodeShape ; - rdfs:label "Chat Action Shape" ; - rdfs:comment "NodeShape defining constraints for actions representing interactions or sentiments in the chat system." ; +chat_shape:ChatActionShape a sh:NodeShape ; + sh:name "Chat Action Shape" ; + sh:description "NodeShape defining constraints for actions representing interactions or sentiments in the chat system." ; sh:targetClass schema:Action ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; prov:wasDerivedFrom ; sh:codeIdentifier "ChatAction" ; - sh:property chat-shape:ChatActionShape_type, - chat-shape:ChatActionShape_agent, - chat-shape:ChatActionShape_target + sh:property chat_shape:chatactionshape_type, + chat_shape:chatactionshape_agent, + chat_shape:chatactionshape_target . -chat-shape:ChatActionShape_type a sh:PropertyShape ; +chat_shape:chatactionshape_type a sh:PropertyShape ; sh:path rdf:type ; sh:minCount 1 ; - rdfs:label "Type" ; + sh:name "Type" ; sh:codeIdentifier "type" . -chat-shape:ChatActionShape_agent a sh:PropertyShape ; +chat_shape:chatactionshape_agent a sh:PropertyShape ; sh:path schema:agent ; sh:maxCount 1 ; - rdfs:label "Agent" ; + sh:name "Agent" ; sh:codeIdentifier "agent" . -chat-shape:ChatActionShape_target a sh:PropertyShape ; +chat_shape:chatactionshape_target a sh:PropertyShape ; sh:path schema:target ; sh:minCount 1 ; sh:maxCount 1 ; - rdfs:label "Target" ; + sh:name "Target" ; sh:codeIdentifier "target" . \ No newline at end of file diff --git a/shapes/container.ttl b/shapes/container.ttl index 00d537c..96aa703 100644 --- a/shapes/container.ttl +++ b/shapes/container.ttl @@ -7,21 +7,21 @@ @prefix vs: . @prefix xsd: . -@prefix resource-shape: . +@prefix resource_shape: . -@prefix container-shape: . +@prefix container_shape: . -container-shape:ContainerShape a sh:NodeShape ; +container_shape:ContainerShape a sh:NodeShape ; dc:source ; prov:wasDerivedFrom ; - rdfs:label "Container"; + sh:name "Container"; sh:codeIdentifier "Container"; dct:created "2026-03-18"^^xsd:date ; vs:term_status "testing"; sh:property [ sh:path ldp:contains ; - sh:node resource-shape:ResourceShape ; + sh:node resource_shape:ResourceShape ; sh:codeIdentifier "contains" ; ] . \ No newline at end of file diff --git a/shapes/email.ttl b/shapes/email.ttl index de74b0a..0455b26 100644 --- a/shapes/email.ttl +++ b/shapes/email.ttl @@ -8,14 +8,12 @@ @prefix prov: . @prefix dc: . -@prefix email-shape: . +@prefix email_shape: . - - -email-shape:EmailShape a sh:NodeShape; - rdfs:label "Email Shape" ; - rdfs:comment "SHACL shape describing the structure of an email contact node including its value and optional classification type." ; +email_shape:EmailShape a sh:NodeShape; + sh:name "Email Shape" ; + sh:description "SHACL shape describing the structure of an email contact node including its value and optional classification type." ; sh:targetObjectsOf vcard:hasEmail; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; @@ -30,17 +28,17 @@ email-shape:EmailShape a sh:NodeShape; sh:minCount 1; sh:maxCount 1 ; sh:datatype xsd:string ; - rdfs:label "Email Address" ; - rdfs:comment "The email address value (e.g., user@example.org)."; + sh:name "Email Address" ; + sh:description "The email address value (e.g., user@example.org)."; sh:codeIdentifier "emailAddress"; ]. -email-shape:EmailWithTypeShape +email_shape:EmailWithTypeShape a sh:NodeShape ; sh:targetObjectsOf vcard:hasEmail ; - rdfs:label "Email Shape" ; - rdfs:comment "SHACL shape describing the structure of an email contact node including its value and optional classification type." ; + sh:name "Email Shape" ; + sh:description "SHACL shape describing the structure of an email contact node including its value and optional classification type." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; @@ -53,13 +51,13 @@ email-shape:EmailWithTypeShape sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ; - rdfs:label "Email Address" ; - rdfs:comment "The email address value (e.g., user@example.org)."; + sh:name "Email Address" ; + sh:description "The email address value (e.g., user@example.org)."; sh:codeIdentifier "emailAddress"; ] ; sh:property [ sh:path rdf:type ; - rdfs:label "Email Type" ; - rdfs:comment "The classification of the email (e.g., home or work)."; + sh:name "Email Type" ; + sh:description "The classification of the email (e.g., home or work)."; sh:codeIdentifier "emailType"; ] . \ No newline at end of file diff --git a/shapes/event.ttl b/shapes/event.ttl index 250a186..8a031d2 100644 --- a/shapes/event.ttl +++ b/shapes/event.ttl @@ -8,26 +8,26 @@ @prefix prov: . @prefix dc: . -@prefix event-shape: . +@prefix event_shape: . -event-shape:ScheduleEventShape +event_shape:ScheduleEventShape a sh:NodeShape ; - rdfs:label "Schedule Event Shape" ; - rdfs:comment "SHACL shape representing a scheduled event, including title, location, type, duration, authors, time proposals, and invitees." ; + sh:name "Schedule Event Shape" ; + sh:description "SHACL shape representing a scheduled event, including title, location, type, duration, authors, time proposals, and invitees." ; sh:targetClass cal:Vevent ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; prov:wasDerivedFrom ; - rdfs:comment "Schedule event forms (single form / multi-step)"; + sh:description "Schedule event forms (single form / multi-step)"; sh:codeIdentifier "ScheduleEvent"; # Event title sh:property [ sh:path cal:summary ; sh:datatype xsd:string ; - rdfs:label "Event Title" ; - rdfs:comment "The title or summary of the event."; + sh:name "Event Title" ; + sh:description "The title or summary of the event."; sh:codeIdentifier "title"; ] ; @@ -35,8 +35,8 @@ event-shape:ScheduleEventShape sh:property [ sh:path cal:location ; sh:datatype xsd:string ; - rdfs:label "Event Location" ; - rdfs:comment "The location where the event takes place."; + sh:name "Event Location" ; + sh:description "The location where the event takes place."; sh:codeIdentifier "location"; ] ; @@ -45,8 +45,8 @@ event-shape:ScheduleEventShape sh:path sched:allDay ; sh:datatype xsd:boolean ; sh:maxCount 1 ; - rdfs:label "All-day Event" ; - rdfs:comment "Indicates whether the event lasts all day or has a specific time."; + sh:name "All-day Event" ; + sh:description "Indicates whether the event lasts all day or has a specific time."; sh:codeIdentifier "isAllDayEvent"; ] ; @@ -54,8 +54,8 @@ event-shape:ScheduleEventShape sh:property [ sh:path sched:durationInDays ; sh:datatype xsd:integer ; - rdfs:label "Duration in Days" ; - rdfs:comment "Duration of the event in days for all-day events."; + sh:name "Duration in Days" ; + sh:description "Duration of the event in days for all-day events."; sh:codeIdentifier "durationDays"; ]; @@ -63,8 +63,8 @@ event-shape:ScheduleEventShape sh:property [ sh:path sched:durationInMinutes ; sh:datatype xsd:integer ; - rdfs:label "Duration in Minutes" ; - rdfs:comment "Duration of the event in minutes for single day events."; + sh:name "Duration in Minutes" ; + sh:description "Duration of the event in minutes for single day events."; sh:codeIdentifier "durationMinutes"; ]; @@ -72,8 +72,8 @@ event-shape:ScheduleEventShape sh:property [ sh:path cal:comment ; sh:datatype xsd:string ; - rdfs:label "Event Comment" ; - rdfs:comment "Comment about the the event."; + sh:name "Event Comment" ; + sh:description "Comment about the the event."; sh:codeIdentifier "comment"; ] ; diff --git a/shapes/group.ttl b/shapes/group.ttl index 04b2a17..9de4d87 100644 --- a/shapes/group.ttl +++ b/shapes/group.ttl @@ -8,14 +8,14 @@ @prefix prov: . @prefix dc: . -@prefix person-shape: . +@prefix person_shape: . -@prefix group-shape: . +@prefix group_shape: . -group-shape:GroupShape +group_shape:GroupShape a sh:NodeShape ; - rdfs:label "Group Shape" ; - rdfs:comment "Defines constraints for a vCard Group including its name and members." ; + sh:name "Group Shape" ; + sh:description "Defines constraints for a vCard Group including its name and members." ; sh:targetClass vcard:Group ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; @@ -28,24 +28,24 @@ group-shape:GroupShape sh:path vcard:fn ; sh:datatype xsd:string ; sh:minCount 1 ; - rdfs:label "Group Name" ; - rdfs:comment "The formatted name of the group."; + sh:name "Group Name" ; + sh:description "The formatted name of the group."; sh:codeIdentifier "name"; ] ; sh:property [ sh:path vcard:member ; - sh:node person-shape:ContactDetailsPersonShape ; - rdfs:label "Group Member" ; - rdfs:comment "A member of the group. When the WebID of an agent is known, it MUST be used as the object of this triple so that ACL systems can grant access correctly. The main local identifier in the address book must be linked indirectly using owl:sameAs via the GroupMemberLocalId shape. Additional identifiers may also be linked using owl:sameAs."; + sh:node person_shape:ContactDetailsPersonShape ; + sh:name "Group Member" ; + sh:description "A member of the group. When the WebID of an agent is known, it MUST be used as the object of this triple so that ACL systems can grant access correctly. The main local identifier in the address book must be linked indirectly using owl:sameAs via the GroupMemberLocalId shape. Additional identifiers may also be linked using owl:sameAs."; sh:codeIdentifier "member"; ] . -group-shape:GroupMemberLocalIdShape +group_shape:GroupMemberLocalIdShape a sh:NodeShape ; - rdfs:label "Group Member Local Identifier Shape" ; - rdfs:comment "Ensures that a group member's local identifier links to exactly one vCard Individual using owl:sameAs." ; + sh:name "Group Member Local Identifier Shape" ; + sh:description "Ensures that a group member's local identifier links to exactly one vCard Individual using owl:sameAs." ; sh:targetObjectsOf vcard:member ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; @@ -60,37 +60,37 @@ group-shape:GroupMemberLocalIdShape sh:minCount 1 ; sh:maxCount 1 ; sh:class vcard:Individual ; - rdfs:label "Same As Individual" ; - rdfs:comment "Links the local group member identifier to exactly one vCard Individual resource."; + sh:name "Same As Individual" ; + sh:description "Links the local group member identifier to exactly one vCard Individual resource."; sh:codeIdentifier "sameAsIndividual"; ] . -group-shape:IssueTrackerAssigneeGroupShape +group_shape:IssueTrackerAssigneeGroupShape a sh:NodeShape ; - rdfs:label "Assignee Group Shape" ; - rdfs:comment "Defines constraints for the vCard Group used as an assignee group for issues." ; + sh:name "Assignee Group Shape" ; + sh:description "Defines constraints for the vCard Group used as an assignee group for issues." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; prov:wasDerivedFrom ; dct:referencedBy ; - rdfs:comment "Group shape used in issue tracker" ; + sh:description "Group shape used in issue tracker" ; sh:codeIdentifier "IssueTrackerAssigneeGroup"; sh:property [ sh:path vcard:fn ; sh:maxCount 1 ; sh:datatype xsd:string ; - rdfs:label "Group Name" ; - rdfs:comment "The formatted name of the group."; + sh:name "Group Name" ; + sh:description "The formatted name of the group."; sh:codeIdentifier "name"; ] ; sh:property [ sh:path vcard:member ; - sh:node person-shape:IssueTrackerPersonShape ; - rdfs:label "Group Member" ; - rdfs:comment "Each member of the group represented as a vCard Individual."; + sh:node person_shape:IssueTrackerPersonShape ; + sh:name "Group Member" ; + sh:description "Each member of the group represented as a vCard Individual."; sh:codeIdentifier "member"; ] . diff --git a/shapes/issue-tracker.ttl b/shapes/issue_tracker.ttl similarity index 64% rename from shapes/issue-tracker.ttl rename to shapes/issue_tracker.ttl index 042143c..af9003d 100644 --- a/shapes/issue-tracker.ttl +++ b/shapes/issue_tracker.ttl @@ -8,14 +8,14 @@ @prefix prov: . @prefix dc: . -@prefix group-shape: . +@prefix group_shape: . -@prefix issue-tracker-shape: . +@prefix issue_tracker_shape: . -issue-tracker-shape:IssueTrackerShape +issue_tracker_shape:IssueTrackerShape a sh:NodeShape ; - rdfs:label "Issue Tracker Configuration Shape" ; - rdfs:comment "Defines data constraints for configuring an issue tracker including title, description, workflow states, classification systems, assignment rules, optional forms, and additional properties." ; + sh:name "Issue Tracker Configuration Shape" ; + sh:description "Defines data constraints for configuring an issue tracker including title, description, workflow states, classification systems, assignment rules, optional forms, and additional properties." ; sh:targetClass wf:Tracker ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; @@ -27,51 +27,51 @@ issue-tracker-shape:IssueTrackerShape sh:property [ sh:path dct:title ; sh:datatype xsd:string ; - rdfs:label "Tracker Title" ; - rdfs:comment "The human-readable title of the issue tracker."; + sh:name "Tracker Title" ; + sh:description "The human-readable title of the issue tracker."; sh:codeIdentifier "title"; sh:maxCount 1; ], [ sh:path wf:description ; sh:datatype xsd:string ; - rdfs:label "Tracker Description" ; - rdfs:comment "A description explaining the purpose or scope of the issue tracker."; + sh:name "Tracker Description" ; + sh:description "A description explaining the purpose or scope of the issue tracker."; sh:codeIdentifier "description"; sh:maxCount 1; ], [ sh:path wf:issueClass ; sh:class rdfs:Class ; - rdfs:label "Issue State Class" ; - rdfs:comment "The states an issue may be in (e.g., Task)."; + sh:name "Issue State Class" ; + sh:description "The states an issue may be in (e.g., Task)."; sh:codeIdentifier "issueState"; ], [ sh:path wf:issueCategory ; sh:class rdfs:Class ; - rdfs:label "Issue Category" ; - rdfs:comment "Issue category"; + sh:name "Issue Category" ; + sh:description "Issue category"; sh:codeIdentifier "issueCategory"; ], [ sh:path wf:allowSubIssues ; sh:maxCount 1 ; sh:datatype xsd:boolean ; - rdfs:label "Allow Sub-Issues?" ; - rdfs:comment "Indicates whether issues may contain sub-issues."; + sh:name "Allow Sub-Issues?" ; + sh:description "Indicates whether issues may contain sub-issues."; sh:codeIdentifier "allowSubIssues"; ], # Nested propertyList [ sh:path wf:propertyList ; - sh:node issue-tracker-shape:PropertyListShape ; - rdfs:label "Additional Properties" ; - rdfs:comment "An ordered list of additional properties to display in table views of issues."; + sh:node issue_tracker_shape:PropertyListShape ; + sh:name "Additional Properties" ; + sh:description "An ordered list of additional properties to display in table views of issues."; sh:codeIdentifier "additionalProperties"; ], # Nested assignee group [ sh:path wf:assigneeGroup ; - sh:node group-shape:IssueTrackerAssigneeGroupShape ; - rdfs:label "Assignee Group" ; - rdfs:comment "The contact group from which issues may be assigned to individuals."; + sh:node group_shape:IssueTrackerAssigneeGroupShape ; + sh:name "Assignee Group" ; + sh:description "The contact group from which issues may be assigned to individuals."; sh:codeIdentifier "assigneeGroup"; ] @@ -81,10 +81,10 @@ issue-tracker-shape:IssueTrackerShape # Shape for each property in wf:propertyList ################################################################ -issue-tracker-shape:PropertyListShape +issue_tracker_shape:PropertyListShape a sh:NodeShape ; - rdfs:label "Property List Item Shape" ; - rdfs:comment "Defines constraints for each property included in the propertyList of an issue tracker." ; + sh:name "Property List Item Shape" ; + sh:description "Defines constraints for each property included in the propertyList of an issue tracker." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; @@ -93,12 +93,12 @@ issue-tracker-shape:PropertyListShape sh:property [ - sh:path rdfs:label ; + sh:path sh:name ; sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ; - rdfs:label "Property Name" ; - rdfs:comment "The human-readable name of the property."; + sh:name "Property Name" ; + sh:description "The human-readable name of the property."; sh:codeIdentifier "propertyName"; ] . diff --git a/shapes/meeting.ttl b/shapes/meeting.ttl index 9ce3c19..d4c68b8 100644 --- a/shapes/meeting.ttl +++ b/shapes/meeting.ttl @@ -7,12 +7,12 @@ @prefix prov: . @prefix dc: . -@prefix meeting-shape: . +@prefix meeting_shape: . -meeting-shape:MeetingShape +meeting_shape:MeetingShape a sh:NodeShape ; - rdfs:label "Meeting Shape" ; - rdfs:comment "Defines constraints for meeting instances including title, location, time, comments, and display color." ; + sh:name "Meeting Shape" ; + sh:description "Defines constraints for meeting instances including title, location, time, comments, and display color." ; sh:targetClass cal:Vevent ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; @@ -26,8 +26,8 @@ meeting-shape:MeetingShape sh:datatype xsd:string ; sh:maxCount 1 ; sh:maxLength 256 ; - rdfs:label "Meeting Title" ; - rdfs:comment "The name or summary of the meeting."; + sh:name "Meeting Title" ; + sh:description "The name or summary of the meeting."; sh:codeIdentifier "summary"; ] ; @@ -36,16 +36,16 @@ meeting-shape:MeetingShape sh:datatype xsd:string ; sh:maxLength 128 ; sh:maxCount 1 ; - rdfs:label "Meeting Location" ; - rdfs:comment "The location where the meeting takes place."; + sh:name "Meeting Location" ; + sh:description "The location where the meeting takes place."; sh:codeIdentifier "location"; ] ; sh:property [ sh:path cal:dtstart ; sh:datatype xsd:dateTime ; - rdfs:label "Start Date/Time" ; - rdfs:comment "The start date and time of the meeting."; + sh:name "Start Date/Time" ; + sh:description "The start date and time of the meeting."; sh:codeIdentifier "startDate"; sh:maxCount 1 ; ] ; @@ -53,8 +53,8 @@ meeting-shape:MeetingShape sh:property [ sh:path cal:dtend ; sh:datatype xsd:dateTime ; - rdfs:label "End Date/Time" ; - rdfs:comment "The end date and time of the meeting."; + sh:name "End Date/Time" ; + sh:description "The end date and time of the meeting."; sh:codeIdentifier "endDate"; sh:maxCount 1 ; ] ; @@ -62,8 +62,8 @@ meeting-shape:MeetingShape sh:property [ sh:path cal:comment ; sh:datatype xsd:string ; - rdfs:label "Comment" ; - rdfs:comment "Additional notes or comments about the meeting."; + sh:name "Comment" ; + sh:description "Additional notes or comments about the meeting."; sh:codeIdentifier "comment"; sh:maxCount 1 ; ]; diff --git a/shapes/organization.ttl b/shapes/organization.ttl index 229afa7..9053795 100644 --- a/shapes/organization.ttl +++ b/shapes/organization.ttl @@ -9,17 +9,17 @@ @prefix vs: . @prefix xsd: . -@prefix address-shape: . -@prefix email-shape: . -@prefix telephone-shape: . +@prefix address_shape: . +@prefix email_shape: . +@prefix telephone_shape: . -@prefix organization-shape: . +@prefix organization_shape: . -organization-shape:ContactOrganizationShape +organization_shape:ContactOrganizationShape a sh:NodeShape ; sh:targetClass vcard:Organization ; - rdfs:label "Organization Shape" ; - rdfs:comment "SHACL shape for validating organization contact and classification details." ; + sh:name "Organization Shape" ; + sh:description "SHACL shape for validating organization contact and classification details." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; @@ -33,8 +33,8 @@ organization-shape:ContactOrganizationShape sh:datatype xsd:string ; sh:maxLength 200 ; sh:maxCount 1; - rdfs:label "Organization Name" ; - rdfs:comment "The official name of the organization."; + sh:name "Organization Name" ; + sh:description "The official name of the organization."; sh:codeIdentifier "name"; ] ; @@ -42,8 +42,8 @@ organization-shape:ContactOrganizationShape sh:property [ sh:path schema:url ; sh:nodeKind sh:IRI ; - rdfs:label "Homepage URL" ; - rdfs:comment "The homepage or primary web address of the organization."; + sh:name "Homepage URL" ; + sh:description "The homepage or primary web address of the organization."; sh:codeIdentifier "homepageURL"; ] ; @@ -62,17 +62,17 @@ organization-shape:ContactOrganizationShape schema:Project schema:SportsOrganization ) ; - rdfs:label "Organization Type / Category" ; - rdfs:comment "Classification of the organization as one of the predefined types."; + sh:name "Organization Type / Category" ; + sh:description "Classification of the organization as one of the predefined types."; sh:codeIdentifier "typeCategory"; ] . -organization-shape:ContactDetailsOrganizationShape +organization_shape:ContactDetailsOrganizationShape a sh:NodeShape ; sh:targetClass vcard:Organization ; - rdfs:label "Organization contact details Shape" ; - rdfs:comment "SHACL shape defining data constraints for an organization contact." ; + sh:name "Organization contact details Shape" ; + sh:description "SHACL shape defining data constraints for an organization contact." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; @@ -96,8 +96,8 @@ organization-shape:ContactDetailsOrganizationShape schema:Project schema:SportsOrganization ) ; - rdfs:label "Organization Type" ; - rdfs:comment "The classification or type of organization."; + sh:name "Organization Type" ; + sh:description "The classification or type of organization."; sh:codeIdentifier "organizationType"; ] ; @@ -105,47 +105,47 @@ organization-shape:ContactDetailsOrganizationShape sh:path schema:name ; sh:datatype xsd:string ; sh:maxLength 200 ; - rdfs:label "Organization Name" ; - rdfs:comment "The official name of the organization."; + sh:name "Organization Name" ; + sh:description "The official name of the organization."; sh:codeIdentifier "name"; ] ; sh:property [ sh:path schema:url ; sh:nodeKind sh:IRI ; - rdfs:label "Homepage URL" ; - rdfs:comment "The homepage or primary website of the organization."; + sh:name "Homepage URL" ; + sh:description "The homepage or primary website of the organization."; sh:codeIdentifier "homepageURL"; ] ; sh:property [ sh:path vcard:hasAddress ; - rdfs:label "Address" ; - rdfs:comment "Address details" ; - sh:node address-shape:AddressShape ; + sh:name "Address" ; + sh:description "Address details" ; + sh:node address_shape:AddressShape ; sh:codeIdentifier "hasAddress"; ] ; sh:property [ sh:path vcard:hasEmail ; - rdfs:label "Email Addresses" ; - rdfs:comment "Email addresses." ; - sh:node email-shape:EmailWithTypeShape ; + sh:name "Email Addresses" ; + sh:description "Email addresses." ; + sh:node email_shape:EmailWithTypeShape ; sh:codeIdentifier "hasEmailAddress"; ] ; sh:property [ sh:path vcard:hasTelephone ; - rdfs:label "Telephone Numbers" ; - rdfs:comment "Telephone numbers associated with the organization." ; - sh:node telephone-shape:TelephoneShape ; + sh:name "Telephone Numbers" ; + sh:description "Telephone numbers associated with the organization." ; + sh:node telephone_shape:TelephoneShape ; sh:codeIdentifier "hasTelephoneNumber"; ] ; sh:property [ sh:path vcard:note ; - rdfs:label "Notes" ; - rdfs:comment "General notes about the organization." ; + sh:name "Notes" ; + sh:description "General notes about the organization." ; sh:codeIdentifier "notes"; ] . diff --git a/shapes/person.ttl b/shapes/person.ttl index 8aff268..290d0c4 100644 --- a/shapes/person.ttl +++ b/shapes/person.ttl @@ -9,15 +9,15 @@ @prefix prov: . @prefix dc: . -@prefix telephone-shape: . -@prefix email-shape: . -@prefix address-shape: . +@prefix telephone_shape: . +@prefix email_shape: . +@prefix address_shape: . -@prefix person-shape: . +@prefix person_shape: . -person-shape:ContactDetailsPersonShape a sh:NodeShape ; - rdfs:label "Person Shape" ; - rdfs:comment "SHACL shape representing a person" ; +person_shape:ContactDetailsPersonShape a sh:NodeShape ; + sh:name "Person Shape" ; + sh:description "SHACL shape representing a person" ; sh:targetClass vcard:Individual ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; @@ -27,7 +27,7 @@ person-shape:ContactDetailsPersonShape a sh:NodeShape ; sh:property [ sh:path vcard:fn ; - rdfs:label "Full Name" ; + sh:name "Full Name" ; sh:datatype xsd:string; sh:codeIdentifier "fullName"; sh:maxCount 1; @@ -35,8 +35,8 @@ person-shape:ContactDetailsPersonShape a sh:NodeShape ; sh:property [ sh:path vcard:role ; - rdfs:label "Role" ; - rdfs:comment "The role or job title of the person." ; + sh:name "Role" ; + sh:description "The role or job title of the person." ; sh:datatype xsd:string; sh:codeIdentifier "role"; sh:maxCount 1; @@ -44,8 +44,8 @@ person-shape:ContactDetailsPersonShape a sh:NodeShape ; sh:property [ sh:path vcard:organization-name ; - rdfs:label "Organization Name" ; - rdfs:comment "The organization the person belongs to."; + sh:name "Organization Name" ; + sh:description "The organization the person belongs to."; sh:datatype xsd:string; sh:codeIdentifier "organizationName"; sh:maxCount 1; @@ -53,27 +53,27 @@ person-shape:ContactDetailsPersonShape a sh:NodeShape ; sh:property [ sh:path vcard:hasAddress ; - sh:node address-shape:AddressShape; - rdfs:label "Address" ; - rdfs:comment "Address details" ; + sh:node address_shape:AddressShape; + sh:name "Address" ; + sh:description "Address details" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:codeIdentifier "address"; ]; sh:property [ sh:path vcard:hasEmail ; - sh:node email-shape:EmailWithTypeShape; - rdfs:label "Emails" ; - rdfs:comment "Email addresses of the contact." ; + sh:node email_shape:EmailWithTypeShape; + sh:name "Emails" ; + sh:description "Email addresses of the contact." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:codeIdentifier "email"; ]; sh:property [ sh:path vcard:hasTelephone ; - sh:node telephone-shape:TelephoneShape ; - rdfs:label "Telephones" ; - rdfs:comment "Telephone numbers of the contact." ; + sh:node telephone_shape:TelephoneShape ; + sh:name "Telephones" ; + sh:description "Telephone numbers of the contact." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:codeIdentifier "telephone"; ]; @@ -82,31 +82,31 @@ person-shape:ContactDetailsPersonShape a sh:NodeShape ; sh:path vcard:bday ; sh:maxCount 1 ; sh:datatype xsd:date ; - rdfs:label "Birthday" ; - rdfs:comment "Date of birth" ; + sh:name "Birthday" ; + sh:description "Date of birth" ; sh:codeIdentifier "dateOfBirth"; ]; sh:property [ sh:path vcard:note ; sh:maxCount 1 ; - rdfs:label "Notes" ; - rdfs:comment "General notes about the contact." ; + sh:name "Notes" ; + sh:description "General notes about the contact." ; sh:datatype xsd:string; sh:codeIdentifier "notes"; ]; . -person-shape:IssueTrackerPersonShape +person_shape:IssueTrackerPersonShape a sh:NodeShape ; - rdfs:label "Person Shape" ; - rdfs:comment "Defines constraints for an individual person in a group." ; + sh:name "Person Shape" ; + sh:description "Defines constraints for an individual person in a group." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; prov:wasDerivedFrom ; dct:referencedBy ; - rdfs:comment "Person shape used in issue tracker from core:PersonForm" ; + sh:description "Person shape used in issue tracker from core:PersonForm" ; sh:codeIdentifier "IssueTrackerPerson"; @@ -114,8 +114,8 @@ person-shape:IssueTrackerPersonShape sh:path vcard:fn ; sh:minCount 1 ; sh:datatype xsd:string ; - rdfs:label "Person Name" ; - rdfs:comment "The human-readable name of the person."; + sh:name "Person Name" ; + sh:description "The human-readable name of the person."; sh:codeIdentifier "fullName"; sh:maxCount 1; ] ; @@ -124,24 +124,24 @@ person-shape:IssueTrackerPersonShape sh:path owl:sameAs ; sh:maxCount 1 ; sh:class vcard:Individual ; - rdfs:label "Solid ID" ; - rdfs:comment "The Solid WebID of the person, if available."; + sh:name "Solid ID" ; + sh:description "The Solid WebID of the person, if available."; sh:codeIdentifier "solidId"; ] ; sh:property [ sh:path vcard:phone ; sh:maxCount 1 ; - rdfs:label "Phone" ; - rdfs:comment "Telephone number"; + sh:name "Phone" ; + sh:description "Telephone number"; sh:codeIdentifier "phone"; ] ; sh:property [ sh:path vcard:email ; sh:maxCount 1 ; - rdfs:label "Email" ; - rdfs:comment "Email address"; + sh:name "Email" ; + sh:description "Email address"; sh:codeIdentifier "emailAddress"; ] ; @@ -151,9 +151,9 @@ person-shape:IssueTrackerPersonShape -person-shape:ContactPersonShape a sh:NodeShape ; - rdfs:label "Person Shape" ; - rdfs:comment "SHACL shape representing a person" ; +person_shape:ContactPersonShape a sh:NodeShape ; + sh:name "Person Shape" ; + sh:description "SHACL shape representing a person" ; sh:targetClass vcard:Individual ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; @@ -172,7 +172,7 @@ person-shape:ContactPersonShape a sh:NodeShape ; sh:property [ sh:path vcard:fn ; sh:pattern ".* .*" ; - rdfs:label "Full Name" ; + sh:name "Full Name" ; sh:datatype xsd:string; sh:codeIdentifier "fullName"; sh:minCount 1; @@ -241,8 +241,8 @@ person-shape:ContactPersonShape a sh:NodeShape ; sh:path vcard:role ; sh:datatype xsd:string; sh:maxCount 1; - rdfs:label "Role" ; - rdfs:comment "The role or job title of the person." ; + sh:name "Role" ; + sh:description "The role or job title of the person." ; sh:codeIdentifier "role"; ]; diff --git a/shapes/personal-name.ttl b/shapes/personal_name.ttl similarity index 67% rename from shapes/personal-name.ttl rename to shapes/personal_name.ttl index e8a1daf..335f76b 100644 --- a/shapes/personal-name.ttl +++ b/shapes/personal_name.ttl @@ -7,14 +7,14 @@ @prefix prov: . @prefix dc: . -@prefix personal-name: . +@prefix personal_name: . -personal-name:PersonalNameShape +personal_name:PersonalNameShape a sh:NodeShape ; - rdfs:label "Structured Personal Name Shape" ; - rdfs:comment "Validates components of a person's structured name in VCARD data." ; + sh:name "Structured Personal Name Shape" ; + sh:description "Validates components of a person's structured name in VCARD data." ; sh:targetObjectOf vcard:hasName ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; @@ -27,8 +27,8 @@ personal-name:PersonalNameShape sh:path vcard:family-name ; sh:datatype xsd:string ; sh:maxCount 1 ; - rdfs:label "Family Name" ; - rdfs:comment "The surname or family name of the individual."; + sh:name "Family Name" ; + sh:description "The surname or family name of the individual."; sh:codeIdentifier "familyName"; ] ; @@ -37,8 +37,8 @@ personal-name:PersonalNameShape sh:path vcard:given-name ; sh:datatype xsd:string ; sh:maxCount 1 ; - rdfs:label "Given Name" ; - rdfs:comment "The given or first name of the individual."; + sh:name "Given Name" ; + sh:description "The given or first name of the individual."; sh:codeIdentifier "givenName"; ] ; @@ -47,8 +47,8 @@ personal-name:PersonalNameShape sh:path vcard:additional-name ; sh:datatype xsd:string ; sh:maxCount 1 ; - rdfs:label "Additional Name" ; - rdfs:comment "Any middle name(s) or additional name of the individual."; + sh:name "Additional Name" ; + sh:description "Any middle name(s) or additional name of the individual."; sh:codeIdentifier "additionalName"; ] ; @@ -57,8 +57,8 @@ personal-name:PersonalNameShape sh:path vcard:honorific-prefix ; sh:datatype xsd:string ; sh:maxCount 1 ; - rdfs:label "Honorific Prefix" ; - rdfs:comment "Honorific prefix such as Dr., Mr., or Ms."; + sh:name "Honorific Prefix" ; + sh:description "Honorific prefix such as Dr., Mr., or Ms."; sh:codeIdentifier "honorificPrefix"; ] ; @@ -67,11 +67,11 @@ personal-name:PersonalNameShape sh:path vcard:honorific-suffix ; sh:datatype xsd:string ; sh:maxCount 1 ; - rdfs:label "Honorific Suffix" ; - rdfs:comment "Honorific suffix such as Jr., III, or PhD."; + sh:name "Honorific Suffix" ; + sh:description "Honorific suffix such as Jr., III, or PhD."; sh:codeIdentifier "honorificSuffix"; ] ; # Closed shape ensures no extra properties are allowed sh:closed true ; - rdfs:comment "No other properties beyond the defined name components are allowed in this shape." . + sh:description "No other properties beyond the defined name components are allowed in this shape." . diff --git a/shapes/resource.ttl b/shapes/resource.ttl index e041c21..4852652 100644 --- a/shapes/resource.ttl +++ b/shapes/resource.ttl @@ -8,12 +8,12 @@ @prefix dct: . @prefix vs: . -@prefix resource-shape: . +@prefix resource_shape: . -resource-shape:ResourceShape a sh:NodeShape ; +resource_shape:ResourceShape a sh:NodeShape ; dc:source ; prov:wasDerivedFrom ; - rdfs:label "Resource"; + sh:name "Resource"; sh:codeIdentifier "Resource"; dct:created "2026-03-18"^^xsd:date ; vs:term_status "testing"; @@ -26,7 +26,7 @@ resource-shape:ResourceShape a sh:NodeShape ; ] ; sh:property [ - sh:path rdfs:label ; + sh:path sh:name ; sh:codeIdentifier "label" ; sh:datatype xsd:string ; sh:maxCount 1 diff --git a/shapes/software-agent.ttl b/shapes/software_agent.ttl similarity index 68% rename from shapes/software-agent.ttl rename to shapes/software_agent.ttl index 4ce1c05..40e3702 100644 --- a/shapes/software-agent.ttl +++ b/shapes/software_agent.ttl @@ -6,13 +6,13 @@ @prefix rdfs: . @prefix dc: . -@prefix software-agent-shape: . +@prefix software_agent_shape: . -software-agent-shape:ContactSoftwareAgentShape +software_agent_shape:ContactSoftwareAgentShape a sh:NodeShape ; sh:targetClass prov:SoftwareAgent ; - rdfs:label "Software Agent Shape" ; - rdfs:comment "SHACL shape representing a software agent, which can be associated with a vCard contact as an agent that performs actions on behalf of the contact." ; + sh:name "Software Agent Shape" ; + sh:description "SHACL shape representing a software agent, which can be associated with a vCard contact as an agent that performs actions on behalf of the contact." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; diff --git a/shapes/telephone.ttl b/shapes/telephone.ttl index 63d3d44..c3ca640 100644 --- a/shapes/telephone.ttl +++ b/shapes/telephone.ttl @@ -8,14 +8,12 @@ @prefix prov: . @prefix dc: . -@prefix telephone-shape: . +@prefix telephone_shape: . - - -telephone-shape:TelephoneAsIRIShape a sh:NodeShape; +telephone_shape:TelephoneAsIRIShape a sh:NodeShape; sh:targetObjectsOf vcard:hasTelephone; - rdfs:label "Telephone Shape (as IRI)" ; - rdfs:comment "SHACL shape for validating telephone numbers associated with a vCard contact, ensuring they are represented as IRIs with the appropriate 'tel:' scheme." ; + sh:name "Telephone Shape (as IRI)" ; + sh:description "SHACL shape for validating telephone numbers associated with a vCard contact, ensuring they are represented as IRIs with the appropriate 'tel:' scheme." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; @@ -34,11 +32,11 @@ telephone-shape:TelephoneAsIRIShape a sh:NodeShape; -telephone-shape:TelephoneShape +telephone_shape:TelephoneShape a sh:NodeShape ; sh:targetObjectsOf vcard:hasTelephone ; - rdfs:label "Telephone Shape" ; - rdfs:comment "SHACL shape for validating telephone numbers associated with a vCard contact, ensuring they conform to expected patterns and classifications." ; + sh:name "Telephone Shape" ; + sh:description "SHACL shape for validating telephone numbers associated with a vCard contact, ensuring they conform to expected patterns and classifications." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; @@ -50,8 +48,8 @@ telephone-shape:TelephoneShape sh:path rdf:type ; sh:maxCount 1 ; sh:in ( vcard:Cell vcard:Home vcard:Work ) ; - rdfs:label "Phone Type" ; - rdfs:comment "The classification of the phone (cell, home, work)." ; + sh:name "Phone Type" ; + sh:description "The classification of the phone (cell, home, work)." ; sh:codeIdentifier "telephoneType"; ] ; @@ -60,8 +58,8 @@ telephone-shape:TelephoneShape sh:path vcard:value ; sh:minCount 1 ; sh:maxCount 1 ; - rdfs:label "Phone Number" ; - rdfs:comment "The telephone number of the contact." ; + sh:name "Phone Number" ; + sh:description "The telephone number of the contact." ; sh:codeIdentifier "telephoneNumber"; ] . diff --git a/shapes/vcard.ttl b/shapes/vcard.ttl index e1117ad..1f2e7c3 100644 --- a/shapes/vcard.ttl +++ b/shapes/vcard.ttl @@ -5,17 +5,17 @@ @prefix dct: . @prefix vs: . -@prefix vcard-shape: . +@prefix vcard_shape: . -vcard-shape:VCardShape +vcard_shape:VCardShape a sh:NodeShape ; sh:targetClass vcard:VCard ; - rdfs:label "vCard Shape" ; - rdfs:comment "RFC 6350 based vCard validation." ; + sh:name "vCard Shape" ; + sh:description "RFC 6350 based vCard validation." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dct:references ; - rdfs:comment "This shape validates vCard data according to the structure and properties defined in RFC 6350, ensuring that vCard instances conform to the expected format and constraints." ; + sh:description "This shape validates vCard data according to the structure and properties defined in RFC 6350, ensuring that vCard instances conform to the expected format and constraints." ; sh:codeIdentifier "VCard"; sh:property [ @@ -24,15 +24,15 @@ vcard-shape:VCardShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:label "fullName"; + sh:name "fullName"; sh:codeIdentifier "fullName"; ] ; sh:property [ sh:path vcard:n ; - sh:node vcard-shape:NameShape ; + sh:node vcard_shape:NameShape ; sh:nodeKind sh:BlankNode ; - rdfs:label "name"; + sh:name "name"; sh:codeIdentifier "name"; ] ; @@ -40,22 +40,22 @@ vcard-shape:VCardShape sh:property [ sh:path vcard:hasEmail ; sh:nodeKind sh:IRI ; - rdfs:comment "label"; + sh:description "label"; sh:codeIdentifier "email"; ] ; sh:property [ sh:path vcard:hasTelephone ; sh:nodeKind sh:IRI ; - rdfs:label "telephone"; + sh:name "telephone"; sh:codeIdentifier "telephone"; ] ; sh:property [ sh:path vcard:hasAddress ; - sh:node vcard-shape:AddressShape ; + sh:node vcard_shape:AddressShape ; sh:nodeKind sh:BlankNode ; - rdfs:label "address"; + sh:name "address"; sh:codeIdentifier "address"; ] ; @@ -65,7 +65,7 @@ vcard-shape:VCardShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:label "Organization Name"; + sh:name "Organization Name"; sh:codeIdentifier "organizationName" ] ; . @@ -74,14 +74,14 @@ vcard-shape:VCardShape # Structured Name Shape ################################################################# -vcard-shape:NameShape +vcard_shape:NameShape a sh:NodeShape ; - rdfs:label "vCard Name Shape" ; - rdfs:comment "SHACL shape representing the structured name of a vCard individual." ; + sh:name "vCard Name Shape" ; + sh:description "SHACL shape representing the structured name of a vCard individual." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dct:references ; - rdfs:comment "This shape validates vCard data according to the structure and properties defined in RFC 6350, ensuring that vCard instances conform to the expected format and constraints." ; + sh:description "This shape validates vCard data according to the structure and properties defined in RFC 6350, ensuring that vCard instances conform to the expected format and constraints." ; sh:codeIdentifier "VCardPersonalName"; @@ -91,7 +91,7 @@ vcard-shape:NameShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:label "Family Name"; + sh:name "Family Name"; sh:codeIdentifier "familyName"; ] ; @@ -101,7 +101,7 @@ vcard-shape:NameShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:label "Given Name"; + sh:name "Given Name"; sh:codeIdentifier "givenName" ] ; @@ -111,7 +111,7 @@ vcard-shape:NameShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:label "Additional Name"; + sh:name "Additional Name"; sh:codeIdentifier "additionalName"; ] ; @@ -121,7 +121,7 @@ vcard-shape:NameShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:label "honorificPrefix"; + sh:name "honorificPrefix"; sh:codeIdentifier "honorificPrefix"; ] ; @@ -131,7 +131,7 @@ vcard-shape:NameShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:comment "Honorific Suffix"; + sh:description "Honorific Suffix"; sh:codeIdentifier "honorificSuffix" ] ; . @@ -140,14 +140,14 @@ vcard-shape:NameShape # Address Shape ################################################################# -vcard-shape:AddressShape +vcard_shape:AddressShape a sh:NodeShape ; - rdfs:label "vCard Address Shape" ; - rdfs:comment "SHACL shape representing the address details of a vCard individual." ; + sh:name "vCard Address Shape" ; + sh:description "SHACL shape representing the address details of a vCard individual." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dct:references ; - rdfs:comment "This shape validates vCard data according to the structure and properties defined in RFC 6350, ensuring that vCard instances conform to the expected format and constraints." ; + sh:description "This shape validates vCard data according to the structure and properties defined in RFC 6350, ensuring that vCard instances conform to the expected format and constraints." ; sh:codeIdentifier "VCardAddress"; sh:property [ @@ -156,7 +156,7 @@ vcard-shape:AddressShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:label "Street Address"; + sh:name "Street Address"; sh:codeIdentifier "streetAddress"; ] ; @@ -166,7 +166,7 @@ vcard-shape:AddressShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:label "Extended Address"; + sh:name "Extended Address"; sh:codeIdentifier "extendedAddress"; ] ; @@ -176,7 +176,7 @@ vcard-shape:AddressShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:label "Locality"; + sh:name "Locality"; sh:codeIdentifier "locality"; ] ; @@ -186,7 +186,7 @@ vcard-shape:AddressShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:label "Region"; + sh:name "Region"; sh:codeIdentifier "region"; ] ; @@ -196,7 +196,7 @@ vcard-shape:AddressShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:comment "Postal Code"; + sh:description "Postal Code"; sh:codeIdentifier "postalCode"; ] ; @@ -206,7 +206,7 @@ vcard-shape:AddressShape [ sh:datatype xsd:string ] [ sh:datatype xsd:string ] ) ; - rdfs:comment "Country Name"; + sh:description "Country Name"; sh:codeIdentifier "countryName"; ] ; . \ No newline at end of file diff --git a/shapes/web-id.ttl b/shapes/web-id.ttl index 79fa655..55dd7e4 100644 --- a/shapes/web-id.ttl +++ b/shapes/web-id.ttl @@ -8,17 +8,17 @@ @prefix prov: . @prefix dc: . -@prefix web-id-shape: . +@prefix web_id_shape: . -web-id-shape:WebIdShape a sh:NodeShape; +web_id_shape:WebIdShape a sh:NodeShape; # A card may have any number of http[s] URLs, with property vcard:url and where the type must be given. # so that systems know what they can use the URL for and how to present it. # We add vcard:Homepage, vcard:WebId, vcard:PublicId as friendly amendment to https://www.w3.org/TR/vcard-rdf/ sh:description """The URL of the subject can be a Homepage on the web, their Solid-compatible WebId, or an RDF Id in open public data."""; sh:targetObjectsOf vcard:url; - rdfs:label "Web ID Shape" ; - rdfs:comment "SHACL shape for validating web identifiers (URLs) associated with a vCard contact, ensuring they conform to expected patterns and classifications." ; + sh:name "Web ID Shape" ; + sh:description "SHACL shape for validating web identifiers (URLs) associated with a vCard contact, ensuring they conform to expected patterns and classifications." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; @@ -31,7 +31,7 @@ web-id-shape:WebIdShape a sh:NodeShape; sh:minCount 1; sh:maxCount 1; sh:in (vcard:Home vcard:Work vcard:Homepage vcard:WebId vcard:PublicId); - rdfs:label "Web ID Type"; + sh:name "Web ID Type"; sh:codeIdentifier "webIdType"; ]; @@ -41,7 +41,7 @@ web-id-shape:WebIdShape a sh:NodeShape; sh:datatype xsd:string; sh:minCount 1; sh:maxCount 1; - rdfs:label "Value"; + sh:name "Value"; sh:codeIdentifier "webIdValue"; # cannot use "value" with TermWrapper ]. diff --git a/shapes/web-page.ttl b/shapes/web-page.ttl index f1a7ddf..dec10ad 100644 --- a/shapes/web-page.ttl +++ b/shapes/web-page.ttl @@ -7,12 +7,12 @@ @prefix prov: . @prefix dc: . -@prefix web-page-shape: . +@prefix web_page_shape: . -web-page-shape:WebPageShape a sh:NodeShape; +web_page_shape:WebPageShape a sh:NodeShape; sh:targetObjectsOf vcard:url; - rdfs:label "Web Page Shape" ; - rdfs:comment "SHACL shape for validating web identifiers (URLs) associated with a vCard contact, ensuring they conform to expected patterns and classifications." ; + sh:name "Web Page Shape" ; + sh:description "SHACL shape for validating web identifiers (URLs) associated with a vCard contact, ensuring they conform to expected patterns and classifications." ; dct:created "2026-03-12"^^xsd:date ; vs:term_status "testing" ; dc:source ; @@ -24,7 +24,7 @@ web-page-shape:WebPageShape a sh:NodeShape; sh:pattern "^https?:" ; # starts with http: or https: sh:minCount 1; sh:maxCount 1; - rdfs:label "URL"; + sh:name "URL"; sh:codeIdentifier "url"; ] .