# Nanopub-X: Extensions of the Nanopublication Model
# ==================================================
#
# This model defines extensions to the nanopublication schema.
@prefix npx: .
@prefix xsd: .
@prefix rdf: .
@prefix rdfs: .
@prefix rdfg: .
@prefix owl: .
@prefix foaf: .
@prefix prov: .
@prefix np: .
@prefix hycl: .
# Nanopub Types
# -------------
#
# Example nanopubs are created and published for testing. Their content should
# not be taken seriously.
npx:ExampleNanopub rdfs:subClassOf np:Nanopublication .
# Meta-nanopublications are nanopoublications about other nanopublications:
npx:MetaNanopub rdfs:subClassOf np:Nanopublication .
# Protected nanopublications are not supposed to be shared publicly:
npx:ProtectedNanopub rdfs:subClassOf np:Nanopublication .
# Indexes
# -------
npx:NanopubIndex rdfs:subClassOf npx:MetaNanopub .
npx:IncompleteIndex rdfs:subClassOf np:Nanopublication .
npx:IndexAssertion rdfs:subClassOf np:Assertion .
npx:includesElement rdf:type rdf:Property .
npx:includesElement rdfs:domain npx:NanopubIndex .
npx:includesElement rdfs:range np:Nanopublication .
npx:includesSubindex rdf:type rdf:Property .
npx:includesSubindex rdfs:domain npx:NanopubIndex .
npx:includesSubindex rdfs:range npx:NanopubIndex .
npx:appendsIndex rdf:type owl:FunctionalProperty .
npx:appendsIndex rdfs:domain npx:NanopubIndex .
npx:appendsIndex rdfs:range npx:NanopubIndex .
# Connecting Assertions to Formulas and Sentences
# -----------------------------------------------
npx:asFormula rdf:type rdf:Property .
npx:asFormula rdfs:domain np:Assertion .
npx:asFormula rdfs:range hycl:Formula .
npx:asSentence rdf:type rdf:Property .
npx:asSentence rdfs:domain np:Assertion .
npx:asSentence rdfs:range hycl:Sentence .
npx:UnderspecifiedAssertion rdfs:subClassOf np:Assertion .
# Opinions
# --------
npx:Opinion rdf:type rdfs:Class .
npx:Agreement rdfs:subClassOf npx:Opinion .
npx:Disagreement rdfs:subClassOf npx:Opinion .
npx:NullOpinion rdfs:subClassOf npx:Opinion .
npx:Agreement owl:disjointWith npx:NullOpinion .
npx:Agreement owl:disjointWith npx:Disagreement .
npx:Disagreement owl:disjointWith npx:NullOpinion .
npx:hasOpinion rdf:type owl:InverseFunctionalProperty .
npx:hasOpinion rdfs:domain foaf:Agent .
npx:hasOpinion rdfs:range npx:Opinion .
npx:opinionOn rdf:type owl:FunctionalProperty .
npx:opinionOn rdfs:domain npx:Opinion .
npx:opinionOn rdfs:range npx:Statement .
# Introductions and Descriptions
# ------------------------------
#
# Introduction nanopubs are meta-nanopublications introducing a new object or
# agent.
npx:IntroNanopub rdfs:subClassOf np:Nanopublication .
npx:introduces rdf:type rdf:Property .
npx:introduces rdfs:domain npx:IntroNanopub .
npx:introduces rdfs:range owl:Thing .
# Descriptions are like introductions but refer to something that has already
# been defined/introduced (typically by somebody else):
npx:describes rdf:type rdf:Property .
npx:describes rdfs:domain np:Nanopublication .
npx:describes rdfs:range owl:Thing .
# Software Agents
# ---------------
npx:SoftwareAgent rdfs:subClassOf foaf:Agent .
npx:SoftwareAgent rdfs:subClassOf prov:Agent .
npx:SoftwareTool rdfs:subClassOf npx:SoftwareAgent .
npx:Bot rdfs:subClassOf npx:SoftwareAgent .
npx:wasCreatedWith rdf:type rdf:Property .
npx:wasCreatedWith rdfs:subPropertyOf prov:wasAttributedTo .
npx:wasCreatedWith rdfs:range npx:SoftwareTool .
npx:commands rdf:type rdf:Property .
npx:commands rdfs:domain foaf:Agent .
npx:commands rdfs:range npx:Bot .
# Signatures
# ----------
npx:CryptoElement rdf:type rdfs:Class .
npx:hasAlgorithm rdf:type owl:DatatypeProperty .
npx:hasAlgorithm rdf:type owl:FunctionalProperty .
npx:hasAlgorithm rdfs:domain npx:CryptoElement .
npx:hasAlgorithm rdfs:range xsd:string .
npx:hasPublicKey rdf:type owl:DatatypeProperty .
npx:hasPublicKey rdf:type owl:FunctionalProperty .
npx:hasPublicKey rdfs:domain npx:CryptoElement .
npx:hasPublicKey rdfs:range xsd:string .
npx:hasKeyLocation rdf:type rdf:Property .
npx:hasKeyLocation rdf:type owl:FunctionalProperty .
npx:hasKeyLocation rdfs:domain npx:CryptoElement .
npx:NanopubSignatureElement rdfs:subClassOf npx:CryptoElement .
npx:hasSignatureTarget rdf:type rdf:Property .
npx:hasSignatureTarget rdf:type owl:FunctionalProperty .
npx:hasSignatureTarget rdfs:domain npx:NanopubSignatureElement .
npx:hasSignatureTarget rdfs:range np:Nanopublication .
npx:hasSignature rdf:type owl:DatatypeProperty .
npx:hasSignature rdf:type owl:FunctionalProperty .
npx:hasSignature rdfs:domain npx:NanopubSignatureElement .
npx:signedBy rdf:type rdf:Property .
npx:signedBy rdfs:domain npx:NanopubSignatureElement .
npx:signedBy rdfs:range foaf:Agent .
# npx:hasSignatureElement is deprecated and only used for legacy signatures.
# New signatures use npx:hasSignatureTarget instead.
npx:hasSignatureElement rdf:type rdf:Property .
npx:hasSignatureElement rdf:type owl:InverseFunctionalProperty .
npx:hasSignatureElement rdfs:domain np:Nanopublication .
npx:hasSignatureElement rdfs:range npx:NanopubSignatureElement .
npx:KeyDeclaration rdfs:subClassOf npx:CryptoElement .
npx:declaredBy rdf:type rdf:Property .
npx:declaredBy rdfs:domain npx:KeyDeclaration .
npx:declaredBy rdfs:range foaf:Agent .
# Retractions and Updates
# -----------------------
npx:retracts rdf:type rdf:Property .
npx:retracts rdfs:domain foaf:Agent .
npx:retracts rdfs:range np:Nanopublication .
npx:RetractionNanopub rdfs:subClassOf np:Nanopublication .
npx:supersedes rdf:type rdf:Property .
npx:supersedes rdf:type owl:IrreflexiveObjectProperty .
npx:supersedes rdfs:domain np:Nanopublication .
npx:supersedes rdfs:range np:Nanopublication .
# Approvals and Disapprovals
# --------------------------
npx:approvesOf rdf:type rdf:Property .
npx:approvesOf rdfs:domain foaf:Agent .
npx:approvesOf rdfs:range np:Nanopublication .
npx:disapprovesOf rdf:type rdf:Property .
npx:disapprovesOf rdfs:domain foaf:Agent .
npx:disapprovesOf rdfs:range np:Nanopublication .
# Certifications etc.
# -------------------
npx:certifies rdf:type rdf:Property .
npx:certifies rdfs:domain foaf:Agent .
npx:certifies rdfs:range np:Nanopublication .
# qualification as a weaker form of certification
npx:qualifies rdf:type rdf:Property .
npx:qualifies rdfs:domain foaf:Agent .
npx:qualifies rdfs:range np:Nanopublication .
npx:signsDocument rdf:type rdf:Property .
npx:signsDocument rdfs:domain foaf:Agent .
# Services
# --------
npx:NanopubService rdf:type rdfs:Class .
# Settings
# --------
npx:NanopubSetting rdf:type rdfs:Class .
npx:hasAgents rdf:type rdf:Property .
npx:hasAgents rdfs:domain npx:NanopubSetting .
npx:hasAgents rdfs:range npx:NanopubIndex .
npx:hasServices rdf:type rdf:Property .
npx:hasServices rdfs:domain npx:NanopubSetting .
npx:hasServices rdfs:range npx:NanopubIndex .
npx:TrustRangeAlgorithm rdf:type rdfs:Class .
npx:hasTrustRangeAlgorithm rdf:type rdf:Property .
npx:hasTrustRangeAlgorithm rdfs:domain npx:NanopubSetting .
npx:hasTrustRangeAlgorithm rdfs:range npx:TrustRangeAlgorithm .
npx:SettingUpdateStrategy rdf:type rdfs:Class .
npx:hasUpdateStrategy rdf:type rdf:Property .
npx:hasUpdateStrategy rdfs:domain npx:NanopubSetting .
npx:hasUpdateStrategy rdfs:range npx:SettingUpdateStrategy .
npx:hasBootstrapService rdf:type rdf:Property .
npx:hasBootstrapService rdfs:domain npx:NanopubSetting .
npx:hasBootstrapService rdfs:range npx:NanopubService .
npx:FixedTrust rdf:type npx:TrustRangeAlgorithm .
npx:TransitiveTrust rdf:type npx:TrustRangeAlgorithm .
npx:ManualUpdatesOnly rdf:type npx:SettingUpdateStrategy .
npx:UpdatesByCreator rdf:type npx:SettingUpdateStrategy .