SlideShare a Scribd company logo
1 of 18
Download to read offline
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

More Related Content

What's hot

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
 

What's hot (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
 

Viewers also liked

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
 

Viewers also liked (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
 

Similar to 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
 

Similar to 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
 

More from 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
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

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