{"id":2062,"date":"2006-02-15T13:02:12","date_gmt":"2006-02-15T13:02:12","guid":{"rendered":"http:\/\/www.leobard.net\/blog\/?p=2062"},"modified":"2017-11-04T15:48:15","modified_gmt":"2017-11-04T15:48:15","slug":"semantic-desktop-bits-and-pieces-leaftag","status":"publish","type":"post","link":"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/","title":{"rendered":"semantic desktop bits and pieces: leaftag"},"content":{"rendered":"<p>Just forwarded to my by Frank Osterfeld:<\/p>\n<p><a href=\"http:\/\/www.chipx86.com\/blog\/?p=154\">http:\/\/www.chipx86.com\/blog\/?p=154<\/a><\/p>\n<p><i><a href=\"http:\/\/www.chipx86.com\/wiki\/Leaftag\">Announcing Leaftag<\/a>, our desktop tagging framework. This is an evolution of the original prototype we created, originally named fstaglib (isn\u2019t leaftag just so much better?).<\/p>\n<p>The main part of Leaftag is a library called (oddly enough) libleaftag, which interfaces with the tag database. It\u2019s GObject-based, and the API is quite small. It can tag anything with a URI.<\/p>\n<p>There\u2019s tagutils, a small app used for working with tags and files. It is able to tag and untag files, list all known tags, list all files with a specified tag, and manipulate tag properties (such as icons and descriptions). It also includes some symlinks that provide shortcuts to common tagutils functions (tag, untag, tagls, tags, and tagprop).<\/p>\n<p>leaftag-python contains Python bindings for libleaftag. It simplifies the already simple libleaftag library.<\/i><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Just forwarded to my by Frank Osterfeld: http:\/\/www.chipx86.com\/blog\/?p=154 Announcing Leaftag, our desktop tagging framework. This is an evolution of the original prototype we created, originally named fstaglib (isn\u2019t leaftag just so much better?). The main part of Leaftag is a library called (oddly enough) libleaftag, which interfaces with the tag database. It\u2019s GObject-based, and the &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;semantic desktop bits and pieces: leaftag&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[5],"tags":[],"class_list":["post-2062","post","type-post","status-publish","format-standard","hentry","category-semweb"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>semantic desktop bits and pieces: leaftag - Leobard&#039;s blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"semantic desktop bits and pieces: leaftag - Leobard&#039;s blog\" \/>\n<meta property=\"og:description\" content=\"Just forwarded to my by Frank Osterfeld: http:\/\/www.chipx86.com\/blog\/?p=154 Announcing Leaftag, our desktop tagging framework. This is an evolution of the original prototype we created, originally named fstaglib (isn\u2019t leaftag just so much better?). The main part of Leaftag is a library called (oddly enough) libleaftag, which interfaces with the tag database. It\u2019s GObject-based, and the &hellip; Continue reading &quot;semantic desktop bits and pieces: leaftag&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/\" \/>\n<meta property=\"og:site_name\" content=\"Leobard&#039;s blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/leobard\" \/>\n<meta property=\"article:published_time\" content=\"2006-02-15T13:02:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-11-04T15:48:15+00:00\" \/>\n<meta name=\"author\" content=\"leobard\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"leobard\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/02\\\/15\\\/semantic-desktop-bits-and-pieces-leaftag\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/02\\\/15\\\/semantic-desktop-bits-and-pieces-leaftag\\\/\"},\"author\":{\"name\":\"leobard\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/#\\\/schema\\\/person\\\/23f718c5d3bd8d343befaa1b11bdc609\"},\"headline\":\"semantic desktop bits and pieces: leaftag\",\"datePublished\":\"2006-02-15T13:02:12+00:00\",\"dateModified\":\"2017-11-04T15:48:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/02\\\/15\\\/semantic-desktop-bits-and-pieces-leaftag\\\/\"},\"wordCount\":151,\"commentCount\":0,\"articleSection\":[\"SemWeb\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/02\\\/15\\\/semantic-desktop-bits-and-pieces-leaftag\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/02\\\/15\\\/semantic-desktop-bits-and-pieces-leaftag\\\/\",\"url\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/02\\\/15\\\/semantic-desktop-bits-and-pieces-leaftag\\\/\",\"name\":\"semantic desktop bits and pieces: leaftag - Leobard&#039;s blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/#website\"},\"datePublished\":\"2006-02-15T13:02:12+00:00\",\"dateModified\":\"2017-11-04T15:48:15+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/#\\\/schema\\\/person\\\/23f718c5d3bd8d343befaa1b11bdc609\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/02\\\/15\\\/semantic-desktop-bits-and-pieces-leaftag\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/02\\\/15\\\/semantic-desktop-bits-and-pieces-leaftag\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/02\\\/15\\\/semantic-desktop-bits-and-pieces-leaftag\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"semantic desktop bits and pieces: leaftag\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/\",\"name\":\"Leobard&#039;s blog\",\"description\":\"personal weblog of Leo Sauermann\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/#\\\/schema\\\/person\\\/23f718c5d3bd8d343befaa1b11bdc609\",\"name\":\"leobard\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g\",\"caption\":\"leobard\"},\"description\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/about-leo-sauermann\\\/\",\"sameAs\":[\"https:\\\/\\\/www.leobard.net\\\/\",\"https:\\\/\\\/www.facebook.com\\\/leobard\",\"https:\\\/\\\/www.instagram.com\\\/leobarder\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/leosauermann\\\/\"],\"url\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/author\\\/leobard\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"semantic desktop bits and pieces: leaftag - Leobard&#039;s blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/","og_locale":"en_US","og_type":"article","og_title":"semantic desktop bits and pieces: leaftag - Leobard&#039;s blog","og_description":"Just forwarded to my by Frank Osterfeld: http:\/\/www.chipx86.com\/blog\/?p=154 Announcing Leaftag, our desktop tagging framework. This is an evolution of the original prototype we created, originally named fstaglib (isn\u2019t leaftag just so much better?). The main part of Leaftag is a library called (oddly enough) libleaftag, which interfaces with the tag database. It\u2019s GObject-based, and the &hellip; Continue reading \"semantic desktop bits and pieces: leaftag\"","og_url":"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/","og_site_name":"Leobard&#039;s blog","article_author":"https:\/\/www.facebook.com\/leobard","article_published_time":"2006-02-15T13:02:12+00:00","article_modified_time":"2017-11-04T15:48:15+00:00","author":"leobard","twitter_card":"summary_large_image","twitter_misc":{"Written by":"leobard","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/#article","isPartOf":{"@id":"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/"},"author":{"name":"leobard","@id":"https:\/\/www.leobard.net\/blog\/#\/schema\/person\/23f718c5d3bd8d343befaa1b11bdc609"},"headline":"semantic desktop bits and pieces: leaftag","datePublished":"2006-02-15T13:02:12+00:00","dateModified":"2017-11-04T15:48:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/"},"wordCount":151,"commentCount":0,"articleSection":["SemWeb"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/","url":"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/","name":"semantic desktop bits and pieces: leaftag - Leobard&#039;s blog","isPartOf":{"@id":"https:\/\/www.leobard.net\/blog\/#website"},"datePublished":"2006-02-15T13:02:12+00:00","dateModified":"2017-11-04T15:48:15+00:00","author":{"@id":"https:\/\/www.leobard.net\/blog\/#\/schema\/person\/23f718c5d3bd8d343befaa1b11bdc609"},"breadcrumb":{"@id":"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.leobard.net\/blog\/2006\/02\/15\/semantic-desktop-bits-and-pieces-leaftag\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.leobard.net\/blog\/"},{"@type":"ListItem","position":2,"name":"semantic desktop bits and pieces: leaftag"}]},{"@type":"WebSite","@id":"https:\/\/www.leobard.net\/blog\/#website","url":"https:\/\/www.leobard.net\/blog\/","name":"Leobard&#039;s blog","description":"personal weblog of Leo Sauermann","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.leobard.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.leobard.net\/blog\/#\/schema\/person\/23f718c5d3bd8d343befaa1b11bdc609","name":"leobard","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g","caption":"leobard"},"description":"https:\/\/www.leobard.net\/blog\/about-leo-sauermann\/","sameAs":["https:\/\/www.leobard.net\/","https:\/\/www.facebook.com\/leobard","https:\/\/www.instagram.com\/leobarder\/","https:\/\/www.linkedin.com\/in\/leosauermann\/"],"url":"https:\/\/www.leobard.net\/blog\/author\/leobard\/"}]}},"_links":{"self":[{"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/posts\/2062","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/comments?post=2062"}],"version-history":[{"count":1,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/posts\/2062\/revisions"}],"predecessor-version":[{"id":2848,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/posts\/2062\/revisions\/2848"}],"wp:attachment":[{"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/media?parent=2062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/categories?post=2062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/tags?post=2062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}