<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/112791/">http://git.reviewboard.kde.org/r/112791/</a>
     </td>
    </tr>
   </table>
   <br />




<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Nepomuk.</div>
<div>By Denis Steckelmacher.</div>







<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This is the review request for my GSoC 2013 project : A New Query Parser and Auto-Completed Input Widget for Nepomuk.

This big patch removes the old user query parser of Nepomuk (that uses regular expressions to parse a simple language) and adds the query parser developed during the summer. The new query parser uses "parsing passes" that match patterns in the user query and replace them with parsed information. For instance, the parser recognizes that "Foo size > 2M" contains "size > <size>" and that "2M" can be parsed as "<number> <unit>". The resulting query therefore looks for files containing "Foo" and having a size greater that 2 megabytes.

The patterns can be translated using standard KDE localization tools. The patch adds a Messages.sh file in libnepomukcore/ to allow the translators to extract the translations. If this file is not required, it can be removed from the patch.

You can find more information about the internals of the parser on my blog (the archives are here : http://steckdenis.be/archives.html , just look for articles around the middle of July that speak about the parser).

The code added by this patch also lives in the steckdenis-gsoc2013 branch of kde:nepomuk-core. You can find here the whole history of the parser.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This patch adds unit tests for the new query parser. These tests verify that the basic English syntax of the new query parser works, and that more advanced features like human-friendly date-time parsing works as expected. They are not complete though, as there are many patterns and rules to test, and in potentially many languages.

The new query parser is fully binary compatible with the old one. I installed my version of nepomuk-core on my openSUSE 12.3 and everything worked, KRunner was able to show me the results of my queries.</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>CMakeLists.txt <span style="color: grey">(36438aa)</span></li>

 <li>autotests/test/queryparsertest.h <span style="color: grey">(3c6a833)</span></li>

 <li>autotests/test/queryparsertest.cpp <span style="color: grey">(b63acb3)</span></li>

 <li>includes/CMakeLists.txt <span style="color: grey">(3ee318e)</span></li>

 <li>includes/Query/CompletionProposal <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/CMakeLists.txt <span style="color: grey">(5e9fa86)</span></li>

 <li>libnepomukcore/Messages.sh <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/query/queryparser.h <span style="color: grey">(ddea63a)</span></li>

 <li>libnepomukcore/query/queryparser.cpp <span style="color: grey">(80c9bed)</span></li>

 <li>libnepomukcore/query/queryserializer.cpp <span style="color: grey">(7ac6131)</span></li>

 <li>libnepomukcore/query/term.h <span style="color: grey">(114baa3)</span></li>

 <li>libnepomukcore/query/term.cpp <span style="color: grey">(cfb41f4)</span></li>

 <li>libnepomukcore/query/term_p.h <span style="color: grey">(6d92b48)</span></li>

 <li>libnepomukcore/queryparser/.gitignore <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/completionproposal.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/completionproposal.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_comparators.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_comparators.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_dateperiods.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_dateperiods.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_datevalues.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_datevalues.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_decimalvalues.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_decimalvalues.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_filenames.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_filenames.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_filesize.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_filesize.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_numbers.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_numbers.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_periodnames.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_periodnames.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_properties.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_properties.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_splitunits.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_splitunits.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_subqueries.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_subqueries.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_typehints.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/pass_typehints.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/patternmatcher.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/patternmatcher.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/queryparser.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/queryparser.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/utils.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>libnepomukcore/queryparser/utils.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>services/fileindexer/indexer/mobipocket/mobipocket.cpp <span style="color: grey">(fedc50c)</span></li>

 <li>services/storage/query/queryservice.cpp <span style="color: grey">(593abd9)</span></li>

 <li>tests/querytester.h <span style="color: grey">(0f8202d)</span></li>

 <li>tests/querytester.cpp <span style="color: grey">(65bc454)</span></li>

 <li>tools/nepomuksearch/main.cpp <span style="color: grey">(931e73d)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/112791/diff/" style="margin-left: 3em;">View Diff</a></p>







  </td>
 </tr>
</table>




  </div>
 </body>
</html>