<?xml version="1.0"?>
<!-- $Id: n3.xsl,v 1.5 2001/03/20 10:03:10 mdean Exp $ --> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <xsl:output method="text"/> 

  <xsl:template match="var">:<xsl:value-of select="."/></xsl:template>

  <xsl:template match="rel">&lt;<xsl:value-of select="."/>&gt;</xsl:template>

  <xsl:template match="ind">"<xsl:value-of select="."/>"</xsl:template>

  <xsl:template match="atom"><xsl:apply-templates select="*[2]"/><xsl:text xml:space="preserve"> </xsl:text><xsl:apply-templates select="rel"/><xsl:text xml:space="preserve"> </xsl:text><xsl:apply-templates select="*[position() &gt; 2]"/><xsl:text xml:space="preserve"> </xsl:text>.</xsl:template>

  <xsl:template match="and">
    <xsl:apply-templates select="atom[1]"/><xsl:for-each select="atom[position() &gt; 1]"><xsl:text> </xsl:text><xsl:apply-templates select="."/></xsl:for-each>
  </xsl:template>

  <xsl:template match="if">
    <xsl:text xml:space="preserve"># </xsl:text><xsl:value-of select="@label"/>
    { <xsl:apply-templates select="*[position() &gt; 1]"/> }
    log:implies
    { <xsl:apply-templates select="atom[1]"/> } .
  </xsl:template>

  <xsl:template match="/">
    @prefix log: &lt;http://www.w3.org/2000/10/swap/log.n3#&gt; .
    @prefix : &lt;#&gt; .
    
    &lt;&gt; log:forAll 
    <xsl:for-each select="/rulebase/if//var"><xsl:sort select="."/> :<xsl:value-of select="."/>,</xsl:for-each> :dummy .

    <xsl:apply-templates/>
  </xsl:template>

</xsl:stylesheet>
