<div>Hi,</div><div><br></div><div>I just released Nepoogle v0.7 and I think that it's time to call for some feedback, actually I only received feedback from my couple and opinions from only one person is not the best scenery to develop a good application. If you do not know Nepoogle will simply say that is an application to perform advanced searches in the Nepomuk database.</div>


<div><br></div><div>0.7 version has achieved a milestone because for first time Nepoogle supports Nepomuk query engine, not the full one but Nepomuk::Query::QueryParser(). This engine is very simple but is part of Nepomuk API and is relevant because now Nepoogle supports two search engines, internal and QueryParser, and two interfaces, console and gui.</div>






<div><br></div><div>Since my first efforts I learn some things about SPARQL and I'm know how to build fast SPARQL queries so I'm ready to begin the second version of my query engine, with parenthesis support, and I would like so much some feedback about query language syntax. I think that I achieved some flexibility but I'm not sure if I'm forgetting something. With shortcuts you don't need to know about ontologies but If you have this knowledge you can use it to build powerful queries. For example, even there isn't exif shortcuts is easy search in exif data if you known proper ontologies (you can view ontologies names in resource viewer tooltips):</div>





<div><br></div><div><b>nexif:model:"GT-i5700" nexif:make:samsung</b></div><div><br></div><div>and all photos taken with my old mobile are displayed or, if I'm looking for all photos taken without flash using the Nikon D5000, I can use:</div>





<div><br></div><div><b>nexif:make:"nikon" nexif:model:"D5000" nexif:flash:0</b></div><div><br></div><div>and even simple relations could be expressed:</div><div><br></div><div><b>nmm:director->nco:fullname:Ford</b></div>





<div><br></div><div>will search for movies with a director who's full name contains the word "Ford". Obviously this is not as easy as using shortcuts, in this case shorcut is available so you can simply write "<b>director:Ford</b>",  but at least Nepoogle it's not restricted to the ontologies I implemented. If you know the ontology you can search using it.</div>





<div><br></div><div>So before I begin to write the second version of my query engine some query language feedback are welcome. If you are interested actual syntax, extracted from Nepoogle's help, is the next one:</div>





<div><br></div><div><div><font face="'courier new', monospace">query :== item [[logop] item]... | command | uri</font></div><div><font face="'courier new', monospace"><br>
</font></div><div><font face="'courier new', monospace">item :== [ontology:][op]text</font></div><div><font face="'courier new', monospace"><br></font></div>
<div><font face="'courier new', monospace">logop :== and | or</font></div><div><font face="'courier new', monospace">op :== + | - | < | <= | > | >=</font></div>
<div><font face="'courier new', monospace"><br></font></div><div><font face="'courier new', monospace">ontology :== [ontitem=]ontitem[->[ontitem=]ontitem]]...</font></div>
<div><font face="'courier new', monospace">ontitem :== shortcutontology | shortontology | fullontology</font></div><div><font face="'courier new', monospace">shortcutontology :== actor | album | albums | altlabel | composer | contact | contacts | creator | description | director | discnumber | episode | fullname | genre | hastag | height | mimetype | musicpieces | movies | name | numericrating | performer | producer | playcount | preflabel | rating | season | setnumber | tag | title | tracknumber | tvserie | tvseries | tvshow | type | url | usagecount | width | writer</font></div>





<div><font face="'courier new', monospace">shortontology :== prefix:name</font></div><div><font face="'courier new', monospace">fullontology :== <a href="http://url" target="_blank">http://url</a></font></div>





<div><font face="'courier new', monospace"><br></font></div><div><font face="'courier new', monospace">text :== string | number</font></div><div><font face="'courier new', monospace">string :== chars | "chars" | 'chars'</font></div>





<div><font face="'courier new', monospace">number :== 0..9</font></div><div><font face="'courier new', monospace">chars :== any number of utf-8 characters</font></div>
<div><font face="'courier new', monospace"><br></font></div><div><font face="'courier new', monospace">command :== instruction[:string]</font></div><div><font face="'courier new', monospace">instruction :== --actors | --albums | --audios | --composers | --contacts | --creators | --directors | --genres | --help | --images | --movies | --musicpieces | --performers | --producers | --quit | --tags | --tvseries | --tvshows | --videos | --writers</font></div>

<div><font face="'courier new', monospace"><br></font></div>



</div><div><span style="border-collapse:separate"><div style="font-family:Times"><span style="font-family:arial,helvetica,sans-serif"><br></span></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">On the other side there is the gui  that is not integrated with KDE, because I lack of knowledge and time, but</font><span class="Apple-style-span" style="font-family: arial, helvetica, sans-serif; "> is quite flexible</span><span class="Apple-style-span" style="font-family: arial, helvetica, sans-serif; ">. In v0.7 I added support to templates, for example this is the template used to display movies information:</span></div>

<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><div><font class="Apple-style-span" face="'courier new', monospace">"<b>Title</b>: {nie:title|l|of|ol}[<br /><b>Rating</b>: {nao:numericRating}]<br /><b>Actors</b>: {SPARQL}SELECT DISTINCT ?uri ?value WHERE { <%(uri)s> nmm:actor ?uri . ?uri nco:fullname ?value . } ORDER BY ?value|l|s:actor{/SPARQL}[<br /><b>Description</b>: {nie:description}]"</font></div>

</div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">so customize or add new visualization formats is really easy, and even SPARQL is supported. Sadly external configuration file is not available yet but I will add this feature soon and, if I have time, even I will add support to templates in the resource viewer.</font></div>

<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">I think that the best solution for Nepoogle's gui is a kio but actually I'm more interested in queries than in interface and write a kio seems complicated.  If there is other alternatives I can't see it so suggestions are welcome.</font></div>

<div style="font-family:Times"><span style="font-family:arial,helvetica,sans-serif"><br></span></div><div><font face="arial, helvetica, sans-serif">Thanks for reading :).</font></div><div style="font-family:Times">
<i><br></i></div>
</span></div><div>-- <br>Best wishes,<div>Ignacio</div>
<div><br></div>
</div>