SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
FSter
Guglielmo’s Hyper File System

  Lorenzo Bellini, Roberto Guido,
  Marco Loregian, Michele Tameni
   <name.surname>@itsme.it
What is FSter?
➔FSter is a virtual file system implementation, based
 on Fuse technology and exploiting Tracker
 metadata technology to allow access to files
 according to the metadata they’re associated to




  Itsme – Fster: Guglielmo's Hyper File System          2
Sample scenarios
➔Browsing the content of a drive, according to a user-
 defined hierarchy based on metadata;
➔Associating metadata to files whenever operations are
 performed on them;
➔Generating “virtual” files from metadata, e.g., a vCard
 file dynamically built from metadata


  Itsme – Fster: Guglielmo's Hyper File System             3
Requirements and
                          domain architecture
                                               FSter uses libtracker-client to build
                                               and execute sparql query on
                                               tracker-store
                                               Queries are built according to a
                                               user-defined (XML) filesystem
                                               hierarchy


Itsme – Fster: Guglielmo's Hyper File System                                           4
Configuration file
➔A configuration file defines what the user will see in
 FSter directories
    ➔Configuration files must follow XML 1.0 standards
    ➔An XML schema of the configuration file is avalaible (Fster.xsd)




  Itsme – Fster: Guglielmo's Hyper File System                          5
Xml element: folder

➔Shows each RDF subject matching with defined
 conditions as a folder and:
       ➔defines both inheritable and self conditions
       ➔Allows generating a folder name from metadata

       ➔allows nesting content object inside it

       ➔defines editing policies for the content




Itsme – Fster: Guglielmo's Hyper File System            6
Xml element: set_folder
➔Shows each RDF object used with a specific RDF
 predicate as a folder and:
    ➔defines a RDF predicate to get the set of RDF objects used with it
    ➔defines inheritable conditions

    ➔allows nesting content objects inside it

    ➔defines the editing policies of the content




  Itsme – Fster: Guglielmo's Hyper File System                            7
Xml element: file
➔Shows each RDF subject matching with defined
 conditions as a file and:
    ➔defines self conditions
    ➔Allows generating a file name from metadata

    ➔defines whether to expose the real file or a dump of file


    metadata from the repository




  Itsme – Fster: Guglielmo's Hyper File System                   8
Examples: Fster media library (1)
➔Media grouped by images, audio and video




  Itsme – Fster: Guglielmo's Hyper File System   9
Examples: Fster media library (2)
    ➔Building the SPARQL query for folder element
static GList* collect_children_from_storage (HierarchyNode *node, ItemHandler *parent)
{

(..)

more_statements = condition_policy_to_sparql (&(node->priv->self_policy), parent,
&values_offset);
statements = g_list_concat (statements, more_statements);
if (node->priv->child_policy.inherit == TRUE) {
        parent_node = node->priv->node;
        while (parent_node != NULL) {
            more_statements = condition_policy_to_sparql (&(parent_node->priv-
>child_policy), parent, &values_offset);
            statements = g_list_concat (statements, more_statements);
            if (parent_node->priv->child_policy.inherit == TRUE)
                parent_node = parent_node->priv->node;
            else
                break;
        }
    }
    sparql = build_sparql_query (NULL, var, statements);

(..)

}


       Itsme – Fster: Guglielmo's Hyper File System                                      10
Examples: Fster media library (3)
➔ <condition metadata="rdf:type" value="nfo:Audio" />
  <name value="$self{nie:title}" />

  SELECT ?item ?a WHERE { ?item nie:title ?a . ?item rdf:type
  nfo:Audio }

➔ <condition metadata="rdf:type" value="nfo:Image" />
  <name value="$self{nfo:fileName}" />

  SELECT ?item ?a WHERE { ?item nfo:fileName ?a . ?item rdf:type
  nfo:Image }

➔ <condition metadata="rdf:type" value="nfo:Video" />
  <name value="$self{nfo:fileName}" />

  SELECT ?item ?a WHERE { ?item nfo:fileName ?a . ?item rdf:type
  nfo:Video }




   Itsme – Fster: Guglielmo's Hyper File System                    11
Examples: Fster music library (1)
➔Music grouped by artist, album or genre




  Itsme – Fster: Guglielmo's Hyper File System   12
Examples: Fster music library (2)
    ➔Building the SPARQL query for folder_set element
static GList* collect_children_set (HierarchyNode *node, ItemHandler *parent)
{

(..)

statements = g_list_append (statements, g_strdup_printf ("?item %s ?a", node->priv-
>additional_option));
more_statements = condition_policy_to_sparql (&(node->priv->self_policy), parent,
&values_offset);
statements = g_list_concat (statements, more_statements);
if (node->priv->child_policy.inherit == TRUE) {
        parent_node = node->priv->node;
        while (parent_node != NULL) {
            more_statements = condition_policy_to_sparql (&(parent_node->priv-
>child_policy), parent, &values_offset);
            statements = g_list_concat (statements, more_statements);
            if (parent_node->priv->child_policy.inherit == TRUE)
                parent_node = parent_node->priv->node;
            else
                break;
        }
}
sparql = build_sparql_query ("SELECT DISTINCT(?a)", 'a', statements);

(..)

}

       Itsme – Fster: Guglielmo's Hyper File System                                   13
Examples: Fster music library (3)
➔ <folder>
    <condition metadata="rdf:type" value=" nmm:MusicAlbum" />

  SELECT ?item ?a WHERE { ?item nmm:albumTitle ?a . ?item
  rdf:type nmm:MusicAlbum }

➔ <condition metadata="nmm:musicAlbum" value="$parent{/subject}" />

  SELECT ?item ?a WHERE { ?item nie:title ?a . ?item
  nmm:musicAlbum "urn:album:Ci%20Vuole%20Orecchio" }

➔ <set_folder metadata="nfo:genre">

  SELECT DISTINCT(?a) WHERE { ?item nfo:genre ?a }

➔ <condition metadata="nfo:genre" value="$parent{nfo:genre}" />

  SELECT ?item ?a WHERE { ?item nie:title ?a . ?item nfo:genre
  "Folk" }



   Itsme – Fster: Guglielmo's Hyper File System                       14
Examples: Fster music library (4)




Itsme – Fster: Guglielmo's Hyper File System   15
Future development

➔SparQL in the <condition> tag
➔Plugin architecture allowing FSter to render
 metadata exposing them in standard format
 files (e.g., vcard, ...);
➔User-friendly configuration editing
 interface
➔Creation of folders
Itsme – Fster: Guglielmo's Hyper File System    16
References


➔Code: http://gitorious.org/itsme/fster
➔Wiki: http://gitorious.org/itsme/pages/Fster
➔Mailing lists: http://lists.itsme.it/
➔Support: #itsme-dev on irc.freenode.net


  Itsme – Fster: Guglielmo's Hyper File System            17
Thank you for your attention
www.itsme.it
Lorenzo Bellini, Roberto Guido,
Marco Loregian, Michele Tameni
<name.surname>@itsme.it

Contenu connexe

Tendances

Hadoop 20111117
Hadoop 20111117Hadoop 20111117
Hadoop 20111117
exsuns
 
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Ontico
 
Building File Systems with FUSE
Building File Systems with FUSEBuilding File Systems with FUSE
Building File Systems with FUSE
elliando dias
 

Tendances (20)

Elastic Search Training#1 (brief tutorial)-ESCC#1
Elastic Search Training#1 (brief tutorial)-ESCC#1Elastic Search Training#1 (brief tutorial)-ESCC#1
Elastic Search Training#1 (brief tutorial)-ESCC#1
 
Exported resources design patterns
Exported resources design patternsExported resources design patterns
Exported resources design patterns
 
Hadoop 20111117
Hadoop 20111117Hadoop 20111117
Hadoop 20111117
 
Hydra - Getting Started
Hydra - Getting StartedHydra - Getting Started
Hydra - Getting Started
 
Chap 5 php files part-2
Chap 5 php files   part-2Chap 5 php files   part-2
Chap 5 php files part-2
 
HaskellとDebianの辛くて甘い関係
HaskellとDebianの辛くて甘い関係HaskellとDebianの辛くて甘い関係
HaskellとDebianの辛くて甘い関係
 
Hadoop 20111215
Hadoop 20111215Hadoop 20111215
Hadoop 20111215
 
Web scraping with nutch solr part 2
Web scraping with nutch solr part 2Web scraping with nutch solr part 2
Web scraping with nutch solr part 2
 
Unix Basics Commands
Unix Basics CommandsUnix Basics Commands
Unix Basics Commands
 
VeloxDFS
VeloxDFSVeloxDFS
VeloxDFS
 
TP2 Big Data HBase
TP2 Big Data HBaseTP2 Big Data HBase
TP2 Big Data HBase
 
Web scraping with nutch solr
Web scraping with nutch solrWeb scraping with nutch solr
Web scraping with nutch solr
 
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
 
第2回 Hadoop 輪読会
第2回 Hadoop 輪読会第2回 Hadoop 輪読会
第2回 Hadoop 輪読会
 
Building File Systems with FUSE
Building File Systems with FUSEBuilding File Systems with FUSE
Building File Systems with FUSE
 
Loading Multiple Versions of an ASDF System in the Same Lisp Image
Loading Multiple Versions of an ASDF System in the Same Lisp ImageLoading Multiple Versions of an ASDF System in the Same Lisp Image
Loading Multiple Versions of an ASDF System in the Same Lisp Image
 
HDFS_Command_Reference
HDFS_Command_ReferenceHDFS_Command_Reference
HDFS_Command_Reference
 
working with files
working with filesworking with files
working with files
 
Hadoop File System Shell Commands,
Hadoop File System Shell Commands,Hadoop File System Shell Commands,
Hadoop File System Shell Commands,
 
Hadoop Interacting with HDFS
Hadoop Interacting with HDFSHadoop Interacting with HDFS
Hadoop Interacting with HDFS
 

En vedette

Itsme Lezione Usi Lugano
Itsme Lezione Usi LuganoItsme Lezione Usi Lugano
Itsme Lezione Usi Lugano
itsmesrl
 
Proposal for UXAUSTRALIA
Proposal for UXAUSTRALIAProposal for UXAUSTRALIA
Proposal for UXAUSTRALIA
itsmesrl
 
Emulator Guide
Emulator GuideEmulator Guide
Emulator Guide
itsmesrl
 

En vedette (9)

Frontiers of Interaction IV
Frontiers of Interaction IVFrontiers of Interaction IV
Frontiers of Interaction IV
 
Itsme launch
Itsme launchItsme launch
Itsme launch
 
itsme tutorial at CTS 2009
itsme tutorial at CTS 2009itsme tutorial at CTS 2009
itsme tutorial at CTS 2009
 
Itsme Brief (Community/Open Innovation)
Itsme Brief (Community/Open Innovation)Itsme Brief (Community/Open Innovation)
Itsme Brief (Community/Open Innovation)
 
Itsme Brand Exploitation
Itsme Brand ExploitationItsme Brand Exploitation
Itsme Brand Exploitation
 
Itsme Lezione Usi Lugano
Itsme Lezione Usi LuganoItsme Lezione Usi Lugano
Itsme Lezione Usi Lugano
 
ITSME: Interaction design innovating workstations (Seminar)
ITSME: Interaction design innovating workstations (Seminar)ITSME: Interaction design innovating workstations (Seminar)
ITSME: Interaction design innovating workstations (Seminar)
 
Proposal for UXAUSTRALIA
Proposal for UXAUSTRALIAProposal for UXAUSTRALIA
Proposal for UXAUSTRALIA
 
Emulator Guide
Emulator GuideEmulator Guide
Emulator Guide
 

Similaire à Introducing FSter

On secure application of PHP wrappers
On secure application  of PHP wrappersOn secure application  of PHP wrappers
On secure application of PHP wrappers
Positive Hack Days
 

Similaire à Introducing FSter (20)

Filesystem Abstraction with Flysystem
Filesystem Abstraction with FlysystemFilesystem Abstraction with Flysystem
Filesystem Abstraction with Flysystem
 
Writing and using php streams and sockets
Writing and using php streams and socketsWriting and using php streams and sockets
Writing and using php streams and sockets
 
eZ Publish cluster unleashed revisited
eZ Publish cluster unleashed revisitedeZ Publish cluster unleashed revisited
eZ Publish cluster unleashed revisited
 
Hadoop HDFS Concepts
Hadoop HDFS ConceptsHadoop HDFS Concepts
Hadoop HDFS Concepts
 
Writing and using php streams and sockets tek11
Writing and using php streams and sockets   tek11Writing and using php streams and sockets   tek11
Writing and using php streams and sockets tek11
 
Android Data Persistence
Android Data PersistenceAndroid Data Persistence
Android Data Persistence
 
Files and Directories in PHP
Files and Directories in PHPFiles and Directories in PHP
Files and Directories in PHP
 
Filesystem Management with Flysystem - php[tek] 2023
Filesystem Management with Flysystem - php[tek] 2023Filesystem Management with Flysystem - php[tek] 2023
Filesystem Management with Flysystem - php[tek] 2023
 
Android Data Storagefinal
Android Data StoragefinalAndroid Data Storagefinal
Android Data Storagefinal
 
Declare your infrastructure: InfraKit, LinuxKit and Moby
Declare your infrastructure: InfraKit, LinuxKit and MobyDeclare your infrastructure: InfraKit, LinuxKit and Moby
Declare your infrastructure: InfraKit, LinuxKit and Moby
 
Automating Content Import
Automating Content ImportAutomating Content Import
Automating Content Import
 
eZ Publish Cluster Unleashed
eZ Publish Cluster UnleashedeZ Publish Cluster Unleashed
eZ Publish Cluster Unleashed
 
Data Spider for Legacy Infrastructure: Capturing content from multiple file s...
Data Spider for Legacy Infrastructure: Capturing content from multiple file s...Data Spider for Legacy Infrastructure: Capturing content from multiple file s...
Data Spider for Legacy Infrastructure: Capturing content from multiple file s...
 
Hadoop HDFS Concepts
Hadoop HDFS ConceptsHadoop HDFS Concepts
Hadoop HDFS Concepts
 
Apache Kite
Apache KiteApache Kite
Apache Kite
 
DFSNov1.pptx
DFSNov1.pptxDFSNov1.pptx
DFSNov1.pptx
 
On secure application of PHP wrappers
On secure application  of PHP wrappersOn secure application  of PHP wrappers
On secure application of PHP wrappers
 
Building a userspace filesystem in node.js
Building a userspace filesystem in node.jsBuilding a userspace filesystem in node.js
Building a userspace filesystem in node.js
 
Filesystem Management with Flysystem at PHP UK 2023
Filesystem Management with Flysystem at PHP UK 2023Filesystem Management with Flysystem at PHP UK 2023
Filesystem Management with Flysystem at PHP UK 2023
 
Comprehensive Terraform Training
Comprehensive Terraform TrainingComprehensive Terraform Training
Comprehensive Terraform Training
 

Plus de itsmesrl (10)

Itsme UX Australia
Itsme UX AustraliaItsme UX Australia
Itsme UX Australia
 
Itsme Interact2009
Itsme  Interact2009Itsme  Interact2009
Itsme Interact2009
 
itsme Prototype Demo 2009-08-03
itsme Prototype Demo 2009-08-03itsme Prototype Demo 2009-08-03
itsme Prototype Demo 2009-08-03
 
Itsme Cct2009 Demo
Itsme Cct2009 DemoItsme Cct2009 Demo
Itsme Cct2009 Demo
 
ITSME, one year hence
ITSME, one year henceITSME, one year hence
ITSME, one year hence
 
who we are and what we are doing to innovate workstations
who we are and what we are doing to innovate workstationswho we are and what we are doing to innovate workstations
who we are and what we are doing to innovate workstations
 
Itsme Tech development seminar
Itsme Tech development seminarItsme Tech development seminar
Itsme Tech development seminar
 
Open Innovation aka How companies can use social media to dialogue with their...
Open Innovation aka How companies can use social media to dialogue with their...Open Innovation aka How companies can use social media to dialogue with their...
Open Innovation aka How companies can use social media to dialogue with their...
 
Itsme A New Workstation To Exploit The Potential Of The Cyberspace 02
Itsme  A New Workstation To Exploit The Potential Of The Cyberspace 02Itsme  A New Workstation To Exploit The Potential Of The Cyberspace 02
Itsme A New Workstation To Exploit The Potential Of The Cyberspace 02
 
Perotto Prize
Perotto PrizePerotto Prize
Perotto Prize
 

Dernier

Dernier (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 

Introducing FSter

  • 1. FSter Guglielmo’s Hyper File System Lorenzo Bellini, Roberto Guido, Marco Loregian, Michele Tameni <name.surname>@itsme.it
  • 2. What is FSter? ➔FSter is a virtual file system implementation, based on Fuse technology and exploiting Tracker metadata technology to allow access to files according to the metadata they’re associated to Itsme – Fster: Guglielmo's Hyper File System 2
  • 3. Sample scenarios ➔Browsing the content of a drive, according to a user- defined hierarchy based on metadata; ➔Associating metadata to files whenever operations are performed on them; ➔Generating “virtual” files from metadata, e.g., a vCard file dynamically built from metadata Itsme – Fster: Guglielmo's Hyper File System 3
  • 4. Requirements and domain architecture FSter uses libtracker-client to build and execute sparql query on tracker-store Queries are built according to a user-defined (XML) filesystem hierarchy Itsme – Fster: Guglielmo's Hyper File System 4
  • 5. Configuration file ➔A configuration file defines what the user will see in FSter directories ➔Configuration files must follow XML 1.0 standards ➔An XML schema of the configuration file is avalaible (Fster.xsd) Itsme – Fster: Guglielmo's Hyper File System 5
  • 6. Xml element: folder ➔Shows each RDF subject matching with defined conditions as a folder and: ➔defines both inheritable and self conditions ➔Allows generating a folder name from metadata ➔allows nesting content object inside it ➔defines editing policies for the content Itsme – Fster: Guglielmo's Hyper File System 6
  • 7. Xml element: set_folder ➔Shows each RDF object used with a specific RDF predicate as a folder and: ➔defines a RDF predicate to get the set of RDF objects used with it ➔defines inheritable conditions ➔allows nesting content objects inside it ➔defines the editing policies of the content Itsme – Fster: Guglielmo's Hyper File System 7
  • 8. Xml element: file ➔Shows each RDF subject matching with defined conditions as a file and: ➔defines self conditions ➔Allows generating a file name from metadata ➔defines whether to expose the real file or a dump of file metadata from the repository Itsme – Fster: Guglielmo's Hyper File System 8
  • 9. Examples: Fster media library (1) ➔Media grouped by images, audio and video Itsme – Fster: Guglielmo's Hyper File System 9
  • 10. Examples: Fster media library (2) ➔Building the SPARQL query for folder element static GList* collect_children_from_storage (HierarchyNode *node, ItemHandler *parent) { (..) more_statements = condition_policy_to_sparql (&(node->priv->self_policy), parent, &values_offset); statements = g_list_concat (statements, more_statements); if (node->priv->child_policy.inherit == TRUE) { parent_node = node->priv->node; while (parent_node != NULL) { more_statements = condition_policy_to_sparql (&(parent_node->priv- >child_policy), parent, &values_offset); statements = g_list_concat (statements, more_statements); if (parent_node->priv->child_policy.inherit == TRUE) parent_node = parent_node->priv->node; else break; } } sparql = build_sparql_query (NULL, var, statements); (..) } Itsme – Fster: Guglielmo's Hyper File System 10
  • 11. Examples: Fster media library (3) ➔ <condition metadata="rdf:type" value="nfo:Audio" /> <name value="$self{nie:title}" /> SELECT ?item ?a WHERE { ?item nie:title ?a . ?item rdf:type nfo:Audio } ➔ <condition metadata="rdf:type" value="nfo:Image" /> <name value="$self{nfo:fileName}" /> SELECT ?item ?a WHERE { ?item nfo:fileName ?a . ?item rdf:type nfo:Image } ➔ <condition metadata="rdf:type" value="nfo:Video" /> <name value="$self{nfo:fileName}" /> SELECT ?item ?a WHERE { ?item nfo:fileName ?a . ?item rdf:type nfo:Video } Itsme – Fster: Guglielmo's Hyper File System 11
  • 12. Examples: Fster music library (1) ➔Music grouped by artist, album or genre Itsme – Fster: Guglielmo's Hyper File System 12
  • 13. Examples: Fster music library (2) ➔Building the SPARQL query for folder_set element static GList* collect_children_set (HierarchyNode *node, ItemHandler *parent) { (..) statements = g_list_append (statements, g_strdup_printf ("?item %s ?a", node->priv- >additional_option)); more_statements = condition_policy_to_sparql (&(node->priv->self_policy), parent, &values_offset); statements = g_list_concat (statements, more_statements); if (node->priv->child_policy.inherit == TRUE) { parent_node = node->priv->node; while (parent_node != NULL) { more_statements = condition_policy_to_sparql (&(parent_node->priv- >child_policy), parent, &values_offset); statements = g_list_concat (statements, more_statements); if (parent_node->priv->child_policy.inherit == TRUE) parent_node = parent_node->priv->node; else break; } } sparql = build_sparql_query ("SELECT DISTINCT(?a)", 'a', statements); (..) } Itsme – Fster: Guglielmo's Hyper File System 13
  • 14. Examples: Fster music library (3) ➔ <folder> <condition metadata="rdf:type" value=" nmm:MusicAlbum" /> SELECT ?item ?a WHERE { ?item nmm:albumTitle ?a . ?item rdf:type nmm:MusicAlbum } ➔ <condition metadata="nmm:musicAlbum" value="$parent{/subject}" /> SELECT ?item ?a WHERE { ?item nie:title ?a . ?item nmm:musicAlbum "urn:album:Ci%20Vuole%20Orecchio" } ➔ <set_folder metadata="nfo:genre"> SELECT DISTINCT(?a) WHERE { ?item nfo:genre ?a } ➔ <condition metadata="nfo:genre" value="$parent{nfo:genre}" /> SELECT ?item ?a WHERE { ?item nie:title ?a . ?item nfo:genre "Folk" } Itsme – Fster: Guglielmo's Hyper File System 14
  • 15. Examples: Fster music library (4) Itsme – Fster: Guglielmo's Hyper File System 15
  • 16. Future development ➔SparQL in the <condition> tag ➔Plugin architecture allowing FSter to render metadata exposing them in standard format files (e.g., vcard, ...); ➔User-friendly configuration editing interface ➔Creation of folders Itsme – Fster: Guglielmo's Hyper File System 16
  • 17. References ➔Code: http://gitorious.org/itsme/fster ➔Wiki: http://gitorious.org/itsme/pages/Fster ➔Mailing lists: http://lists.itsme.it/ ➔Support: #itsme-dev on irc.freenode.net Itsme – Fster: Guglielmo's Hyper File System 17
  • 18. Thank you for your attention www.itsme.it Lorenzo Bellini, Roberto Guido, Marco Loregian, Michele Tameni <name.surname>@itsme.it