@prefix dcterms: . @prefix foaf: . @prefix hycl: . @prefix np: . @prefix npx: . @prefix nt: . @prefix orcid: . @prefix prov: . @prefix rdf: . @prefix rdfs: . @prefix rosetta: . @prefix schema1: . @prefix sub: . @prefix this: . @prefix xsd: . sub:Head { this: np:hasAssertion sub:assertion; np:hasProvenance sub:provenance; np:hasPublicationInfo sub:pubinfo; a np:Nanopublication . } sub:assertion { dcterms:created rdfs:label "created - timestamp of creation" . dcterms:creator rdfs:label "creator - person who created this statement" . 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" . a nt:LocalResource; rdfs:label "Anchor statement for versioning" . dcterms:description """

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\".

Rosetta Statements model the structure of simple English natural language statements rather than attempting to represent a mind-independent reality. They prioritize:

  • Cognitive Interoperability: Easy to understand for domain experts
  • Findability: Supports search without requiring SPARQL knowledge
  • Semantic Interoperability: Standardized patterns for each statement type
  • User-Centered Design: Reflects natural language structure

Key Features:

  • N-ary Support: Handle statements with multiple objects (not just binary relations)
  • Dynamic Labels: Display as natural language sentences in user interfaces
  • Versioning Support: Track changes and editing history
  • Metadata Rich: Include confidence levels, negation, context, and provenance
  • Wikidata Integration: Use Wikidata terms for immediate usability

Statement Structure:

  • Subject: The main entity the statement is about
  • Predicate: Captured by the statement type/class
  • Objects: Up to 4 object positions (resources or literals)
  • Constraints: Type restrictions for each position

Example: \"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).

This approach significantly lowers the barrier for domain experts to create FAIR knowledge graphs without requiring expertise in semantics, RDF, or ontology engineering.

"""; a nt:AssertionTemplate; rdfs:label "Creating a Rosetta Statement following the natural language statement metamodel"; nt:hasNanopubLabelPattern "Rosetta Statement: ${dynamicLabelTemplate}"; nt:hasStatement , , , , , , , , , , , , , , , , , , , ; nt:hasTag "Cognitive Interoperability", "FAIR", "Knowledge Graphs", "Natural Language", "Rosetta Statements", "Semantic Modeling"; nt:hasTargetNanopubType schema1:Statement, rosetta:RosettaStatement . a nt:LiteralPlaceholder; rdfs:label "Confidence level (0.0-1.0)"; nt:hasDatatype xsd:decimal; nt:hasRegex "^(0(\\.\\d+)?|1(\\.0+)?)$" . a nt:ExternalUriPlaceholder; rdfs:label "Context (e.g., DOI of scholarly publication)" . a nt:LiteralPlaceholder; rdfs:label "Dynamic label template (e.g., 'SUBJECT has QUALITY of VALUE UNIT')"; nt:hasRegex ".{10,200}" . a nt:RestrictedChoicePlaceholder; rdfs:label "Is this statement negated?"; nt:possibleValue "false", "true" . a nt:RestrictedChoicePlaceholder; rdfs:label "Constraint for first object position"; nt:possibleValue "boolean", "date", "literal", "number", "resource", "text" . a nt:RestrictedChoicePlaceholder; rdfs:label "Constraint for second object position"; nt:possibleValue "boolean", "date", "literal", "number", "resource", "text" . a nt:RestrictedChoicePlaceholder; rdfs:label "Constraint for third object position"; nt:possibleValue "boolean", "date", "literal", "number", "resource", "text" . a nt:RestrictedChoicePlaceholder; rdfs:label "Constraint for fourth object position"; nt:possibleValue "boolean", "date", "literal", "number", "resource", "text" . a nt:ExternalUriPlaceholder; rdfs:label "First object (required or optional)" . a nt:ExternalUriPlaceholder; rdfs:label "Second object (optional)" . a nt:ExternalUriPlaceholder; rdfs:label "Third object (optional)" . a nt:ExternalUriPlaceholder; rdfs:label "Fourth object (optional)" . a nt:ExternalUriPlaceholder; rdfs:label "Source reference supporting this statement" . rdf:object rosetta:RosettaStatement; rdf:predicate rdf:type; rdf:subject . rdf:object ; rdf:predicate rosetta:hasStatementType; rdf:subject . rdf:object ; rdf:predicate rosetta:hasDynamicLabel; rdf:subject ; a nt:OptionalStatement . rdf:object ; rdf:predicate rosetta:subject; rdf:subject . rdf:object ; rdf:predicate rdfs:label; rdf:subject ; a nt:OptionalStatement . rdf:object ; rdf:predicate rosetta:requiredObjectPosition1; rdf:subject . rdf:object ; rdf:predicate rosetta:optionalObjectPosition1; rdf:subject ; a nt:OptionalStatement . rdf:object ; rdf:predicate rosetta:optionalObjectPosition2; rdf:subject ; a nt:OptionalStatement . rdf:object ; rdf:predicate rosetta:optionalObjectPosition3; rdf:subject ; a nt:OptionalStatement . rdf:object ; rdf:predicate rosetta:hasConfidenceLevel; rdf:subject ; a nt:OptionalStatement . rdf:object ; rdf:predicate rosetta:hasContext; rdf:subject ; a nt:OptionalStatement . rdf:object ; rdf:predicate rosetta:isNegation; rdf:subject ; a nt:OptionalStatement . rdf:object ; rdf:predicate rosetta:hasSourceReference; rdf:subject ; a nt:OptionalStatement, nt:RepeatableStatement . rdf:object ; rdf:predicate rosetta:hasVersion; rdf:subject ; a nt:OptionalStatement . rdf:object ; rdf:predicate rosetta:hasVersion; rdf:subject ; a nt:OptionalStatement . a nt:IntroducedResource; rdfs:label "The Rosetta Statement instance" . 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" . a nt:LiteralPlaceholder; rdfs:label "Human-readable label for subject"; nt:hasRegex ".{1,100}" . a nt:ExternalUriPlaceholder; rdfs:label "Subject resource (Wikidata URI or ontology term)" . a nt:LiteralPlaceholder; rdfs:label "Version identifier"; nt:hasRegex ".{1,50}" . 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" . } sub:provenance { sub:assertion prov:generatedAtTime "2025-06-30T13:31:12.135724"^^xsd:dateTime . prov:wasAttributedTo orcid:0000-0002-1784-2920 . } sub:pubinfo { sub:sig npx:hasAlgorithm "RSA"; npx:hasPublicKey "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Jjl8R2frREttzggYjcDg8jCw86fTKNHAQ1GoItGE4jA+kSIXdoeFzwEaxqgYFyrrnW9Vuw1qCGFHUi5tSY9KvjNOEj6IMeKMo9RwW5Fb4JHA37HQ/IBI6663lB0docvDu4gWvtuZd3znf8wIH22iZ5qHzE4seFVPdnceJqaExi7+hWlgOVC7C9Muybv72LyIh4XfH6lRnu6R22m5f4z3AlM0m7glM3y1t8eAF4gmx4LN85BG2Wsxi9SEi3PR7wB1a2LlSdY7+2btpG5LOUg8IaYytv/LtgkO4GRjCA1vV6ZDdYxdcYQgEpU4fZ6S91BDKOLhQKoAZt/CKKEpfSOVwIDAQAB"; npx:hasSignature "LZ2uYSMrnN+Q+Gey7yLeB4OpmK4SIz6QFgYfDq4jJFZdFFMD2E48PIpNy/6CToJoQdTkyb3hcxmvORPKL4WAsSAH8ZogcLgOaJHhZdnHBHo98vh4RaWDomwvuf5CbuzlymExh6gBus3GfuAIO5t/boxMuMLsXNBuw97Vo13Ux73pPjTE+2PO3rkBxGtA+BsGEaFriXkzA9XdAeWH2aDcKGNIF27yFYXrsNiHdM8D+Ww7ympJspaPl0R3T/gbUbK1iIk7cMFz7qS0eNr0Q6q1xJ2jaQvxPSZcIjpqHr8fXEXKlNQ+atzMYft0FA8PuKks1GRW3H8wnCxqXwIU4oa3Jw=="; npx:hasSignatureTarget this: . this: prov:generatedAtTime "2025-06-30T13:31:12.135724"^^xsd:dateTime; prov:wasAttributedTo orcid:0000-0002-1784-2920 . orcid:0000-0002-1784-2920 foaf:name "Anne Fouilloux" . }