View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *  http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   */
    17
    18  package org.apache.any23.writer;
    19
    20  import org.apache.any23.configuration.Settings;
    21  import org.eclipse.rdf4j.common.net.ParsedIRI;
    22  import org.eclipse.rdf4j.rio.RDFWriter;
    23  import org.eclipse.rdf4j.rio.WriterConfig;
    24  import org.eclipse.rdf4j.rio.helpers.BasicWriterSettings;
    25
    26  import java.io.OutputStream;
    27  import java.io.Writer;
    28  import java.net.URISyntaxException;
    29
    30  /**
    31   * <i>N3</i> notation {@link TripleWriter} implementation.
    32   *
    33   * @author Hans Brende (hansbrende@apache.org)
    34   */
    35  public class TurtleWriter extends RDFWriterTripleHandler {
    36
    37      static class Internal {
    38          // rdf4j-internal ArrangedWriter + -ea causes AssertionError
    39          // when writing example output of html-mf-hlisting extractor!
    40          // Override to return rdf4j TurtleWriter instances instead.
    41          private static final org.eclipse.rdf4j.rio.turtle.TurtleWriterFactory rdf4j = new org.eclipse.rdf4j.rio.turtle.TurtleWriterFactory() {
    42              @Override
    43              public RDFWriter getWriter(OutputStream out) {
    44                  return new org.eclipse.rdf4j.rio.turtle.TurtleWriter(out);
    45              }
    46
    47              @Override
    48              public RDFWriter getWriter(OutputStream out, String baseURI) throws URISyntaxException {
    49                  return new org.eclipse.rdf4j.rio.turtle.TurtleWriter(out, new ParsedIRI(baseURI));
    50              }
    51
    52              @Override
    53              public RDFWriter getWriter(Writer writer) {
    54                  return new org.eclipse.rdf4j.rio.turtle.TurtleWriter(writer);
    55              }
    56
    57              @Override
    58              public RDFWriter getWriter(Writer writer, String baseURI) throws URISyntaxException {
    59                  return new org.eclipse.rdf4j.rio.turtle.TurtleWriter(writer, new ParsedIRI(baseURI));
    60              }
    61          };
    62
    63          static final TripleFormat FORMAT = format(rdf4j);
    64
    65          static final Settings SUPPORTED_SETTINGS = Settings.of(WriterSettings.PRETTY_PRINT);
    66      }
    67
    68      @Override
    69      void configure(WriterConfig config, Settings settings) {
    70          config.set(BasicWriterSettings.PRETTY_PRINT, settings.get(WriterSettings.PRETTY_PRINT));
    71      }
    72
    73      /**
    74       * Constructor.
    75       *
    76       * @param out
    77       *            stream to write on.
    78       */
    79      public TurtleWriter(OutputStream out) {
    80          this(out, Settings.of());
    81      }
    82
    83      public TurtleWriter(OutputStream os, Settings settings) {
    84          super(Internal.rdf4j, Internal.FORMAT, os, settings);
    85      }
    86
    87  }