I'm not the worlds greatest fan of applying very general, very abstract models to day-to-day problems. ...
Then it hit me.
Spreadsheets:-) Think about it. Row 1 cells - subject. Col 1 cells predicate. Other cells: objects...
Sean McGrath, May 2005
<key>Artist</key> <string>The Jimi Hendrix Experience</string> <key>Album</key> <string>Are You Experienced?</string>
"Show me songs ..."
See gleaning RDF from omnigraffle diagrams Connolly to public-cwm-talk 30 Sep 2004
<java version="1.5.0_04" class="java.beans.XMLDecoder" xmlns:grddl="http://www.w3.org/2003/g/data-view#" grddl:transformation="grokVioletUML.xsl"> <object class="com.horstmann.violet.ClassDiagramGraph"> <void method="addNode"> ...
Eating our own cooking...
CustomRdfDialects is something of a directory of dialects, vocabularies, and GRDDL transformations:
Dialect |
Domain |
Schema |
Mapping |
Status |
Contact Information |
maintained by Walsh, Halpin, and Suda since Nov 2006; used in xtech schedule |
|||
Calendars and Events |
maintained by DanConnolly since Dec 2002 |
|||
Opinions, Ratings and Reviews |
in progress |
|||
Licenses |
Started in 1998; evolving slowly as we learn more...
Kayode wants to write software components which can extract RDF descriptions from XML HL7 CDA documents transmitted from various devices in a healthcare system using a clinical ontology so that he can merge together clinical reports and use inferences to detect possible problems.
<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:voc="urn:hl7-org:v3/voc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" templateId="2.16.840.1.113883.3.27.1776">
...
<author>
<time value="20000407"/>
<assignedAuthor>
<id extension="KP00017" root="2.16.840.1.113883.3.933"/>
<assignedPerson>
<name>
<given>Robert</given>
<family>Dolin</family>
<suffix>MD</suffix>
</name>
...
Details in: hl7-sample.xml
Link transformation via an attribute on the root element:
<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:voc="urn:hl7-org:v3/voc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" templateId="2.16.840.1.113883.3.27.1776" xmlns:grddl="http://www.w3.org/2003/g/data-view#"
grddl:transformation="glean-HL7-CDA.xslt">
...
<Observation>
<id root="10.23.4573.15877"/>
<code code="282290005" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" displayName="Imaging interpretation"/>
...
Details in: hl7-sample-grddl.xml
[ a cpr:patient-record;
dc:date "2000-04-07";
edns:about [ a galen:Patient;
foaf:family_name "Levin";
foaf:firstName "Henry"];
foaf:maker [ a foaf:Person;
foaf:family_name "Dolin";
foaf:firstName "Robert"]]
[ a cpr:clinical-description;
cpr:description-of [ a cpr:screening-act;
edns:realizes [ a cpr:medical-sign;
cpr:interpretant-of [
a foaf:Image;
skos:prefLabel "Chest-X-ray"];
skos:prefLabel "Chest hyperinflated"];
skos:prefLabel "Imaging interpretation"]]
RDF Schema (RDFS) and the Web Ontology Language (OWL) correspond to UML notions such as subclass, domain, range, cardinality, ...
Premise |
# one-to-many foaf:mbox a owl:InverseFunctionalProperty. :dan foaf:mbox <mailto:connolly@w3.org>. :dan foaf:name "Dan Connolly". :daniel foaf:mbox <mailto:connolly@w3.org>. :daniel foaf:name "Daniel W. Connolly". |
|
---|---|---|
Conclusion: |
:daniel owl:sameAs :dan. :daniel foaf:name "Dan Connolly". :daniel foaf:name "Daniel W. Connolly". |
DiagnosingImage
as: images that have been interpreted as having some medical significance.
@prefix : <http://www.w3.org/2002/07/owl#> .
@prefix g: <http://www.example.org/grddl-primer#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix cpr: <http://purl.org/cpr/0.5#> .
g:DiagnosingImage a :Class;
:intersectionOf (
foaf:Image
[
a :Restriction;
:onProperty g:indicates;
:someValuesFrom cpr:medical-problem> ) .
image | sign |
_:x234 | "Chest hyperinflated" |
Platform: | Jena Java |
Pellet Java |
redland C |
rdflib python |
SWAP python |
4suite python |
tabulator javascript |
---|---|---|---|---|---|---|---|
HP research | Parsia | Beckett | Kretch | TimBL, Connolly MIT DIG |
Fourthought | TimBL MIT DIG |
|
proof | cwm/N3 | ||||||
rules | Jena rules | cwm/N3 | Fuxi | ||||
OWL DL | Pellet | ||||||
LinkedData query | semantic web client | Y | |||||
GRDDL | Y | Y | * | Y | GRDDL.py | outboard | |
query | ARQ | roquet | cwm | some sparql | |||
RDF parse, merge | Y | Jena | raptor | Y | cwm | rdf.js |
RDF Validator | XSLT servlet | triplr | XMLArmyKnife | SPARQLer | |
host/platform | W3C Jigsaw+Jena Java |
W3C Saxon Java |
Beckett redland C |
Leigh Dodds | HP research Jena/ARQ Java |
XSLT | Y | Y | |||
SPARQL | Y | Y | |||
GRDDL | Y | Y | Y | ||
convert to RDF/XML, turtle, json | Y | ||||
output triples | Y | Y | |||
graphs in SVG, PNG, ... | Y | ||||
validate/diagnose | Y | Y | Y | ||
rdf parse | Y | Y | Y |
OpenLink Virtuoso seems to support all of the above...
Travel schedule with hCalendar/hCard:
RDF browser acts as GRDDL-aware agent and finds mash-up-ready data.
Calendar mash-up:
Travel schedule on a map:
You are here ;-)
See Linked Data sess Friday at 10:30am.
Follow your nose and query the whole Web
For each triple pattern, the library executes the following algorithm:
Free time for adding microformats and GRDDL to your own vocabularies