@prefix dc: <http://purl.org/dc/elements/1.1/>.

<> dc:description """W3C style meetings agendas,
   using OpenCyc as background knowledge""",
   "$Id";
  dc:relation <http://www.w3.org/2001/02pd/rec54>,
              <http://www.w3.org/2001/02pd/rec54.n3>.

@prefix r: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix s: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ont: <http://www.daml.org/2001/03/daml+oil#>.
@prefix dt: <http://www.w3.org/2001/XMLSchema#>.
@prefix k: <http://opencyc.sourceforge.net/daml/cyc.daml#> .

@prefix w3s: <http://www.w3.org/2000/11/mr76/w3c-style#>.

w3s:WeeklyTelcon s:label "W3C style Weekly Teleconference Series";
  s:subClassOf k:Series;
  s:subClassOf [
    ont:onProperty k:seriesOrderedBy;
    ont:hasValue k:startsAfterEndingOf ].

w3s:telconsOfGroup s:label "telcons of group";
  s:subPropertyOf  k:socialParticipants.

@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix str: <http://www.w3.org/2000/10/swap/string#>.
@prefix : <#>.
@prefix v: <#>.

"0.0convene" log:outputString "\nConvene\n".

this log:forAll
 :MTG, :GRP, :DOC, :ITEM,
 :WHO, :WHAT, :WHEN, :WHERE, :WHY,
              :HOWLONG,
 :TXT, :ADDR,
 :X,
 :S, :P, :O.

#@@ a bit of RDFS
{ :S [ s:subPropertyOf :P ] :O } log:implies { :S :P :O }.
k:nameOfAgent s:subPropertyOf s:nameString.

# where
"0.1conveneWhere" log:outputString "  where:".
{
 :MTG
   k:eventOccursAt [ k:nameString :WHERE; log:uri :ADDR ]. #@@rdf:value?
 ("   " :WHERE " <" :ADDR ">\n") str:concatenation :TXT.
 }
  log:implies {
  "0.1conveneWhereV" log:outputString :TXT.
}.

# when
{

 :MTG
   k:startingPoint [ dt:dateTime :WHEN ];
   k:duration [ dt:duration :HOWLONG ].
 ( "  when: " :WHEN " for " :HOWLONG "\n") str:concatenation :TXT.
 }
  log:implies {
  "0.1conveneWhen" log:outputString :TXT.
}.

"1.0admin" log:outputString "\n1. Administrative\n".

# who: scribe
#@@compute scribe candidates?
"1.1pickScribe" log:outputString "\n1.1 scribe volunteer?\n".

# who: take roll
"1.2roll" log:outputString "1.2 Attendance/Roll\n".


# each meeting in a series is a meeting of the relevant group.
{ [] w3s:telconsOfGroup :GRP;
    k:subEvents :MTG
}
  log:implies { :MTG k:socialParticipants :GRP }.


# If you're in a group and you haven't sent regrets,
# you're expected at the meeting.
# @@excused
:expectedAt k:participantStatus w3s:expected.
{ :MTG k:socialParticipants :GRP;
    w3s:regretsRegistry :DOC.
 :GRP k:groupMembers :WHO.

 # for now, we assume unique names for group members.
 #@@ use log:conclusion and rdfs/daml axioms
 # between semantics and include in order to be more flexible
 # about how regrets are recorded...

 # hmm... how to refer to the meeting?
 # perhaps the minutes of the previous meeting
 # should give a name to the meeting.
 :DOC log:semantics [ log:notIncludes {
   :WHO [ k:participantStatus w3s:regrets ] :MTG
 } ].

}
  log:implies {
  :WHO :expectedAt :MTG.
}.


w3s:expected s:label "expected".
w3s:chair s:label "chair".
w3s:scribe s:label "scribe".
w3s:invited s:label "invited".
w3s:confirmed s:label "confirmed".
w3s:regrets s:label "regrets".
w3s:excused s:label "excused".

{
  [] k:nameOfAgent :WHO;
    [ k:participantStatus [ s:label :X ]] :MTG.
  ("   " :X ": " :WHO "\n") str:concatenation :TXT.
 }
  log:implies {
  "1.2rollV" log:outputString :TXT.
}.

# what: review minutes
# @@hm... generalize PROPOSED stuff, references
"1.3prevrec" log:outputString
"""
1.3 Review minutes

PROPOSED: to accept""".

{
  :MTG w3s:previousMinutes :DOC.
  :DOC dc:title :O.

  ("\n  " :O "\n   " [ is log:uri of :DOC ] ) str:concatenation :TXT
}
  log:implies {
   "1.3prevrecV" log:outputString :TXT
}.

"1.3prevrecZ" log:outputString "\nas a true record.\n".

#@@ confirm status of completed/withdrawn actions here?


"1.4next" log:outputString """
1.4 Next meeting

PROPOSED: to meet again @@when,
  @@who to chair,
  @@who to scribe.
  regrets?
""".


{ :MTG k:eventOccursAt []; # it's a meeting
    k:subEvents :ITEM.
  ("\n\n*** " [ is k:nameString of :ITEM ]) str:concatenation :TXT.
}
  log:implies {
   "2.0agendaItems" log:outputString :TXT }.

"Z.end" log:outputString """

-- 
This agenda was formatted by cwm
  http://www.w3.org/2000/10/swap/doc/cwm
using rules from
  http://www.w3.org/2000/11/mr76/w3cStyle.n3
""".
