3D RDF Model of RxNorm data
The following is a 3D RDF Model of RxNorm data of drugs (example here) that contain lithium carbonate as an ingredient. The red balls are the drug products and the greens (difficult to see them in this view, easier to view in 3D) are the various ways lithium carbonate is listed in the RxNorm database. Predicates rxnorm:ingredient_of and rxnorm:hac_ingredient are colored yellow. The RxNorm data was converted/maintained by my colleague Dr. Janos Hajagos at Stony Brook University. He participates in the W3C Linked Open Drug Data group. The original RxNorm data can be found at:
http://www.nlm.nih.gov/research/umls/rxnorm/
and the RDF version can be found at our SPARQL endpoint/Triple Store (based on Virtuoso) at:
http://link.informatics.stonybrook.edu/sparql/
The data set for this model was constructed with the following RDF query:
prefix rxnorm: <http://link.informatics.stonybrook.edu/rxnorm/>
construct {
?aui ?auip ?auio .
?auiingred ?auiingredp ?auiingredo . }
where {
<http://link.informatics.stonybrook.edu/rxnorm/RXAUI/2072077> rxnorm:hasRXCUI ?cui .
?aui rxnorm:hasRXCUI ?cui .
?aui ?auip ?auio .
?aui <http://link.informatics.stonybrook.edu/rxnorm/REL#ingredient_of> ?auiingred .
?auiingred ?auiingredp ?auiingredo
}
Nexus to this point, used FOAF data for testing. I did this model to test with something a bit different. This model is also a bit more complex and it will help with visualizations in the future as additional visual functions are added, as well as, modifications to the layout engine.
This model is currently on display at the Stony Brook SOM region.
Color 3D RDF FOAF Graphs in Second Life
Added a new command for coloring of the 3D RDF graphs. It uses the syntax:
color <r,g,b> spo where { pattern }
where:
<r,g,b> is a rgb color vector. <1,1,0> would be yellow.
spo is either spo, sp, so, po, s, p, o to have the command operate on one of the combinations of subject, predicate, and/or object of the triple.
where { pattern } is borrowed right out of SPARQL's syntax. Nexus actually uses it's own ontology that is used to describe the visual features of the 3D graph such as {nex:color, nex:alpha, nex:xyz, etc} All graph data can then be streamed out and include the Nexus ontology for persistence of a visualization session for later viewing or sharing. In these three graphs, the @timberners_lee and @jahendler FOAF graph data that I have been using as test data are colored by issuing the following two commands:
color <1,0,0> spo where { ?s ?p ?o . filter ( ?p=foaf:knows ) }
color <1,1,0> spo where { ?s ?p ?o . filter ( ?p=rdf:type ) }
The first command colors all foaf:know triples red and the second command colors all triples that are rdf:type green. The default color for everything is blue <0,0,1> In the lower right image, the lone green ball is actually foaf:Person. No, data that can be loaded can be any RDF not just FOAF. This model is currently on display at the Stony Brook SOM region. Yes, this is in Second Life, so, bring your friends and look at it together and use IM and voice to discuss it collaboratively while your there. The region supports up to 100 concurrent users.


Completed 3D Second Life RDF Graphs
Here is the complete @timberners_lee FOAF graph displayed in Second Life in 3D using Nexus. As a quick experiment, I loaded James Hendler's @jahendler FOAF page and combined it with TBL's (they know each other as per the FOAF data thus the two graphs are linked) and then applied Nexus's force-based layout algorithm again. The picture of the resultant layout is in the lower right. I will have to study it to make sure it working correctly. It looks interesting though... ;-) I left the model in the Stony Brook SOM region if you want to see it. #linkeddata #semweb #secondlife
First Nexus preview
After a few months of work, on and off, here is the first display of resource description framework (RDF) data by Nexus inside of Second Life. This particular graph is of Tim Berners-Lee's FOAF data. FOAF (Friend of a Friend) is an semantic ontology that describes people, their interests, and their relationships to other people. Tim Berners-Lee (TBL) published along with James Hendler, and Ora Lassila the article "The Semantic Web" in Scientific American's May 2001 issue. Tim Berners-Lee is also credited with the invention of the World-Wide-Web itself. So, TBL's FOAF data seemed an appropriate selection for test data for Nexus. There are still a few bugs in the predicate positioning code leaving some of the predicates misaligned with their subjects and objects that needs to be resolved. The large tri-ball object in the picture is actually Nexus which is a 3D version of W3C's RDF logo seen on the right here.
The DNA molecule was generated from my Monolith project which created DNA/Protein models from the Rutger's Protein Databank inside of Second Life. As I have mentioned previously, all functionality of Monolith will be incorporated into Nexus, but, Nexus will be able to create models on any RDF data and not be limited to just PDB data like Monolith is. The RDF model featured above was generated by a force-based 3D-layout algorithm applied to the RDF graph of TBL's FOAF data then rendered in the 3D environment of Second Life. The actual RDF data text/numerics/URIs are seen as hover-text above the various balls and sticks and can also be seen by clicking on the item of interest. The visualization is vanilla at the moment, but I will be adding a variety of visual elements to the system such as color-coded subject/predicate/objects, light, texture, sound, and so forth. Problems with "node clutter" such as in the case of highly connected nodes will also be address using node expansion and node splitting to help make the visual model easier to understand. For Monolith functionality, rather than using a force-based algorithm to determine the positioning of the various nodes (in the case of Monolith functionality, atoms), the atomic coordinates derived from the pdb files will determine their locations, the predicates being used to represent the bonds just done semantically using a semantic conversion of PDB data (for example N13 pdb:bondedto C1). Other features will be added such as chaining and loading other semantically linked data sources into the current graph for a combined view and layout and even a public SPARQL end-point inside of Second Life. I've already written in a session-handling system into Nexus so I will be able to release a public version of Nexus for use in other regions of Second Life. I had never completed a session handler for Monolith which is why it was never generally released. For those of you scratching your heads asking, "Why do this in Second Life?", hmmm, well, a collaborative way to allow 100 people to look at the same 3D semantic model at the same time, work interactively with it together at the same time, and discuss using IM and voice as well, from 100 different locations on the planet...sorry, that's just cool! :-) For those people reading this that are not semantically-savvy, I'm hoping it will all make more sense and be easier to understand when I have more of the visual work done. Stay tuned...
Introduction to the Semantic Web
A very basic introduction to the Semantic Web.

