# DocBook SGML/XML Publishing Model
#
# $Id: xmlsgmlpub.n3,v 1.1 2002/01/09 22:15:44 ndw Exp $
# 

@prefix : <xmlproc#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
@prefix gv: <http://www.w3.org/2001/02pd/gv#>.
@prefix ont: <http://www.daml.org/2001/03/daml+oil#> .

<> dc:description "XML Publishing Model" .

# Classes

:Process a rdfs:Class .
:Result a rdfs:Class .
:Source a rdfs:Class .
:Temporary a rdfs:Class .
:Optional a rdfs:Class .
:DocumentSet a rdfs:Class .
:SGML a rdfs:Class .
:XML a rdfs:Class .
:Produces a rdfs:Class .
:Consumes a rdfs:Class .
:mayConsume a rdfs:Class .
:consumedBy a rdfs:Class .
:mayBeConsumedBy a rdfs:Class .

# Documents

# Sources

:xmlsource a :XML .
:xmlsource a :Source .
:xmlsource gv:label "DocBook\\n(XML)" .

:sgmlsource a :SGML .
:sgmlsource a :Source .
:sgmlsource gv:label "DocBook\\n(SGML)" .

# Schemas

:xmldtd a :XML .
:xmldtd gv:label "XML DTD" .

:xmldtdcust a :XML .
:xmldtdcust gv:label "DTD Customization\\nLayer (Optional)" .
:xmldtdcust a :Optional .
:xmldtdcust :Consumes :xmldtd .
:xmldtdcust :mayConsume :xmldtdcust .

:sgmldtd a :SGML .
:sgmldtd gv:label "SGML DTD" .

:sgmldtdcust a :XML .
:sgmldtdcust gv:label "DTD Customization\\nLayer (Optional)" .
:sgmldtdcust a :Optional .
:sgmldtdcust :Consumes :sgmldtd .
:sgmldtdcust :mayConsume :sgmldtdcust .


# Stylesheets

:xsltstyle a :XML .
:xsltstyle gv:label "XSLT Stylesheets" .

:xsltstylecust a :XML .
:xsltstylecust gv:label "XSLT Customization\\nLayer (Optional)" .
:xsltstylecust a :Optional .
:xsltstylecust :Consumes :xsltstyle .
:xsltstylecust :mayConsume :xsltstylecust .

:dssslstyle a :SGML .
:dssslstyle gv:label "DSSSL Stylesheets" .

:dssslstylecust a :XML .
:dssslstylecust gv:label "DSSSL Customization\\nLayer (Optional)" .
:dssslstylecust a :Optional .
:dssslstylecust :Consumes :dssslstyle .
:dssslstylecust :mayConsume :dssslstylecust .

# Background SGML documents

:sgmldecl a :SGML .
:sgmldecl gv:label "SGML Declaration" .

:xmldecl a :SGML .
:xmldecl gv:label "SGML Declaration\\nfor XML" .

# Catalogs

:xmlcat a :XML .
:xmlcat gv:label "XML Catalog(s)" .
:xmlcat :mayConsume :xmlcat .

:socat gv:label "SGML Open\\nCatalog(s)" .
:socat :mayConsume :socat .

# Document Sets

:sgmlinput a :DocumentSet .
:sgmlinput gv:label "SGML\\nInput" .
:sgmlinput :Consumes :sgmldtdcust .
:sgmlinput :Consumes :sgmlsource .
:sgmlinput :Consumes :dssslstylecust .
:sgmlinput :Consumes :sgmldecl .
:sgmlinput :mayConsume :socat .

:xmlsgmlinput a :DocumentSet .
:xmlsgmlinput gv:label "XML\\nInput" .
:xmlsgmlinput :Consumes :xmldtdcust .
:xmlsgmlinput :Consumes :xmlsource .
:xmlsgmlinput :Consumes :dssslstylecust .
:xmlsgmlinput :Consumes :xmldecl .
:xmlsgmlinput :mayConsume :socat .

:xmlinput a :DocumentSet .
:xmlinput gv:label "XML\\nInput" .
:xmlinput :Consumes :xmldtdcust .
:xmlinput :Consumes :xmlsource .
:xmlinput :Consumes :xsltstylecust .
:xmlinput :mayConsume :xmlcat .

# Results

:html a :Result .
:html gv:label "HTML" .

:htmlc a :Result .
:htmlc gv:label "Chunked\\nHTML" .

:fo a :Result .
:fo a :Temporary .
:fo gv:label "XSL FO" .

:tex a :Result .
:tex gv:label "tex" .
:tex a :Temporary .

:jtex a :Process .
:jtex gv:label "JadeTeX" .
:jtex :Consumes :tex .

:rtf a :Result .
:rtf gv:label "RTF" .

:pdb a :Result .
:pdb gv:label "PDB" .

:pdf a :Result .
:pdf gv:label "PDF" .

:txt a :Result .
:txt gv:label "Plain Text" .

:ps a :Result .
:ps gv:label "PostScript" .

# Processes

:links a :Process .
:links gv:label "links -dump ..." .
:links :Produces :txt .
:links :Consumes :html .

:isilo a :Process .
:isilo gv:label "isilo ..." .
:isilo :Produces :pdb .
:isilo :Consumes :html .

:sx a :Process .
:sx gv:label "sx" .
:sx :Produces :xmlsource .
:sx :Consumes :sgmlsource .

:fop a :Process .
:fop gv:label "FOP" .
:fop :Produces :pdf .
:fop :Consumes :fo .

:xep a :Process .
:xep gv:label "RenderX\\nXEP" .
:xep :Produces :pdf .
:xep :Consumes :fo .

:jade a :Process .
:jade gv:label "jade" .
:jade :Consumes :xmlsgmlinput .
:jade :Consumes :sgmlinput .
:jade :Produces :html .
:jade :Produces :htmlc .
:jade :Produces :rtf .
:jade :Produces :tex .

:TeX a :Process .
:TeX gv:label "TeX" .
:TeX :Produces :ps .
:TeX :Produces :pdf .
:TeX :Consumes :jtex .
:TeX :Consumes :pTeX .

:pTeX a :Process .
:pTeX gv:label "PassiveTeX" .
:pTeX :Consumes :fo .

:xslt a :Process .
:xslt gv:label "XSLT:\\nsaxon\\nxalan\\netc." .
:xslt :Consumes :xmlinput .
:xslt :Produces :html .
:xslt :Produces :htmlc .
:xslt :Produces :fo .

:xsltproc a :Process .
:xsltproc gv:label "XSLT:\\nxsltproc" .
:xsltproc :Consumes :xmlinput .
:xsltproc :mayConsume :socat .
:xsltproc :Produces :html .
:xsltproc :Produces :htmlc .

:xsltproc :Produces :fo .
:xsltproc :mayConsume :sgmlsource .

# Rules

this log:forAll :p, :s, :o .

# Ontology rules

:Consumes ont:inverseOf :consumedBy .
:mayConsume ont:inverseOf :mayBeConsumedBy .
{ :s [ ont:inverseOf :p ] :o } log:implies { :o :p :s } .

# Graph rules

{ :p :Produces :s } log:implies { :p :solidEdge :s } .
{ :p :Consumes :s } log:implies { :s :solidEdge :p } .
{ :p :mayConsume :s } log:implies { :s :dottedEdge :p } .

# Style rules

{ :s a :Process } log:implies { :s gv:color "black";
                                   gv:shape "box" } .

{ :s a :DocumentSet } log:implies { :s gv:color "black";
                                       gv:shape "polygon";
                                       gv:sides "5" } .

{ :s a :Result } log:implies { :s gv:color "blue";
                                   gv:style "filled";
                                   gv:fontcolor "white" } .

{ :s a :Source } log:implies { :s gv:shape "Mdiamond" } .

{ :s a :Optional } log:implies { :s gv:shape "diamond" } .

{ :s a :Temporary } log:implies { :s gv:color "gray";
                                   gv:style "filled";
                                   gv:fontcolor "white" } .

:solidEdge gv:style "solid" .
:dottedEdge gv:style "dotted" .

# The graph information

<> gv:digraph [
 gv:label "Full DocBook SGML/XML Publishing Model";

 gv:subgraph [ 
  gv:label "" ;
  gv:hasNode :xmlsource, :html, :htmlc, :jade, :sgmlsource, :sx, :xslt, :fo, :rtf,
              :jtex, :TeX, :pdf, :xsltproc, :fop,
              :dssslstyle, :dssslstylecust, :xsltstyle, :xsltstylecust,
              :txt, :links, :sgmlinput, :xmlsgmlinput, :xmldecl, :sgmldecl,
              :xmldtd, :xmldtdcust, :sgmldtd, :sgmldtdcust, 
              :socat, :xmlcat, :pdfTeX, :pTeX, :ps, :xmlinput, :xep, :isilo, :pdb,
              :tex ;
   gv:hasEdgeProperty :solidEdge ;
   gv:hasEdgeProperty :dottedEdge ;
 ]
] .

