Hi!
On miƩ, 2010-02-03 at 12:08 +0000, Martyn Russell wrote:
> Hi all,
>
> Carlos and Philip recently worked on the anonymous-file-nodes branch to
> fix a regression with the way resources are stored in the database which
> was changed recently. This is the review of that branch:
>
> http://git.gnome.org/browse/tracker/log/?h=anonymous-file-nodes
>
>
> 1. We should use G_DIR_SEPARATOR_S here instead:
>
> + slash_uri = g_strconcat (source_uri, "/", NULL);
Hmm, we're building an uri here, I don't think we want uris with '\' if
tracker is ported (again?) to Windows :)
>
>
> 2. This looks like some left over crack that needs fixing :)
>
> - tracker_sparql_builder_object_iri (sparql, uri);
> + tracker_sparql_builder_object (sparql, "_:foo");
I guess _:foo can be renamed to something more descriptive, but that's
precisely the way to create autogenerated urns.
>
>
> 3. In the search-bar you have these changes, but surely urn should be
> changed for uri in ALL cases here, otherwise we have no ranking? I could
> be wrong though.
>
> + " ?uri ?title ?tooltip ?urn fts:rank(?urn) " \
I think it only changed for queries that return files (as of now at
least), I guess all queries could change to provide both urn and uri
>
>
> 4. Don't we need quotes round ?f (in add_tag_for_urns and again in
> remove_tag_for_urns)?
>
> - " ?urn nie:isStoredAs ?f ."
> + " ?urn nie:url ?f ."
not AFAIK, if we used a literal there such as \"%s\" we'd need these.
>
>
> 5. I would improve the this so the query is more readable personally:
>
> stmt = tracker_db_interface_create_statement (iface, "SELECT ID FROM
> \"nie:DataObject\" WHERE \"nie:DataObject\".\"nie:url\" = ?")
hmm? has that changed in this branch?
>
> It also looks erroneous to me. Why do we have this addition "." before
> \"nie:url\" ?
>
> Shouldn't that be \"nie:DataObject\" ?do . \"nie:url\" ...
>
>
> 6. I think we should add proper error handling here:
>
> + /* For fallback to the old behaviour, we could do this here:
> + * resource_id = tracker_data_query_resource_id (url); */
> + return;
hmm, I don't remember this changing in the branch. There should be only
changes to extractors, tracker-miner-fs and libtracker-common.
>
>
> 7. Hmm, not sure why this change was added, usually if result is set and
> > 0 in length then there was no error, checking that here seems
> pointless to me as we would still check the array and its length even if
> there was no error so? This is in
> src/tracker-writeback/tracker-writeback-consumer.c in sparql_query_cb().
>
> - if (result && result->len > 0) {
> + if (!error && result && result->len > 0) {
>
>
> 8. Again, I would make queries like this easier to read for maintainability:
>
> + query = g_strdup_printf ("SELECT ?url '%s' ?predicate ?object {"
> + " <%s> ?predicate ?object ; nie:url ?url ."
> + " ?predicate tracker:writeback true "
> + "}", data->subject, data->subject);
>
> Also, I presume this is valid SPARQL to put '%s' after ?url, looks to me
> like it will just be included as one of the columns in the results -
> isn't that a little inefficient (depending on how many results are
> returned).
>
>
> 9. I didn't know this could be used as an OPTIONAL replacement:
>
> - query = g_strdup_printf ("SELECT ?city ?state ?address ?country "
> - "WHERE { <%s> mlo:location ?location . "
> - "OPTIONAL { ?location mlo:address ?address } . "
> - "OPTIONAL { ?location mlo:city ?city } . "
> - "OPTIONAL { ?location mlo:country ?country } . "
> - "OPTIONAL { ?location mlo:state ?state} "
> - "}", row[0]);
> + query = g_strdup_printf ("SELECT mlo:city (?city) mlo:state (?state) "
> + " mlo:address (?address) "
> + " mlo:country (?country) "
> + "WHERE { <%s> mlo:location ?location }",
>
> If this works then it is a nice reduction and simplification in the
> SPARQL :)
>
>
> 10. Please don't add spaces after conditional statements (in extract_mp3
> and extract_vorbis) :)
>
> if (md.track_count > 0) {
> +
> + tracker_sparql_builder_insert_close (preupdate);
>
>
> 11. Another case of "_foo" in miner_files_add_to_datasource() and
> process_file_cb(), should use something more meaningful. The "_foo" is
> used to generate the id you know :P and it looks unprofessional :)
>
>
> 12. The documentation here needs a small fix:
>
> + * through tracker_sparql_builder_new_embedded_insert(), The subject
>
> No need to capitalise "The" there. Unless the comma should be a ".".
>
> + * function should just provide predicate/object(s) pairs. the data
>
> Here there is no capital "T".
>
>
> 13. Hmm, is this correct in extract_html(), extract_imagemagick(), etc:
>
> - tracker_sparql_builder_subject_iri (metadata, uri);
Yes it is, metadata here is now an embedded TrackerSparqlBuilder, and
the subject must be set by tracker-extract.c so it's the same than the
one used in tracker-miner-fs, so extractors now must not specify
subjects for the embedded metadata.
>
>
> 14. The get_file_metadata() function in tracker-extract.c needs fixing
> more I think for failure conditions. More specifically, I think the _out
> variables should be set to NULL initially so they don't have to be set
> in every place where we return FALSE. The libstreamanalyser part doesn't
> set them at all, which would break and likely crash things. We also
> don't unref the preupdate variable when we return FALSE on line 267.
Yeah, the LSA part could need some double checking, I don't think it's
going to provide us the sparql we actually expect.
>
>
> 15. No need for braces here round preinserts_str:
>
> + dbus_g_method_return (context,
> + (preinserts_str) ? preinserts_str : "",
> + tracker_sparql_builder_get_result (sparql));
>
>
>
> Other than that the rest looks good. Let's see if we can get these fixed
> so we can merge to master for tomorrow's release :)
>
> Thanks guys,
>
_______________________________________________
tracker-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/tracker-list