KReS/KReSRuleLanguage
From STLab
(Difference between revisions)
Current revision (15:33, 9 December 2010) (view source) m (Private:KReS/KReSRuleLanguage moved to KReS/KReSRuleLanguage: we make it public) |
|||
(7 intermediate revisions not shown.) | |||
Line 5: | Line 5: | ||
expr := suffix exprL | expr := suffix exprL | ||
- | exprL := "." expr | + | exprL := "." expr | ~ |
suffix := literal ( "=" | rule ) | suffix := literal ( "=" | rule ) | ||
Line 15: | Line 15: | ||
atoms := atom atomsRest | atoms := atom atomsRest | ||
- | atomsRest := "." atoms | + | atomsRest := "." atoms | ~ |
atom := classAtom | atom := classAtom | ||
Line 38: | Line 38: | ||
iObject := variable | resource | iObject := variable | resource | ||
- | dObject := String | double | int | float | boolean | + | dObject := String | double | int | float | boolean | variable |
variable := "?" ([ "0"-"9","a"-"z","A"-"Z","-", "_"])+ | variable := "?" ([ "0"-"9","a"-"z","A"-"Z","-", "_"])+ | ||
resource := uri | resource := uri | ||
- | + | | literal ":" literal | |
uri := "<" ([ "0"-"9","a"-"z","A"-"Z","-", "_", ".", "#", ":", "/" ])+ ">" | uri := "<" ([ "0"-"9","a"-"z","A"-"Z","-", "_", ".", "#", ":", "/" ])+ ">" | ||
Line 57: | Line 57: | ||
rule1[ has(myOnt:hasParent, ?x1, ?x2) . | rule1[ has(myOnt:hasParent, ?x1, ?x2) . | ||
- | has(<http://kres.iksproject.eu/myOnt.owl# | + | has(<http://kres.iksproject.eu/myOnt.owl#hasSibling >, ?x2, ?x3) . |
has(myOnt:hasSex, ?x3, <http://kres.iksproject.eu/genders.owl#male>) | has(myOnt:hasSex, ?x3, <http://kres.iksproject.eu/genders.owl#male>) | ||
-> | -> |
Current revision
- KReSRule Syntax
R := expr exprL expr := suffix exprL exprL := "." expr | ~ suffix := literal ( "=" | rule ) rule := "[" ruleDef "]" ruleDef := atoms "->" atoms atoms := atom atomsRest atomsRest := "." atoms | ~ atom := classAtom | objectPropertyAtom | dataPropertyAtom | dataRangeAtom | sameAsAtom | differentFromAtom classAtom := "is" "(" iObject "," iObject ")" objectPropertyAtom := "has" "(" iObject "," iObject "," iObject ")" dataPropertyAtom := "values" "(" iObject "," iObject "," dObject ")" dataRangeAtom := "range" "(" iObject "," dObject ")" sameAsAtom := "same" "(" iObject "," iObject ")" differentFromAtom := "different" "(" iObject "," iObject ")" iObject := variable | resource dObject := String | double | int | float | boolean | variable variable := "?" ([ "0"-"9","a"-"z","A"-"Z","-", "_"])+ resource := uri | literal ":" literal uri := "<" ([ "0"-"9","a"-"z","A"-"Z","-", "_", ".", "#", ":", "/" ])+ ">" literal := ([ "0"-"9","a"-"z","A"-"Z","-", "_"])+
- Example: The following KReSRule code:
myOnt = <http://kres.iksproject.eu/myOnt.owl#> . rule1[ has(myOnt:hasParent, ?x1, ?x2) . has(<http://kres.iksproject.eu/myOnt.owl#hasSibling >, ?x2, ?x3) . has(myOnt:hasSex, ?x3, <http://kres.iksproject.eu/genders.owl#male>) -> has(myOnt:hasUncle ?x1, ?x3) ]
is equivalent to this SWRL
<swrl:Variable rdf:ID="x1"/> <swrl:Variable rdf:ID="x2"/> <swrl:Variable rdf:ID="x3"/> <ruleml:Imp> <ruleml:body rdf:parseType="Collection"> <swrl:IndividualPropertyAtom> <swrl:propertyPredicate rdf:resource="http://kres.iksproject.eu/myOnt.owl#hasParent"/> <swrl:argument1 rdf:resource="#x1" /> <swrl:argument2 rdf:resource="#x2" /> </swrl:IndividualPropertyAtom> <swrl:IndividualPropertyAtom> <swrl:propertyPredicate rdf:resource="http://kres.iksproject.eu/myOnt.owl#hasSibling"/> <swrl:argument1 rdf:resource="#x2" /> <swrl:argument2 rdf:resource="#x3" /> </swrl:IndividualPropertyAtom> <swrl:IndividualPropertyAtom> <swrl:propertyPredicate rdf:resource="http://kres.iksproject.eu/myOnt.owl#hasSex"/> <swrl:argument1 rdf:resource="#x3" /> <swrl:argument2 rdf:resource="http://kres.iksproject.eu/genders.owl#male" /> </swrl:IndividualPropertyAtom> </ruleml:body> <ruleml:head rdf:parseType="Collection"> <swrl:IndividualPropertyAtom> <swrl:propertyPredicate rdf:resource="http://kres.iksproject.eu/myOnt.owl#hasUncle"/> <swrl:argument1 rdf:resource="#x1" /> <swrl:argument2 rdf:resource="#x3" /> </swrl:IndividualPropertyAtom> </ruleml:head> </ruleml:Imp>