- Eagle-I Data Repository Ontology
#
# - Last Revised: $Date: 2010-12-15 20:22:12 -0500 (Wed, 15 Dec 2010) $
- $Revision: 6182 $
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
- eagle-i data repository's private ontology
@prefix : <http://eagle-i.org/ont/repo/1.0/> .
- eagle-i common annotation ontology
@prefix common: <http://eagle-i.org/ont/app/1.0/> .
- internal administrative metadata objects that must never leave the repo
- (hence the non-resolvable localhost URI)
@prefix amd: <http://localhost/amd/>.
: a owl:Ontology;
-
- owl:imports dcterms: ;
owl:versionInfo "$Id: repository-ont.n3 6182 2010-12-16 01:22:12Z lcs14 $"^^xsd:string.
- owl:imports dcterms: ;
-
- --------------------------- Access Control
:Agent a owl:Class;
rdfs:subClassOf foaf:Agent;
rdfs:subClassOf dcterms:Agent;
rdfs:subClassOf common:Agent;
rdfs:label "Agent"^^xsd:string;
rdfs:comment "Represents a person, role, or other principal to be granted access control rights"^^xsd:string.
- Properties we care about on common:Person -
- foaf:mbox - a valid email box
- foaf:firstName - "first" name(s)
- foaf:surame - last or given name – broken up for sorting.
- :hasPrincipalName - login name, to map it from auth'n system
:Person a owl:Class;
rdfs:subClassOf foaf:Person;
rdfs:subClassOf :Agent;
rdfs:subClassOf common:Person;
rdfs:label "Person"^^xsd:string;
rdfs:comment "Represents a person acting as an authenticated user of the repository"^^xsd:string.
:hasPrincipalName a owl:DatatypeProperty;
rdfs:comment "Indicates the authenticated login principal bound to this Person or Agent"^^xsd:string;
rdfs:label "login principal"^^xsd:string;
rdfs:domain :Person.
:isImplicit a owl:DatatypeProperty;
rdfs:comment "When true the role is implicit, that is, automatically assigned to the relevant users, invisible to admins."^^xsd:string;
rdfs:label "is an implicit role"^^xsd:string;
rdfs:domain :Person.
:Role a owl:Class;
rdfs:subClassOf :Agent;
rdfs:label "Role"^^xsd:string;
rdfs:comment "Represents an access-control role granted to an Agent"^^xsd:string.
:hasRole a owl:ObjectProperty;
rdfs:comment "Subject is entitled to the access privilegs of this role"^^xsd:string;
rdfs:label "has role"^^xsd:string;
rdfs:range :Role.
-
-
-
-
-
- Access grant Properties
-
-
-
-
- NOTE: these properties MUST all be direct subproperties of :hasAnyAccess
- in order for the Access class logic to work.
:hasAnyAccess a owl:ObjectProperty;
rdfs:comment "has*Access superproperty"^^xsd:string;
rdfs:label "has*Access superproperty"^^xsd:string.
:hasAddAccess a owl:ObjectProperty;
rdfs:comment "Grants ADD access on subject resource to a principal"^^xsd:string;
rdfs:label "has add access"^^xsd:string;
rdfs:subPropertyOf :hasAnyAccess;
rdfs:range :Agent.
:hasRemoveAccess a owl:ObjectProperty;
rdfs:comment "Grants remove access on subject resource to a principal"^^xsd:string;
rdfs:label "has remove access"^^xsd:string;
rdfs:subPropertyOf :hasAnyAccess;
rdfs:range :Agent.
:hasReadAccess a owl:ObjectProperty;
rdfs:comment "Grants read and query access on subject resource to a principal"^^xsd:string;
rdfs:label "has read access"^^xsd:string;
rdfs:subPropertyOf :hasAnyAccess;
rdfs:range :Agent.
:hasAdminAccess a owl:ObjectProperty;
rdfs:comment "Grants administrative access on subject resource to a principal"^^xsd:string;
rdfs:label "has administrative access"^^xsd:string;
rdfs:subPropertyOf :hasAnyAccess;
rdfs:range :Agent.
-
-
- -------------- Provenance Properties
-
- Named Graph "object" is just a node to collect metadata about a named graph.
- Its URI is the same as the URI of the named graph, but instance lives in
- the internal administrative-metadata named graph.
- Recommended properties on NamedGraph
- rdfs:label - display label for menus etc.
- dcterms:modified
- dcterms:contributor
- dcterms:source - if ingested
- object is blank node with properties:
- dcterms:identifier == file or uri source
- dcterms:modified == source's last-mod date
:NamedGraph a owl:Class;
rdfs:label "Named Graph"^^xsd:string;
rdfs:comment "Collection of metadata about named graph in the repository."^^xsd:string.
- NamedGraphType - a controlled vocabulary of Named Graph usage
:NamedGraphType a owl:Class;
rdfs:label "Named Graph Type";
rdfs:comment "Purpose of a NamedGraph, indicates whether it should be included in certain query datasets"^^xsd:string .
:ngType a owl:FunctionalProperty;
rdfs:label "named graph type"^^xsd:string;
rdfs:comment "Describes type of contents and purpose of this named graph"^^xsd:string;
rdfs:range :NamedGraphType.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Edit Token (used to mediate instance updates)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
:hasEditToken a owl:ObjectProperty;
rdfs:comment "Relates eagle-i Resource Instance to a URI marking an update in progress with associated metadata."^^xsd:string;
rdfs:label "Edit Token"^^xsd:string.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Workflow ontology:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
:hasWorkflowState a owl:ObjectProperty;
rdfs:comment "Current workflow state of this instance"^^xsd:string;
rdfs:label "workflow state"^^xsd:string;
rdfs:range :WorkflowState.
:WorkflowState a owl:Class;
rdfs:label "Workflow State"^^xsd:string;
rdfs:comment "Controlled vocabulary describing workflow state."^^xsd:string.
:hasWorkflowOwner a owl:ObjectProperty;
rdfs:comment "Current owner (claimant) of the workflow state of this instance"^^xsd:string;
rdfs:label "workflow owner"^^xsd:string;
rdfs:range :Agent.
:WorkflowTransition a owl:Class;
rdfs:label "Workflow Transition";
rdfs:comment "Describes one of the possible transitions from one workflow state to another"^^xsd:string.
:workspace a owl:ObjectProperty;
rdfs:comment "Home workspace of resources capable of using this transition"^^xsd:string;
rdfs:label "Workspace"^^xsd:string;
rdfs:domain :WorkflowTransition;
rdfs:range :NamedGraph.
:initial a owl:ObjectProperty, owl:FunctionalProperty;
rdfs:comment "Initial (Starting) workflow state"^^xsd:string;
rdfs:label "Initial Workflow state"^^xsd:string;
rdfs:domain :WorkflowTransition;
rdfs:range :WorkflowState.
:final a owl:ObjectProperty, owl:FunctionalProperty;
rdfs:comment "Final (Ending) workflow state"^^xsd:string;
rdfs:label "Final Workflow State"^^xsd:string;
rdfs:domain :WorkflowTransition;
rdfs:range :WorkflowState.
:action a owl:DatatypeProperty;
rdfs:comment "fully qualified class name of Java class implementing action"^^xsd:string;
rdfs:label "action"^^xsd:string;
rdfs:domain :WorkflowTransition.
:actionParameter a owl:DatatypeProperty;
rdfs:comment "Transition-specific parameter to give action method"^^xsd:string;
rdfs:label "action parameter"^^xsd:string;
rdfs:domain :WorkflowTransition.
#------------------------------------------------
- Instances (Individuals)
#------------------------------------------------
- -------------------- Named Graph Types
- Although these are instances they are very unlikely to change, and
- should not be altered by admin, so they belong in the ontology.
- There is lots of hardwired logic depending on this set of graph types.
:NGType_Ontology a :NamedGraphType;
rdfs:comment "Contains Ontology applicable to data objects"^^xsd:string;
rdf:value "ontology"^^xsd:string;
rdfs:label "Ontology"^^xsd:string.
:NGType_Published a :NamedGraphType;
rdfs:label "Published resource instances"^^xsd:string;
rdf:value "published"^^xsd:string;
rdfs:comment "Data objects meant to be visible to the public"^^xsd:string.
:NGType_Workspace a :NamedGraphType;
rdfs:label "Workspace"^^xsd:string;
rdf:value "workspace"^^xsd:string;
rdfs:comment "Data objects meant to be invisible to the public"^^xsd:string.
:NGType_Metadata a :NamedGraphType;
rdfs:label "Administrative Metadata "^^xsd:string;
rdf:value "metadata"^^xsd:string;
rdfs:comment "Administrative Metadata for the repository"^^xsd:string.
:NGType_Internal a :NamedGraphType;
rdfs:label "Internal Use Only"^^xsd:string;
rdf:value "internal"^^xsd:string;
rdfs:comment "Contains data that is only to be used internally by repository, such as administrative metadata"^^xsd:string.
#---------------------
- The URI repsenting a wildcard match in the delete part of /update request
- Included here just to document its existence.
:MatchAnything
rdfs:comment "Wildcard URI for delete statements request, matches any predicate and/or object"^^xsd:string.
#---------------------
- List of properties to check for label in eagle-i data model ontology,
- in order of preference:
- XXX does this really belong in NG_Internal, or even config properties?
- XXX it may need to be updated someday but that might not be synchronized
- XXX with repository ontology versions.. REALLY belongs with data model
- ontology or annotation properties.
:LabelProperties a rdf:Seq;
rdfs:comment "Properties to check for label in eagle-i data model ontology, in order of preference"^^xsd:string;
rdf:_1 <http://eagle-i.org/ont/app/1.0/preferredLabel> ;
rdf:_2 <http://purl.obolibrary.org/obo/IAO_0000111> ;
rdf:_3 rdfs:label .
#----------------------------------------------------------------
- Workflow States
#----------------------------------------------------------------
-
- Workflow state instances - these are part of the ontology because
- (a) they change very infrequently if ever; (b) the rdfs:label must be
- world-readable which it is NOT in the NG_Internal graph.
- Note the :order property to impose a sort order for display.
-
- KLUDGE ALERT: :hasWriter properties only for FakeWorkflow, should go away.
:WFS_New a :WorkflowState;
rdfs:comment "New instance in the process of creation"^^xsd:string;
rdfs:label "New"^^xsd:string;
:order "10"^^xsd:integer.
:WFS_Draft a :WorkflowState;
rdfs:comment "Data collection and preparation"^^xsd:string;
rdfs:label "Draft"^^xsd:string;
:order "20"^^xsd:integer;
:hasWriter :Role_RNAV;
:hasWriter :Role_Curator.
:WFS_Curation a :WorkflowState;
rdfs:comment "Awaiting approval by a curator and possible editing"^^xsd:string;
rdfs:label "In Curation"^^xsd:string;
:order "30"^^xsd:integer;
:hasWriter :Role_Curator.
:WFS_Published a :WorkflowState;
rdfs:comment "Finished and available to the public"^^xsd:string;
rdfs:label "Published"^^xsd:string;
:order "40"^^xsd:integer;
:hasWriter :Role_Curator.
:WFS_Withdrawn a :WorkflowState;
rdfs:comment "Withdrawn from public access"^^xsd:string;
rdfs:label "Withdrawn"^^xsd:string;
:order "50"^^xsd:integer;
:hasWriter :Role_Curator.