Nanoarguments: Nanopublication Templates
- License
- CC BY 4.0
Introduction
The Nanoarguments nanopublication templates are the reusable forms authoring tools use to produce discourse contributions, evidence findings, questions, and annotations as nanopublications, following the Nanoarguments model. Each is shown inline as a snapshot, with a link to the published nanopublication, which is the authoritative version. The conformance shapes validate the instances these templates generate.
Anatomy of a template
A template is a nanopublication with the usual four graphs (Head, assertion, provenance, publication info).
The assertion graph declares an nt:AssertionTemplate that lists its statements and
defines each placeholder (a field the author fills) and its type: introduced resource, long-literal,
restricted choice, external URI, and so on. Optional and repeatable statements are flagged. The
discourse-contribution template below shows the full structure; the others share the same
wrapper, so only their assertion graphs are shown. Snapshots leave out the RSA signature block and
Nanodash display labels, marked with # … comments; the published nanopublication
linked under each snapshot is the complete, signed record.
@prefix this: <https://w3id.org/np/RAFpID-NunXGUAZebXPfhD9efjvfpZqB5gDBrgP2Lp5N8> .
@prefix sub: <https://w3id.org/np/RAFpID-NunXGUAZebXPfhD9efjvfpZqB5gDBrgP2Lp5N8/> .
@prefix gen: <https://w3id.org/kpxl/gen/terms/> .
@prefix np: <http://www.nanopub.org/nschema#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix nt: <https://w3id.org/np/o/ntemplate/> .
@prefix npx: <http://purl.org/nanopub/x/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix orcid: <https://orcid.org/> .
@prefix prov: <http://www.w3.org/ns/prov#> .
sub:Head {
this: a np:Nanopublication;
np:hasAssertion sub:assertion;
np:hasProvenance sub:provenance;
np:hasPublicationInfo sub:pubinfo .
}
sub:assertion {
# … display labels for external terms omitted …
sub:evidence a nt:ExternalUriPlaceholder .
sub:st1 a rdf:Statement;
rdf:object <https://schema.org/Statement>;
rdf:predicate rdf:type;
rdf:subject sub:statement .
sub:st2 a rdf:Statement;
rdf:object sub:statementText;
rdf:predicate rdf:value;
rdf:subject sub:statement .
sub:st3 a nt:OptionalStatement;
rdf:object sub:target;
rdf:predicate sub:stance;
rdf:subject sub:statement .
sub:st4 a nt:OptionalStatement;
rdf:object sub:target;
rdf:predicate <https://www.w3.org/ns/activitystreams#inReplyTo>;
rdf:subject sub:statement .
sub:st5 a nt:OptionalStatement, nt:RepeatableStatement;
rdf:object sub:evidence;
rdf:predicate <http://purl.org/spar/cito/citesAsEvidence>;
rdf:subject sub:statement .
sub:stance a nt:RestrictedChoicePlaceholder;
nt:possibleValuesFrom <https://w3id.org/np/RAZt5kzfoJg2m4dMRdMm2SP6JeUDD_GMzSq9xyRPMgP5k> .
sub:statement a nt:IntroducedResource .
sub:statementText a nt:LongLiteralPlaceholder;
rdfs:label "statement text" .
sub:target a nt:ExternalUriPlaceholder .
sub:template a nt:AssertionTemplate;
dct:description "A discourse statement that takes a typed (CiTO) stance toward, and/or replies to, another contribution, and may cite evidence. A statement with no stance, reply, or evidence is a valid standalone claim (e.g. a thread root).";
dct:isVersionOf sub:templateKind;
rdfs:label "Discourse contribution";
gen:governedBy <https://w3id.org/spaces/knowledgepixels/nanoarguments>;
nt:hasStatement sub:st1, sub:st2, sub:st3, sub:st4, sub:st5;
nt:hasTag "Discourse" .
}
sub:provenance {
sub:assertion prov:wasAttributedTo orcid:0009-0009-0118-9195 .
}
sub:pubinfo {
this: dct:created "2026-07-14T09:13:10.856Z"^^xsd:dateTime;
dct:creator orcid:0000-0002-1267-0234, orcid:0009-0009-0118-9195;
dct:license <https://creativecommons.org/licenses/by/4.0/>;
npx:embeds sub:template;
npx:introduces sub:templateKind;
npx:wasCreatedAt <https://nanodash.knowledgepixels.com/>;
prov:wasDerivedFrom <https://w3id.org/np/RAsHohypO12gewyyusDEH_aI3z7GE-36tXIkr_ev8eITc>;
nt:wasCreatedFromProvenanceTemplate <https://w3id.org/np/RA7lSq6MuK_TIC6JMSHvLtee3lpLoZDOqLJCLXevnrPoU>;
nt:wasCreatedFromPubinfoTemplate <https://w3id.org/np/RACJ58Gvyn91LqCKIO9zu1eijDQIeEff28iyDrJgjSJF8>,
<https://w3id.org/np/RAMEgudZsQ1bh1fZhfYnkthqH6YSXpghSE_DEN1I-6eAI>, <https://w3id.org/np/RARW4MsFkHuwjycNElvEVtuMjpf4yWDL10-0C5l2MqqRQ>,
<https://w3id.org/np/RAukAcWHRDlkqxk7H2XNSegc1WnHI569INvNr-xdptDGI>;
nt:wasCreatedFromTemplate <https://w3id.org/np/RAKmcrbEVkxF0ivA0_yGg8bnl6iKkwVDp_2SSHvPBrkPw/template> .
# … RSA signature (sub:sig), author names, and display labels omitted …
}
Published: RAFpID-N…/templateKind
Placeholders draw restricted choices from a value-list nanopublication via
nt:possibleValuesFrom: the stance placeholder draws the full CiTO predicate set from the published
cito-choices list. Statements st3-st5 are optional, so a
statement with no stance, reply, or evidence is a valid standalone claim (a thread root).
The templates
Discourse contribution
The direct representation: the statement is a first-class content node
(schema:Statement) carrying its discourse relations as plain triples: a typed CiTO stance
and/or an as:inReplyTo reply to another contribution, plus optional cited evidence. Shown in
full under Anatomy above.
Published: RAFpID-N…/templateKind
Annotation as a discourse contribution
The same discourse statement wrapped as an oa:Annotation that anchors it to a target.
oa:hasBody references the statement by IRI, so the body is an external web resource
(a first-class content node, not embedded annotation text). The target is an
oa:SpecificResource, optionally narrowed to a passage with an oa:TextQuoteSelector
(leave the selector empty to anchor to the whole resource).
sub:assertion {
sub:annotation a nt:LocalResource .
sub:exactText a nt:LongLiteralPlaceholder .
sub:motivation a nt:RestrictedChoicePlaceholder;
nt:possibleValuesFrom <https://w3id.org/np/RACsOf8k6zeAMnUDOjv2IkCKgQmom-2VRNTKKt70kc57k> .
sub:prefixText a nt:LiteralPlaceholder .
sub:specificResource a nt:LocalResource .
sub:st1 rdf:object <https://schema.org/Statement>;
rdf:predicate rdf:type;
rdf:subject sub:statement .
sub:st10 rdf:object sub:anchor;
rdf:predicate <http://www.w3.org/ns/oa#hasSource>;
rdf:subject sub:specificResource .
sub:st11 a nt:OptionalStatement;
rdf:object sub:selector;
rdf:predicate <http://www.w3.org/ns/oa#hasSelector>;
rdf:subject sub:specificResource .
sub:st12 a nt:OptionalStatement;
rdf:object <http://www.w3.org/ns/oa#TextQuoteSelector>;
rdf:predicate rdf:type;
rdf:subject sub:selector .
sub:st13 a nt:OptionalStatement;
rdf:object sub:exactText;
rdf:predicate <http://www.w3.org/ns/oa#exact>;
rdf:subject sub:selector .
sub:st14 a nt:OptionalStatement;
rdf:object sub:prefixText;
rdf:predicate <http://www.w3.org/ns/oa#prefix>;
rdf:subject sub:selector .
sub:st15 a nt:OptionalStatement;
rdf:object sub:suffixText;
rdf:predicate <http://www.w3.org/ns/oa#suffix>;
rdf:subject sub:selector .
sub:st2 rdf:object sub:statementText;
rdf:predicate rdf:value;
rdf:subject sub:statement .
sub:st3 a nt:OptionalStatement;
rdf:object sub:target;
rdf:predicate sub:stance;
rdf:subject sub:statement .
sub:st4 a nt:OptionalStatement;
rdf:object sub:target;
rdf:predicate <https://www.w3.org/ns/activitystreams#inReplyTo>;
rdf:subject sub:statement .
sub:st5 rdf:object <http://www.w3.org/ns/oa#Annotation>;
rdf:predicate rdf:type;
rdf:subject sub:annotation .
sub:st6 rdf:object sub:statement;
rdf:predicate <http://www.w3.org/ns/oa#hasBody>;
rdf:subject sub:annotation .
sub:st7 rdf:object sub:specificResource;
rdf:predicate <http://www.w3.org/ns/oa#hasTarget>;
rdf:subject sub:annotation .
sub:st8 rdf:object sub:motivation;
rdf:predicate <http://www.w3.org/ns/oa#motivatedBy>;
rdf:subject sub:annotation .
sub:st9 rdf:object <http://www.w3.org/ns/oa#SpecificResource>;
rdf:predicate rdf:type;
rdf:subject sub:specificResource .
sub:stance a nt:RestrictedChoicePlaceholder;
nt:possibleValuesFrom <https://w3id.org/np/RAZt5kzfoJg2m4dMRdMm2SP6JeUDD_GMzSq9xyRPMgP5k> .
sub:statement a nt:IntroducedResource .
sub:statementText a nt:LongLiteralPlaceholder .
sub:suffixText a nt:LiteralPlaceholder .
sub:target a nt:ExternalUriPlaceholder .
sub:template a nt:AssertionTemplate;
dct:description "A Web Annotation whose body is a discourse statement taking a typed (CiTO) stance toward, and/or replying to, the annotated target. oa:hasBody references the statement by IRI, so the body is an external web resource. The target is an oa:SpecificResource, optionally narrowed to a passage with an oa:TextQuoteSelector.";
dct:isVersionOf sub:templateKind;
rdfs:label "Annotation as a discourse contribution";
gen:governedBy <https://w3id.org/spaces/knowledgepixels/nanoarguments>;
nt:hasStatement sub:st1, sub:st10, sub:st11, sub:st12, sub:st13, sub:st14, sub:st15,
sub:st2, sub:st3, sub:st4, sub:st5, sub:st6, sub:st7, sub:st8, sub:st9;
nt:hasTag "Discourse" .
}
Published: RATxyPik…/templateKind
Evidence finding
An ordinary discourse contribution (a schema:Statement with a CiTO stance)
additionally typed as the SIO evidence class (sio:SIO_001394), pointed at the
claim it bears on. It is still a valued statement with a CiTO relation, so it flows through the same
discourse queries as any other contribution, and a receiver that does not understand the evidence type still
sees a statement supporting or disputing a claim. Finer-grained evidence typing (ECO) is a deferred, optional
extension.
sub:assertion {
sub:claim a nt:ExternalUriPlaceholder .
sub:finding a nt:IntroducedResource .
sub:findingText a nt:LongLiteralPlaceholder .
sub:st1 rdf:object <https://schema.org/Statement>;
rdf:predicate rdf:type;
rdf:subject sub:finding .
sub:st2 rdf:object <http://semanticscience.org/resource/SIO_001394>;
rdf:predicate rdf:type;
rdf:subject sub:finding .
sub:st3 rdf:object sub:findingText;
rdf:predicate rdf:value;
rdf:subject sub:finding .
sub:st4 rdf:object sub:claim;
rdf:predicate sub:stance;
rdf:subject sub:finding .
sub:stance a nt:RestrictedChoicePlaceholder;
nt:possibleValuesFrom <https://w3id.org/np/RAZt5kzfoJg2m4dMRdMm2SP6JeUDD_GMzSq9xyRPMgP5k> .
sub:template a nt:AssertionTemplate;
dct:description "A finding presented as evidence: a statement typed as the SIO evidence class that bears on a claim through a typed (CiTO) relation. It is an ordinary discourse contribution (a schema:Statement carrying rdf:value and a CiTO stance) additionally typed as evidence, so it flows through the same discourse queries as any other contribution.";
dct:isVersionOf sub:templateKind;
rdfs:label "Evidence finding";
gen:governedBy <https://w3id.org/spaces/knowledgepixels/nanoarguments>;
nt:hasStatement sub:st1, sub:st2, sub:st3, sub:st4;
nt:hasTag "Discourse" .
}
Published: RAdGQVeq…/templateKind
Question
A schema:Question posed to the discourse graph: the same shape as a discourse contribution,
typed as a question. Unlike statements, a question relates to its target through a
narrow, non-affirmative subset of CiTO, challenging it
(disputes, critiques, qualifies, corrects) or neutrally
discussing it (discusses), never supporting or agreeing. These are supplied inline as
nt:possibleValue rather than pulled from the full CiTO list.
sub:assertion {
sub:evidence a nt:ExternalUriPlaceholder .
sub:question a nt:IntroducedResource .
sub:questionText a nt:LongLiteralPlaceholder .
sub:st1 rdf:object <https://schema.org/Question>;
rdf:predicate rdf:type;
rdf:subject sub:question .
sub:st2 rdf:object sub:questionText;
rdf:predicate rdf:value;
rdf:subject sub:question .
sub:st3 rdf:object sub:target;
rdf:predicate sub:stance;
rdf:subject sub:question .
sub:st4 rdf:object sub:target;
rdf:predicate <https://www.w3.org/ns/activitystreams#inReplyTo>;
rdf:subject sub:question .
sub:st5 rdf:object sub:evidence;
rdf:predicate <http://purl.org/spar/cito/citesAsEvidence>;
rdf:subject sub:question .
sub:stance a nt:RestrictedChoicePlaceholder;
nt:possibleValue <http://purl.org/spar/cito/corrects>, <http://purl.org/spar/cito/critiques>,
<http://purl.org/spar/cito/discusses>, <http://purl.org/spar/cito/disputes>, <http://purl.org/spar/cito/qualifies> .
sub:target a nt:ExternalUriPlaceholder .
sub:template a nt:AssertionTemplate;
dct:description "A question posed to the discourse graph: a schema:Question carrying its text in rdf:value. It may reply to a prior contribution (as:inReplyTo), or carry a rhetorical CiTO stance toward one when the question implicitly challenges its target (e.g. cito:disputes), and may cite evidence. Answers are separate contributions that target this question. A standalone question with no target is valid.";
dct:isVersionOf sub:templateKind;
rdfs:label "Question";
gen:governedBy <https://w3id.org/spaces/knowledgepixels/nanoarguments>;
nt:hasStatement sub:st1, sub:st2, sub:st3, sub:st4, sub:st5;
nt:hasTag "Discourse" .
}
Published: RAOp9i7X…/templateKind
Published templates
Each template is a maintained resource of the
Nanoarguments space, linked here by its
template kind: the stable identifier that stays the same across versions (each published
version declares dct:isVersionOf the kind). The snapshots on this page show the version current
at the time of writing.
| Template | Nanopublication |
|---|---|
| Discourse contribution | RAFpID-NunXGUAZebXPfhD9efjvfpZqB5gDBrgP2Lp5N8/templateKind |
| Annotation as a discourse contribution | RATxyPikKUvLwqijI4T_fvaHE758DsxgXhOq0m6KiLlEI/templateKind |
| Evidence finding | RAdGQVeqqUoTNJe52OSMhY8EX1MkFA1LI4oQh-NAgrYV8/templateKind |
| Question | RAOp9i7XUKKJhT4qIvtCA6LpXj9Hq7qkhsZ1MrLP7UfHE/templateKind |