Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
188 views18 pages

SQWRL: Querying with OWL Rules

SQWRL is a query language for OWL ontologies that is based on SWRL rules. It allows users to write queries over OWL individuals, properties and classes. SQWRL extends SWRL with additional built-in predicates for selecting, ordering, counting, aggregating and making sets of query results. This provides a more expressive and powerful means of querying ontologies compared to the base capabilities of SWRL rules alone. The semantics of SQWRL are based on SWRL and OWL, and SQWRL queries can leverage existing OWL reasoning infrastructure.

Uploaded by

dounia87
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
188 views18 pages

SQWRL: Querying with OWL Rules

SQWRL is a query language for OWL ontologies that is based on SWRL rules. It allows users to write queries over OWL individuals, properties and classes. SQWRL extends SWRL with additional built-in predicates for selecting, ordering, counting, aggregating and making sets of query results. This provides a more expressive and powerful means of querying ontologies compared to the base capabilities of SWRL rules alone. The semantics of SQWRL are based on SWRL and OWL, and SQWRL queries can leverage existing OWL reasoning infrastructure.

Uploaded by

dounia87
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 18

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
• With built-ins, language compliant query
extensions are possible
• Hence: SQWRL (Semantic Query-Enhanced
Web Rule Language; pronounced squirrel)
Example SWRL Rule: is adult?
Classify all persons in an ontology with an age greater than 17 as adults.

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


→ Adult(?p)
Example SQWRL Query
List all persons in an ontology with an age greater than 17.

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


→ sqwrl:select(?p, ?age)
Example SQWRL Query:
Ordering Results
List all persons in an ontology with an age greater than 17 and order
the result by age in ascending order.

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


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

Also: orderByDecending
Example SQWRL Query:
Counting Results
Count all cars in ontology.

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

Important: no way of asserting count in ontology!


Example SQWRL Query:
Aggregating Results
Average age of persons in ontology.

Person(?p) ^ hasAge(?p, ?age) →


sqwrl:avg(?age)

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


Example SQWRL Query:
Arbitrary OWL Class Expressions
Individuals with cardinality restrictions.

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

SQWRL can act as a DL query language


Semantics (Briefly)

• Any SWRL body is valid query


specification
• Does not violate OWA
• Does assume UNA
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
SQWRL: Basic Set Operator

Count all persons in ontology.

Person(?p) °
sqwrl:makeSet(?s, ?p) ^ sqwrl:size(?size, ?s)
→ sqwrl:select(?size)

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


SQWRL: Negation as Failure

List the number of non beta blocker drugs in ontology.

Drug(?d) ^ BetaBlocker(?b) °
sqwrl:makeSet(?s1, ?d) ^ sqwrl:makeSet(?s2, ?b) ^
sqwrl:difference(?s3, ?s1, ?s2) ^ sqwrl:size(?size, ?s3)
→ sqwrl:select(?size)
SQWRL: Disjunction

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

AntiHypertensive(?d1) ^ BetaBlocker(?d2) °
sqwrl:makeSet(?s1, ?d1) ^ sqwrl:makeSet(?s2, ?d2) ^
sqwrl:union(?s3, ?s1, ?s2) ^ sqwrl:size(?size, ?s3)
→ sqwrl:select(?size)
SQWRL: Complex Counting

List all patients on more than two drugs.

Patient(?p) ^ hasDrug(?p,?d) °
sqwrl:makeSet(?s, ?d) ^ sqwrl:groupBy(?s, ?p) ^
sqwrl:size(?n, ?s) ^ swrlb:greaterThan(?n, 2)
→ sqwrl:select(?p)
SQWRL: Complex Aggregation

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

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)
SQWRL: NAF, Disjunction,
Complex Counting and Aggregation
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.
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)
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!
Summary

• Core language features available for 1+


years in Protege-OWL
• Set operators will be available in month or so
• Plans for Protege4 port

You might also like