diff --git a/swig/libcorpussentence.i b/swig/libcorpussentence.i
new file mode 100644
index 0000000000000000000000000000000000000000..89f3c0a9c1b715911d3dcb21630cf94be61518f9
--- /dev/null
+++ b/swig/libcorpussentence.i
@@ -0,0 +1,46 @@
+#ifndef SWIG_LIBCORPUS2_SENTENCE_I
+#define SWIG_LIBCORPUS2_SENTENCE_I
+
+%module libcorpussentence
+%{
+  #include <libcorpus2/sentence.h>
+%}
+
+%include "libcorpustoken.i"
+
+%include "std_string.i"
+%include "std_vector.i"
+
+%include "boost_shared_ptr.i"
+
+%feature("notabstract") Corpus2::Sentence;
+
+%rename(__op_get__) Corpus2::Sentence::operator[](size_t idx) const;
+
+namespace Corpus2 {
+  class Sentence {
+  public:
+    Sentence();
+    virtual ~Sentence();
+
+    virtual boost::shared_ptr<Sentence> clone_shared() const;
+
+    void release_tokens();
+    bool empty() const;
+    size_t size() const;
+    Token* operator[](size_t idx);
+    const std::vector<Token*>& tokens() const;
+    std::vector<Token*>& tokens();
+    virtual void append(Token* t);
+    const Token* first_token() const;
+    
+  };
+}
+
+%template(SentenceSharedPtr) boost::shared_ptr<Corpus2::Sentence>;
+
+using namespace boost;
+using namespace std;
+using namespace Corpus2;
+
+#endif /* SWIG_LIBCORPUS2_SENTENCE_I */