0% found this document useful (0 votes)
3K views

SWRL Sample Rules

This document contains 53 SWRL/SQWRL sample rules that perform various operations on ontological data such as selecting, counting, averaging, grouping, ordering, etc. The rules query and manipulate data about people, their treatments, drugs, ages, etc. to calculate things like average ages, counts, maximum values, and more.

Uploaded by

semtech
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 DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3K views

SWRL Sample Rules

This document contains 53 SWRL/SQWRL sample rules that perform various operations on ontological data such as selecting, counting, averaging, grouping, ordering, etc. The rules query and manipulate data about people, their treatments, drugs, ages, etc. to calculate things like average ages, counts, maximum values, and more.

Uploaded by

semtech
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 DOC, PDF, TXT or read online on Scribd
You are on page 1/ 7

SWRL/SQWRL SAMPLE RULES

SemTech Team :: Bosco ITS, Yellagiri Hills


Date: 10-Feb-2010

1. Add
swrlb:add(4, 2, 2) → sqwrl:select("Yes - 2+2 equals 4!")

2. AllAdults
Adult(?p) → sqwrl:select(?p)

3. AllOWLClasses
tbox:isOWLClass(?c) → sqwrl:select(?c)

4. AllOWLObjectProperties
tbox:isOWLObjectProperty(?p) → sqwrl:select(?p)

5. AllPersonsAndTheirCars
Person(?p) ∧ hasCar(?p, ?c) → sqwrl:select(?p, ?c)

6. AllPersonsHavingCarsInAlphabeticalOrder
Person(?p) ^ hasName(, p, ?name) ^ hasCar(?p, ?c) -> sqwrl:select(?name) ^ sqwrl:count(?c)
^ sqwrl:orderBy(?name)

7. AlphabeticallyFirstName
Person(?p) ∧ hasName(?p, ?name) ∧ sqwrl:makeSet(?s, ?name) ∧ sqwrl:min(?first, ?s) →
sqwrl:select(?first)

8. AreaOfCircle
Circle(?c) ∧ hasRadius(?c, ?r) ∧ swrlm:eval(?area, " pi r r", ?r) → sqwrl:select(?area)

9. AverageAgeOfPersons
Person(?p) ∧ hasAge(?p, ?age) → sqwrl:avg(?age)

10. AverageBag
sqwrl:makeBag(?b, 1) ∧ sqwrl:makeBag(?b, 2) ∧ sqwrl:makeBag(?b, 3) ∧ sqwrl:avg(?size, ?
b) → sqwrl:select(?size)
11. AveragePersonAge
Person(?p) ∧ hasAge(?p, ?age) ∧ sqwrl:makeBag(?b, ?age) ∧ sqwrl:avg(?avg, ?b) →
sqwrl:select(?avg)

12. AverageSaleAmountPerProduct
Person(?p) ∧ hasSales(?p, ?sale) ∧ hasAmount(?sale, ?amt) ∧ hasProduct(?sale, ?product) ∧
sqwrl:makeSet(?s, ?amt) ∧ sqwrl:groupBy(?s, ?product) ∧ sqwrl:avg(?avg, ?s) →
sqwrl:select(?product, ?avg)

13. AverageSaleAmountPerState
Person(?p) ∧ hasSales(?p, ?sale) ∧ hasAmount(?sale, ?amt) ∧ hasState(?sale, ?state) ∧
sqwrl:makeBag(?b, ?amt) ∧ sqwrl:groupBy(?b, ?state) ∧ sqwrl:avg(?avg, ?b) → sqwrl:select(?
state, ?avg)

14. AverageSalesAmountPerPerson
Person(?p) ∧ hasSales(?p, ?sale) ∧ hasAmount(?sale, ?amt) ∧ sqwrl:makeBag(?b, ?amt) ∧
sqwrl:groupBy(?b, ?p) ∧ sqwrl:avg(?avg, ?b) → sqwrl:select(?p, ?avg)

15. AverageSet
sqwrl:makeSet(?s, 1) ∧ sqwrl:makeSet(?s, 3) ∧ sqwrl:makeSet(?s, 3) ∧ sqwrl:avg(?avg, ?s)
→ sqwrl:select(?avg)

16. CarManufactureDate
Car(?c) ∧ hasManufactureDate(?c, ?d) → sqwrl:select(?c, ?d)

17. ClassesWithLabels
tbox:isOWLClass(?c) ∧ rdfb:hasLabel(?c, ?l) → sqwrl:select(?c, ?l)

18. CountAllOWLClasses
tbox:isOWLClass(?c) → sqwrl:count(?c)

19. CountAllOWLClassesWithSets
tbox:isOWLClass(?c) ∧ sqwrl:makeSet(?s, ?c) ∧ sqwrl:size(?size, ?s) → sqwrl:count(?s)

20. DifferenceTest
sqwrl:makeSet(?s1, DDI) ∧ sqwrl:makeSet(?s2, AZT) ∧ sqwrl:difference(?d, ?s1, ?s2) ∧
sqwrl:size(?size, ?d) → sqwrl:select(?size)
21. IntersectionTest
sqwrl:makeSet(?s1, DDI) ∧ sqwrl:makeSet(?s1, AZT) ∧ sqwrl:makeSet(?s2, AZT) ∧
sqwrl:intersection(?i, ?s1, ?s2) ∧ sqwrl:size(?size, ?i) → sqwrl:select(?size)

22. Lowest3DDIDosesPerPatient
Person(?p) ∧ hasTreatment(?p, ?tr) ∧ hasDrug(?tr, DDI) ∧ hasDose(?tr, ?dose) ∧
sqwrl:makeSet(?b, ?dose) ∧ sqwrl:groupBy(?b, ?p) ∧ sqwrl:leastN(?least3Doses, ?b, 3) ∧
swrlb:equal(?least3Doses, ?dose) → sqwrl:select(?p, ?least3Doses)

23. LowestDDIDosePerPatient
Person(?p) ∧ hasTreatment(?p, ?tr) ∧ hasDrug(?tr, DDI) ∧ hasDose(?tr, ?dose) ∧
sqwrl:makeSet(?b, ?dose) ∧ sqwrl:groupBy(?b, ?p) ∧ sqwrl:least(?leastDose, ?b) ∧
swrlb:equal(?leastDose, ?dose) → sqwrl:select(?p, ?leastDose)

24. MaximumPersonAge
Person(?p) ∧ hasAge(?p, ?age) → sqwrl:max(?age)

25. NegateIt
swrlb:booleanNot(?r, true) → sqwrl:select(?r)

26. NumberOfAdults
Person(?p) ∧ hasAge(?p, ?age) ∧ swrlb:greaterThan(?age, 17) ∧ sqwrl:makeSet(?s, ?p) ∧
sqwrl:size(?size, ?s) → sqwrl:select(?size)

27. NumberOfCarsInOntology
Car(?c) → sqwrl:count(?c)

28. NumberOfCarsPerPerson
Person(?p) ∧ hasCar(?p, ?c) ∧ sqwrl:makeSet(?s, ?c) ∧ sqwrl:groupBy(?s, ?p) ∧ sqwrl:size(?
size, ?s) → sqwrl:select(?p, ?size)

29. NumberOfTreatments
Person(?p) ∧ hasTreatment(?p, ?t) ∧ sqwrl:makeSet(?s, ?t) ∧ sqwrl:groupBy(?s, ?p) ∧
sqwrl:size(?size, ?s) → hasNumberOfTreatments(?p, ?size)

30. NumberOfTreatmentsQuery
Person(?p) ∧ hasNumberOfTreatments(?p, 3) → sqwrl:select(?p)
31. NumberOfTreatmentsQuery3
Person(?p) ∧ hasNumberOfTreatments(?p, ?n) ∧ swrlb:equal(?n, 3) → sqwrl:select(?p)

32. PersonAndCarCount
Person(?p) ∧ hasCar(?p, ?c) → sqwrl:select(?p) ∧ sqwrl:count(?c)

33. PersonAverageDDIDosesAndAverageAllDDIDoses
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, DDI) ∧ hasDose(?t, ?dose) ∧
sqwrl:makeBag(?sp, ?dose) ∧ sqwrl:groupBy(?sp, ?p) ∧ sqwrl:makeBag(?sddi, ?dose) ∧
sqwrl:avg(?avgP, ?sp) ∧ sqwrl:avg(?avgDDI, ?sddi) → sqwrl:select(?p, ?avgP, ?avgDDI)

34. PersonAverageDrugDosesAndAverageAllDrugDoses
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, ?d) ∧ hasDose(?t, ?dose) ∧
sqwrl:makeBag(?sp, ?dose) ∧ sqwrl:groupBy(?sp, ?p, ?d) ∧ sqwrl:makeBag(?sd, ?dose) ∧
sqwrl:avg(?avgP, ?sp) ∧ sqwrl:avg(?avgD, ?sd) → sqwrl:select(?p, ?avgP, ?avgD)

35. PersonNames
Person(?p) ∧ hasName(?p, ?name) → sqwrl:select(?name)

36. PersonsAndAges
Person(?p) ∧ hasAge(?p, ?age) → sqwrl:select(?p, ?age)

37. PersonsAndTreatmentTimes
Person(?p) ∧ hasTreatment(?p, ?t) ∧ Treatment(?t) ∧ temporal:hasStartTime(?t, ?start) ∧
temporal:hasFinishTime(?t, ?finish) → sqwrl:select(?p, ?start, ?finish)

38. PersonsOnMoreThan1Drug
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, ?d) ∧ sqwrl:makeSet(?s, ?d) ∧
sqwrl:groupBy(?s, ?p) ∧ sqwrl:size(?size, ?s) ∧ swrlb:greaterThan(?size, 1) → sqwrl:select(?
p, ?size)
39. PersonsWithAboveAverageDDIDoses
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, DDI) ∧ hasDose(?t, ?dose) ∧
sqwrl:makeBag(?sp, ?dose) ∧ sqwrl:groupBy(?sp, ?p) ∧ sqwrl:makeBag(?sddi, ?dose) ∧
sqwrl:avg(?avgP, ?sp) ∧ sqwrl:avg(?avgDDI, ?sddi) ∧ swrlb:greaterThan(?avgP, ?avgDDI) →
sqwrl:select(?p, ?avgP, ?avgDDI)

40. PersonsWithAgesGreaterThanTheAverage
Person(?p) ∧ hasAge(?p, ?age) ∧ sqwrl:makeBag(?b, ?age) ∧ sqwrl:avg(?avg, ?b) ∧
swrlb:greaterThan(?age, ?avg) → sqwrl:select(?p, ?age, ?avg)
41. PersonsWithAgesLessThanTheAverageAge
Person(?p) ∧ hasAge(?p, ?age) ∧ sqwrl:makeBag(?b, ?age) ∧ sqwrl:avg(?avg, ?b) ∧
swrlb:lessThan(?age, ?avg) → sqwrl:select(?p, ?age, ?avg)

42. PersonsWithAverageDDIDoseMoreThan10PercentOfAverage
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, DDI) ∧ hasDose(?t, ?dose) ∧
sqwrl:makeBag(?sp, ?dose) ∧ sqwrl:groupBy(?sp, ?p) ∧ sqwrl:makeBag(?sddi, ?dose) ∧
sqwrl:avg(?avgP, ?sp) ∧ sqwrl:avg(?avgDDI, ?sddi) ∧ swrlm:eval(?r, "(avgP - avgDDI) /
avgDDI * 100", ?avgP, ?avgDDI) ∧ swrlb:greaterThan(?r, 10) → sqwrl:select(?p, ?avgP, ?
avgDDI)

43. PersonsWithAverageDDIDoses
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, DDI) ∧ hasDose(?t, ?dose) ∧
sqwrl:makeBag(?bd, ?dose) ∧ sqwrl:groupBy(?bd, ?p) ∧ sqwrl:avg(?avg, ?bd) ∧ sqwrl:size(?
size, ?bd) → sqwrl:select(?p, ?avg, ?size)

44. PersonsWithDDIOrAZTTreatments
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, ?d) ∧ sqwrl:makeSet(?s, ?d) ∧
sqwrl:groupBy(?s, ?p) ∧ sqwrl:makeSet(?sd, DDI) ∧ sqwrl:makeSet(?sd, AZT) ∧
sqwrl:intersects(?s, ?sd) → sqwrl:select(?p)

45. PersonsWithDDITreatments
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, ?d) ∧ sqwrl:makeSet(?sp, ?d) ∧
sqwrl:groupBy(?sp, ?p) ∧ sqwrl:makeSet(?sddi, DDI) ∧ sqwrl:intersects(?sp, ?sddi) →
sqwrl:select(?p)
46. PersonsWithExactly2DrugDoses
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, ?d) ∧ sqwrl:makeSet(?sp, ?d) ∧
sqwrl:groupBy(?sp, ?p) ∧ sqwrl:size(2, ?sp) → sqwrl:select(?p)

47. PersonsWithFirst2Treatments
Person(?p) ∧ hasTreatment(?p, ?t) ∧ temporal:hasStartTime(?t, ?start) ∧ sqwrl:makeSet(?
s, ?start) ∧ sqwrl:groupBy(?s, ?p) ∧ sqwrl:leastN(?min2, ?s, 2) ∧ swrlb:equal(?min2, ?start)
→ sqwrl:selectDistinct(?p, ?t, ?start)

48. PersonsWithFirstTreatment
Person(?p) ∧ hasTreatment(?p, ?t) ∧ temporal:hasStartTime(?t, ?start) ∧ sqwrl:makeSet(?
s, ?start) ∧ sqwrl:min(?min, ?s) ∧ swrlb:equal(?min, ?start) → sqwrl:select(?p, ?start)
49. PersonsWithLessThanAverageDDIDoses
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, DDI) ∧ hasDose(?t, ?dose) ∧
sqwrl:makeBag(?sp, ?dose) ∧ sqwrl:groupBy(?sp, ?p) ∧ sqwrl:makeBag(?sddi, ?dose) ∧
sqwrl:avg(?avgP, ?sp) ∧ sqwrl:avg(?avgDDI, ?sddi) ∧ swrlb:lessThan(?avgP, ?avgDDI) →
sqwrl:select(?p, ?avgP, ?avgDDI)

50. PersonsWithMaximumAge
Person(?p) ∧ hasAge(?p, ?age) ∧ sqwrl:makeSet(?s, ?age) ∧ sqwrl:max(?max, ?s) ∧
swrlb:equal(?age, ?max) → sqwrl:select(?p, ?max)

51. PersonsWithMaximumDosePerDrug
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, ?d) ∧ hasDose(?t, ?dose) ∧
sqwrl:makeBag(?s, ?dose) ∧ sqwrl:groupBy(?s, ?p, ?d) ∧ sqwrl:max(?max, ?s) →
sqwrl:select(?p, ?d, ?max)

52. PersonsWithMinimumAge
Person(?p) ∧ hasAge(?p, ?age) ∧ sqwrl:makeSet(?s, ?age) ∧ sqwrl:min(?min, ?s) ∧
swrlb:equal(?age, ?min) → sqwrl:select(?p, ?min)

53. PersonsWithMinimumDrugDuration
Person(?p) ∧ hasTreatment(?p, ?t) ∧ temporal:hasStartTime(?t, ?start) ∧
temporal:hasFinishTime(?t, ?finish) ∧ temporal:duration(?d, ?start, ?finish, temporal:Months) ∧
sqwrl:makeSet(?sp, ?d) ∧ sqwrl:groupBy(?sp, ?p) ∧ sqwrl:makeSet(?s, ?d) ∧ sqwrl:min(?
minP, ?sp) ∧ sqwrl:min(?min, ?s) ∧ swrlb:equal(?minP, ?min) → sqwrl:select(?p, ?d)

54. PersonsWithMoreThan2Cars
Person(?p) ∧ hasCar(?p, ?c) ∧ sqwrl:makeSet(?s, ?c) ∧ sqwrl:groupBy(?s, ?p) ∧ sqwrl:size(?
size, ?s) ∧ swrlb:greaterThan(?size, 2) → sqwrl:select(?p, ?size)

55. PersonsWithNonAZTTreatments
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, ?d) ∧ sqwrl:makeSet(?sp, ?d) ∧
sqwrl:groupBy(?sp, ?p) ∧ sqwrl:makeSet(?sazt, AZT) ∧ sqwrl:notIntersects(?sp, ?sazt) →
sqwrl:select(?p)

56. PersonsWithNonDDITreatments
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, ?d) ∧ sqwrl:makeSet(?s, ?d) ∧
sqwrl:groupBy(?s, ?p) ∧ sqwrl:notContains(?s, DDI) → sqwrl:select(?p)

57. PersonsWithNumberOfDosesAndAverageDosePerDrug
Person(?p) ∧ hasTreatment(?p, ?t) ∧ hasDrug(?t, ?d) ∧ hasDose(?t, ?dose) ∧
sqwrl:makeBag(?s, ?dose) ∧ sqwrl:groupBy(?s, ?p, ?d) ∧ sqwrl:avg(?avg, ?s) ∧ sqwrl:size(?
size, ?s) → sqwrl:select(?p, ?d, ?size, ?avg)

58. PersonsWithTreatmentsLastingMoreThan1Month
Person(?p) ∧ hasTreatment(?p, ?t) ∧ temporal:hasStartTime(?t, ?start) ∧
temporal:hasFinishTime(?t, ?finish) ∧ temporal:duration(?d, ?start, ?finish, temporal:Months) ∧
swrlb:greaterThan(?d, 1) → sqwrl:selectDistinct(?p, ?d)

59. PersonWithAverageDosePerDrugIn2007
Person(?p) ∧ hasTreatment(?p, ?t) ∧ temporal:hasStartTime(?t, ?start) ∧ temporal:equals(?
start, "2007", temporal:Years) ∧ hasDrug(?t, ?d) ∧ hasDose(?t, ?dose) ∧ sqwrl:makeBag(?
s, ?dose) ∧ sqwrl:groupBy(?s, ?p, ?d) ∧ sqwrl:avg(?avg, ?s) → sqwrl:select(?p, ?d, ?avg)

60. SubClassesOfPersonClass
tbox:isSubClassOf(?subClass, Person) → sqwrl:select(?subClass)
tbox:isDirectSubClassOf(?subClass, Person) - > sqwrl:select(?subClass)

61. SubPropertyOfHasName
tbox:isSubPropertyOf(?subProperty, hasName) - > sqwrl:select(?subProperty)

62. UnionTest
sqwrl:makeSet(?s1, DDI) ∧ sqwrl:makeSet(?s2, AZT) ∧ sqwrl:union(?u, ?s1, ?s2) ∧
sqwrl:size(?size, ?u) → sqwrl:select(?size)

63. NumberOfPerson
Person(?p) ∧ hasName(?p, ?name) → sqwrl:countDistinct(?name)

64. ResultColumns
Person(?p) ∧ hasName(?p, ?namer) ∧ hasCar(?p, ?c) → sqwrl:select(?name, "Number of cars") ∧
sqwrl:count(?c) ∧ sqwrl:columnNames("Name", "Description", "Count")   

65. StringConcat
Person(?p) ^ Male(?p) ∧ hasName(?p, ?name) ∧ swrlb:stringConcat(?fullname, "Mr. ", ?name) →
sqwrl:select(?fullname)

You might also like