Class InteropFramework

  • All Implemented Interfaces:
    org.openprovenance.prov.interop.InteropMediaType, org.openprovenance.prov.model.ProvSerialiser

    public class InteropFramework
    extends Object
    implements org.openprovenance.prov.interop.InteropMediaType, org.openprovenance.prov.model.ProvSerialiser
    The interoperability framework for PROV, with utility methods to write and read documents to files and streams, according to media types, format (specified as Formats.ProvFormat). The class also provides helper functions to support content negotiation.
    Author:
    lavm, dtm
    • Field Detail

      • configuration

        public static final String configuration
      • factoryClass

        public static final String factoryClass
      • defaultFactory

        public static final org.openprovenance.prov.model.ProvFactory defaultFactory
      • extensionMap

        public final Hashtable<org.openprovenance.prov.interop.Formats.ProvFormat,​String> extensionMap
      • extensionRevMap

        public final Hashtable<String,​org.openprovenance.prov.interop.Formats.ProvFormat> extensionRevMap
      • mimeTypeMap

        public final Hashtable<org.openprovenance.prov.interop.Formats.ProvFormat,​String> mimeTypeMap
      • mimeTypeRevMap

        public final Hashtable<String,​org.openprovenance.prov.interop.Formats.ProvFormat> mimeTypeRevMap
      • provTypeMap

        public final Hashtable<org.openprovenance.prov.interop.Formats.ProvFormat,​org.openprovenance.prov.interop.Formats.ProvFormatType> provTypeMap
    • Constructor Detail

      • InteropFramework

        public InteropFramework()
        Default constructor for the ProvToolbox interoperability framework. It uses the factory declared in the configuration file as its default factory.
      • InteropFramework

        public InteropFramework​(org.openprovenance.prov.model.ProvFactory pFactory)
      • InteropFramework

        public InteropFramework​(CommandLineArguments config,
                                org.openprovenance.prov.model.ProvFactory pFactory)
    • Method Detail

      • getPropertiesFromClasspath

        public static Properties getPropertiesFromClasspath​(String propFileName)
      • getDefaultFactory

        public static org.openprovenance.prov.model.ProvFactory getDefaultFactory()
      • dynamicallyLoadFactory

        public static org.openprovenance.prov.model.ProvFactory dynamicallyLoadFactory​(String factory)
      • buildAcceptHeader

        public String buildAcceptHeader()
        Create a list of mime types supported by ProvToolbox in view of constructing an Accept Header.
        Returns:
        a string representing the mime types.
      • connectWithRedirect

        public URLConnection connectWithRedirect​(URL theURL)
                                          throws IOException
        A method to connect to a URL and follow redirects if any.
        Parameters:
        theURL - a URL to connect to
        Returns:
        a URLConnection
        Throws:
        IOException - if connection cannot be opened and no response is received.
      • convertExtensionToMediaType

        public String convertExtensionToMediaType​(String extension)
        Maps an file extension to a Media type
        Parameters:
        extension - the extension of a file containing a serialization of PROV
        Returns:
        a String for the Internet Media type corresponding to a file with this extension
      • getExtension

        public String getExtension​(org.openprovenance.prov.interop.Formats.ProvFormat format)
        Returns an extension for a given type of serialization of PROV
        Parameters:
        format - Formats.ProvFormat for which file extension is sought
        Returns:
        a String for the extension of a file containing such a serialization
      • getTypeForFile

        public org.openprovenance.prov.interop.Formats.ProvFormat getTypeForFile​(String filename)
        Get a Formats.ProvFormat given the file's exetension
        Parameters:
        filename - the file for which the Formats.ProvFormat is sought
        Returns:
        a Formats.ProvFormat
      • getTypeForFormat

        public org.openprovenance.prov.interop.Formats.ProvFormat getTypeForFormat​(String format)
        Get a Formats.ProvFormat given a format string
        Parameters:
        format - the format for which the Formats.ProvFormat is sought
        Returns:
        a Formats.ProvFormat
      • getVariants

        public List<javax.ws.rs.core.Variant> getVariants()
        Support for content negotiation, jax-rs style. Create a list of media type supported by the framework.
        See Also:
        Content Negotiation
      • initializeExtensionMap

        public void initializeExtensionMap​(Hashtable<org.openprovenance.prov.interop.Formats.ProvFormat,​String> extensionMap,
                                           Hashtable<String,​org.openprovenance.prov.interop.Formats.ProvFormat> extensionRevMap)
        Initialization function
        Parameters:
        extensionMap - mapping of Formats.ProvFormat to extensions
        extensionRevMap - reverse mapping of extensions to Formats.ProvFormat
      • isInputFormat

        public Boolean isInputFormat​(org.openprovenance.prov.interop.Formats.ProvFormat format)
        Determines whether this format received as argument is an input format.
        Parameters:
        format - a Formats.ProvFormat
        Returns:
        true if format is an input format
      • isOutputFormat

        public Boolean isOutputFormat​(org.openprovenance.prov.interop.Formats.ProvFormat format)
        Determines whether this format received as argument is an output format.
        Parameters:
        format - a Formats.ProvFormat
        Returns:
        true if format is an output format
      • loadProvUnknownGraph

        public Object loadProvUnknownGraph​(String filename)
        Experimental code, trying to load a document without knowing its serialization format. First parser that succeeds returns a results. Not a robust method!
        Parameters:
        filename - a file to load the provenance document from
        Returns:
        a document
      • readDocument

        public org.openprovenance.prov.model.Document readDocument​(InputStream is,
                                                                   org.openprovenance.prov.interop.Formats.ProvFormat format,
                                                                   String baseuri)
        Reads a Document from an input stream, using the parser specified by the format argument.
        Parameters:
        is - an input stream
        format - one of the input formats supported by ProvToolbox
        baseuri - a base uri for the input stream document
        Returns:
        a Document
      • readDocument

        public org.openprovenance.prov.model.Document readDocument​(InputStream is,
                                                                   org.openprovenance.prov.interop.Formats.ProvFormat format,
                                                                   org.openprovenance.prov.model.ProvFactory pFactory,
                                                                   String baseuri)
        Reads a Document from an input stream, using the parser specified by the format argument.
        Parameters:
        is - an input stream
        format - one of the input formats supported by ProvToolbox
        pFactory - a provenance factory used to construct the Document
        baseuri - a base uri for the input stream document
        Returns:
        a Document
      • readDocument

        public org.openprovenance.prov.model.Document readDocument​(String url)
        Reads a document from a URL. Uses the Content-type header field to determine the mime-type of the resource, and therefore the parser to read the document.
        Parameters:
        url - a URL
        Returns:
        a Document
      • readDocumentFromFile

        public org.openprovenance.prov.model.Document readDocumentFromFile​(String filename)
        Reads a document from a file, using the file extension to decide which parser to read the file with.
        Parameters:
        filename - the file to read a document from
        Returns:
        a Document
      • readDocumentFromFile

        public org.openprovenance.prov.model.Document readDocumentFromFile​(String filename,
                                                                           org.openprovenance.prov.interop.Formats.ProvFormat format)
        Deprecated.
        Use instead deserialiseDocument
        Reads a document from a file, using the format to decide which parser to read the file with.
        Parameters:
        filename - the file to read a document from
        format - the format of the file
        Returns:
        a Document
      • serialiseDocument

        public void serialiseDocument​(OutputStream out,
                                      org.openprovenance.prov.model.Document document,
                                      boolean formatted)
        Serializes a document to a stream
        Specified by:
        serialiseDocument in interface org.openprovenance.prov.model.ProvSerialiser
        Parameters:
        out - an OutputStream
        document - a Document
        formatted - a boolean indicating whether the output should be pretty-printed
      • serialiseDocument

        public void serialiseDocument​(OutputStream out,
                                      org.openprovenance.prov.model.Document document,
                                      String mediaType,
                                      boolean formatted)
        Specified by:
        serialiseDocument in interface org.openprovenance.prov.model.ProvSerialiser
      • deserialiseDocument

        public org.openprovenance.prov.model.Document deserialiseDocument​(InputStream is,
                                                                          org.openprovenance.prov.interop.Formats.ProvFormat format)
                                                                   throws IOException
        Throws:
        IOException
      • mediaTypes

        public Collection<String> mediaTypes()
        Specified by:
        mediaTypes in interface org.openprovenance.prov.model.ProvSerialiser
      • readDocument

        public org.openprovenance.prov.model.Document readDocument​(org.openprovenance.prov.interop.InteropFramework.ToRead something)
      • setNamespaces

        public void setNamespaces​(org.openprovenance.prov.model.Document doc)
        Initializes a Document's namespace.
      • writeDocument

        public void writeDocument​(OutputStream os,
                                  javax.ws.rs.core.MediaType mt,
                                  org.openprovenance.prov.model.Document document)
        Write a Document to output stream, according to specified Internet Media Type
        Parameters:
        os - an OutputStream to write the Document to
        mt - a MediaType
        document - a Document to serialize
      • writeDocument

        public void writeDocument​(OutputStream os,
                                  org.openprovenance.prov.interop.Formats.ProvFormat format,
                                  org.openprovenance.prov.model.Document document)
        Write a Document to output stream, according to specified Formats.ProvFormat
        Parameters:
        os - an OutputStream to write the Document to
        format - a Formats.ProvFormat
        document - a Document to serialize
      • writeDocumentOLD

        public void writeDocumentOLD​(OutputStream os,
                                     org.openprovenance.prov.interop.Formats.ProvFormat format,
                                     org.openprovenance.prov.model.Document document)
        TO BE DELETED
      • writeDocument

        public void writeDocument​(String filename,
                                  org.openprovenance.prov.model.Document document)
        Write a Document to file, serialized according to the file extension
        Parameters:
        filename - path of the file to write the Document to
        document - a Document to serialize
      • createLegacySerializerMap

        public final Map<org.openprovenance.prov.interop.Formats.ProvFormat,​SerializerFunction> createLegacySerializerMap()
      • createLightAndLegacySerializerMap

        public final Map<org.openprovenance.prov.interop.Formats.ProvFormat,​SerializerFunction> createLightAndLegacySerializerMap()
      • createLightSerializerMap

        public final Map<org.openprovenance.prov.interop.Formats.ProvFormat,​SerializerFunction> createLightSerializerMap()
      • createLightAndLegacyDeserializerMap

        public final Map<org.openprovenance.prov.interop.Formats.ProvFormat,​DeserializerFunction> createLightAndLegacyDeserializerMap()
      • createLegacyDeserializerMap

        public final Map<org.openprovenance.prov.interop.Formats.ProvFormat,​DeserializerFunction> createLegacyDeserializerMap()
      • createSerializerMap

        public Map<org.openprovenance.prov.interop.Formats.ProvFormat,​SerializerFunction> createSerializerMap()
      • createDeserializerMap

        public Map<org.openprovenance.prov.interop.Formats.ProvFormat,​DeserializerFunction> createDeserializerMap()
      • writeDocument

        public void writeDocument​(String filename,
                                  org.openprovenance.prov.interop.Formats.ProvFormat format,
                                  org.openprovenance.prov.model.Document document)
        Write a Document to file, serialized according to the file extension
        Parameters:
        filename - path of the file to write the Document to
        document - a Document to serialize