Implement WRITE-RDF/TURTLE-SUBGRAPH.
authorChris Hanson <org/chris-hanson/cph>
Sun, 9 Dec 2007 05:09:28 +0000 (05:09 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sun, 9 Dec 2007 05:09:28 +0000 (05:09 +0000)
v7/src/xml/turtle.scm
v7/src/xml/xml.pkg

index 355f4e66806023eb43f3976020e36e32b33e2f0b..29165cdb2e7f2f97b72766400eb6fd662b6ae401 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: turtle.scm,v 1.38 2007/12/09 05:02:51 cph Exp $
+$Id: turtle.scm,v 1.39 2007/12/09 05:09:27 cph Exp $
 
 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
@@ -638,10 +638,21 @@ USA.
                 port)
     (write-string "." port)))
 \f
+(define (write-rdf/turtle-subgraph graph #!optional port)
+  (let ((port (if (default-object? port) (current-output-port) port)))
+    (write-parens "{" "}" (or (output-port/column port) 0) port
+      (lambda (indentation)
+       (write-triples graph indentation port)))))
+
 (define (write-rdf/turtle-triples graph #!optional port)
-  (let ((triples (rdf-graph-triples graph))
-       (port (if (default-object? port) (current-output-port) port)))
+  (write-triples graph
+                (or (output-port/column port) 0)
+                (if (default-object? port) (current-output-port) port)))
+
+(define (write-triples graph indentation port)
+  (let ((triples (rdf-graph-triples graph)))
     (write-top-level triples
+                    indentation
                     (let ((groups
                            (inline-bnode-triples (all-triples triples))))
                       (lambda (subject)
@@ -698,14 +709,13 @@ USA.
 (define (group-triples-by-subject ts)
   (group-triples (sort-triples ts) rdf-triple-subject))
 \f
-(define (write-top-level ts inline-bnode port)
+(define (write-top-level ts indentation inline-bnode port)
   (let ((groups (groups-to-write ts inline-bnode)))
     (if (pair? groups)
-       (let* ((indentation (or (output-port/column port) 0))
-              (write-one
-               (lambda (group)
-                 (write-group group indentation inline-bnode port)
-                 (write-string "." port))))
+       (let ((write-one
+              (lambda (group)
+                (write-group group indentation inline-bnode port)
+                (write-string "." port))))
          (write-one (car groups))
          (for-each (lambda (group)
                      (newline port)
index 2c38dcf89751b28ecc96bc50b6d3247e2c2782d1..7af471193d9b6286fbea90ddb4f20717e30a1927 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: xml.pkg,v 1.100 2007/10/12 01:24:33 cph Exp $
+$Id: xml.pkg,v 1.101 2007/12/09 05:09:28 cph Exp $
 
 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
@@ -634,6 +634,7 @@ USA.
          write-rdf/turtle-file
          write-rdf/turtle-literal
          write-rdf/turtle-prefix
+         write-rdf/turtle-subgraph
          write-rdf/turtle-triple
          write-rdf/turtle-triples
          write-rdf/turtle-uri)