@prefix this: . @prefix sub: . @prefix gen: . @prefix np: . @prefix dct: . @prefix rdf: . @prefix nt: . @prefix xsd: . @prefix rdfs: . @prefix orcid: . @prefix prov: . @prefix foaf: . @prefix npx: . sub:Head { this: a np:Nanopublication; np:hasAssertion sub:assertion; np:hasProvenance sub:provenance; np:hasPublicationInfo sub:pubinfo . } sub:assertion { dct:description rdfs:label "has the description" . dct:isVersionOf rdfs:label "is a version of" . rdf:type rdfs:label "is a" . rdfs:label rdfs:label "has the name" . gen:IndividualAgent rdfs:label "individual agent" . gen:MaintainedResource rdfs:label "maintained resource" . gen:Preset rdfs:label "preset - a named bundle of default views and roles that applies to a resource type" . gen:Space rdfs:label "space" . gen:appliesToInstancesOf rdfs:label "applies to instances of" . gen:appliesToNamespace rdfs:label "applies to the namespace" . gen:hasRole rdfs:label "has the role" . gen:hasView rdfs:label "has the view" . sub:appliesToClass a nt:RestrictedChoicePlaceholder; rdfs:label "the type of resource page this preset applies to"; nt:possibleValue gen:IndividualAgent, gen:MaintainedResource, gen:Space . sub:appliesToNamespace a nt:ExternalUriPlaceholder; rdfs:label "optionally, a namespace (URI prefix) this preset applies to" . sub:assertion a nt:AssertionTemplate; dct:description """

Publish a preset: a named bundle that defines which views are shown by default and which roles are set up for a resource page — applied to all instances of a resource type (user, space, or maintained resource), so that any such resource automatically picks up the preset.

Presets appear in view dropdowns alongside individual views, marked as a preset. A preset can bundle:

  • one or more views to display by default, and
  • one or more role definitions to set up (e.g. to be assigned to the space).

Like resource views, a preset has a stable preset kind (linked via dct:isVersionOf) that persists across superseding versions.

This template introduces the proposed term gen:Preset (reusing the existing gen:hasView and gen:hasRole properties) and is a draft for nanodash issue #302.

"""; rdfs:label "Publishing a preset"; nt:hasNanopubLabelPattern "Preset: ${name}"; nt:hasStatement sub:st10, sub:st10b, sub:st20, sub:st25, sub:st30, sub:st36, sub:st40, sub:st50; nt:hasTag "Spaces"; nt:hasTargetNanopubType gen:Preset . sub:description a nt:LiteralPlaceholder; rdfs:label "an optional description of what this preset is for" . sub:name a nt:LiteralPlaceholder; rdfs:label "a short name for this preset (e.g. \"Nano Session\")" . sub:preset a nt:EmbeddedResource, nt:LocalResource, nt:UriPlaceholder; rdfs:label "short ID suffix for the preset" . sub:presetKind a nt:IntroducedResource, nt:UriPlaceholder; rdfs:label "short suffix or existing URI of the preset kind" . sub:role a nt:GuidedChoicePlaceholder; rdfs:label "a role definition to include in this preset"; nt:possibleValuesFromApi "https://w3id.org/np/l/nanopub-query-1.1/api/RAyMrQ89RECTi9gZK5q7gjL1wKTiP8StkLy0NIkkCiyew/find-things?type=https://w3id.org/kpxl/gen/terms/SpaceMemberRole" . sub:st10 rdf:object gen:Preset; rdf:predicate rdf:type; rdf:subject sub:preset . sub:st10b rdf:object sub:presetKind; rdf:predicate dct:isVersionOf; rdf:subject sub:preset . sub:st20 rdf:object sub:name; rdf:predicate rdfs:label; rdf:subject sub:preset . sub:st25 a nt:OptionalStatement; rdf:object sub:description; rdf:predicate dct:description; rdf:subject sub:preset . sub:st30 a nt:RepeatableStatement; rdf:object sub:appliesToClass; rdf:predicate gen:appliesToInstancesOf; rdf:subject sub:preset . sub:st36 a nt:AdvancedStatement, nt:OptionalStatement, nt:RepeatableStatement; rdf:object sub:appliesToNamespace; rdf:predicate gen:appliesToNamespace; rdf:subject sub:preset . sub:st40 a nt:OptionalStatement, nt:RepeatableStatement; rdf:object sub:view; rdf:predicate gen:hasView; rdf:subject sub:preset . sub:st50 a nt:OptionalStatement, nt:RepeatableStatement; rdf:object sub:role; rdf:predicate gen:hasRole; rdf:subject sub:preset . sub:view a nt:GuidedChoicePlaceholder; rdfs:label "a view to show by default for this preset"; nt:possibleValuesFromApi "https://w3id.org/np/l/nanopub-query-1.1/api/RAs7Q2IMbb7C2WzFa98bVwlDMhN3kJ0rrF9cSEybtvLaA/find-embedded-things?type=https://w3id.org/kpxl/gen/terms/ResourceView" . } sub:provenance { sub:assertion prov:wasAttributedTo orcid:0000-0002-1267-0234 . } sub:pubinfo { orcid:0000-0002-1267-0234 foaf:name "Tobias Kuhn" . this: dct:created "2026-06-02T14:39:46Z"^^xsd:dateTime; dct:creator orcid:0000-0002-1267-0234; dct:license ; rdfs:label "Publishing a preset"; nt:wasCreatedFromProvenanceTemplate ; nt:wasCreatedFromPubinfoTemplate , , , , ; nt:wasCreatedFromTemplate . sub:sig npx:hasAlgorithm "RSA"; npx:hasPublicKey "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB"; npx:hasSignature "nm0JB2r7MRzoH5Vk295qTZ+B4ngCJTqiM9Rw9VmFV+NCikaABYO8EyxzXyuYm+m1two0VxUYxVROJE1afVHqxv1KOClWnX9VsFi+p6FB9aL0JX+8Qttct2+FmSLWevsX7KCrbLb0bZ7pANnFItq5kZpMUrjzTDJ9M+Q3+JQzyY0="; npx:hasSignatureTarget this:; npx:signedBy orcid:0000-0002-1267-0234 . }