diff --git a/swig/corpus2.i b/swig/corpus2.i
index c791ab74b338bfb11787ba5025b2126f8ef2c131..83890f2fb1fa298d96ac843695b9e24615d61977 100644
--- a/swig/corpus2.i
+++ b/swig/corpus2.i
@@ -12,6 +12,7 @@
 %include "chunk.i"
 %include "iob.i"
 %include "lexeme.i"
+%include "relation.i"
 %include "sentence.i"
 %include "tag.i"
 %include "tagset.i"
diff --git a/swig/relation.i b/swig/relation.i
new file mode 100644
index 0000000000000000000000000000000000000000..d273e72e70cd9883d77eeed3e54135aadba6319c
--- /dev/null
+++ b/swig/relation.i
@@ -0,0 +1,57 @@
+#ifndef SWIG_LIBCORPUS2_RELATION_I
+#define SWIG_LIBCORPUS2_RELATION_I
+
+%module libcorpusrelation
+%{
+  #include <libcorpus2/relation.h>
+%}
+
+%include "std_defs.i"
+%include "std_string.i"
+%include "boost_shared_ptr.i"
+
+// %feature("notabstract") Corpus2::TokenMetaData;
+%template(DirectionPointPtr) boost::shared_ptr<Corpus2::DirectionPoint>;
+%template(ConstDirectionPointPtr) boost::shared_ptr<const Corpus2::DirectionPoint>;
+%template(RelationPtr) boost::shared_ptr<Corpus2::Relation>;
+%template(ConstRelationPtr) boost::shared_ptr<const Corpus2::Relation>;
+
+namespace Corpus2 {
+  class DirectionPoint {
+  public:
+    DirectionPoint(const std::string, const std::string, const int);
+
+    const std::string sentence_id() const;
+    const std::string channel_name() const;
+    int annotation_number() const;
+  };
+
+  class Relation {
+  public:
+    /*
+    Relation(const std::string& name,
+       const boost::shared_ptr<const DirectionPoint> from,
+       const boost::shared_ptr<const DirectionPoint> to);
+    */
+    Relation(const std::string& name,
+       const DirectionPoint& from,
+       const DirectionPoint& to);
+    ~Relation();
+
+
+    /* It must be renamed because "from" is python keyword */
+    %rename(rel_from) from() const;
+    const boost::shared_ptr<const DirectionPoint>& from() const;
+    /* Also "to" for consistency should be renamed to rel_to */
+    %rename(rel_to) to() const;
+    const boost::shared_ptr<const DirectionPoint>& to() const;
+    /* ...and "name" to rel_name */
+    %rename(rel_name) name() const;
+    const std::string name() const;
+  };
+}
+
+using namespace std;
+using namespace Corpus2;
+
+#endif /* SWIG_LIBCORPUS2_RELATION_I */