18
SQWRL: a Query Language for OWL Martin O’Connor, Amar Das Stanford Center for Biomedical Informatics Research, Stanford University

SQWRL: a Query Language for OWL

  • Upload
    jadon

  • View
    142

  • Download
    3

Embed Size (px)

DESCRIPTION

SQWRL: a Query Language for OWL. Martin O’Connor, Amar Das Stanford Center for Biomedical Informatics Research, Stanford University. SWRL and Querying. SWRL is a rule language, not a query language However, a rule antecedent can be viewed as a pattern matching specification, i.e., a query - PowerPoint PPT Presentation

Citation preview

Page 1: SQWRL: a Query Language for OWL

SQWRL: a Query Language for OWL

Martin O’Connor, Amar DasStanford Center for Biomedical Informatics Research,

Stanford University

Page 2: SQWRL: a Query Language for OWL

SWRL and Querying

• SWRL is a rule language, not a query language

• However, a rule antecedent can be viewed as a pattern matching specification, i.e., a query

• With built-ins, language compliant query extensions are possible

• Hence: SQWRL (Semantic Query-Enhanced Web Rule Language; pronounced squirrel)

Page 3: SQWRL: a Query Language for OWL

Example SWRL Rule: is adult?

Person(?p) ^ hasAge(?p,?age) ^ swrlb:greaterThan(?age,17)

→ Adult(?p)

Classify all persons in an ontology with an age greater than 17 as adults.

Page 4: SQWRL: a Query Language for OWL

Example SQWRL Query

Person(?p) ^ hasAge(?p,?age) ^ swrlb:greaterThan(?age,17)

→ sqwrl:select(?p, ?age)

List all persons in an ontology with an age greater than 17.

Page 5: SQWRL: a Query Language for OWL

Person(?p) ^ hasAge(?p,?age) ^ swrlb:greaterThan(?age,17)

→ sqwrl:select(?p, ?age) ^ sqwrl:orderBy(?age)

List all persons in an ontology with an age greater than 17 and order the result by age in ascending order.

Example SQWRL Query:Ordering Results

Also: orderByDecending

Page 6: SQWRL: a Query Language for OWL

Important: no way of asserting count in ontology!

Example SQWRL Query:Counting Results

Car(?c) → sqwrl:count(?c)

Count all cars in ontology.

Page 7: SQWRL: a Query Language for OWL

Person(?p) ^ hasAge(?p, ?age) → sqwrl:avg(?age)

Also: sqwrl:max, sqwrl:min, sqwrl:sum

Example SQWRL Query:Aggregating Results

Average age of persons in ontology.

Page 8: SQWRL: a Query Language for OWL

Example SQWRL Query: Arbitrary OWL Class Expressions

(hasChild >= 1)(?x) → sqwrl:select(?x)

SQWRL can act as a DL query language

Individuals with cardinality restrictions.

Page 9: SQWRL: a Query Language for OWL

Semantics (Briefly)

• Any SWRL body is valid query specification

• Does not violate OWA

• Does assume UNA

Page 10: SQWRL: a Query Language for OWL

Useful but Relatively Inexpressive

• Useful but relatively inexpressive. Needs:– Negation As Failure– Disjunction– Complex Counting– Complex Aggregation

• We have recently added sets to the language to tackle these problems

Page 11: SQWRL: a Query Language for OWL

SQWRL: Basic Set Operator

Person(?p) °

sqwrl:makeSet(?s, ?p) ^ sqwrl:size(?size, ?s)

→ sqwrl:select(?size)

Count all persons in ontology.

Ser operators: sqwrl:isEmpty, sqwrl:union, sqwrl:difference

Page 12: SQWRL: a Query Language for OWL

SQWRL: Negation as Failure

Drug(?d) ^ BetaBlocker(?b) °

sqwrl:makeSet(?s1, ?d) ^ sqwrl:makeSet(?s2, ?b) ^

sqwrl:difference(?s3, ?s1, ?s2) ^ sqwrl:size(?size, ?s3)

→ sqwrl:select(?size)

List the number of non beta blocker drugs in ontology.

Page 13: SQWRL: a Query Language for OWL

SQWRL: Disjunction

AntiHypertensive(?d1) ^ BetaBlocker(?d2) °

sqwrl:makeSet(?s1, ?d1) ^ sqwrl:makeSet(?s2, ?d2) ^

sqwrl:union(?s3, ?s1, ?s2) ^ sqwrl:size(?size, ?s3)

→ sqwrl:select(?size)

List the number of beta blocker or anti-hypertensive drugs in ontology.

Page 14: SQWRL: a Query Language for OWL

SQWRL: Complex Counting

Patient(?p) ^ hasDrug(?p,?d) °

sqwrl:makeSet(?s, ?d) ^ sqwrl:groupBy(?s, ?p) ^

sqwrl:size(?n, ?s) ^ swrlb:greaterThan(?n, 2)

→ sqwrl:select(?p)

List all patients on more than two drugs.

Page 15: SQWRL: a Query Language for OWL

SQWRL: Complex Aggregation

Patient(?p) ^ hasDrug(?p,?d) ^ hasDose(?d, ?dose) °

sqwrl:makeSet(?s, ?dose) ^ sqwrl:groupBy(?s, ?p, ?d) ^

sqwrl:avg(?avg, ?s)

→ sqwrl:select(?p, ?d, ?avg)

List the average dose of each drug taken by each patient.

Page 16: SQWRL: a Query Language for OWL

SQWRL: NAF, Disjunction, Complex Counting and Aggregation

Patient(?p) ^ hasDrug(?p,?d) ^ hasDose(?d, ?dose) ^

BetaBlocker(?d1) ^ AntiHypertensive(?d2) °

sqwrl:makeSet(?s1, ?dose) ^ sqwrl:groupBy(?s1, ?p, ?d) ^

sqwrl:makeSet(?s2, ?drug) ^ sqwrl:groupBy(?s2, ?p) ^

sqwrl:makeSet(?s3, ?d1, ?d2) ^

sqwrl:avg(?avg, ?s1) ^

sqwrl:size(?n, ?s2) ^ swrlb:greaterThan(?n, 2) ^

sqwrl:intersection(?s4, ?s2, ?s3) ^ sqwrl:isEmpty(?s4)

→ sqwrl:select(?p, ?d, ?avg)

List the average dose of patients that are on more than two drugs and where none of those drugs is a beta blocker or anti-hypertensive.

Page 17: SQWRL: a Query Language for OWL

Advantages of SWRL-Based Query Language

• No need to invent a new semantics• Standard(ish) presentation syntax (° is syntactic sugar)• Standard serialization • Can use existing reasoning infrastructure• Can use existing editors• On-the-fly query checking in editors• For SWRL users, easy to learn• Extensible with built-ins (TBox, RDF,XML…)• Useful for debugging SWRL rules• Queries can interoperate with rules• Not SPARQL!

Page 18: SQWRL: a Query Language for OWL

Summary

• Core language features available for 1+ years in Protege-OWL

• Set operators will be available in month or so

• Plans for Protege4 port