diff --git a/swig/corpus2.i b/swig/corpus2.i
index 83890f2fb1fa298d96ac843695b9e24615d61977..3dbe4ae7b4ebeb4491f33677f6c4212067bdd007 100644
--- a/swig/corpus2.i
+++ b/swig/corpus2.i
@@ -10,6 +10,7 @@
 %include "annotationchannel.i"
 %include "annotationview.i"
 %include "chunk.i"
+%include "document.i"
 %include "iob.i"
 %include "lexeme.i"
 %include "relation.i"
diff --git a/swig/document.i b/swig/document.i
new file mode 100644
index 0000000000000000000000000000000000000000..20fc12cd5dda5736c0be436eadbe327b3eb5b4b1
--- /dev/null
+++ b/swig/document.i
@@ -0,0 +1,33 @@
+#ifndef SWIG_LIBCORPUS2_DOCUMENT_I
+#define SWIG_LIBCORPUS2_DOCUMENT_I
+
+%module libcorpusdocument
+%{
+  #include <libcorpus2/document.h>
+%}
+
+%include "std_defs.i"
+%include "chunk.i"
+%include "relation.i"
+
+%template(DocumentPtr) boost::shared_ptr<Corpus2::Document>;
+%template(ConstDocumentPtr) boost::shared_ptr<const Corpus2::Document>;
+
+namespace Corpus2 {
+  class Document {
+  public:
+    Document();
+    ~Document();
+
+    void add_paragraph(const boost::shared_ptr<Chunk> para);
+    void add_relation(const boost::shared_ptr<Relation> relation);
+
+    const std::vector< boost::shared_ptr<Chunk> >& paragraphs() const;
+    const std::vector< boost::shared_ptr<Relation> >& relations() const;
+  };
+}
+
+using namespace std;
+using namespace Corpus2;
+
+#endif /* SWIG_LIBCORPUS2_DOCUMENT_I */