
W3C Semantic Web in Health Care and Life Sciences.
This work is licensed under a
Creative Commons Attribution 3.0 License,
with attribution to W3C.
MUST:
MAY (read "MIGHT"):
SELECT ?patient ?dob
WHERE {
?patient sdtm:sex ?sex; sdtm:dob ?dob; …
?substAdmin sdtm:subject ?patient; sdtm:medName ?takes …
NOT EXISTS { ?contraAdmin sdtm:subject ?patient; sdtm:medName ?contra … }
}
SELECT ?patient ?dob SUM(?substAdmin) AS ?total WHERE { ?patient sdtm:sex ?sex; sdtm:dob ?dob; … ?substAdmin sdtm:subject ?patient; sdtm:medName "Illudium Phosdex" … } GROUP BY ?patient
SELECT ?patient ?dob
WHERE {
?patient sdtm:sex ?sex; sdtm:dob ?dob; …
?substAdmin sdtm:subject ?patient; sdtm:medName ?takes …
SELECT ?patient
WHERE {
?contraAdmin sdtm:subject ?patient; sdtm:medName ?contra …
} ORDER BY ?contra LIMIT 1
}
SELECT ?patient ?dob ?contraURL
WHERE {
?patient sdtm:sex ?sex; sdtm:dob ?dob; …
?substAdmin sdtm:subject ?patient; sdtm:medName ?takes …
SELECT ?patient fn:concat('http://dbpedia.org/', ?contra) AS ?contraURL
WHERE {
?contraAdmin sdtm:subject ?patient; sdtm:medName ?contra …
} ORDER BY ?contra LIMIT 1
}
SELECT ?patient ?dob
WHERE {
?patient sdtm:sex ?sex; sdtm:dob ?dob; …
?substAdmin sdtm:subject ?patient; sdtm:ingredient* [ spl:classCode ?code ] .
}
SELECT ?patient ?dob
WHERE {
?patient sdtm:sex ?sex; sdtm:dob ?dob; .
?substAdmin sdtm:subject ?patient; sdtm:medName ?takes .
SERVICE <http://drugsЯus.com/> {
?takes stdm:ingredent [ spl:classCode 6809 ] .
}
}
MUST:
INSERT {
GRAPH <http://drugsЯus.com/mmkay> {
?substAdmin sdtm:medName "Illudium Phosdex" .
}
} WHERE {
?patient sdtm:sex ?sex; sdtm:dob ?dob; .
?substAdmin sdtm:subject ?patient .
SERVICE <http://drugsЯus.com/mmkay> {
?takes stdm:ingredent [ spl:classCode 6809 ] .
}
}
<http://drugsЯus.com/> a sd:Service ; sd:language foo:Sparql10_plus_federation ; sd:entailment foo:RDFS ; sd:function fn:concat .
<> a d2r:Server;
rdfs:label "D2R Server";
d2r:baseURI <http://localhost:2020/>;
d2r:port 2020;
d2r:documentMetadata [
rdfs:comment "This comment is custom document metadata.";
];
d2r:vocabularyIncludeInstances true;
.
DROP SILENT GRAPH <request_uri>
PUT <request_uri> = CREATE SILENT GRAPH <request_uri>
… RDF payload … INSERT DATA { GRAPH <request_uri> { … RDF payload … } }
Two models:
Paul rdf:type Worker . Paul :hasFriend Andrea . Andrea rdf:type Employee . Andrea :hasFriend Caroline . Caroline rdf:type Manager .
Paul rdf:type Worker . Paul :hasFriend Simon . Simon rdf:type Employee . Simon :hasFriend Andrea . Andrea rdf:type Manager .
Query:
Paul :hasFriend _:Y . _:Y rdf:type Employee . _:Y hasFriend _:Z . _:Z rdf:type Manager .
(skip to new OWL)
Class(a:MGHcharlstStPatient partial a:MGHpatient)
Class(a:MGHcharlstStPatient complete
restriction(a:physician
allValuesFrom(unionOf(a:MGHcharlesStOncologist a:MGHcharlesStOptician))))_:MCSO rdfs:subClassOf :MGHpatient . _:MCSO rdfs:subClassOf _:physType . _:physType owl:onProperty :physician . _:physType owl:allValuesFrom _:list1 . _:list1 rdf:first :MGHcharlesStOncologist . _:list1 rdf:rest _:list2 . _:list2 rdf:first :MGHcharlesStOptician . _:list2 rdf:rest rdf:nil . _:MCSO owl:equivalentClass :MGHcharlstStPatient .
Describe individuals; produce no inferences.
Permit my:Patient to stand for a class or datatype AND an concept.
This coincident naming produces no inference.
| subset | expressivity | |
|---|---|---|
| EL | popular restrictive subset | SNOMED-CT, NCI Thesaurus |
| QL | SQL | Entity-relationship, UML |
| RL | @@production@@ rules |
<dr>
<iriset>
<includehosts>drugsЯus.com</includehosts>
<includepathstartswith>/antidiabetic/metformin</includepathstartswith>
</iriset>
<descriptorset>
<ex:code>6809</ex:code>
</descriptorset>
</dr>
<?xml version="1.0"?>
<ClinicalDocument transformation="hl7-rim-to-pomr.xslt">
<recordTarget>
<patientRole>
<patientPatient>
<name>
<given>Henry</given>
<family>Levin</family>
</name>
<administrativeGenderCode code="M"/>
<birthTime value="19320924"/>
</patientPatient>
</patientRole>
</recordTarget>
<component>
<StructuredBody>
<Observation>
<code displayName="Cuff blood pressure"/>
<effectiveTime value="200004071430"/>
<targetSiteCode displayName="Left arm"/>
<entryRelationship typeCode="COMP">
<Observation>
<effectiveTime value="200004071530"/>
<value value="132" unit="mm[Hg]"/>
</Observation>
</entryRelationship>
</Observation>
<Observation>
<code displayName="Cuff blood pressure"/>
<effectiveTime value="200004071530"/>
<targetSiteCode displayName="Left arm"/>
<entryRelationship typeCode="COMP">
<Observation>
<code displayName="Systolic BP"/>
<effectiveTime value="200004071530"/>
<value value="135" unit="mm[Hg]"/>
</Observation>
</entryRelationship>
<entryRelationship typeCode="COMP">
<Observation>
<code displayName="Diastolic BP"/>
<effectiveTime value="200004071530"/>
<value value="88" unit="mm[Hg]"/>
</Observation>
</entryRelationship>
</Observation>
</StructuredBody>
</component>
</ClinicalDocument>
<d2r:ClassMap
d2r:type="eb:Customer"
d2r:sql="SELECT Tab_K_Kunde.KundenNr, Tab_K_Kunde.FullName,
Tab_K_Kunde.Anrede, Tab_K_Kunde_Kreditkarte.CCNo
FROM Tab_K_Kunde_Kreditkarte INNER JOIN Tab_K_Kunde ON
Tab_K_Kunde_Kreditkarte.KundenNr = Tab_K_Kunde.KundenNr;"
d2r:groupBy="Tab_K_Kunde.KundenNr"
d2r:uriPattern=
“http://example.org/customers#@@Tab_K_Kunde.KundenNr@@“>
Re-uses OWL constructs:
<d2r:ObjectPropertyBridge d2r:property="rdf:type" d2r:pattern="iswc:@@Persons.Position@@"/>
Configuration consumable as RDF (SPARQL-able).
create iri class prd:product_iri using
function OPLWEB.DBA.PRODUCT_URI (in id varchar)
returns varchar,
function OPLWEB.DBA.PRODUCT_URI_INVERSE (in id_iri varchar)
returns varchar .
Uses hardened algorithms from SQL land.
PREFIX :mydb <http://cityhospital.example/dbs>
CONSTRUCT { ?o a study:SubjectObservation .
?o study:subject ?p .
?o study:clinician ?d .
?d :foaf:name ?dName }
WHERE { ?o mydb:patient ?p .
?o mydb:doctor ?d .
?d mydb:name ?dName }
Intuitive (testable) semantics.
