[WG-OTTO] Rough notes on a linked data representation of OTTO

Bush,Judith bushj at oclc.org
Tue Oct 20 20:00:09 CDT 2015


Background from https://en.wikipedia.org/wiki/JSON-LD: " It was a goal to require as little effort as possible from developers to transform their existing JSON to JSON-LD. This allows data to be serialized in a way that is similar to traditional JSON. It is a World Wide Web Consortium Recommendation that has been developed by the JSON for Linking Data Community Group before it has been transferred to the RDF Working Group for review, improvement, and standardization."

Extra reading about JSON-LD
* http://manu.sporny.org/category/json-ld/
** http://manu.sporny.org/2013/json-ld-is-the-bees-knees/
** http://manu.sporny.org/2014/json-ld-origins/
** http://manu.sporny.org/2014/json-ld-origins-2/
** github has support


The 7 Best Practices for Producing Linked Data
http://www.w3.org/2011/gld/wiki/Linked_Data_Cookbook#Ingredients_for_High_Quality_Linked_Data

The following best practices are described in this document and listed here for your convenience:

  1.  Model the Data
  2.  Name things with URIs
  3.  Re-use vocabularies whenever possible
  4.  Publish human and machine readable descriptions
  5.  Convert data to RDF
  6.  Specify an appropriate license
  7.  Host the Linked Data Set Publicly and Announce it!

Diagrams of the life cycle for data modeling: Linked Data life cycle<http://www.w3.org/2011/gld/wiki/GLD_Life_cycle>


Some vocabulary guidelines for consideration in your project:

  1.  To name things, use rdfs:label, foaf:name, skos:prefLabel
  2.  >> To describe people, use FOAF, vCard
  3.  To describe projects, use DOAP
  4.  To describe Web pages and other publications,use dc:creatoranddc:description
  5.  To describe an RDF schema/vocabulary/ontology, use a VoID description
  6.  >> To describe addresses, use vCard
  7.  To model simple data, use RDF, RDFS, custom vocabularies
  8.  To model existing taxonomies, use SKOS


On Monday, the Fyrst Federation forms with the following organizations:
      Medical Practice of Atown,
     Hospital of  Atown,
     Atown Scrubs Supply,
     and Atown Medical School

1. To kick off the block chain, each organization submits the JSON-LD description to the block chain using the OTTO:entity (extension of FOAF:agent) and OTTO:organization (extension of FOAF:organization) structures.
2. Then the Fyrst Federation administrator submits a description of the federation using OTTO:Group (extension of FOAF:Group). This is just a list because each member is a pointer to data already in the blockchain.
3. Tuesday the Holistic Practitioners of Atown join the Federation. They enter their OTTO:entity & OTTO:organization.
4. Tuesday afternoon someone tries to authenticate at the Holistic Practitioners SP from Medical Practice. Since the latest entry of OTTO:Group doesn't point to Holistic Practitioners' entity data, the medical practice doesn't authenticate.
5. Wednesday afternoon, the HP's check clears and the Fyrst administrator enters an new description of the OTTO:Group in the blockchain which includes the entity for HP.

I generated the diagram below with http://plantuml.com/ -- the input file follows the diagram



[cid:5B90D6DF-0A16-40D5-99FD-47C22816878D]





@startuml
' The following from Section 3 of https://www.oasis-open.org/committees/download.php/51890/SAML%20MD%20simplified%20overview.pdf, with additions from the discussion on Sept 30th

EntitiesDescriptor -- "*" EntitiesDescriptor
EntitiesDescriptor -- "0..*" EntityDescriptor
EntityDescriptor -- RoleDescriptor
class EntityDescriptor{
entityID()
validUntil()
}
RoleDescriptor <|-- AttrAuthorityDescriptor
RoleDescriptor <|-- SSODescriptorType
RoleDescriptor -- "0..1" KeyDescriptor
SSODescriptorType <|-- SPSSODescriptor
SPSSODescriptor -- "0..*" SingleLogoutService
SPSSODescriptor -- "0..*" AttributeConsumingService
SPSSODescriptor -- "0..*" AssertionConsumerService
SSODescriptorType <|-- IDPSSODescriptor
IDPSSODescriptor -- "0..*" ArtifactResolutionService
IDPSSODescriptor -- "0..*" SingleSignOnService
EntityDescriptor -- "0..1" AffiliationDescriptor : has affiliation >
AffiliationDescriptor -- "0..1" EntityDescriptor : contains entities >
AffiliationDescriptor -- KeyDescriptor
EntityDescriptor -- "0..1" Organization
Organization -- "0..1" ContactType

'Now FOAF

FOAF_Agent <|-- FOAF_Group
'The Group class represents a collection of individual agents (and may itself play the role of a Agent, ie. something that can perform actions).)
FOAF_Agent <|-- FOAF_Person
FOAF_Agent <|-- FOAF_Organization
OTTO_Group --|> FOAF_Group
class OTTO_Group{
      FOAF_name()
      'It really seems this should have been members. JEB
      FOAF_member()
      OTTO_entityID()
}
OTTO_Entity --|> FOAF_Agent
class OTTO_Entity{
      FOAF_name()
      OTTO_entityID()
}
OTTO_Organization --|> FOAF_Organization
class OTTO_Organization{
      FOAF_name()
      OTTO_contacts()
}
OTTO_Contact --|> FOAF_Person
class OTTO_Contact{
      OTTO_contacttype()
      vCard_whatever()
}
OTTO_Group -- "0..*" OTTO_Entity
OTTO_Entity -- "0..1" OTTO_Organization
OTTO_Organization -- "1..*" OTTO_Contact
@enduml


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://kantarainitiative.org/pipermail/wg-otto/attachments/20151021/33e23b3c/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Demo.png
Type: image/png
Size: 110942 bytes
Desc: Demo.png
URL: <http://kantarainitiative.org/pipermail/wg-otto/attachments/20151021/33e23b3c/attachment-0001.png>


More information about the WG-OTTO mailing list