W3C home > Mailing lists > Public > public-linked-json@w3.org > April 2013

RE: access control vocabulary - where to start?

From: Markus Lanthaler <markus.lanthaler@gmx.net>
Date: Sun, 28 Apr 2013 10:25:08 +0200
To: "'Marian, Radu'" <radu.marian@baml.com>, <public-linked-json@w3.org>
Cc: "'Anil Saldhana'" <Anil.Saldhana@redhat.com>
Message-ID: <00a401ce43e9$e5965a40$b0c30ec0$@lanthaler@gmx.net>
Hi Radu,

> At OASIS we have started a CloudAuthZ TC which is creating an access
> control model.  We would like to leverage RDFa and JSON-LD for our
> work.

That's great! Thanks for letting us know.


> However we are realizing that we need an access control vocabulary
> defined - similar to http://schema.org.  We do have  a draft model
> ontology for access control - however we need to move from ontology
> design into vocabulary registration.

I'm not sure I understand you correctly but I interpret this as "we have
modeled our ontology, now we need to define that ontology in a (JSON-LD)
vocabulary". Is this correct?


> So the question is where do we start?  What is the simplest way to
> build such a vocabulary

Assuming that my interpretation above is correct, the first step would be to
mint URLs for your concepts. For example if you have an "Entitlement" class
in your ontology you would assign it a unique URL, maybe something like:
http://www.oasis-open.org/ns/cloudauthz#Entitlement

The next step is to describe in a machine-readable way what that URL means.
The standard way to describe vocabularies is to use RDF Schema [1] or OWL
[2]. I would suggest you start with RDF Schema as it is much simpler. Lets
first define some prefixes to shorten the long URLs. Let's say we use ca to
refer to the beginning of all CloudAuthZ URLs:
http://www.oasis-open.org/ns/cloudauthz#

This allows us to shorten the long URL
http://www.oasis-open.org/ns/cloudauthz#Entitlement to just ca:entitlement.

We do the same for RDF Schema, rdfs: http://www.w3.org/2000/01/rdf-schema#

In JSON-LD you would define a context as follows for these abbreviations:

{
  "@context": {
    "ca": "http://www.oasis-open.org/ns/cloudauthz#",
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#"
  }
}


Then you can start defining your concepts. Using the "Entitlement" class as
an example again, you would end up with something like

{
  "@context": {
    "ca": "http://www.oasis-open.org/ns/cloudauthz#",
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#"
  },
  "@graph": [
    {
      "@id": "ca:Entitlement",
      "@type": "rdfs:Class",
      "rdfs:label": "Entitlement",
      "rdfs:comment": "A short description of the Entitlement class",
      ...
    }
  ]
}

You would then repeat that for all your classes and properties in your
ontology. Just add a JSON object for every concept to the @graph array.

I hope this helps to get you started. If you have further questions please
don't hesitate to ask.


Cheers,
Markus


[1] http://www.w3.org/TR/rdf-schema/
[2] http://www.w3.org/TR/owl-guide/



--
Markus Lanthaler
@markuslanthaler
Received on Sunday, 28 April 2013 08:25:42 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:18:37 UTC