diff --git a/resourcequerywidget.cpp b/resourcequerywidget.cpp
index 757674f..b8ca511 100644
--- a/resourcequerywidget.cpp
+++ b/resourcequerywidget.cpp
@@ -24,6 +24,8 @@
 #include <QtGui/QPlainTextEdit>
 #include <QtGui/QPushButton>
 #include <QtGui/QFont>
+#include <QFileDialog>
+#include <QFile>
 
 #include <KIcon>
 #include <KConfigGroup>
@@ -36,6 +38,7 @@
 #include <Nepomuk/Resource>
 
 
+
 ResourceQueryWidget::ResourceQueryWidget( QWidget* parent )
     : QWidget( parent ),
       m_queryHistoryIndex( 0 )
@@ -67,6 +70,9 @@ ResourceQueryWidget::ResourceQueryWidget( QWidget* parent )
     connect( m_queryModel, SIGNAL(queryFinished()),
              this, SLOT(slotQueryFinished()) );
     connect( m_shorten, SIGNAL(clicked()),this,SLOT(slotQueryShortenButtonClicked()));
+    connect( m_save, SIGNAL(clicked()),this,SLOT(slotQuerySaveButtonClicked()));
+    connect( m_load, SIGNAL(clicked()),this,SLOT(slotQueryLoadButtonClicked()));
+
     m_buttonForward->setEnabled( false );
     m_buttonBack->setEnabled( false );
     m_stopQueryButton->setEnabled(false);
@@ -209,4 +215,36 @@ void ResourceQueryWidget::slotQueryShortenButtonClicked()
     m_queryEdit->setPlainText( query );
 }
 
+void ResourceQueryWidget::slotQueryLoadButtonClicked()
+{
+    QString fileName =  QFileDialog::getOpenFileName(this, tr("Open file"), "/home/", tr("Text files (*.txt)"));
+    QFile file(fileName);
+    QString line;
+    if ( file.open(QIODevice::ReadOnly) )
+    {
+        QTextStream stream( &file );
+        line=stream.readAll();
+        file.close();
+    }
+    m_queryEdit->setPlainText( line );
+
+  }
+
+
+void ResourceQueryWidget::slotQuerySaveButtonClicked()
+{
+    QString query = m_queryEdit->toPlainText();
+    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"/home/",tr("Text Files (*.txt)"));
+    QFile file(fileName);
+    if (file.open(QIODevice::WriteOnly))
+    {
+        QTextStream out(&file);
+        out << query;
+        file.close();
+    }
+
+}
+
+
 #include "resourcequerywidget.moc"
+
diff --git a/resourcequerywidget.h b/resourcequerywidget.h
index 22224fc..04e9041 100644
--- a/resourcequerywidget.h
+++ b/resourcequerywidget.h
@@ -64,7 +64,9 @@ private Q_SLOTS:
     void slotQueryError( const Soprano::Error::Error & error );
     void slotQueryFinished();
     void slotQueryShortenButtonClicked();
-
+    void slotQuerySaveButtonClicked();
+    void slotQueryLoadButtonClicked();
+    
 private:
     void updateHistoryButtonStates();
 
diff --git a/resourcequerywidget.ui b/resourcequerywidget.ui
index e927455..00f1c33 100644
--- a/resourcequerywidget.ui
+++ b/resourcequerywidget.ui
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>357</width>
+    <width>756</width>
     <height>248</height>
    </rect>
   </property>
@@ -47,6 +47,20 @@
       </widget>
      </item>
      <item>
+      <widget class="QPushButton" name="m_save">
+       <property name="text">
+        <string>Save</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="m_load">
+       <property name="text">
+        <string>Load</string>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="QPushButton" name="m_shorten">
        <property name="text">
         <string>Shorten Query</string>