TWed Talk: Jamie McCusker on "Build Your Own Knowledge Graph With Whyis 2.0" (28 Sep 2022)

Tetherless World · Intermediate ·🎨 Image & Video AI ·3y ago

Key Takeaways

Jamie McCusker teaches building a knowledge graph with Whyis 2.0 framework

Full Transcript

foreign to our first uh twed of the Fall 2022 semester and our first in-person Twitter in a very long time um we're very happy to have Jamie mccusker here to take us through why is 2.0 probably the why is 1.0 was probably one of our last toys but uh so I'm going to uh switch off our smoke share and okay sure so so hi yeah uh we are going to be talking about uh why is 2.0 today and yes I'm going to start sharing my screen okay um logistical things talking about a practice yeah sure um so just as a couple logistical notes I should mention number one uh this is being recorded uh for later presentation in the web wait sorry they can probably see I don't think I don't think I'm I wasn't muted I'm sorry that's that's okay um so it's been recorded so feel free to ask questions well if we if our discussions get too long I may uh expedite the presentation um but just keep in mind that we are being recorded uh forever and ever amen on the web um and you can find a schedule for upcoming uh tweds and also our Pirates the RPI our users group meetings on tw.rpi.edu twed um and I think that's cool yeah just maybe that's okay so yeah um why is 2.0 is uh basically the next vert the next version of Y is uh one of the nice things about it is that it is uh very it's uh we put a lot of effort into making sure that it is a um a fully uh a very simple uh system to use and install um so uh why is this available as a python package uh it's uh available to run basically directly on laptops uh in a very straightforward embedded mode uh it has a lot of scripts and support around uh deploying to both Docker containers and to um and to uh uh production servers this is virtual machines so that's all set up in a way that uh where um kind of we've solved a lot of those problems for you a lot of scripts around that so uh hopefully this actually will um help you uh this will help uh you uh kind of get started with why is uh the other thing we've done is we've made sure that the out-of-box experience is uh quite a bit better than the old one you can actually use wires for basic knowledge graph applications without writing any software um this is a big deal for us because that's not something we generally do uh in our field uh so hopefully this will uh this will uh help that along the nice thing about why is is that because of the way it's structured even though you might start off with a a no code project where you're not actually writing any uh software you may decide later on that you need some you need something in place that will do one of those things you know it will you know maybe you need uh uh a custom view or a custom agent and I'll talk about what those are in a little while um uh you can transition from just doing uh just loading data and exploring it all the way over to uh writing a custom Knowledge Graph uh without uh without any disruptions you can uh you can just start tinkering with it and I'll uh hopefully I'll have time to uh kind of show off where you would go about uh making those changes and how you would go about doing that so for those of you who are there we go uh those of you who are familiar with uh the old wires architecture we've made a number of changes to um to the uh approach that we've uh had and a lot of the technologies that we have um uh the original version of Y is was based on Blaze graph which is has been a wonderful uh tool but it's rather monolithic and has been um you know it uh basically the entire team's been absorbed by Amazon and so the support isn't what it used to be and so we've decided to switch over to uh using uh fuseki from the Apache Apache Jenna project which is um very actively developed and is modular and we're actually able to write and extension to fuzeki as part of the transition over to uh of wyas to to it and so uh that that's kind of part of the uh appeal now of why is is that you can actually Tinker with fuzuki itself as part of one of your why is projects you don't need and basically add develop and add modules to fuzeki to add new things whether it's geospatial or if you want to write a Authentication in their authorization module or do any of those other sorts of things that's absolutely there it's got good DNA yeah um and yuzeki is yes a very venerable uh project that goes back uh since basically before I've been involved with the semantic web um so another uh change another major change is uh the use of um we were using a JavaScript framework called angularjs um which is uh back in the back in the day it was actually very convenient way to kind of uh kind of do model view controllers in JavaScript and we had a lot of success with that um but uh uh angular has been showing its uh its age for quite a while and we haven't actually moved along to angular uh to even angler 2.0 which is radically different from what we're using with angular 1.0 and so um we kind of did a reevaluation of what we were do of what we were doing and realized that um uh view.js is actually more in line with the sort of uh component system that we really want to use and to make and it's much lighter weight and we're able to uh we're switching in the process of switching over a lot of the front-end components to view.js from angular there's still a lot of Technology that's using angular but going forward as we make new user interfaces in y as we'll be using view um and we will be gradually transitioning those over to view from angular and actually one of those first um one of those first components that we've uh been trying to switch over is uh the uh the fast the original faceted browser from wires which was useful but kind of unreliable in some ways um uh We've uh basically built out this uh visualization framework and actually still have to come up with a good name for it because it's not going to be bobvis that's a nod to prove um when back in the back in the very beginning of prove we called prop entity just Bob because we didn't want to bias ourselves towards any one name or another um so I've been calling it bobbiz just because there's not a good name for it yet but what it is is basically a framework for plugging in um uh search capability so basically formulating and executing a sparkle query with visualization or exploration capabilities being able to display the results of that query somehow and the very basic version and I'll show you a very basic version of it which is uh you write a sparkle query and then you write a a Vega um a Vegas specification for a visualization and you can get this lovely graph the other that is far more appealing to me than it should be yeah I I might I might do that and that's a yes that's extremely tempting because I love a good pun um okay so uh We've also integrated uh data Voyager in with us so that instead of just writing a um instead of writing a uh um a view uh visualization directly you can use a user interface to compose one and so hopefully I'll be able to show that um I've got some demo data that might be able to probably be able to use for this uh and then the other thing is that uh so the bobvis uh system actually the idea is that a lot of these um pieces that you see with um when you're doing these sorts of tasks whether it's looking at a gallery of instances that you you know you either you've just got a sparkle query and you want to see those uh kind of summaries of those instances well you use maybe a faceted browser just a straight query uh and a gallery component to do that or an album component um when you're just showing a visualization you just kind of have the metadata you don't really offer editing of the the data you just but on the query um and then when you're doing a uh editing a visualization you would then show an editor for the sparkle query or whatever else you're you're using so that that's the idea is that this will eventually eventually it's not quite there yet um become a a way for people to uh to compose novel user interactions within why is without without using a lot of code right um you'll be reusing the you know you can mix and match a lot of these components to do interesting things and hopefully when it comes time to actually write a Knowledge Graph you can just plug them together um uh using it would be probably about five lines of HTML to to do that yeah yeah still work on the same thing without knowing that they have to meet something get the results right yeah so that's that's the idea is that um people who know how to um people who are uh who can write uh tools for uh to that can you know write Sparkle queries for them so like a faceted browser or something else uh you know those those sorts of uh people who are really good with sparkle can write those sorts of tools and then you and then other people who are building knowledge graphs but maybe aren't like sparkle experts can still put together sophisticated uh knowledge exploration tools using those pre-built components um so that's that last page was more Vision than anything else um yeah this is the oh this is so one of the cool things one of the cool things yeah um some one of the cool things though about this this graphic is that I didn't have to change it at all it still applies this is this is why is 2.0 as well and over the course of I guess it's been five years um this architecture is held up and hasn't had to change at all um and so you know we still have uh we still have uh basically knowledge curation through uh through agents uh that can uh either read in you know actually we've filled in this Gap we didn't have semantic data dictionaries way back in the day that was a Visionary thing that's now done semantic ETL is being done through settler uh we have some NLP uh pieces in place we haven't really done much for team learning yet but we really want to um and uh you know the linked open data mapping has been like a Workhorse of of why is over the years uh you know whether it's mapping in oboe uh ontologies class by class whether it's been pulling in uh orcid and DOI identifiers and pulling in metadata from from there or using Wikipedia or anything else it just keeps going and uh we keep finding new interesting things to do with it including on-demand loading of files from remote sources so that we can actually you know do semantic ETL of these files that are published somewhere pull them through process them and then publish the the data right to the graph so it's all it's actually been really cool on that end um these uh uh the knowledge interaction piece um is still uh still works more or less the same way that it always has um uh it uses uh views to uh you know every every entity in the graph has at least one View and there are lots of views available uh for many of these things some of them are uh web-based so HTML Pages some of them are data oriented and so they're uh usually json-based apis that are based on these views and all these things are actually really um just you know that they they continue to work and a lot of these pieces have been more about changing what's the content of those views than about actually changing the underlying architecture um and so you know some stuff that we're looking at for views is like well how do what do you do when you want to post something to an entity what is what would that mean uh so questions like that are more like you know how do we expand on what we already have rather than how do we uh how do we change what's already there so that's again held up really well I post human it's like yeah exactly like HP post you know what does it mean to uh if you want to post a revision of a fragment of a CSV file to that CSV you could potentially do that you know you just need to write that view to do to do the processing um and then similarly with knowledge inference the uh the uh the inference agents are uh you know this thing that they've always been uh and really are uh still uh still working on an app nanopublication and banana publication basis the the use of Nana Publications for and and the use of Prav uh oriented Nana Publications to trace changes in the graph all of that's still the same and so a lot of it's been like how do we improve this performance or how do we deal with this corner case that we didn't hit before but all of these underlying Concepts have held up for five years um and so the the main thing again this is another Dusty uh Dusty slide um but actually did dust it off uh basically uh so I took off the specifics about JavaScript this JavaScript stuff because we're kind of in transition right now and I wanted to have it be honest uh but again you know there are views there's link data mapping there's uh I used to call them knowledge expansion agents inference agents that I mentioned um and one of the main differences is that um we've changed over to fizaki from uh from Blaze graph and so that's been really um that's pretty much it right the the rest of us still again holds up and we haven't had to add any back doors we haven't had to add any new um features in terms of the architecture design for quite a long time and um you know some of it's stubbornness on my part but a lot of it's just been that what we've been able to get those things to work in a lot of different situations in five or six different projects so that's been really uh really valuable I think that we were able to do that okay so that's that's all I there's a there's an architectural question yeah so the first was just kind of on content any information is for is there there's a certain some of this is kind of analogous digital regulatory yeah yeah one of that novel things so that was kind of that their architecture was sort of based on um digital objects essentially through different kinds of forms right yeah how many different manifestations of it or information about it yeah yeah that's right and and so on and there was also to some extent that was like the converse was this before you could see what my identify yeah right yeah yeah I'm right that sort of directive which API would interact this from a dissemination step work that was that kind of fall under custom views where would you put yeah API Revenue yeah so that's these custom views and so about at least half of the uh the views that are used in wires are actually data views so I distinguish between web views and data views webviews serve HTML data views serve Json or XML or some other data oriented data structure and um the difference there is more a matter of what you write than anything else um you know rather than writing you know template name dot HTML you write template name.json and it serves up Json instead show me some posts specialty yeah that's a special still trying to consider um and it's something that I mean so on the one hand this has been sitting around for five years on the other hand I've been thinking about what what a post would mean in this architecture for about three of those years so that's not um you know that's part of part of this process is you know trying to make sure that I'm thinking through what each of these things means right yeah yeah and so you know the the post is usually a modification or creation process um you know there's also put in patch and so forth and delete um right now um if you were to uh if you post a file to a uh to a URI in wyes it will upload that file and actually serve it back to you whenever you do a get on it so it basically turns that it basically means that that um that URI is representing the file you you posted and you can post a new file each time and you can provide some basic type information as part of the post parameters um and you can and it's basically an entity in the graph so you can link to it I think you can add other facts about it you can link to other stuff so we do have some semantics around uh post and delete for uh for file oriented uh entities or resources and we also have that available for banana Publications themselves huh yeah I can so if you've um so and actually one of the fun things is that I have uh pearl.org uh Y is slash local slash redirects to localhost colon 5000 and that's also the default URI space for why as we need to install it from scratch but I promise to keep things moving yeah yeah yeah good job um okay so let's see here I am going to oh right so one thing I want to show off it to show my um uh show what we've been up to is we've also put in a lot of effort into documentation um that we have uh so a lot of this stuff actually had been available previously is part 2.0 um I've translated over as much as I could to uh to 2.0 uh added some new things around um installing wires and um uh uh reference uh documentation for the command line interface and the AP and the web API um and yeah so if you have yeah so if you actually do a get on something that's like a direct a direct link into whatever this the the LOD prefixes I'll talk about that more later though um anyway the um so this was it bigger okay so [Music] um so why is like I said as a python package uh so one of the first things we want to make sure is that you have uh python 3.9 installed uh or 3.7 or later I've been doing most of my work with 3.9 um that seems to be very solid and stable and generally available so go for it um the other thing you need is um uh Java where is it yeah so you need um a Java 13 or later for uh fuseki so you need to make sure that's installed between those two that should be about it um I think you I think that covers I think everything else is covered as part of the installation process so um uh Jenna fusecki uses Jenna kind of throughout so it's built on Jenna yeah let's see um hip is usually part of cubs with python at least these days so what I'm going to do uh is this command in Python called the uh Ben it's a virtual environment most people who I've dealt with before or who I've talked to you about this process before I've been pushing really hard so people use Virtual environments for python because really it's kind of a mess if you don't and so I really really really really recommend you do this except in doctor you're not supposed to do it at all although no actually the the docker image also uses for uh virtual and um why is uh demo um well so uh Docker itself is just a it's an OS environment right uh basically a virtualized OS environmental containerized not always virtual um what happens inside of there is that the um you still need to do the same stuff to run python if you would otherwise right you can install stuff into the system python packages just fine but just for as a matter of kind of knowing where stuff is I prefer to build the virtual ends all uh already and part of it's that uh then I'm you know it's just a little bit more predictable between everything so okay so I create a venv then you have to activate it um Lions don't bin activate and no I have not tested those with this with Anaconda I've grown disillusioned with Anaconda like 10 years ago really don't like it if you want to use it go for it but you're you know supposedly all the tip stuff also works in you can use a pip packaging Con in conda as well uh because uh the python packages have become much more comprehensive than they used to be uh and so a lot of the stuff that was hard to install using pip now actually is pretty easy and you're about about to see that yeah sure if you have a GPU and you install a package that uses it environment agent that uses it it'll use it there's nothing in there's nothing in Wise that requires it there's nothing in why is that prevents you families in it either yes um although I think well so depending you know it's a matter of style right and so um Anaconda is not really it's really good for like data science type stuff but it's not really um I wouldn't use it for uh for setting up a like a a server deployment or something like that I don't know how you know I I've seen seen it get temperamental with a lot of that stuff and it's much more opaque in terms of what it's doing like I just made a directory called why is demo v e and V I know where it is if I want to get rid of it I just delete that directory um bit install wires This Is The Moment of Truth um yeah actually why did it do that oh sorry there's actually an old one um I just I just made uh I already had this in place here I'll just do that Y is b e and B Source uh why is NBA being activated so I want to make sure that I'm not cheating for this so I'm doing an empty one okay so it's it is cat it is catching everything uh because I already tested this but it's good to do not delete the downloads thank you so much something different sound it could be either it could be either redis or um exactly itself it's actually I don't know if you had the Java command set up properly within there but also if you're doing like the the um the Linux subsystem yeah that would probably yeah that would probably fail spectacularly well he already invested in the hardware and you know okay cool yeah that's promising um but yeah I don't know yeah you don't well the other thing is that you can just use Docker now um I'm not going to go over the process in this don't do research computing okay so um so we've installed wires um lots of sub packages lots of things that can go wrong um but it didn't thankfully uh okay so what what did we do all right um so uh the knowledge graph application in wires I've been calling them kg apps so like web apps but knowledge graphs so kg apps so um I'm going to make a directory called demo kg app and then from here literally all we need to do to to start why is is done bias foreign right yeah there we go just compiling everything um so but let's do let me run through exactly what it's doing here because I know you guys are fascinated by this um so what it's doing so there's uh I'll explain kind of the configuration system maybe if we have time um but basically there's the the kg app configuration and then there's the system configuration system configuration is for deployments on production uh there's this idea of an embedded configuration which the idea is that it's uh what it does is it has some defaults in place that lets you run everything locally so you can take the same uh kg app run it on your laptop and then also be able to deploy it to a server and it won't uh everything will work the same uh and because you don't have a system that a system config uh setup on your laptop you won't you know you won't be using those things that will use the kind of the built-in stuff um whereas when you deploy it to production it will use the system.count that you created it starts fuseki on a random Port um so you can actually have multiples of these running at once um it will then build out uh the uh endpoints for you it starts a redis instance which is used as a bulletin board for the uh inference agent system um and then it starts salary which actually runs the uh which actually runs the inference agents so that's the infrastructure in Python that goes to the bulletin board and actually pulls tasks down and so forth and so every um uh all the agents are actually uh they're not direct salary tasks uh for those of you who know celery works but it is basically all of the steps of the inference agent process are different tasks and salaries so that it's kind of processed through that it's also set up so that you can monitor tasks as they do or they are marked with the agent type and the URI of the Nano publication so let's be looking at all that sort of stuff so that's it redis is so redis is an embedded database and it's used to be it's uh it is a um basically serves as the bulletin board for tasks for celery and celery is what actually runs the information agent system yeah exactly yes that is something you can set up if you like um that was actually right yeah yeah so what would happen um here let me show you what it it's actually created um new window you know I had all this other junk not yet or if they did that hasn't reached my computer could be uh but I mean it's an open source project right so okay so demo kg app so what what we have here is actually kind of this let's make it bigger um right so why is dot conf contains the like I said the kind of bit the the functional aspects of the knowledge graph so things like what the LED prefix is or um kind of where to look for the vocab file which it just defines the views and the site name description um what inference agents to run what um what linked data importers to use and so forth and so on yeah it's yeah yes it is um the other thing that you come with is so there's this so right now at the moment because there's a system running there's this embedded.com file and this is actually written out as Jason actually it's a pain in the butt to read sorry uh but what what there is is there's basically uh when you run um install it on a system there's a system.com file that sits right next to the Ys file the same directory and what that does is that configures that has that tells Y is where to look for if you exactly where to look for red is where to look for salary and all that sort of stuff and it also is set up to be um basically it's it's meant to be configured on server uh there's also and actually I think that right so in here is the system.com file which has some um which has some uh specific uh variables in here that get replaced so when you actually install it on a server this gets written through and so forth and so on um but basically uh there's a script that goes through it and installs all this stuff into the server sets up a fusecki.service into your system.d sets up Celery and celery beat service to do the same and installs redis and if you look yes they're like a limited python file but yeah yes the ones that have to that go that's how um that's actually a flask thing so if you have uh if you have flask using a um if you're writing a flask configuration file you use this to distinguish between uh variable uh entries that are not actually configuration values and just regular variables thank you oh yeah yeah in fact here's one yeah um and so the uh so setup actually goes through the process of so you just run this on your server when you're ready to reply it will it will go through and install redis it'll install install Apache and the python that you need it will set up the the directory the directories you want um and uh configure salary as needed it will uh you know you know pass through these these files and add configurations to them and basically we start all the services so it's basically full-fledged uh you can go from like I can take this this uh kg app that I just generated copied over to a server run it and get the same experience that I had on my laptop except it's production no no it's the well it's the rest of the stuff that used to be in that so the old uh the old config.pi that used to be in wires was the combination it had stuff from wires.com and system.com uh put together and so this is the idea with this splitting it out makes it easier to deploy and embed yes yes I'm sure yeah well some of this is I'm not trying to get uh trying to get everyone up to speed on kind of a lot of this stuff so when we start off with a knowledge graph we have just a basic page that starts up and as I said before um there's a you know when we look in ys.com uh so this is the LED prefix um so when we go here we're actually serving up hey this page that URI so even this page has a URI associated with it right um which ones these guys socket ones that's not gonna work no that's the only one oh wait these guys yeah so oops so yeah so if you basically so you can actually go once you know what the you know it's telling you this so that you can access it directly if you need to um okay so you do still have to register in order to change changes in the graph um you can do this through the command line as well um but I wanted to show the in the user interface for uh joining tusker uh api.edu no you okay foreign to add knowledge because it's an empty Knowledge Graph right now um so we can start by uploading a bit of knowledge and what I'm going to add actually is going to be some very simple knowledge that we have which is in the uh in y as we have this let's go there we are base dottrigue so this is basically scos and DC terms and rdf and owl rdfs all the labels for those name spaces are all in this base dot trig it's a really valuable thing to start with um and it's got that all broken out into separate named gaps so you don't have to do that and so that's basically added things and oh look now we have instances of stuff um and so if we look at uh for instance so this is this is a gallery or uh album depending on how you want to think about it of kind of the top six types in in the graph and as we add new stuff to the graph we will actually we'll see that change because this one is all classes this one is rdfs classes and so the other thing is that when we look at an actual uh a a a class view it automatically shows all the instances of that view or of of that class oh so this is fun so um we have oh this isn't going to show yeah that's that's just that that's all of them uh but if we look at rdf rdfs class I think we have more than 20 in here um and so what we do is we have a no actually yep we have infinite scroll so it only shows a little bit at a time and every time we have every time you bounce off the bottom it will show a little bit more I think it's 24 at a time so of course I'm showing the five why because it's the only thing that word so you know this is a fun you know we I love Flex it's so cool to be able to do that I've been waiting years to be able to do that and oops yes yeah in fact when I load the data that we're going we're going to use I think that will actually work [Music] um one thing I'm going to do is I'm also going to add um I'm going to add Scio to this as we use Scio for a couple of things in the in the example data um so so labels oh that's an old one oh wow that's probably fun well now um rdf XML so we can keep adding you can just add turtle from anywhere using that menu um afterwards and actually now we should get even more we should have even more owl classes because we just added Scio to this so yeah all sorts of stuff you know I'm just double checking that okay cool so the other thing we can do um so as I mentioned before uh uh we you can upload data into wires for processing or just for publication um this is a pretty cool thing that we added as part of a prod one of our projects but this is actually this so you'll see this is actually um a view where the URI is dcat data set and the view is new so it's actually uh if you were to go to any class you would get something that allows you to create a new instance of that class the the one that's in there right now the default one isn't that great but the idea is that when you have an action like that that you're trying to do those would always be done through a specific View so uh view new uh and edit are all kind of standard uh web-facing uh views that we have at Y is that you should use uh other ones include it's war and gallery and other stuff like that so like the gallery view will show all the instances of it by itself instead of having it be in the main page um if we had a DOI for this data set I would I could just plug it in and it would load that through I'm just going to select some files though um [Music] all right let's download data so this is a data file of this is the um the 20 uh 2010 census uh hold on pull that up so yep uh so I modified it a little bit to make it a bit more tidy because the original the official one is really kind of gross um so County State uh census it's still not tidy I know the part of it that I'm going to use is tidy I'm just using the census value I'm not going to use the other stuff yeah I know I know you can add a preview image for this actually I'm going to try to find one real quick that um uh here this is logo for my race but whatever so um we'll pretend that's has something to do with the census um so it will upload census 2010 I'm going to make myself the uh so one thing we expect is that we've Orchid identifiers as contact points for these so I'm gonna grab my orchid um we don't have it mapped in yet so uh let's see here uh and then there's um you can add you can look up contributors uh add those uh set up publication and modified date I'm going to do today for both of them and so it'll show you a summary of it and then you'll submit uh and then um in the end that's you know that's what you get so you have the the uh a summary of that of that data set um and this is you know this is the view equals View and if you go to view equals what's going on here close uh view equals describe you actually get the you you got some metadata for it and it's all it's all linked data so if you actually negotiate for uh for rdf from this URI or even actually because of the way this works uh so this is kind of an escaped URI but I can actually take this and what is going on with this can't be alive for it it's like yeah you could do that yeah um but the uh and there are other ways of making um data sets where you actually set the deal set the uri's uh explicitly um let's see here so the other thing that it put it into um the uh so this is a little bit bigger so there's this URI here that was used yeah and so that actually is oh wait sorry that actually pulls through to that one so that passes through to localhost which I don't seem to have not properly at the moment um to display uh that same data set although questions where is it relative to what you've been sprouting so far this is its own thing right so um because of the because of the original use case for it um auto-generated URI using uuids so that's what that's what this is here um this is just oh by the way right exactly yeah but the cool thing is is that so now we have this data set as well um although what's going on uh suddenly Evan oh right there we go so so this is the actual file that we downloaded before or we uploaded and actually if I strip this off the end it will serve up the file yeah so it's loading in numbers yay um but basically so yeah it's uh it serves up the actual file when you access it without without without as a default view so you can actually use the Uris as just to serve the date the file itself so that's really really right exactly yeah so that's um so if I go here if I put if I place this in here um so partly because this is so what we're looking at is basically the same this goes the same place um you equals me wait what did I do a view sorry b equals View so if I don't have U equals UI it'll just serve out the file again but so so yeah so that's uh what we do is when we're just generating Uris for the most part we use this about shortcut so that we can reference anything in the graph so that's kind of the safest way to reference things but the about way but without but the LOD prefix method makes it basically lets you serve up linked data for the entities that you are directly um responsible for in the graph and for the things that you uh really want to show that way and so they're really good entry points for that the um right so uh the other cool thing though is that I can do um sdd uh census c c e n s u s yeah I think I uh corrected it inside because this only comes from that um so the other thing we can do is uh rather than just use using that form we can actually upload individual files as well so what I'm going to do that real quick with the uh semantic data dictionary for this which is a Excel file and so you notice this extracted so it's figured out um so it added when it was created extracted the content type and this file ID is actually the reference into a file repository for use internally it's just easiest to just put it in the knowledge graph um and it also marked means the contributor again so it knows that I created the um it's basically gleaned as much uh provenance off of the transaction automatically as possible I mean I only like give it two two pieces of information so then you just so uh so you'll notice that I went to I just made up this uh sdd census URI and there wasn't really anything there I was just saying there's this thing I don't know anything about it here's what I know which is nothing now it knows a bit more about it because I did that upload I could have just as easily done about URI equals and then the URL to got it okay to where it's going uh and that would give me that would give us the same thing uh one thing so it also gave types so it actually uh uh pulled out the uh the type from the content type uh these Uris are actually related to the um uh the uh the the media types from uh that that are used everywhere and so it actually has a URI for each of those um the other uh cool thing oh wait did I think we essentially had to do this right yeah one people across with um yeah um no data where is it so um there's another uh another bit of another ontology that I wanted to add so the semantic data dictionary ontology as um what is it uh STD ontology this has some information about uh dcat and semantic data dictionaries and other things so this is valuable to bring in because before we didn't know anything about um we didn't know anything about semanticated dictionaries now we've added a bit more vocabulary and what we can do is we can add a type of um semantic data dictionary which wasn't there before I submit adds it to the type list doesn't what just happened did I did I crash something smoke up let's try that again okay well no it's still broken what should I do so describe what you're trying to do is oh yeah why is it actually holding oh it's your STD View your SD view is broken okay let's not worry about that it's your fault yeah exactly okay so I just wanted to upload it and set the type apparently that's that cause yeah so um U equals view so what I can do from here from the actual from the original uh data set so now that I've added that as a piece so what I'm going to do is I'm going to say um I'm going to add a few bits of information to this and what it's going to do is it's going to trigger that I'm going to link the SUV to that data set so that it can process it and add it as added as a graph so I'm going to add this as an attribute URI space which is from void uh local and then um 2010 I'm going to add um to this I'm going to move myself out of the way but that's annoying okay so I'm going to um uh right I need to add an attribute here of delimiter because it knows that it's a CSV but it doesn't like CSV doesn't mean anything necessarily you don't know what the delimiter is for that automatically so I'm going to add that as a delimiter to this file I'm going to add I'm going to end then add a link uh conforms so I'm yeah there we go conforms to and then uh the census file which we already have in there so that adds that as a link and what should be happening now so it's doing that stuff and actually it's not going to run mods save that vlog it's actually transforming the data into rdf already and conversion yep and simple something something break hold on something went wrong did it break so conception like we've done was shoot me yesterday right with the broad data that's out there what is that uh is that stated by itself sorry the weirdest foreign right yeah so the data set itself is now [Music] um this is essentially what you right so one thing that happens in here yeah so uh this is uh but basically it's not just a view it's actually been added to the knowledge graph itself well it's yeah as I'm saying it's it's added to the knowledge graph itself yes and my question was weird and what I'm saying um no well so it's a Knowledge Graph right there's no where in a Knowledge Graph there's subject predicate object graph and so everything well so first off there's a date yeah right well so first off it's more than one graph but also um the the um the actual saddle actually yeah the subtle script doesn't show quite everything um there's uh there's a couple of links that we could probably put into this that would make that easier to to navigate um but essentially in the uh no publication Trace the the uh all the nanopublications that are output from the semantic tail script our link to this to the subtle script which has a link to the sdd and this file in it and so let's see if I look at this so might actually have a it's more direct usage of it right so this is actually from the subtle script itself this used of which is kind of silly but yeah that this should have you should probably have a bit more in there about that but what's happening is that there's a series of nanopublications that are generated one for each row in the data file that are traceable at the Nana publication level back to back to this through the service once you're right right yes that's that's a lot more complex of my um foreign it's another subgraph of the Melrose graph yeah I was generated this is derived from that right I should wrap it up yeah so I'm going to show really quickly the so we use um Sparkle to where we use the the um yes gooey interface to uh to do stuff um and then there's also the there's this visualization step it's pretty cool um and so the um so this will show all the instances in there unfortunately not all classes have labels in this development but it's uh yeah yeah oh wait it's still okay so it's actually run this so we can do um um no that's not the problem that's what I end up putting in here um and yes I promise I'm gonna wrap up really soon so prefixes so that this is the these are the counties from the data set um and this is not actually I'm too many things so stinks that's endless well actually it's not shorter than what toolbar I wasn't shy about that so what it's doing is it's processing through all the Nano Publications right now and basically saying hey is there anything that we could further determine from each of these new fragments is one reason why it's all kind of broken up into the small pieces to make it more digestible um and so it's kind of working its way through that right now um and so the population oh right that isn't the oven but show up anymore but I know five demo gotta love it lotion [Music] XP um well so is that okay so it's basically has all these population objects in there and actually show you show you one we'll see production is right uh the other thing is that since this is I mean I could have just gone through there for like mobile girls just separate on my computer but um right now it's kind of chugging through all this stuff so it's a bit there we go and since the population and it doesn't look like it was connected to anything but it did have take the time interval of uh January 1st 2020 uh and 2010. yeah I lost the link to the uh yeah um here I want to show you the actual data because I want to kind of want to prove that I did get it to convert properly at this point uh um Wireless demo data okay so yeah so this is the data that was actually being converted here in Medina County Ohio part of right yeah and so each gets its own name God and then foreign and so here it's got the link to the different things and then um searching Hub info has the link of the you know this was associated with the particular row and the data um and then this is a CSV row as a row number so you can trace it back to a specific row and file uh it was for uh and then this was derived from oh that's all the same um hold on a sense something so assertion in Providence Providence isn't there okay so yeah so I I probably should expand on what's actually available in there a little bit but um in terms of expeditional data set um but um you know what was this uh the idea is that it's you know it's still um more or less available and uh but it's actually doing that conversion uh kind of systematically has it back in as more pieces of the graph and those can be processed by other agents as well right next week talk about photos to explore which was very interesting several applicant qis foreign questionable Awards since now what's that

Original Description

Whyis 2.0 is an extensible, open source knowledge graph development framework that is also an effective research platform. We will present the Whyis architecture and development method. We will then give a brief demonstration of the Whys "out of box" experience by installing it and creating a simple knowledge graph using example data, and using the Whyis exploration and visualization tools.
Watch on YouTube ↗ (saves to browser)
Sign in to unlock AI tutor explanation · ⚡30

Playlist

Playlist UU4rjm_R9sgRNvv9QsgH8LDw · Tetherless World · 21 of 40

1 TWed Talk: Katie Chastain on "Breaking the Gender Schema" (6p, 24 Oct)
TWed Talk: Katie Chastain on "Breaking the Gender Schema" (6p, 24 Oct)
Tetherless World
2 TWed Talk: Neha Keshan on "Stress and Machine Learning"
TWed Talk: Neha Keshan on "Stress and Machine Learning"
Tetherless World
3 TWed Talk: Sabbir Rashid on "A Semantic Data Dictionary Modelling Methods Tutorial"
TWed Talk: Sabbir Rashid on "A Semantic Data Dictionary Modelling Methods Tutorial"
Tetherless World
4 TWed Talk: Brenda Thomson on "Explanation in Human-AI Systems"
TWed Talk: Brenda Thomson on "Explanation in Human-AI Systems"
Tetherless World
5 Spring 2019 TWed Lighting Talks: Tetherless World Constellation
Spring 2019 TWed Lighting Talks: Tetherless World Constellation
Tetherless World
6 Twed Talk: "Global Earth Mineral Inventory: A DCO Data Legacy" (Anirudh Prabhu)
Twed Talk: "Global Earth Mineral Inventory: A DCO Data Legacy" (Anirudh Prabhu)
Tetherless World
7 TWed Talk: Minor Gordon on "Test early, test often, and keep your master branch stable" (4 Sep 2019)
TWed Talk: Minor Gordon on "Test early, test often, and keep your master branch stable" (4 Sep 2019)
Tetherless World
8 TWed Talk: Oshani Seneviratne on Ontology Aided Smart Contract Execution for Unexpected Situations
TWed Talk: Oshani Seneviratne on Ontology Aided Smart Contract Execution for Unexpected Situations
Tetherless World
9 IDEA Talk: Adrien Pavao (INRIA) on Machine Learning Challenges: Crowdsourcing Big Data Problems
IDEA Talk: Adrien Pavao (INRIA) on Machine Learning Challenges: Crowdsourcing Big Data Problems
Tetherless World
10 TWed Talk: Jim McCusker, "OWL at the Crossroads Set Theory, Graph Theory, Logic, and Computability"
TWed Talk: Jim McCusker, "OWL at the Crossroads Set Theory, Graph Theory, Logic, and Computability"
Tetherless World
11 TWed Lightning Talks Fall 2019 (11 Dec 2019)
TWed Lightning Talks Fall 2019 (11 Dec 2019)
Tetherless World
12 TWed Talk: Sola Shriai on "What's a Personal Health Knowledge Graph?"
TWed Talk: Sola Shriai on "What's a Personal Health Knowledge Graph?"
Tetherless World
13 TWed Talk: Minor Gordon on "A CLEAN architecture for semantic web applications" (04 Mar 2020)
TWed Talk: Minor Gordon on "A CLEAN architecture for semantic web applications" (04 Mar 2020)
Tetherless World
14 TWed Lightning Talks Spring 2020 (29 Apr 2020)
TWed Lightning Talks Spring 2020 (29 Apr 2020)
Tetherless World
15 TWed Talk: Henrique Santos on "Making Sense of Common Sense" (Weds, 07 Oct 2020)
TWed Talk: Henrique Santos on "Making Sense of Common Sense" (Weds, 07 Oct 2020)
Tetherless World
16 TWed Talk: Sabbir Rashid on "Annotating and Transforming Data with Semantic Data Dictionaries"
TWed Talk: Sabbir Rashid on "Annotating and Transforming Data with Semantic Data Dictionaries"
Tetherless World
17 TWed Lightning Talks (Fall 2020)
TWed Lightning Talks (Fall 2020)
Tetherless World
18 TWed Talk: Sabbir Rashid on "SQuARE: The SPARQL Query Agent-based Reasoning Engine"
TWed Talk: Sabbir Rashid on "SQuARE: The SPARQL Query Agent-based Reasoning Engine"
Tetherless World
19 TWed Lightnining Talks: Spring 2021
TWed Lightnining Talks: Spring 2021
Tetherless World
20 TWed Lightning Talks (Fall 2021)
TWed Lightning Talks (Fall 2021)
Tetherless World
TWed Talk: Jamie McCusker on "Build Your Own Knowledge Graph With Whyis 2.0" (28 Sep 2022)
TWed Talk: Jamie McCusker on "Build Your Own Knowledge Graph With Whyis 2.0" (28 Sep 2022)
Tetherless World
22 TWed Talk: Sola Shirai on "An Introduction to Rule-Learning Models for Link Prediction" 20 Oct 2022
TWed Talk: Sola Shirai on "An Introduction to Rule-Learning Models for Link Prediction" 20 Oct 2022
Tetherless World
23 TWed Talk (28 Feb 2023): Brenda Thomson on "Bibliometrics: The limitations and possibilities"
TWed Talk (28 Feb 2023): Brenda Thomson on "Bibliometrics: The limitations and possibilities"
Tetherless World
24 TWed Lighting Talks Spring 2023
TWed Lighting Talks Spring 2023
Tetherless World
25 TWed Talk (11 Oct 2023): Jamie McCusker on " "Splitting the World With My Grandfather's Axe"
TWed Talk (11 Oct 2023): Jamie McCusker on " "Splitting the World With My Grandfather's Axe"
Tetherless World
26 FOCI LLM Users Group: "Beyond Autocomplete: Instruction Following & CoT Reasoning in LLM Agents"
FOCI LLM Users Group: "Beyond Autocomplete: Instruction Following & CoT Reasoning in LLM Agents"
Tetherless World
27 FOCI GenAI Users Group (31Jan2024) : The Large Language Model for Mixed Reality (LLMR)
FOCI GenAI Users Group (31Jan2024) : The Large Language Model for Mixed Reality (LLMR)
Tetherless World
28 TWed Lightning Talks Spring 2024 (14 Feb 2024)
TWed Lightning Talks Spring 2024 (14 Feb 2024)
Tetherless World
29 FOCI LLM Users Group: "A Guide into Open Source Large Language Models and Techniques"
FOCI LLM Users Group: "A Guide into Open Source Large Language Models and Techniques"
Tetherless World
30 Danielle Villa "Testing Faithfulness of Language Model-Generated Explanations" (25 Sep 2024)
Danielle Villa "Testing Faithfulness of Language Model-Generated Explanations" (25 Sep 2024)
Tetherless World
31 Jamie McCusker "Getting Started with Knowledge Graphs using Whyis" (23 Oct 2024)
Jamie McCusker "Getting Started with Knowledge Graphs using Whyis" (23 Oct 2024)
Tetherless World
32 TWed Talk: Tom Morgan on "Intro to Quantum Fourier Transform on the RPI Quantum One" (4p Wed 13 Nov)
TWed Talk: Tom Morgan on "Intro to Quantum Fourier Transform on the RPI Quantum One" (4p Wed 13 Nov)
Tetherless World
33 TWed: Abraham Sanders on "Training Large Language Models to Reason in a Continuous Latent Space"
TWed: Abraham Sanders on "Training Large Language Models to Reason in a Continuous Latent Space"
Tetherless World
34 TWed Paper Talk: Danielle Villa on "DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via RL"
TWed Paper Talk: Danielle Villa on "DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via RL"
Tetherless World
35 TWed Talk: Thilanka Munasinghe (26 Mar 2025)
TWed Talk: Thilanka Munasinghe (26 Mar 2025)
Tetherless World
36 TWed Talk: "ChatBS-NexGen: A Platform for Automated KG-based LLM Fact Checking" (23 Apr 2025)
TWed Talk: "ChatBS-NexGen: A Platform for Automated KG-based LLM Fact Checking" (23 Apr 2025)
Tetherless World
37 "Toward Fluid AI Conversation with Natural Turn-taking: Full-duplex Modeling with Audio Codec LMs"
"Toward Fluid AI Conversation with Natural Turn-taking: Full-duplex Modeling with Audio Codec LMs"
Tetherless World
38 TWed Talk: "Detecting Ambiguity in Question Answering over Financial Documents using LLMs"
TWed Talk: "Detecting Ambiguity in Question Answering over Financial Documents using LLMs"
Tetherless World
39 TWed Talk: "Model Context Protocol (MCP): Standardizing Tool Use for LLM Systems" (18 Feb 2026)
TWed Talk: "Model Context Protocol (MCP): Standardizing Tool Use for LLM Systems" (18 Feb 2026)
Tetherless World
40 TWed Talk: "Discourse-Aware Scholarly Knowledge Graphs for the LLM Era" 18 Mar 2026
TWed Talk: "Discourse-Aware Scholarly Knowledge Graphs for the LLM Era" 18 Mar 2026
Tetherless World

Related Reads

📰
Mage-Flow: How Microsoft Built a 4B-Parameter Image Model That Competes with 32B Models
Learn how Microsoft built a 4B-parameter image model that rivals 32B models using Mage-Flow, a novel approach to image modeling
Dev.to · Prabhakar Chaudhary
📰
Teaching Kiro to Paint: A Stateful Image-Editing Skill Built on Gemini's Interactions API and MCP
Build a stateful image-editing skill using Gemini's Interactions API and MCP to generate and edit images with Kiro
Dev.to AI
📰
I Tried to Replace My Image Workflow with an AI Photo Generator. Three Times It Failed. Once It Didn't.
Learn from an experiment replacing an image workflow with an AI photo generator, and discover the challenges and one success story
Dev.to AI
📰
The Best Free AI Image Generators Better Than ChatGPT and Gemini
Discover free AI image generators that outperform ChatGPT and Gemini for specific workflows, offering superior photorealism and graphic design capabilities
Dev.to AI
Up next
How to Create Cinematic Fight Scenes (Step-By-Step)
Alicia Lyttle
Watch →