HOWL Update 1.20
This page is a summary of the cumulative set of changes made to HOWL 1.19 in the proposed HOWL (higgins.owl) 1.20. The changes reflect all agreements made at the F2F in Provo as well as the addition of a proposed simple access control mechanism.
DigitalSubject is now Node.
Use RDF Reification instead of higgins:Value & subclasses
Deleted classes Value, SimpleValue, ComplexValue and their subclasses, as well as the associated properties.
Instead, Nodes just directly have simple literal values (owl:DatatypeProperties) or complex values (owl:ObjectProperties). E.g.:
paul eyeColor "blue" Where paul a Node identifier, eyeColor is a property name, and "blue" is a string value.
Created class higgins:Statement, which is a subclass of rdf:Statement. This can now hold the "metadata" attributes (expires, source, etc) about the Node/property/value triple, using RDF reification.
Harmonization with existing RDF standards & best practice
The goal was to eliminate from higgins.owl anything that has already been standardized elsewhere in a well known ontology. Instead of re-defining existing terms, we'll establish conventions on how to use existing vocabulary terms. These standards include:
The design of some higgins:Node subclasses was influenced by:
- removed higgins:label (use skos:prefLabel directly on higgins:attribute sub-property)
- removed higgins:image (use skos:prefSymbol directly on higgins:attribute sub-property)
- removed higgins:example (use skos:example directly on higgins:attribute sub-property)
- removed higgins:comment (use skos:description directly on higgins:attribute sub-property)
- renamed higgins:order to displayOrder; also changed to owl:annotationProperty
- removed AttributeMetadata & DisplayData: now that we are using OWL Full we can add annotation properties directly to property definitions
- removed higgins:simpleAttribute and higgins:complexAttribute (added no value; developers are free to create whatever predicates they wish without sub-property-ing these)
- added BlankNode to capture the concept of a node with no identifier (this is something that might be returned by an IdAS query by value. It is not technically part of the Higgins Global Graph because it can't be addressed).
- added exactly one required nodeId attribute to Node
- added exactly one required contextId attribute to Context
- changed Higgins:source & creator to use higgins:Node as range
- deleted higgins:creationTime (use dct:created instead)
- deleted higgins:syncConflict (never used, too obscure)
- added higgins:category to allow attributes/properties to link to skos:Concept instances that describe categories
Access Control Primitives
We're starting a wiki page for use cases here: Access Control Use Cases.
To not-reinvent things we re-use the FOAF class hierarchy of Agent, Group, Organization, Person. To be conservative we do NOT subclass directly from FOAF Agent, Group, Organization, Person, but mirrored FOAF's structure. No dependency on FOAF is required. Changes:
- added higgins:Agent (subclass of Node, a person, organization or group)
- added higgins:Group (subclass of Agent; a class of Nodes)
- added higgins:Organization (subclass of Agent; an organization)
- added higgins:Person (subclass of Agent; a contextualized aspect of a person)
Need to be able to associate a Person with a role. Developers can subclass Group (a class of Agents) to define a role. Changes:
- added higgins:memberOf attribute (domain=Agent, range=Group-or-Organization)
Need to express permissions/rights. Changes:
- each attribute definition may have one or more of the following access control attributes:
- addBy: list of Agents
- deleteBy: list of Agents
- getBy: list of Agents
- modifyBy: list of Agents
- addBySelf: boolean
- deleteBySelf: boolean
- getBySelf: boolean
- modifyBySelf: boolean
- added higgins:accessControl as an abstract super-attribute to organize the above 8 attributes.