This page is intended as suplemental material for the JBI submission "vSPARQL: A View Definition Language for the Semantic Web". Included are the URL of a vSPARQL demo interface, for query testing, a brief descriptions of each use case in the paper, and a runable query demonstrating each case. You may cut and paste queries found here into the vSPARQL interface below.
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl:<http://www.w3.org/2002/07/owl#>
PREFIX gleen:<java:edu.washington.sig.gleen.>
PREFIX reactome:<http://purl.org/science/ontology/reactome/>
CONSTRUCT
{
?a ?b ?c.
?a rdfs:label ?a_label.
?c rdfs:label ?c_label.
}
FROM <http://purl.org/science/ontology/reactome>
FROM NAMED <mitotic_cell_cycle>
[
CONSTRUCT {?b reactome:componentOf ?a}
FROM <http://purl.org/science/ontology/reactome>
WHERE
{
?a rdfs:label "mitotic cell cycle".
?b reactome:componentOf ?a .
}
UNION
CONSTRUCT {?c reactome:componentOf ?b}
FROM <http://purl.org/science/ontology/reactome>
FROM NAMED <mitotic_cell_cycle>
WHERE
{
GRAPH <mitotic_cell_cycle> {?b reactome:componentOf ?a}.
?c reactome:componentOf ?b .
}
]
WHERE
{
GRAPH <mitotic_cell_cycle> {?a ?b ?c}.
?a rdfs:label ?a_label.
?c rdfs:label ?c_label.
}
# Get all of the spatial relationships associated with the organs in
# the gastrointestinal tract.
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl:<http://www.w3.org/2002/07/owl#>
PREFIX gleen:<java:edu.washington.sig.gleen.>
PREFIX temp:<http://sig.biostr.washington.edu/temp#>
PREFIX fma:<http://sig.biostr.washington.edu/fma3.0#>
CONSTRUCT
{
?organ_part ?spatial_rel ?spatial_value .
?fmlive ?fmlive_p ?fmlive_o .
?fmlive2 ?fmlive_p2 ?fmlive_o2
}
FROM NAMED <gi_parts> [
CONSTRUCT { temp:set temp:member ?parts }
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE {
?parts gleen:OnPath ("([fma:regional_part_of]|[fma:constitutional_part_of]|[fma:systemic_part_of])*" fma:Gastrointestinal_tract) .
}
]
FROM NAMED <organ_parts> [
CONSTRUCT { temp:set temp:member ?gi_part }
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE {
?gi_part gleen:OnPath ("([rdfs:subClassOf])*" fma:Organ) .
}
]
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE {
GRAPH <gi_parts> { ?a ?b ?organ_part } .
GRAPH <organ_parts> { ?c ?d ?organ_part } .
?organ_part ?spatial_rel ?spatial_value .
FILTER ( (?spatial_rel = fma:orientation) ||
(?spatial_rel = fma:continuous_with) ||
(?spatial_rel = fma:continuous_with_distally) ||
(?spatial_rel = fma:continuous_with_proximally) ||
(?spatial_rel = fma:attributed_continuous_with) ||
(?spatial_rel = fma:contained_in) ) .
OPTIONAL { ?organ_part fma:orientation ?fmlive .
?fmlive ?fmlive_p ?fmlive_o . }
OPTIONAL { ?organ_part fma:attributed_continuous_with ?fmlive2 .
?fmlive2 ?fmlive_p2 ?fmlive_o2 . }
}
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl:<http://www.w3.org/2002/07/owl#>
PREFIX gleen:<java:edu.washington.sig.gleen.>
PREFIX temp:<http://sig.biostr.washington.edu/temp#>
PREFIX fma:<http://sig.biostr.washington.edu/fma3.0#>
####################################################################################
# Generate the NeuroFMA
####################################################################################
CONSTRUCT { ?x ?y ?z }
FROM <http://sig.biostr.washington.edu/fma3.0>
# all parts recursively of neuraxis
FROM NAMEDV <top_pre_neuraxis_parts> [
CONSTRUCT {temp:set temp:member ?part}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE {fma:Neuraxis gleen:OnPath ("([fma:regional_part]|[fma:constitutional_part])*" ?part)}
]
FROM NAMEDV <pre_neuraxis_parts> [
CONSTRUCT {temp:set temp:member ?part . temp:set temp:member ?c. }
FROM NAMEDV <top_pre_neuraxis_parts>
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { GRAPH <top_pre_neuraxis_parts> { ?a ?b ?part } .
OPTIONAL { ?part rdf:type ?c } }
]
# get all inter-part attributed relationship instances (and rels)
FROM NAMEDV <neuraxis_attr_rels_in> [
CONSTRUCT {?p ?rel ?q}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { GRAPH <pre_neuraxis_parts> {temp:set temp:member ?p.}.
?p ?rel ?q.
OPTIONAL {?q rdfs:subClassOf ?super}. FILTER(!bound(?super)).
FILTER((?rel = fma:attributed_part) || (?rel = fma:related_part)). }
]
# get all inter-part attributed relationship instances (and rels)
FROM NAMEDV <neuraxis_attr_rels_out> [
CONSTRUCT {?q ?rel2 ?p2.}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { GRAPH <pre_neuraxis_parts> {temp:set temp:member ?p2.}.
?q ?rel2 ?p2.
OPTIONAL {?q rdfs:subClassOf ?super}. FILTER(!bound(?super)).
FILTER((?rel2 = fma:attributed_part) || (?rel2 = fma:related_part)). }
]
# get all inter-part attributed relationship instances (and rels)
FROM NAMEDV <neuraxis_attr_rels> [
CONSTRUCT {temp:set temp:member ?q.
temp:rel_set temp:member ?rel.
temp:rel_set temp:member ?rel2.}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { GRAPH <neuraxis_attr_rels_in> {?p ?rel ?q.}.
GRAPH <neuraxis_attr_rels_out> {?q ?rel2 ?p2.}. }
]
# get all inter-part attributed instances types
FROM NAMEDV <neuraxis_parts> [
CONSTRUCT {temp:set temp:member ?p.
temp:set temp:member fma:Concept_name.
temp:set temp:member fma:Query_Atlas_term.
temp:set temp:member fma:Neurolex_term.
temp:set temp:member fma:AAL_term. }
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { { GRAPH <pre_neuraxis_parts> {temp:set temp:member ?p}
} UNION {
GRAPH <neuraxis_attr_rels> {temp:set temp:member ?q.}
?q rdf:type ?p.
} }
]
# build graph containing all properties of all classes identified so far
FROM NAMEDV <neuraxis_parts_graph> [
CONSTRUCT {?p ?rel ?obj}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE {GRAPH <neuraxis_parts> {temp:set temp:member ?p}. ?p ?rel ?obj .}
]
# get all properties which either connect two of the parts above or connects a part to a literal
FROM NAMEDV <neuraxis_parts_props> [
CONSTRUCT { temp:set temp:member ?b.
temp:set temp:member ?e.
temp:set temp:member ?rel.
temp:set temp:member fma:Preferred_name.
temp:set temp:member fma:Synonym.
temp:set temp:member fma:Non-English_equivalent.
temp:set temp:member fma:Query_Atlas.
temp:set temp:member fma:Neurolex.
temp:set temp:member fma:AAL. }
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { { GRAPH <neuraxis_parts_graph> {?a ?b ?c}. FILTER isLiteral(?c)
} UNION {
GRAPH <neuraxis_parts_graph> {?d ?e ?f}.
GRAPH <neuraxis_parts> {temp:set temp:member ?f}.
} UNION {
GRAPH <neuraxis_attr_rels> {temp:rel_set temp:member ?rel.}
} }
]
# Our view only includes a small number of Non-physical_anatomical_entity_template
# (and subClass) instances. Build up a list of things to exclude.
FROM NAMEDV <stoppingPoint> [
CONSTRUCT { temp:set temp:member ?a .}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { ?a gleen:OnPath ("[rdfs:subClassOf]*" fma:Non-physical_anatomical_entity_template) . }
]
FROM NAMEDV <exclusionTypes> [
CONSTRUCT { temp:set temp:member ?b }
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { GRAPH <stoppingPoint> { ?ts ?tm ?a . }
?b rdf:type ?a .
FILTER ( ?b != fma:AAL_term &&
?b != fma:Concept_name &&
?b != fma:Neuro_term &&
?b != fma:Neurolex_term &&
?b != fma:Non-physical_anatomical_entity_template &&
?b != fma:Organ_part_of_relationship_value &&
?b != fma:Organ_subdivision_part_of_relationship_value &&
?b != fma:Part_of_relationship_value &&
?b != fma:Query_Atlas_term &&
?b != fma:Structural_relationship_value ) . }
]
# determine superclasses, superproperties, and types
# add nodes connected to blank nodes and recurse on these
FROM NAMEDV <pre_neuraxis_parts_ext> [
CONSTRUCT {temp:set temp:member ?c.}
FROM <http://sig.biostr.washington.edu/fma3.0>
FROM NAMEDV <exclusionTypes>
WHERE { { GRAPH <neuraxis_parts> {temp:set temp:member ?c}.
OPTIONAL {GRAPH <exclusionTypes> {?ts temp:member ?c}.}. FILTER (!bound(?ts)) .
} UNION {
GRAPH <neuraxis_parts_props> {temp:set temp:member ?c}.
OPTIONAL {GRAPH <exclusionTypes> {?ts temp:member ?c}.}. FILTER (!bound(?ts)) .
} }
UNION
CONSTRUCT {temp:set temp:member ?v.}
FROM <http://sig.biostr.washington.edu/fma3.0>
FROM NAMEDV <exclusionTypes>
FROM NAMEDV <pre_neuraxis_parts_ext>
WHERE { GRAPH <pre_neuraxis_parts_ext> {temp:set temp:member ?c.}
{?c rdf:type ?v.} UNION {?c rdfs:subClassOf ?v} UNION {?c rdfs:subPropertyOf ?v} UNION
{?c ?rel ?v. FILTER (isBlank(?c) && !isLiteral(?v)).}.
OPTIONAL {GRAPH <exclusionTypes> {?ts temp:member ?v}.} . FILTER (!bound(?ts)) . }
]
# add in attributed instances
FROM NAMEDV <neuraxis_parts_ext> [
CONSTRUCT {temp:set temp:member ?p. temp:set temp:member ?q. temp:set temp:member ?cn.}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { { GRAPH <pre_neuraxis_parts_ext> {temp:set temp:member ?p}.
OPTIONAL { {?p fma:Preferred_name ?cn.}UNION
{?p fma:Synonym ?cn.}UNION
{?p fma:Non-English_equivalent ?cn.}UNION
{?p fma:Query_Atlas ?cn.}UNION
{?p fma:Neurolex ?cn.}UNION
{?p fma:AAL ?cn.} }
} UNION {
GRAPH <neuraxis_attr_rels> {temp:set temp:member ?q}.
} }
]
# build graph containing all properties of all classes identified so far
FROM NAMEDV <neuraxis_parts_ext_graph> [
CONSTRUCT {?p ?rel ?obj}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE {GRAPH <neuraxis_parts_ext> {temp:set temp:member ?p}. ?p ?rel ?obj .}
]
# build graph containing only properties connecting two classes in ext or a class in ext to a literal
FROM NAMEDV <neuraxis_view_wo_props> [
CONSTRUCT {?a ?b ?c. ?d ?e ?f.}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { { GRAPH <neuraxis_parts_ext_graph> {?a ?b ?c}. FILTER isLiteral(?c)
} UNION {
GRAPH <neuraxis_parts_ext_graph> {?d ?e ?f}.
GRAPH <neuraxis_parts_ext> {temp:set temp:member ?f}.
} }
]
# determine superclasses, superproperties, and types
# add nodes connected to blank nodes and recurse on these
FROM NAMEDV <pre_neuraxis_parts_props_ext> [
CONSTRUCT {temp:set temp:member ?c.}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { { # we need to define all of the properties that are going to be held in the result graph
GRAPH <neuraxis_view_wo_props> { ?uns ?c ?uno }
} UNION { # see if we had any restrictions on properties; if we did, we need to define those properties fully
GRAPH <pre_neuraxis_parts_ext> {temp:set temp:member ?c}.
?r rdf:type owl:Restriction . ?r owl:onProperty ?c .
} UNION {
GRAPH <neuraxis_parts_props> {temp:set temp:member ?c}.
} }
UNION
CONSTRUCT {temp:set temp:member ?v.}
FROM <http://sig.biostr.washington.edu/fma3.0>
FROM NAMEDV <pre_neuraxis_parts_props_ext>
WHERE { GRAPH <pre_neuraxis_parts_props_ext> {temp:set temp:member ?c.}
{?c rdf:type ?v.} UNION {?c rdfs:subClassOf ?v} UNION {?c rdfs:subPropertyOf ?v} UNION
{?c ?rel ?v. FILTER (isBlank(?c) && !isLiteral(?v)).}. }
]
FROM NAMEDV <rec_pre_neuraxis_parts_props_ext> [
CONSTRUCT { ?c ?d ?e }
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { GRAPH <pre_neuraxis_parts_props_ext> { temp:set temp:member ?c } .
?c ?d ?e .
OPTIONAL {GRAPH <neuraxis_parts_ext> { ?ts temp:member ?e } } .
FILTER (isBlank(?e) || isLiteral(?e) || bound(?ts) ||
(!bound(?ts) && !regex(str(?e),"http://sig.biostr.washington.edu/fma3.0")) ). }
UNION
CONSTRUCT { ?e ?f ?g }
FROM <http://sig.biostr.washington.edu/fma3.0>
FROM NAMEDV <rec_pre_neuraxis_parts_props_ext>
WHERE { GRAPH <rec_pre_neuraxis_parts_props_ext> { ?c ?d ?e } .FILTER isBlank(?e) .
?e ?f ?g .
OPTIONAL {GRAPH <neuraxis_parts_ext> { ?ts temp:member ?g } .} .
FILTER (isBlank(?g) || isLiteral(?g) || bound(?ts) ||
(!bound(?ts) && !regex(str(?g),"http://sig.biostr.washington.edu/fma3.0")) ). }
]
FROM NAMEDV <neuraxis_view> [
CONSTRUCT {?a ?b ?c. ?d ?e ?f.
?ontS ?ontP owl:Ontology . ?ontS ?anyOntP ?anyOntO .
}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { { GRAPH <neuraxis_view_wo_props> {?a ?b ?c}.
} UNION {
GRAPH <rec_pre_neuraxis_parts_props_ext> {?d ?e ?f}.
} UNION {
?ontS ?ontP owl:Ontology .
OPTIONAL { ?ontS ?anyOntP ?anyOntO . }
} }
]
####################################################################################
# Fixup the generated NeuroFMA
####################################################################################
# Find all of the RDF list nodes that do not have an element;
# recursively follow the list until it either hits a node with
# an element or it hits rdf:nil. Track the node that points
# to this errant list and the entire set of reachable nodes
# before the errant list has an element.
FROM NAMEDV <identify_rdfListEmptyNodes> [
CONSTRUCT { ?a rdf:rest ?b . # to be changed
?b temp:rest ?c . # to be deleted
?a temp:starts ?b . # first node in rest list
?a temp:reaches ?c . # reachability list
}
FROM NAMEDV <neuraxis_view>
WHERE { GRAPH <neuraxis_view> {
?a rdf:first ?noop .
?a rdf:rest ?b .
OPTIONAL { ?b rdf:first ?a_bogus } . FILTER(!bound(?a_bogus)) .
?b rdf:rest ?c .
} }
UNION
CONSTRUCT { ?a ?pred ?b . # to be changed
?b temp:rest ?c . # to be deleted
?a temp:starts ?b . # first node in rest list
?a temp:reaches ?c . # reachability list
}
FROM NAMEDV <neuraxis_view>
WHERE { GRAPH <neuraxis_view> {
?a ?pred ?b . FILTER(?pred != rdf:rest) .
?b rdf:rest ?c .
OPTIONAL { ?b rdf:first ?b_bogus } . FILTER(!bound(?b_bogus)) .
} }
UNION
CONSTRUCT { ?c temp:rest ?d . # to be deleted
?a temp:reaches ?d . # reachability list
}
FROM NAMEDV <identify_rdfListEmptyNodes>
FROM NAMEDV <neuraxis_view>
WHERE { GRAPH <identify_rdfListEmptyNodes> { ?a temp:reaches ?c . } .
GRAPH <neuraxis_view> {
OPTIONAL { ?c rdf:first ?noop } . FILTER(!bound(?noop)) .
?c rdf:rest ?d .
} }
]
# Eliminate all of the edges corresponding to RDF lists elements with no value
FROM NAMEDV <remove_rdfListEmptyNodes> [
CONSTRUCT { ?x ?y ?z . }
FROM NAMEDV <identify_rdfListEmptyNodes>
FROM NAMEDV <neuraxis_view>
WHERE { GRAPH <neuraxis_view> { ?x ?y ?z . }
OPTIONAL { GRAPH <identify_rdfListEmptyNodes> { ?x ?ynot ?z } .
FILTER(?ynot=temp:rest && ?y=rdf:rest) } .
FILTER(!bound(?ynot)) . }
]
# Remove all of the edges to the start of RDF lists containing empty nodes;
# we replace these edges with new edges in <add_startEdgeRdfListEmptyNodes>
FROM NAMEDV <remove_startEdgeRdfListEmptyNodes> [
CONSTRUCT { ?q ?r ?s .}
FROM NAMEDV <identify_rdfListEmptyNodes>
FROM NAMEDV <remove_rdfListEmptyNodes>
WHERE { GRAPH <remove_rdfListEmptyNodes> { ?q ?r ?s . } .
OPTIONAL { GRAPH <identify_rdfListEmptyNodes> { ?q ?r ?t } . FILTER(?s = ?t) } .
FILTER(!bound(?t)) . }
]
# Add in the new edges to the RDF lists containing empty nodes
FROM NAMEDV <add_startEdgeRdfListEmptyNodes> [
CONSTRUCT { ?t ?u ?v .
?a2 ?pred2 ?d2 .
}
FROM NAMEDV <identify_rdfListEmptyNodes>
FROM NAMEDV <remove_startEdgeRdfListEmptyNodes>
FROM NAMEDV <neuraxis_view>
WHERE { { GRAPH <remove_startEdgeRdfListEmptyNodes> { ?t ?u ?v }
} UNION {
GRAPH <identify_rdfListEmptyNodes> {
?a2 temp:starts ?b2 .
?a2 ?pred2 ?gone2 .
FILTER(!REGEX(str(?pred2),"http://sig.biostr.washington.edu/temp#") ) .
?a2 temp:reaches ?d2 . }
GRAPH <neuraxis_view> { OPTIONAL { ?d2 rdf:first ?nxt2 } . }
FILTER( (?d2 = rdf:nil) || bound(?nxt2) ) .
} }
]
########################################################################################
########################################################################################
# Find owl:unionOf statements that have RDF lists of 0 or 1 elements.
# Replace the owl:unionOf statements with either the element or rdf:nil.
FROM NAMEDV <removed_shortUnionOfs> [
CONSTRUCT { ?q ?r ?s .
?before1 ?pred1 ?c1 .
?before2 ?pred2 rdf:nil .
}
FROM NAMEDV <add_startEdgeRdfListEmptyNodes>
# Find owl:unionOfs that have 0 or 1 element.
FROM NAMEDV <identify_shortUnionOfs> [
CONSTRUCT {
?before1 ?pred1 ?a1 .
?a1 owl:unionOf ?b1 .
?a1 rdf:type owl:Class .
?b1 rdf:first ?c1 .
?b1 rdf:rest rdf:nil .
?before2 ?pred2 ?a2 .
?a2 owl:unionOf ?b2 .
?a2 rdf:type owl:Class .
?b2 rdf:rest rdf:nil .
}
FROM NAMEDV <add_startEdgeRdfListEmptyNodes>
WHERE { { GRAPH <add_startEdgeRdfListEmptyNodes> {
?before1 ?pred1 ?a1 .
?a1 owl:unionOf ?b1 .
?a1 rdf:type owl:Class .
?b1 rdf:first ?c1 .
?b1 rdf:rest rdf:nil .
}
} UNION {
GRAPH <add_startEdgeRdfListEmptyNodes> {
?before2 ?pred2 ?a2 .
?a2 owl:unionOf ?b2 .
?a2 rdf:type owl:Class .
OPTIONAL { ?b2 rdf:first ?c2 . } . FILTER(!bound(?c2)) .
?b2 rdf:rest rdf:nil .
}
} }
]
WHERE { { GRAPH <add_startEdgeRdfListEmptyNodes> { ?q ?r ?s . }
OPTIONAL { GRAPH <identify_shortUnionOfs> { ?q ?r ?t . FILTER(?s = ?t) } }
FILTER(!bound(?t)) .
} UNION {
GRAPH <identify_shortUnionOfs> {
?before1 ?pred1 ?a1 .
?a1 owl:unionOf ?b1 .
?b1 rdf:first ?c1 .
?b1 rdf:rest rdf:nil .
}
} UNION {
GRAPH <identify_shortUnionOfs> {
?before2 ?pred2 ?a2 .
?a2 owl:unionOf ?b2 .
OPTIONAL { ?b2 rdf:first ?c2 . } . FILTER(!bound(?c2)) . }
?b2 rdf:rest rdf:nil .
} }
]
########################################################################################
########################################################################################
# Remove all owl:allValuesFrom that have empty owl:unionOf lists.
FROM NAMEDV <remove_emptyAllValuesFrom> [
CONSTRUCT { ?a ?b ?c . }
FROM NAMEDV <removed_shortUnionOfs>
# identify allValuesFrom with empty RDF lists
FROM NAMEDV <identify_emptyAllValuesFrom> [
CONSTRUCT { ?x owl:allValuesFrom ?allB .
?allB rdf:type owl:Class .
?allB owl:unionOf rdf:nil .
}
FROM NAMEDV <removed_shortUnionOfs>
WHERE { GRAPH <removed_shortUnionOfs> {
?x owl:allValuesFrom ?allB .
?allB rdf:type owl:Class .
?allB owl:unionOf rdf:nil .
} }
]
WHERE { GRAPH <removed_shortUnionOfs> { ?a ?b ?c . }
OPTIONAL { GRAPH <identify_emptyAllValuesFrom> { ?a ?b ?cnot . FILTER(?c=?cnot) } } .
FILTER(!bound(?cnot)) . }
]
########################################################################################
########################################################################################
# remove the set of owl:Restrictions that do not have values associated with
# owl:onProperty restrictions
FROM NAMEDV <remove_emptyOwlOnPropertyRestrictions> [
CONSTRUCT { ?a ?b ?c . }
FROM NAMEDV <remove_emptyAllValuesFrom>
# identify the set of owl:Restrictions that do not have values associated with
# owl:onProperty restrictions
FROM NAMEDV <identify_emptyOwlOnPropertyRestrictions> [
CONSTRUCT { ?x rdfs:subClassOf ?owlrestrict .
?owlrestrict rdf:type owl:Restriction .
?owlrestrict owl:onProperty ?onprop .
}
FROM NAMEDV <remove_emptyAllValuesFrom>
WHERE {
GRAPH <remove_emptyAllValuesFrom> {
?x rdfs:subClassOf ?owlrestrict .
?owlrestrict rdf:type owl:Restriction .
?owlrestrict owl:onProperty ?onprop .
OPTIONAL { ?owlrestrict ?anyp ?anyo .
FILTER((?anyp!=rdf:type)&&(?anyp!=owl:onProperty)) . }
FILTER(!bound(?anyp)) .
} }
]
WHERE { GRAPH <remove_emptyAllValuesFrom> { ?a ?b ?c . }
OPTIONAL { GRAPH <identify_emptyOwlOnPropertyRestrictions> { ?a ?b ?cnot . FILTER(?c=?cnot) } } .
FILTER(!bound(?cnot)) . }
]
WHERE { GRAPH <remove_emptyOwlOnPropertyRestrictions> { ?x ?y ?z } }
PREFIX nci: <http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl:<http://www.w3.org/2002/07/owl#>
PREFIX gleen:<java:edu.washington.sig.gleen.>
PREFIX user:<http://localhost/userFriendlyNCIT#>
CONSTRUCT
{
?selected user:simplified_relationship [[user:relationship(?sel_label,?prop_label,?val_label)]] .
[[user:relationship(?sel_label,?prop_label,?val_label)]] user:label ?sel_label .
[[user:relationship(?sel_label,?prop_label,?val_label)]] user:propertyLabel ?prop_label .
[[user:relationship(?sel_label,?prop_label,?val_label)]] user:valueLabel ?val_label .
}
FROM <http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl>
WHERE
{
?selected rdfs:label "Gastric Mucosa-Associated Lymphoid Tissue Lymphoma" .
?selected gleen:OnPath ( "(([rdfs:subClassOf]|[owl:equivalentClass])/([owl:intersectionOf]/[rdf:rest]*/[rdf:first])?)+" ?restriction ) .
?restriction owl:onProperty ?prop .
?restriction gleen:OnPath ( "([owl:someValuesFrom]|[owl:allValuesFrom])" ?val ).
?selected rdfs:label ?sel_label.
?prop rdfs:label ?prop_label.
?val rdfs:label ?val_label
}
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl:<http://www.w3.org/2002/07/owl#>
PREFIX gleen:<java:edu.washington.sig.gleen.>
PREFIX set:<http://sig.biostr.washington.edu/set#>
PREFIX fma:<http://sig.biostr.washington.edu/fma3.0#>
PREFIX tst:<http://localhost/tst#>
PREFIX tmp:<http://localhost/tmp#>
PREFIX view:<http://localhost/view#>
CONSTRUCT { ?a ?b ?c }
FROM NAMED <bob> [
CONSTRUCT { ?a view:part ?c. }
FROM <http://sig.biostr.washington.edu/fma3.0>
FROM NAMED <input_list> [
CONSTRUCT
{
set:set1 set:member fma:Blood_in_left_ventricle.
set:set1 set:member fma:Mitral_valve.
set:set1 set:member fma:Wall_of_left_ventricle.
set:set1 set:member fma:Aortic_valve.
set:set1 set:member fma:Blood_in_left_atrium.
set:set1 set:member fma:Wall_of_left_atrium.
}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE{}
]
FROM NAMED <temp_hierarchy> [
CONSTRUCT
{
?z tst:edge ?x.
}
FROM NAMED <input_list>
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE
{
GRAPH <input_list> {set:set1 set:member ?a.}
(?a "(([fma:regional_part_of]|[fma:constitutional_part_of])|[fma:contained_in])+" ?b) gleen:Subgraph (?x ?y ?z).
}
]
FROM NAMED <restructure> [
CONSTRUCT { fma:Human_body tmp:inter ?b1 . }
FROM <temp_hierarchy>
WHERE { fma:Human_body tst:edge ?b1 }
UNION
CONSTRUCT {
?a1 view:part ?b1 .
?b1 tmp:inter ?c1 .
?b1 tmp:inter ?c2 .
?a1 tmp:inter ?d1 .
?a1 view:part ?b3 .
}
FROM <temp_hierarchy>
FROM NAMED <restructure>
WHERE {
{ GRAPH <restructure> { ?a1 tmp:inter ?b1 } .
?b1 tst:edge ?c1 .
?b1 tst:edge ?c2 .
FILTER(?c1 != ?c2)
} UNION {
GRAPH <restructure> { ?a1 tmp:inter ?b2 } .
?b2 tst:edge ?d1 .
OPTIONAL { ?b2 tst:edge ?d2 . FILTER(?d1 != ?d2) }
FILTER( !bound(?d2) )
} UNION {
GRAPH <restructure> { ?a1 tmp:inter ?b3 } .
OPTIONAL { ?b3 tst:edge ?e1 }
FILTER( !bound(?e1) ) .
}
}
]
WHERE { GRAPH <restructure> { ?a view:part ?c } }
]
WHERE { GRAPH <bob> { ?a ?b ?c } }
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl:<http://www.w3.org/2002/07/owl#>
PREFIX gleen:<java:edu.washington.sig.gleen.>
PREFIX fma:<http://sig.biostr.washington.edu/fma3.0#>
CONSTRUCT
{
?a ?b ?c .
}
FROM NAMED <heart_parts> [
CONSTRUCT {fma:Heart fma:part ?object}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE
{
{fma:Heart fma:regional_part ?object}
UNION
{fma:Heart fma:constitutional_part ?object}
}
UNION
CONSTRUCT {?a fma:part ?object. ?b fma:part ?object}
FROM <http://sig.biostr.washington.edu/fma3.0>
FROM NAMED <heart_parts>
WHERE
{
GRAPH <heart_parts> {?a fma:part ?b} .
{?b fma:regional_part ?object}
UNION
{?b fma:constitutional_part ?object}
}
]
FROM NAMED <heart_containments> [
CONSTRUCT {?a fma:contains ?c . ?b fma:contains ?c}
FROM <http://sig.biostr.washington.edu/fma3.0>
FROM NAMED <heart_parts>
WHERE
{
GRAPH <heart_parts> {?a fma:part ?b} .
?b fma:contains ?c .
}
]
WHERE
{
GRAPH <heart_containments> {?a ?b ?c}
}PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX fma:<http://sig.biostr.washington.edu/fma3.0#>
CONSTRUCT { ?d ?part_var ?f .
?g rdfs:subClassOf fma:Organ .
?i rdfs:subClassOf ?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 ?part_var ?k .
?k rdfs:subClassOf ?l .
fma:Liver rdfs:subClassOf ?lc .
}
FROM NAMED <subclass> [
CONSTRUCT {?x rdfs:subClassOf fma:Organ .
fma:Organ rdfs:subClassOf ?w .
?y rdfs:subClassOf fma:Cardinal_organ_part .
fma:Cardinal_organ_part rdfs:subClassOf ?z .
}
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { { ?x rdfs:subClassOf fma:Organ . FILTER(!isBlank(?x)) .
fma:Organ rdfs:subClassOf ?w . FILTER(!isBlank(?w)) .
}
UNION
{ ?y rdfs:subClassOf fma:Cardinal_organ_part . FILTER(!isBlank(?y)) .
fma:Cardinal_organ_part rdfs:subClassOf ?z . FILTER(!isBlank(?z)) .
}
}
UNION
CONSTRUCT {?sub ?b ?a .}
FROM NAMED <subclass>
FROM NAMED <http://sig.biostr.washington.edu/fma3.0>
WHERE { GRAPH <subclass> { ?a ?b ?c . } .
GRAPH <http://sig.biostr.washington.edu/fma3.0>
{ ?sub ?b ?a . FILTER(!isBlank(?sub)) } .
}
]
FROM NAMED <liver> [
CONSTRUCT {fma:Liver ?part_var ?obj . }
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { fma:Liver ?part_var ?obj .
FILTER((?part_var =fma:regional_part)||(?part_var=fma:constitutional_part)||(?part_var=fma:systemic_part)) .
}
UNION
CONSTRUCT {?c ?part_var ?d}
FROM NAMED <liver>
FROM NAMED <http://sig.biostr.washington.edu/fma3.0>
WHERE { GRAPH <liver> { ?a ?b ?c . } .
GRAPH <http://sig.biostr.washington.edu/fma3.0> { ?c ?part_var ?d . } .
FILTER((?part_var =fma:regional_part)||(?part_var=fma:constitutional_part)||(?part_var=fma:systemic_part)) .
}
]
FROM <http://sig.biostr.washington.edu/fma3.0>
WHERE { { GRAPH <liver> { ?j ?part_var ?k . } .
GRAPH <subclass> { ?k rdfs:subClassOf ?l . FILTER(!isBlank(?l)) .} .
} UNION {
fma:Liver rdfs:subClassOf ?lc . FILTER(!isBlank(?lc)) .
}
}
]
WHERE { GRAPH <liver_with_classes> { ?m ?n ?o . } }
UNION
CONSTRUCT {?r rdfs:subClassOf ?s}
FROM NAMED <liver_with_superclasses>
FROM NAMED <http://sig.biostr.washington.edu/fma3.0>
WHERE { GRAPH <liver_with_superclasses> { ?p rdfs:subClassOf ?r . } .
GRAPH <http://sig.biostr.washington.edu/fma3.0>
{ ?r rdfs:subClassOf ?s . FILTER(!isBlank(?s)) . } .
}
]
WHERE { GRAPH <liver_with_superclasses> { ?t ?u ?v . } . }
]
WHERE { GRAPH <extracted_ontology> {
{ ?d ?part_var ?f .
FILTER((?part_var =fma:regional_part)||(?part_var=fma:constitutional_part)||(?part_var=fma:systemic_part)) .}
UNION
{ ?g rdfs:subClassOf ?h .
FILTER ((?h = fma:Cavitated_organ || ?h = fma:Solid_organ)) .
}
UNION
{ ?i rdfs:subClassOf ?j .
FILTER ((?j != fma:Cavitated_organ && ?j != fma:Solid_organ) && (?i != fma:Cavitated_organ) && (?i != fma:Solid_organ)).
}
}
}PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX gleen:<java:edu.washington.sig.gleen.>
PREFIX fma:<http://sig.biostr.washington.edu/fma3.0#>
PREFIX opb:<http://sig.biostr.washington.edu/OPB-01.owl#>
PREFIX annot_view:<http://sig.biostr.washington.edu/annot_v1.0#>
CONSTRUCT {
[[annot_view:annotation(?pob,?property)]] rdf:type rdf:Statement.
[[annot_view:annotation(?pob,?property)]] rdf:subject ?pob .
[[annot_view:annotation(?pob,?property)]] rdf:predicate opb:hasProperty.
[[annot_view:annotation(?pob,?property)]] rdf:object ?property .
}
FROM NAMED <http://sig.biostr.washington.edu/fma3.0>
FROM NAMED <http://sig.biostr.washington.edu/~detwiler/OntViews/OPB/OPB-01.owl>
WHERE {
GRAPH <http://sig.biostr.washington.edu/fma3.0>
{ ?pob gleen:OnPath ("[rdfs:subClassOf]+" fma:Portion_of_blood). }
GRAPH <http://sig.biostr.washington.edu/~detwiler/OntViews/OPB/OPB-01.owl>
{ ?property gleen:OnPath ("[rdfs:subClassOf]+" opb:Kinetic_property) .
?property opb:Physical_domain_class opb:Fluid_domain .
}
}