@prefix this: . @prefix sub: . @prefix np: . @prefix oa: . @prefix dct: . @prefix rdf: . @prefix mb: . @prefix nt: . @prefix npx: . @prefix xsd: . @prefix rdfs: . @prefix orcid: . @prefix prov: . sub:Head { this: a np:Nanopublication; np:hasAssertion sub:assertion; np:hasProvenance sub:provenance; np:hasPublicationInfo sub:pubinfo . } sub:assertion { dct:conformsTo rdfs:label "conforms to" . rdf:type rdfs:label "is a" . rdf:value rdfs:label "has value" . rdfs:label rdfs:label "has the label" . oa:FragmentSelector rdfs:label "fragment selector" . oa:SpecificResource rdfs:label "specific resource (image with region)" . oa:hasSelector rdfs:label "has selector" . oa:hasSource rdfs:label "has source image" . sub:assertion a nt:AssertionTemplate; dct:description "This template describes a morphological character used for identifying a taxon, optionally linking to image evidence with region annotations or direct image URLs."; rdfs:label "Describing a morphological identification character"; nt:hasNanopubLabelPattern "${characterLabel}"; nt:hasStatement sub:st0, sub:st1, sub:st2, sub:st3, sub:st4; nt:hasTag "Biodiversity" . sub:character a nt:IntroducedResource, nt:LocalResource, nt:UriPlaceholder; rdfs:label "short name for the character, used as URI suffix" . sub:characterLabel a nt:LiteralPlaceholder; rdfs:label "human-readable description of the morphological character" . sub:directImageUrl a nt:UriPlaceholder; rdfs:label "URL of the image" . sub:fragmentSelector a nt:LocalResource; rdfs:label "a selector" . sub:imageSource a nt:UriPlaceholder; rdfs:label "URL of the source image (e.g. a Zenodo file URL)" . sub:mediaFragment a nt:LiteralPlaceholder; rdfs:label "media fragment selector (e.g. xywh=150,200,80,60)" . sub:specificResource a nt:LocalResource; rdfs:label "an image region" . sub:st0 rdf:object sub:character; rdf:predicate mb:hasIdentificationCharacter; rdf:subject sub:taxon . sub:st1 rdf:object mb:MorphologicalCharacter; rdf:predicate rdf:type; rdf:subject sub:character . sub:st2 rdf:object sub:characterLabel; rdf:predicate rdfs:label; rdf:subject sub:character . sub:st3 a nt:GroupedStatement, nt:OptionalStatement, nt:RepeatableStatement; nt:hasStatement sub:st3a, sub:st3b, sub:st3c, sub:st3d, sub:st3e, sub:st3f, sub:st3g . sub:st3a rdf:object sub:specificResource; rdf:predicate mb:isRepresentedInImage; rdf:subject sub:character . sub:st3b rdf:object oa:SpecificResource; rdf:predicate rdf:type; rdf:subject sub:specificResource . sub:st3c rdf:object sub:imageSource; rdf:predicate oa:hasSource; rdf:subject sub:specificResource . sub:st3d rdf:object sub:fragmentSelector; rdf:predicate oa:hasSelector; rdf:subject sub:specificResource . sub:st3e rdf:object oa:FragmentSelector; rdf:predicate rdf:type; rdf:subject sub:fragmentSelector . sub:st3f rdf:object ; rdf:predicate dct:conformsTo; rdf:subject sub:fragmentSelector . sub:st3g rdf:object sub:mediaFragment; rdf:predicate rdf:value; rdf:subject sub:fragmentSelector . sub:st4 a nt:OptionalStatement, nt:RepeatableStatement; rdf:object sub:directImageUrl; rdf:predicate mb:isRepresentedInImage; rdf:subject sub:character . sub:taxon a nt:GuidedChoicePlaceholder; rdfs:label "the organism taxon, e.g. a species"; nt:possibleValuesFromApi "https://vodex.petapico.org/nidx/query?rows=100&q=label:" . mb:MorphologicalCharacter rdfs:label "morphological character" . mb:hasIdentificationCharacter rdfs:label "has identification character" . mb:isRepresentedInImage rdfs:label "is represented in image" . } sub:provenance { sub:assertion prov:wasAttributedTo orcid:0000-0002-1267-0234 . } sub:pubinfo { this: dct:created "2026-03-31T10:02:52Z"^^xsd:dateTime; dct:creator orcid:0000-0002-1267-0234; dct:license ; npx:introduces sub:assertion; rdfs:label "Describing a morphological identification character" . sub:sig npx:hasAlgorithm "RSA"; npx:hasPublicKey "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB"; npx:hasSignature "KDokBYurHlYXzw2DjjmaGeHa7sNiB6tW6PJx6pyph1VOjR/SOGPN6fwIG1p+1jiGY5iT+izMFDUVu9sv4VoWAQB5wtCkwrZ9gmPw8WBiG01q/LhUzvrTFGl+9irZpgh3D7it8LrcjnhEpv4oWfF7uYsMOnVkeaZVmNIC2ecFcww="; npx:hasSignatureTarget this:; npx:signedBy orcid:0000-0002-1267-0234 . }