1. Eagle-I Data Repository Ontology
    #
    #
  2. Last Revised: $Date: 2010-12-15 20:22:12 -0500 (Wed, 15 Dec 2010) $
  3. $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/> .

  1. eagle-i data repository's private ontology
    @prefix : <http://eagle-i.org/ont/repo/1.0/> .
  1. eagle-i common annotation ontology
    @prefix common: <http://eagle-i.org/ont/app/1.0/> .
  1. internal administrative metadata objects that must never leave the repo
  2. (hence the non-resolvable localhost URI)
    @prefix amd: <http://localhost/amd/>.

: a owl:Ontology;

    1. owl:imports dcterms: ;
      owl:versionInfo "$Id: repository-ont.n3 6182 2010-12-16 01:22:12Z lcs14 $"^^xsd:string.
    1. --------------------------- 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.

  1. Properties we care about on common:Person -
  2. foaf:mbox - a valid email box
  3. foaf:firstName - "first" name(s)
  4. foaf:surame - last or given name – broken up for sorting.
  5. :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
  1. NOTE: these properties MUST all be direct subproperties of :hasAnyAccess
  2. 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.

      1. -------------- Provenance Properties
  1. Named Graph "object" is just a node to collect metadata about a named graph.
  2. Its URI is the same as the URI of the named graph, but instance lives in
  3. the internal administrative-metadata named graph.
  1. Recommended properties on NamedGraph
  2. rdfs:label - display label for menus etc.
  3. dcterms:modified
  4. dcterms:contributor
  5. dcterms:source - if ingested
  6. object is blank node with properties:
  7. dcterms:identifier == file or uri source
  8. 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.

  1. 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.

#------------------------------------------------

  1. Instances (Individuals)
    #------------------------------------------------
  1. -------------------- Named Graph Types
  2. Although these are instances they are very unlikely to change, and
  3. should not be altered by admin, so they belong in the ontology.
  4. 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.

#---------------------

  1. The URI repsenting a wildcard match in the delete part of /update request
  2. Included here just to document its existence.

:MatchAnything
rdfs:comment "Wildcard URI for delete statements request, matches any predicate and/or object"^^xsd:string.

#---------------------

  1. List of properties to check for label in eagle-i data model ontology,
  2. in order of preference:
  3. XXX does this really belong in NG_Internal, or even config properties?
  4. XXX it may need to be updated someday but that might not be synchronized
  5. XXX with repository ontology versions.. REALLY belongs with data model
  6. 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 .

#----------------------------------------------------------------

  1. Workflow States
    #----------------------------------------------------------------
    1. Workflow state instances - these are part of the ontology because
    2. (a) they change very infrequently if ever; (b) the rdfs:label must be
    3. world-readable which it is NOT in the NG_Internal graph.
    4. Note the :order property to impose a sort order for display.
    1. 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.

  • No labels