sub:assertion {
dcterms:created rdfs:label "created - timestamp of creation" .
dcterms:creator rdfs:label "creator - person who created this statement" .
sub:anchorStatement a nt:LocalResource ;
rdfs:label "Anchor statement for versioning" .
sub:assertion dcterms:description """<p>This template allows you to create Rosetta Statements following the metamodel described in \"Rosetta Statements: Simplifying FAIR Knowledge Graph Construction with a User-Centered Approach\".</p>
<p><strong>Rosetta Statements</strong> model the structure of simple English natural language statements rather than attempting to represent a mind-independent reality. They prioritize:</p>
<ul>
<li><strong>Cognitive Interoperability:</strong> Easy to understand for domain experts</li>
<li><strong>Findability:</strong> Supports search without requiring SPARQL knowledge</li>
<li><strong>Semantic Interoperability:</strong> Standardized patterns for each statement type</li>
<li><strong>User-Centered Design:</strong> Reflects natural language structure</li>
</ul>
<p><strong>Key Features:</strong></p>
<ul>
<li><strong>N-ary Support:</strong> Handle statements with multiple objects (not just binary relations)</li>
<li><strong>Dynamic Labels:</strong> Display as natural language sentences in user interfaces</li>
<li><strong>Versioning Support:</strong> Track changes and editing history</li>
<li><strong>Metadata Rich:</strong> Include confidence levels, negation, context, and provenance</li>
<li><strong>Wikidata Integration:</strong> Use Wikidata terms for immediate usability</li>
</ul>
<p><strong>Statement Structure:</strong></p>
<ul>
<li><strong>Subject:</strong> The main entity the statement is about</li>
<li><strong>Predicate:</strong> Captured by the statement type/class</li>
<li><strong>Objects:</strong> Up to 4 object positions (resources or literals)</li>
<li><strong>Constraints:</strong> Type restrictions for each position</li>
</ul>
<p><strong>Example:</strong> \"This apple has a weight of 241.68 grams\" becomes a 'has-measurement' statement type with subject=apple, object1=weight (quality), object2=241.68 (value), object3=gram (unit).</p>
<p>This approach significantly lowers the barrier for domain experts to create FAIR knowledge graphs without requiring expertise in semantics, RDF, or ontology engineering.</p>""" ;
a nt:AssertionTemplate ;
rdfs:label "Creating a Rosetta Statement following the natural language statement metamodel" ;
nt:hasNanopubLabelPattern "Rosetta Statement: ${dynamicLabelTemplate}" ;
nt:hasStatement sub:st01 ,
sub:st02 ,
sub:st03 ,
sub:st04 ,
sub:st05 ,
sub:st06 ,
sub:st07 ,
sub:st08 ,
sub:st09 ,
sub:st10 ,
sub:st11 ,
sub:st12 ,
sub:st13 ,
sub:st14 ,
sub:st15 ,
sub:st16 ,
sub:st17 ,
sub:st18 ,
sub:st19 ,
sub:st20 ;
nt:hasTag "Cognitive Interoperability" , "FAIR" , "Knowledge Graphs" , "Natural Language" , "Rosetta Statements" , "Semantic Modeling" ;
nt:hasTargetNanopubType schema1:Statement ,
rosetta:RosettaStatement .
sub:confidenceLevel a nt:LiteralPlaceholder ;
rdfs:label "Confidence level (0.0-1.0)" ;
nt:hasDatatype xsd:decimal ;
nt:hasRegex "^(0(\\.\\d+)?|1(\\.0+)?)$" .
sub:context a nt:ExternalUriPlaceholder ;
rdfs:label "Context (e.g., DOI of scholarly publication)" .
sub:dynamicLabelTemplate a nt:LiteralPlaceholder ;
rdfs:label "Dynamic label template (e.g., 'SUBJECT has QUALITY of VALUE UNIT')" ;
nt:hasRegex ".{10,200}" .
sub:isNegation a nt:RestrictedChoicePlaceholder ;
rdfs:label "Is this statement negated?" ;
nt:possibleValue "false" , "true" .
sub:object1Type a nt:RestrictedChoicePlaceholder ;
rdfs:label "Constraint for first object position" ;
nt:possibleValue "boolean" , "date" , "literal" , "number" , "resource" , "text" .
sub:object2Type a nt:RestrictedChoicePlaceholder ;
rdfs:label "Constraint for second object position" ;
nt:possibleValue "boolean" , "date" , "literal" , "number" , "resource" , "text" .
sub:object3Type a nt:RestrictedChoicePlaceholder ;
rdfs:label "Constraint for third object position" ;
nt:possibleValue "boolean" , "date" , "literal" , "number" , "resource" , "text" .
sub:object4Type a nt:RestrictedChoicePlaceholder ;
rdfs:label "Constraint for fourth object position" ;
nt:possibleValue "boolean" , "date" , "literal" , "number" , "resource" , "text" .
sub:objectPosition1 a nt:ExternalUriPlaceholder ;
rdfs:label "First object (required or optional)" .
sub:objectPosition2 a nt:ExternalUriPlaceholder ;
rdfs:label "Second object (optional)" .
sub:objectPosition3 a nt:ExternalUriPlaceholder ;
rdfs:label "Third object (optional)" .
sub:objectPosition4 a nt:ExternalUriPlaceholder ;
rdfs:label "Fourth object (optional)" .
sub:sourceReference a nt:ExternalUriPlaceholder ;
rdfs:label "Source reference supporting this statement" .
sub:st01 rdf:object rosetta:RosettaStatement ;
rdf:predicate rdf:type ;
rdf:subject sub:statementInstance .
sub:st02 rdf:object sub:statementType ;
rdf:predicate rosetta:hasStatementType ;
rdf:subject sub:statementInstance .
sub:st03 rdf:object sub:dynamicLabelTemplate ;
rdf:predicate rosetta:hasDynamicLabel ;
rdf:subject sub:statementInstance ;
a nt:OptionalStatement .
sub:st04 rdf:object sub:subjectResource ;
rdf:predicate rosetta:subject ;
rdf:subject sub:statementInstance .
sub:st05 rdf:object sub:subjectLabel ;
rdf:predicate rdfs:label ;
rdf:subject sub:subjectResource ;
a nt:OptionalStatement .
sub:st06 rdf:object sub:objectPosition1 ;
rdf:predicate rosetta:requiredObjectPosition1 ;
rdf:subject sub:statementInstance .
sub:st07 rdf:object sub:objectPosition2 ;
rdf:predicate rosetta:optionalObjectPosition1 ;
rdf:subject sub:statementInstance ;
a nt:OptionalStatement .
sub:st08 rdf:object sub:objectPosition3 ;
rdf:predicate rosetta:optionalObjectPosition2 ;
rdf:subject sub:statementInstance ;
a nt:OptionalStatement .
sub:st09 rdf:object sub:objectPosition4 ;
rdf:predicate rosetta:optionalObjectPosition3 ;
rdf:subject sub:statementInstance ;
a nt:OptionalStatement .
sub:st10 rdf:object sub:confidenceLevel ;
rdf:predicate rosetta:hasConfidenceLevel ;
rdf:subject sub:statementInstance ;
a nt:OptionalStatement .
sub:st11 rdf:object sub:context ;
rdf:predicate rosetta:hasContext ;
rdf:subject sub:statementInstance ;
a nt:OptionalStatement .
sub:st12 rdf:object sub:isNegation ;
rdf:predicate rosetta:isNegation ;
rdf:subject sub:statementInstance ;
a nt:OptionalStatement .
sub:st13 rdf:object sub:sourceReference ;
rdf:predicate rosetta:hasSourceReference ;
rdf:subject sub:statementInstance ;
a nt:OptionalStatement ,
nt:RepeatableStatement .
sub:st14 rdf:object sub:version ;
rdf:predicate rosetta:hasVersion ;
rdf:subject sub:statementInstance ;
a nt:OptionalStatement .
sub:st15 rdf:object sub:statementInstance ;
rdf:predicate rosetta:hasVersion ;
rdf:subject sub:anchorStatement ;
a nt:OptionalStatement .
sub:statementInstance a nt:IntroducedResource ;
rdfs:label "The Rosetta Statement instance" .
sub:statementType a nt:GuidedChoicePlaceholder ;
rdfs:label "Type of Rosetta Statement (predicate-based classification)" ;
nt:possibleValuesFromApi "https://w3id.org/np/l/nanopub-query-1.1/api/find-things?type=https://w3id.org/rosetta/RosettaStatementClass" .
sub:subjectLabel a nt:LiteralPlaceholder ;
rdfs:label "Human-readable label for subject" ;
nt:hasRegex ".{1,100}" .
sub:subjectResource a nt:ExternalUriPlaceholder ;
rdfs:label "Subject resource (Wikidata URI or ontology term)" .
sub:version a nt:LiteralPlaceholder ;
rdfs:label "Version identifier" ;
nt:hasRegex ".{1,50}" .
hycl:AIDA-Sentence rdfs:label "AIDA sentence - Atomic, Independent, Declarative, Absolute sentence" .
rdf:type rdfs:label "is a - connects to class/type" .
prov:wasAttributedTo rdfs:label "was attributed to - attribution of statement" .
rosetta:RosettaStatement rdfs:label "Rosetta Statement - a natural language statement modeled semantically" .
rosetta:anchorStatement rdfs:label "anchor statement - version-independent statement identity" .
rosetta:hasConfidenceLevel rdfs:label "has confidence level - degree of certainty (0-1)" .
rosetta:hasContext rdfs:label "has context - scholarly publication or broader context" .
rosetta:hasDynamicLabel rdfs:label "has dynamic label - template for natural language display" .
rosetta:hasSourceReference rdfs:label "has source reference - supporting evidence" .
rosetta:hasStatementType rdfs:label "has statement type - connects to Rosetta Statement class" .
rosetta:hasVersion rdfs:label "has version - links to statement version" .
rosetta:isNegation rdfs:label "is negation - whether this statement is negated" .
rosetta:optionalLiteralObjectPosition1 rdfs:label "optional literal object position 1 - first optional literal" .
rosetta:optionalObjectPosition1 rdfs:label "optional object position 1 - first optional object" .
rosetta:optionalObjectPosition2 rdfs:label "optional object position 2 - second optional object" .
rosetta:optionalObjectPosition3 rdfs:label "optional object position 3 - third optional object" .
rosetta:requiredLiteralObjectPosition1 rdfs:label "required literal object position 1 - first mandatory literal" .
rosetta:requiredObjectPosition1 rdfs:label "required object position 1 - first mandatory object" .
rosetta:requiredObjectPosition2 rdfs:label "required object position 2 - second mandatory object" .
rosetta:subject rdfs:label "has subject - connects statement to its subject resource" .
}