Generating Application Ontologies from Reference Ontologies Marianne Shaw Todd Detwiler Jim Brinkley...
-
date post
20-Dec-2015 -
Category
Documents
-
view
218 -
download
1
Transcript of Generating Application Ontologies from Reference Ontologies Marianne Shaw Todd Detwiler Jim Brinkley...
Generating Application Ontologies from Reference
OntologiesMarianne Shaw
Todd Detwiler
Jim Brinkley
Dan Suciu
University of Washington
Motivation
• Growing # of specialized ontologies• Open Biomedical Ontologies (OBO), >50 ontologies• Unified Medical Language System (UMLS), >90 ontologies
• Link ontologies via reference ontologies• Reference ontologies are:
– Large• e.g. Foundational Model of Anatomy (FMA)
– 75,000 classes; 120,000 terms; 168 relationship types; – >2.1 million relationship instances
– Complex– Comprehensive
Problem Statement
• How can we enable large ontologies to be used to create application ontologies?
• Approach: Add Views to SPARQL
Outline
• Motivation / Problem Statement• SPARQL • Our Solution: vSPARQL
– Subqueries– Recursive Queries– Skolem Functions
• Radiology Example• Related Work• Conclusions
The Basics: SPARQL
• SPARQL: W3C’s standard for querying RDF– RDF: (subject, predicate, object) triples
• Simple SPARQL query over FMA– Creates a new RDF graph– “Get direct properties of liver”
PREFIX fma: <http://.../fma_1_4_0#>
CONSTRUCT { fma:Liver ?y ?z }FROM <http://.../fma_1_4_0>WHERE { fma:Liver ?y ?z }
Outline
• Motivation / Problem Statement• SPARQL • Our Solution: vSPARQL
– Subqueries– Recursive Queries– Skolem Functions
• Radiology Example• Related Work• Conclusions
vSPARQL
• Extend SPARQL to support views
• Extensions enable three types of functionality– Querying over existing queries– Gathering subgraphs of an ontology– Creating new data by combining data from
multiple ontologies
Subqueries: Querying over an existing query
• Alice’s ontology contains info queried from FMA– “Get organs & their direct
properties”
Query1Alice’s OrganOntology
FMA
CONSTRUCT { ?sub ?prop ?val }FROM <http://.../fma_1_4_0>WHERE { ?sub rdfs:subClassOf fma:Organ . ?sub ?prop ?val}
Subqueries: Querying over an existing query
• Alice’s ontology contains info queried from FMA
• Bob only interested in Alice’s info about liver
• Subqueries allow us to query existing queries
Query1Alice’s OrganOntology
FMA
Query2Bob’s LiverOntology
FROM NAMED <subquery> [ CONSTRUCT { … } WHERE { … }]
Subqueries: Querying over an existing query
• Bob only interested in Alice’s info about liver
Query1Alice’s OrganOntology
FMA
Query2Bob’s LiverOntology CONSTRUCT { fma:Liver ?lprop ?lval }
FROM <alice_ontology> [ CONSTRUCT { ?sub ?prop ?val } FROM <http://.../fma_1_4_0> WHERE { ?sub rdfs:subClassOf fma:Organ . ?sub ?prop ?val . }]WHERE { fma:Liver ?lprop ?lval .}
Recursive queries: Gathering subgraphs
• What if we only want a portion of an ontology?– Only want parts of the liver
…… …
…
…
Liver
…
Recursive queries: Gathering subgraphs
• What if we only want a portion of an ontology?– Only want parts of the liver
Recursive queries allow us to query for arbitrary subgraphs…
… ……
…
Liver
…
FROM NAMED <recursive_liver> [ CONSTRUCT { … } WHERE { … }
UNION
CONSTRUCT { … } FROM <recursive_liver> WHERE { GRAPH <recursive_liver> { … } }]
Base case
Recursive case
Recursive example: All parts of the liver
…… …
…
…
Liver
…
CONSTRUCT { ?sub ?prop ?obj . }FROM NAMED <recursive_liver> [
CONSTRUCT { fma:Liver fma:part ?obj . } FROM <http://.../fma_1_4_0> WHERE { fma:Liver fma:part ?obj . }
UNION
CONSTRUCT {?c fma:part ?d} FROM <http://.../fma_1_4_0> FROM NAMED <recursive_liver> WHERE { GRAPH <recursive_liver> { ?a ?b ?c . } . ?c fma:part ?d . }]WHERE { GRAPH <recursive_liver> { ?sub ?prop ?obj } }
// Base: Direct parts of liver
// Recursive: Transitively, parts of liver
Skolem Functions: Combining data from two ontologies
• Ontology of Physics for Biology (OPB)
• FMA
FMA
OPB
AorticBlood
Pressure
FluidPressure
Skolem Functions: Combining data from two ontologies
• OPB• FMA• Combine
OPB:FluidPressure, FMA:AorticBlood
FMA
OPB
AorticBlood
Pressure
FluidPressure
AorticBloodPressure
Skolem Functions: Combining data from two ontologies
• OPB• FMA• Combine
OPB:FluidPressure, FMA:AorticBlood
Skolem Functions generate new nodes from queried info
FMA
OPB
AorticBlood
Pressure
FluidPressure
AorticBloodPressure
[[ <skolem_function_url>(arg1, ...) ]]
Skolem Functions: Combining data from two ontologies
FMA
OPB
AorticBlood
Pressure
FluidPressure
AorticBloodPressure
PREFIX fma: <http://.../fma_1_4_0#> PREFIX opb: <http://.../opb#> PREFIX new: <http://.../new_ontology#>
CONSTRUCT { [[new:fma_phys(fma:Aortic_Blood,opb:FluidPressure)]] ?p_prop ?p_obj .}FROM NAMED <http://.../fma_1_4_0>FROM NAMED <http://.../opb>WHERE { GRAPH <http://.../fma_1_4_0> { fma:Aortic_Blood ?ab_prop ?ab_obj .} GRAPH <http://.../opb> { opb:FluidPressure ?p_prop ?p_obj .}}
Outline
• Motivation / Problem Statement• SPARQL • Our Solution: vSPARQL
– Subqueries– Recursive Queries– Skolem Functions
• Radiology Example• Related Work• Conclusions
Example: Radiology Ontology from FMAPREFIX dl: <http://.../fmaOwlDlComponent_1_4_0#> PREFIX new: <http://sig.biostr.washington.edu/radiologist/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> CONSTRUCT { [[new:fmaNode(?d)]] dl:part [[new:fmaNode(?f)]] . [[new:fmaNode(?g)]] rdfs:subClassOf [[new:fmaNode(dl:Organ)]] . [[new:fmaNode(?i)]] rdfs:subClassOf [[new:fmaNode(?j)]] . } FROM NAMED <extracted_ontology> [ CONSTRUCT { ?t ?u ?v . } FROM NAMED <liver_with_superclasses> [ CONSTRUCT { ?m ?n ?o . } FROM NAMED <liver_with_classes> [ CONSTRUCT { ?j dl:part ?k . ?k rdfs:subClassOf ?l . } FROM NAMED <subclass> [ CONSTRUCT {?x rdfs:subClassOf dl:Organ . dl:Organ rdfs:subClassOf ?w . ?y rdfs:subClassOf dl:Cardinal_organ_part . dl:Cardinal_organ_part rdfs:subClassOf ?z . } FROM <http://.../fmaOwlFullComponent_1_4_0> WHERE { { ?x rdfs:subClassOf dl:Organ . dl:Organ rdfs:subClassOf ?w . } UNION { ?y rdfs:subClassOf dl:Cardinal_organ_part . dl:Cardinal_organ_part rdfs:subClassOf ?z . } } UNION CONSTRUCT {?sub ?b ?a .} FROM NAMED <subclass> FROM NAMED <http://.../fmaOwlFullComponent_1_4_0> WHERE { GRAPH <subclass> { ?a ?b ?c . } . GRAPH <http://.../fmaOwlFullComponent_1_4_0> { ?sub ?b ?a . } . } ]
FROM NAMED <liver> [ CONSTRUCT {dl:Liver dl:part ?obj . ?prev dl:part dl:Liver . } FROM <http://.../fmaOwlFullComponent_1_4_0> WHERE {dl:Liver dl:part ?obj . ?prev dl:part dl:Liver . } UNION CONSTRUCT {?c dl:part ?d} FROM NAMED <liver> FROM NAMED <http://.../fmaOwlFullComponent_1_4_0> WHERE { GRAPH <liver> { ?a ?b ?c . } . GRAPH <http://.../fmaOwlFullComponent_1_4_0> { ?c dl:part ?d . } . } ] FROM <http://.../fmaOwlFullComponent_1_4_0> WHERE { GRAPH <liver> { ?j dl:part ?k . } . GRAPH <subclass> { ?k rdfs:subClassOf ?l .} . } ] WHERE { GRAPH <liver_with_classes> { ?m ?n ?o . } } UNION CONSTRUCT {?r rdfs:subClassOf ?s} FROM NAMED <liver_with_superclasses> FROM NAMED <http://.../fmaOwlFullComponent_1_4_0> WHERE { GRAPH <liver_with_superclasses> { ?p rdfs:subClassOf ?r . } . GRAPH <http://.../fmaOwlFullComponent_1_4_0> { ?r rdfs:subClassOf ?s . } . } ] WHERE { GRAPH <liver_with_superclasses> { ?t ?u ?v . } . } ] WHERE { GRAPH <extracted_ontology> { { ?d dl:part ?f . } UNION { ?g rdfs:subClassOf ?h . FILTER (?h = dl:Cavitated_organ || ?h = dl:Solid_organ) . } UNION { ?i rdfs:subClassOf ?j . FILTER (?h != dl:Cavitated_organ && ?h != dl:Solid_organ) . } } }
E
D
C
B
A
• All of the visible parts of the liver
Radiology Ontology Results<http://.../fma_1_4_0#Right_portal_vein> <http://.../fma_1_4_0#part> <http://.../fma_1_4_0#Anterior_branch_of_right_portal_vein> ; <http://.../fma_1_4_0#part> <http://.../fma_1_4_0#Caudate_lobe_branch_of_right_portal_vein> ; <http://.../fma_1_4_0#part> <http://.../fma_1_4_0#Trunk_of_right_portal_vein> ; <http://.../fma_1_4_0#part> <http://.../fma_1_4_0#Posterior_branch_of_right_portal_vein> .
<http://.../fma_1_4_0#Segment_of_liver> <http://.../fma_1_4_0#part> <http://.../fma_1_4_0#Subsegment_of_liver> .
<http://.../fma_1_4_0#Parenchymatous_organ> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://.../fma_1_4_0#Organ> .
<http://.../fma_1_4_0#Caudate_lobe_of_liver> <http://.../fma_1_4_0#part> <http://.../fma_1_4_0#Papillary_process_of_caudate_lobe_of_liver> ; <http://.../fma_1_4_0#part> <http://.../fma_1_4_0#Left_segment_of_caudate_lobe_of_liver> ; <http://.../fma_1_4_0#part> <http://.../fma_1_4_0#Caudate_process_of_caudate_lobe_of_liver> ;
Radiology Ontology Results
• FMA ontology size– 1.7 million RDF triples– 178MB text file
• Radiology Ontology size– 164 RDF triples– 38KB text file
Related WorkSubqueries• Schenk S. A SPARQL Semantics Based on Datalog. KI 2007:
Advances in Artificial Intelligence. Regular Expressions• Detwiler LT, Suciu D, Brinkley J. Regular paths in SPARQL:
Querying the NCI Thesaurus. AMIA’08.• Kochut K, Janik M. SPARQLer: Extended SPARQL for
Semantic Association Discovery. ESWC 2007.• Alkhateeb F, Baget JF, Euzenat J. RDF with Regular
Expressions. http://hal.inria.fr/inria-00144922/en.Views• Noy NF, Musen MA. Specifying Ontology Views by Traversal.
ISWC 2004.• Magkanaraki A, et al. Viewing the Semantic Web through RVL
lenses. ISWC 2003.• Miklos Z, et al. Querying Semantic Web Resources using
TRIPLE Views. ISWC 2003.
WrapUp
• Reference ontologies can be used to link together specialized ontologies
• Views can make large reference ontology datasets manageable
• vSPARQL extends SPARQL• Subqueries• Recursive queries• Skolem Functions
• vSPARQL can be used to generate application ontologies using views over reference ontologies