CubicWeb: a browser for the web of data
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Chauvat, Nicolas
The Web of Data has become a reality over the past decade. But how do you browse all that data and how do you surf from one resource to the next by following the links in the datasets ? We will introduce the new CubicWeb, a Web Extension to make your favorite browser capable of handling RDF data so that you can surf the Semantic Web and chose how data is displayed and how you interact with it. The Web started as a set of linked documents written in HTML and displayed by hypertext browsers. With the dawn of the Web of data, the information exchanged between the server and the client can be encoded in a form that is directly machine processable instead of being embeded in text document for humans to interpret. We asked ourselves what would be a browser for the Web of data, that would not be limited to displaying documents and would allow its user to surf the gigantic graph of linked data by displaying each piece of data with the best visualization for the task at hand. With this goal in mind, we reinstanciated the ideas developed more than ten years ago for the user interface of the CubicWeb semantic web framework. The result is the CubicWeb Linked Data Browser, a Web Extension for the main browsers (Firefox et Chrome) that can turn into HTML the RDF data sent by servers, with the user choosing the best view among the ones she registered when configuring the extension. Nicolas Chauvat is the founder and CEO of Logilab, a company that has been since year 2000 at the forefront of the Semantic Web in France. Logilab created the CubicWeb framework and used it for many applications, including the high-profile data.bnf.fr and francearchives.fr.
 Hello. Thank you for coming. I'll be presenting. It's like the second or third time I'm presenting this project. So it's a very new one, even though it's something with been, it's ideas we've been telling you around over many years. So if you go to the website, you'll find the link for at the end of the presentation. You'll see code. It's free software. You'll be able to download it to run it, but it's not a fully set project yet like others. So there is not a full featured website and everything. So it's something new I'm presenting to you today. I'll be describing our ideas for a browser for the web of data. Here is the problem. The problem is you have the Internet, which is a network of computers that are using TCP IP and the DNS. And the DNS is a way to name the computers on top of that you have URLs, HTTP and HTML that provide a network of documents. So on top of the network of computers using the names of the computers, the DNS, you can base on the DNS, name the documents and have a network of documents. That's the web you know, right? So what you have to browse that web of documents is the web browser, the one you use, either Chrome, Firefox, Opera, whatever. The question becomes when you extend the web and do not only publish documents, which are mainly text, but you start publishing data. Let's say for example just a simple comma separated value file, that's data that you can easily parse with a program and extract the information you want from and reuse. So when you start to publish data and here you have a network of data instead of a network of documents, what do you use to browse that data? So that's the main question the project comes from. Since there is only one web, a single web on which you publish both the documents and the data, the idea and you can have links that are URL, that link from documents to documents, from document to data, from data to data, from data to document. An answer you can give to that question is we want the web browser to be able to browse and to display both documents and data. So we want the web browser to be able to display both type of information and to have the display and the interactions depend on the type of the data. So if you don't have to display HTML, that's the common case you know and use daily. And if you want to display data that's described using the doubling core vocabulary or the SCOS vocabulary or the FOPH or FRBR, all those vocabularies you want the browser to be able to display the data on the screen on the page. We decided to explore what we would have by implementing this idea as a web extension that you could install in all the browsers. If you go to the catalog of extensions for Firefox you'll see a page for a cubic web and you can just click and install that extension. You have the same thing on the Chrome Store. So let's see a quick demo. So you go to, did you start? Yep. So you have a browser here with a new profile. So I just go to the store, look for the extension, click on install. I accept the permissions and there I have my extensions, my extension that's installed, right? So that's the first step which is the installation. The second step would be the configuration of the extension. The kind of configuration information you'll be providing is how you want to display specific type of data. So for specific type of information you get as data from the web server, how you want to turn that into HTML that's displayed by the browser. So the configuration is about providing ways to turn data into HTML. That's what we will be doing now by going to the preferences and here you have the sources of configuration. So here we just go to a website. This website is providing views, views that turn data into HTML. And there is a link here. You click on the link and it should, so here you have an HTML document that describes what are the views published by that website and what kind of data the views can turn into HTML. And after you click on the link you'll have the, okay, so in this case I just copy and paste the link to the configuration space here. So we'll be adding that source of views to my extension in my browser configuration. Okay, so this is done. And if you go to the list here you can ask the extension what is the list of the views that are registered. And as you can see here we have a view to display RDF triples. We have a view to display a book, to display a conference, to display a conference talk, a conference track, and to display a person. So these are all the views, all the transforms that at this point my extension knows about. Now if I move to the, okay, to the website of the conference, now first browse the website the usual way. So my client, my browser is making a request to the server, it's getting back HTML and it's displaying the HTML. First we'll do the, we'll go over the pages of the web server receiving and displaying HTML. As a second step we'll do, we'll go over the same track but getting data and turning data into HTML. So first come and browsing we just see a list of conferences which is one. So we click on the link, we display a conference. After that as you can see we get HTML. After that we'll be clicking on the link to a track. For the track we'll have the list of all the presentations. If we click on the link for presentation we'll get the page of the presentation. We'll move to the page of the author. And okay, just going back. So we go to the conference and we do the same thing but getting the data from the server instead of getting a document, an HTML document. As you can see we have here at the top right we have the icon of the extension that's lit up because the extension detected that the web server is able to send both HTML and row data. So by clicking on the extension we'll get row data from the server instead of getting HTML. So there you go. So that's HTML but generated within the browser from the data that we got from the server. And we have the page for the conference. Well as you can see this is in this case it's RDF serialized as XML. So it's the XML format for RDF. And this is the actual file that was sent by the server and the extension turned this into the HTML that was displayed. So we click on the link again and there we have the information for the track. As you can see there is a little delay during which the extension will be downloading all the data for the different talks. And after it gets the talks it will display them. Okay so now we have the title of the talks. There I will click on one talk and it's the view for displaying a talk that will be used to generate the HTML. There I will click on the author. And as you can see this view that's displaying a person as a link here for all the persons that this person know. So this is me and I'm pretending that I know Claude Debussy. He's dead but whatever. So I'll be clicking on the link here. And by clicking on this link I'm going to another visualization, another piece of data that was downloaded from the server and turned into HTML. As you can see it's the same function that turns data into views into HTML for person that was used. So the same view, the same function transformed data into HTML both for myself in the first case and in this case for Claude Debussy. There is one important change though. In the first case the data was sent by the website of the same web pro conference and in this case the data is sent as you can see here in the URL by D.B.P.Dia. So same web pro and D.B.P.Dia are able to describe persons using the same vocabulary. So they are sending the data in the same format in the same data model. That data model here is called fof as friend of a friend. So same web pro is sending fof. My browser has a function that turns fof into HTML. I click on the link, I get to another piece of data sent by D.B.P.Dia. So D.B.P.Dia sent me fof and I turned fof into HTML again. So I'm browsing from one server to the next as I would do moving from one server to the next when clicking on the link in an HTML document except here the link I followed is a link in the data. So I got data from one server with a link to data on another server. I clicked on that link, got the data from the other server and displayed it again. So I'm browsing a web of data as I would do for a web of HTML documents. And if I continue here in that case I have a photograph, I have more links and I, so this would be a link to another piece of data on D.B.P.Dia. And here if I display the same thing, the same data I can choose a different view. So that's the raw data if you want. So the same information I can choose different views to display it. And the last thing, if I go back to the person view, there I will go to another type of information which is the description of the work. So as you can see I'm moving from one piece of data to the next and choosing how I display the data I got from the server. Now if I go back to the slides, for this to work it requires the servers to collaborate. We need, because the extension has to know that it can get data from the server instead of HTML. And the extension has to make sure that when it gets the information, the whole HTTP protocol is followed and it knows what type of information it gets. So what do we have today to make this work? We have HTTP content negotiation. For example the browser, in this case the extension, can in the HTTP request say I would like application RDF instead of HTML. Or it could say I want text turtle and there are other mind types that would work for sending data in like this. Other means to do the same thing. You can add a link header in the HTTP response. Like the server can say you can have this information in HTML or you can have alternate representations in RDF for example, but the server has to be set up for that. You could have a content type correctly set in the HTTP header. There are some servers that would serve RDF but without the proper content type. In that case the extension cannot be F properly because it doesn't know what is the information it gets. You can have in HTML in the header, you can put link relationships to alternate representations. And in the end, I'm not the one making all the internet specifications. So this proves that it can work and we'll see if more people start publishing the information like this and setting up servers correctly and maybe the standards will evolve at some point. Important points about the HTML views of the RDF data. As you could see there are distinct from the web extension. So there is one thing which is installing the extension and another thing which is configuring the extension with views which means anyone can publish views and you don't have to make your views public. You could have your views in your intranet for example. Each user is choosing how to configure his extension so what views will be displaying what type of data. It's usable on any website. I'm not part of the team that's making Dbpedia so for the demonstration it just worked with a public website already. The views are functions that you develop in JavaScript or in TypeScript if you want. They are simple to publish as you saw on the website where I got the configuration that was only static page, a static page and a static file that would be imported in the browser. And the conclusion is let's re-dysentralize the web. Thank you. Any questions? We have about five to eight minutes. Yes. Yes. Yes. So there are different ones. Many different catalogs. This is building on the standards of the semantic web. The semantic web started in the mid-90s so it's already more than 20 years ago. Projects like Dbpedia started more than 10 years ago and you have many catalogs where you can look for data models like this. There are standard for specific type of information like for describing persons, for describing books, for describing genes, for many things. One is the love linked open data vocabulary. So it's love.okfm. I don't remember maybe org or something. But you can look also on websites. You can look at the W3C on the wiki where you would get more links to catalogs. So it's something that already started 10 years ago. So you can do a web search. You can go on portals that publish open data. So the question was how do you find models for a specific topic? Right? Okay. So the first place you can have a look to is the linked open vocabulary catalog. So it's love.okfm. You can look for that one. There is also a site linked data.org and there is a search engine from Google that's in beta right now that's called data search where you can type some word and it will show you the kind of data model and data sets that correspond to the word. And there is also one site you might want to take a look at which is schema.org which was made by the different search engines to help people publish data aside HTML. Thank you very much. Thank you.
 Hello. Thank you for coming. I'll be presenting. It's like the second or third time I'm presenting  this project. So it's a very new one, even though it's something with been, it's ideas  we've been telling you around over many years. So if you go to the website, you'll find  the link for at the end of the presentation. You'll see code. It's free software. You'll  be able to download it to run it, but it's not a fully set project yet like others. So  there is not a full featured website and everything. So it's something new I'm presenting to you  today. I'll be describing our ideas for a browser for the web of data. Here is the problem.  The problem is you have the Internet, which is a network of computers that are using TCP  IP and the DNS. And the DNS is a way to name the computers on top of that you have URLs,  HTTP and HTML that provide a network of documents. So on top of the network of computers using  the names of the computers, the DNS, you can base on the DNS, name the documents and have  a network of documents. That's the web you know, right? So what you have to browse that  web of documents is the web browser, the one you use, either Chrome, Firefox, Opera, whatever.  The question becomes when you extend the web and do not only publish documents, which are  mainly text, but you start publishing data. Let's say for example just a simple comma  separated value file, that's data that you can easily parse with a program and extract  the information you want from and reuse. So when you start to publish data and here you  have a network of data instead of a network of documents, what do you use to browse that  data? So that's the main question the project comes from. Since there is only one web, a  single web on which you publish both the documents and the data, the idea and you can have links  that are URL, that link from documents to documents, from document to data, from data  to data, from data to document. An answer you can give to that question is we want the  web browser to be able to browse and to display both documents and data. So we want the web  browser to be able to display both type of information and to have the display and the  interactions depend on the type of the data. So if you don't have to display HTML, that's  the common case you know and use daily. And if you want to display data that's described  using the doubling core vocabulary or the SCOS vocabulary or the FOPH or FRBR, all those  vocabularies you want the browser to be able to display the data on the screen on the page.  We decided to explore what we would have by implementing this idea as a web extension  that you could install in all the browsers. If you go to the catalog of extensions for  Firefox you'll see a page for a cubic web and you can just click and install that extension.  You have the same thing on the Chrome Store. So let's see a quick demo. So you go to, did  you start? Yep. So you have a browser here with a new profile. So I just go to the store,  look for the extension, click on install. I accept the permissions and there I have my  extensions, my extension that's installed, right? So that's the first step which is the  installation. The second step would be the configuration of the extension. The kind of  configuration information you'll be providing is how you want to display specific type of  data. So for specific type of information you get as data from the web server, how you  want to turn that into HTML that's displayed by the browser. So the configuration is about  providing ways to turn data into HTML. That's what we will be doing now by going to the  preferences and here you have the sources of configuration. So here we just go to a  website. This website is providing views, views that turn data into HTML. And there is a link  here. You click on the link and it should, so here you have an HTML document that describes  what are the views published by that website and what kind of data the views can turn into  HTML. And after you click on the link you'll have the, okay, so in this case I just copy  and paste the link to the configuration space here. So we'll be adding that source of views  to my extension in my browser configuration. Okay, so this is done. And if you go to the  list here you can ask the extension what is the list of the views that are registered.  And as you can see here we have a view to display RDF triples. We have a view to display  a book, to display a conference, to display a conference talk, a conference track, and  to display a person. So these are all the views, all the transforms that at this point  my extension knows about. Now if I move to the, okay, to the website of the conference,  now first browse the website the usual way. So my client, my browser is making a request  to the server, it's getting back HTML and it's displaying the HTML. First we'll do the,  we'll go over the pages of the web server receiving and displaying HTML. As a second  step we'll do, we'll go over the same track but getting data and turning data into HTML.  So first come and browsing we just see a list of conferences which is one. So we click  on the link, we display a conference. After that as you can see we get HTML. After that  we'll be clicking on the link to a track. For the track we'll have the list of all the  presentations. If we click on the link for presentation we'll get the page of the presentation.  We'll move to the page of the author. And okay, just going back. So we go to the conference  and we do the same thing but getting the data from the server instead of getting a document,  an HTML document. As you can see we have here at the top right we have the icon of the extension  that's lit up because the extension detected that the web server is able to send both HTML  and row data. So by clicking on the extension we'll get row data from the server instead  of getting HTML. So there you go. So that's HTML but generated within the browser from  the data that we got from the server. And we have the page for the conference. Well as  you can see this is in this case it's RDF serialized as XML. So it's the XML format for  RDF. And this is the actual file that was sent by the server and the extension turned  this into the HTML that was displayed. So we click on the link again and there we have  the information for the track. As you can see there is a little delay during which the extension  will be downloading all the data for the different talks. And after it gets the talks it will  display them. Okay so now we have the title of the talks. There I will click on one talk  and it's the view for displaying a talk that will be used to generate the HTML. There I  will click on the author. And as you can see this view that's displaying a person as a  link here for all the persons that this person know. So this is me and I'm pretending that  I know Claude Debussy. He's dead but whatever. So I'll be clicking on the link here. And  by clicking on this link I'm going to another visualization, another piece of data that was  downloaded from the server and turned into HTML. As you can see it's the same function  that turns data into views into HTML for person that was used. So the same view, the same  function transformed data into HTML both for myself in the first case and in this case  for Claude Debussy. There is one important change though. In the first case the data  was sent by the website of the same web pro conference and in this case the data is sent  as you can see here in the URL by D.B.P.Dia. So same web pro and D.B.P.Dia are able to  describe persons using the same vocabulary. So they are sending the data in the same format  in the same data model. That data model here is called fof as friend of a friend. So same  web pro is sending fof. My browser has a function that turns fof into HTML. I click on the link,  I get to another piece of data sent by D.B.P.Dia. So D.B.P.Dia sent me fof and I turned fof  into HTML again. So I'm browsing from one server to the next as I would do moving from  one server to the next when clicking on the link in an HTML document except here the link  I followed is a link in the data. So I got data from one server with a link to data on  another server. I clicked on that link, got the data from the other server and displayed  it again. So I'm browsing a web of data as I would do for a web of HTML documents. And  if I continue here in that case I have a photograph, I have more links and I, so this would be  a link to another piece of data on D.B.P.Dia. And here if I display the same thing, the  same data I can choose a different view. So that's the raw data if you want. So the same  information I can choose different views to display it. And the last thing, if I go back  to the person view, there I will go to another type of information which is the description  of the work. So as you can see I'm moving from one piece of data to the next and choosing  how I display the data I got from the server. Now if I go back to the slides, for this to  work it requires the servers to collaborate. We need, because the extension has to know  that it can get data from the server instead of HTML. And the extension has to make sure  that when it gets the information, the whole HTTP protocol is followed and it knows what  type of information it gets. So what do we have today to make this work? We have HTTP  content negotiation. For example the browser, in this case the extension, can in the HTTP  request say I would like application RDF instead of HTML. Or it could say I want text turtle  and there are other mind types that would work for sending data in like this. Other means  to do the same thing. You can add a link header in the HTTP response. Like the server can  say you can have this information in HTML or you can have alternate representations in  RDF for example, but the server has to be set up for that. You could have a content type  correctly set in the HTTP header. There are some servers that would serve RDF but without  the proper content type. In that case the extension cannot be F properly because it  doesn't know what is the information it gets. You can have in HTML in the header, you can  put link relationships to alternate representations. And in the end, I'm not the one making all  the internet specifications. So this proves that it can work and we'll see if more people  start publishing the information like this and setting up servers correctly and maybe  the standards will evolve at some point. Important points about the HTML views of the  RDF data. As you could see there are distinct from the web extension. So there is one thing  which is installing the extension and another thing which is configuring the extension with  views which means anyone can publish views and you don't have to make your views public.  You could have your views in your intranet for example. Each user is choosing how to  configure his extension so what views will be displaying what type of data. It's usable  on any website. I'm not part of the team that's making Dbpedia so for the demonstration it  just worked with a public website already. The views are functions that you develop in  JavaScript or in TypeScript if you want. They are simple to publish as you saw on the website  where I got the configuration that was only static page, a static page and a static file  that would be imported in the browser. And the conclusion is let's re-dysentralize the  web. Thank you.  Any questions? We have about five to eight minutes. Yes. Yes. Yes. So there are different  ones. Many different catalogs. This is building on the standards of the semantic web. The  semantic web started in the mid-90s so it's already more than 20 years ago. Projects like  Dbpedia started more than 10 years ago and you have many catalogs where you can look  for data models like this. There are standard for specific type of information like for  describing persons, for describing books, for describing genes, for many things. One is  the love linked open data vocabulary. So it's love.okfm. I don't remember maybe org or something.  But you can look also on websites. You can look at the W3C on the wiki where you would  get more links to catalogs. So it's something that already started 10 years ago.  So you can do a web search. You can go on portals that publish open data. So the question  was how do you find models for a specific topic? Right?  Okay. So the first place you can have a look to is the linked open vocabulary catalog.  So it's love.okfm. You can look for that one. There is also a site linked data.org and there  is a search engine from Google that's in beta right now that's called data search where  you can type some word and it will show you the kind of data model and data sets that  correspond to the word. And there is also one site you might want to take a look at  which is schema.org which was made by the different search engines to help people publish  data aside HTML. Thank you very much. Thank you.
CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_0_179.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_180_1403.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_1404_1451.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_1452_2471.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_2472_2951.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_2952_4811.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_4812_6035.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_6036_6419.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_6420_6491.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_6492_6599.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_6600_6791.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_6792_6851.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_6852_6935.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_6936_7139.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_7140_7187.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_7188_7235.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_7236_10367.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_10368_16355.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_16356_16439.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_16440_18083.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_18084_18287.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_18288_19319.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_19320_19391.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_19392_19439.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_19440_22547.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_22548_24335.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_24336_28991.png CubicWeb_Linked_Data_Browser_Extension_54_i1F9Px0Y_28992_29119.png