#  W3C organizational structure with roadmap
#

# See also http://www.w3.org/2000/04/mem-news/Makefile and so on
#
@prefix doc: <http://www.w3.org/2000/10/swap/pim/doc#>.  # Documentation control
@prefix contact: <http://www.w3.org/2000/10/swap/pim/contact#>. # Contact address book
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix s: <http://www.w3.org/2000/01/rdf-schema#>.      # RDF Schema
@prefix ont:  <http://www.daml.org/2000/12/daml+oil#> .  # Ontology
@prefix rm:    <http://www.w3.org/2001/04/roadmap/vocab#>.   #  @@@@@@@@@@@@@
@prefix dot: <http://www.w3.org/2001/02pd/gv#>.
@prefix w:  <http://www.w3.org/2001/04/roadmap/w3c#>.  # Specs


@prefix : <#>.
@prefix st: <#>.

# @prefix h: <http://www.w3.org/1999/xhtml> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix org: <http://www.w3.org/2001/04/roadmap/org#> .  # Vocab for org structure

#  Domains

org:includes a rdf:Property.

org:chair s:range contact:Person.
org:teamContact s:range contact:Person.

{ :x :p :y. :p s:range :z } log:implies { :y a :z}.  # Definition of s:range 

<> dot:digraph :theGraph.
:theGraph dot:label "W3C Organizational Structure";
          dot:rankdir "LR".    # Arrange the flow left-right rather than top to bottom.


this log:forAll :c, :d, :g, :p, :q, :x, :y, :z.

#### Selection - Propagate graph membership

:theGraph dot:hasNode :w3c.  # seed
#:theGraph dot:hasNode w:fullpotential.

this log:forAll :n1, :n2, :p.

{ :theGraph dot:hasNode :n1.
  :n1 :p :n2.
  :p a dot:EdgeProperty.
 }
   log:implies { :theGraph dot:hasNode :n2. }.

{ :theGraph dot:hasNode :n2.
  :n1 :p :n2.
  :p a dot:EdgeProperty.
 }
   log:implies { :theGraph dot:hasNode :n1. }.

org:partOf ont:inverseOf org:includes; a dot:EdgeProperty.

#org:deliveredBy a dot:EdgeProperty; ont:inverseOf org:deliverable.
#rm:needs  a dot:EdgeProperty.
#rm:influencedBy a dot:EdgeProperty.
#rm:prototypes a dot:EdgeProperty.  # color in style.n3

#{ :x org:chair :y } log:implies { :y a contact:Person }.
#{ :p a contact:Person; contact:homePage [ log:uri :y ] } log:implies { :p dot:URL #:y }.

# Derive labels and URL approprately

{ :x org:name :y }			log:implies { :x dot:label :y }.
{ :x contact:fullName :y }	log:implies { :x dot:label :y }.
{ :x contact:homePage [ log:uri :y ] }		log:implies { :x dot:URL :y }.

#  Inverse edges

{ :x :p :y. :p ont:inverseOf :q }		  log:implies { :y :q :x }.  # Define ont:inverseOf
{ :p ont:inverseOf :q }		  log:implies { :q ont:inverseOf :p }.

org:coordinatedBy ont:inverseOf org:coordinates;
    a dot:EdgeProperty.

# takes too much space
# org:chair a dot:EdgeProperty.
# org:teamContact a dot:EdgeProperty; dot:label "tc".

# The Consortium itself.
#
# This only works with one consortium! No list of domains?
{ :x a org:Domain } log:implies { :w3c org:includes :x }.

:w3c dot:label "W3C";     dot:color "dodgerblue4"; dot:fontcolor "white"; dot:style "filled"; dot:shape "box".


# The Domains and Groups clustered
#
:theGraph dot:m  org:Domain, org:Activity, org:Group.

{ :theGraph dot:subGraph ?cluster.
  ?thing  a ?cluster. }  => { ?cluster dot:hasNode ?thing }.

# Re-use class labels from the schema
{ ?c a s:Class; s:label ?lab} =>  { ?c  dot:label ?lab }.





 #ENDS
