mappings between SWRL and Boley proposal

In fulfillment of the action item that picked up today (no tracking
information available) I submit the following pair of mappings between SWRL
and the Boley proposal.

Peter F. Patel-Schneider


Here are two complete mappings between the proposal syntax and SWRL
syntax.  I claim that, based on the proposal, that they are as good as any
other.


Mapping from SWRL to Proposal Syntax

M[Antecedent( atom1 ... atomn )]                      = Or ( M[atom1] ... M[atomn] )
M[description ( i-object )]			      = M[description] ( M[i-object] )
M[dataRange ( d-object )]			      = M[dataRange] ( M[d-object] )
M[individualvaluedPropertyID ( i-object1 i-object2 )] = individualvaluedPropertyID ( M[i-object1] M[i-object2] )
M[datavaluedPropertyID ( i-object d-object )]	      = datavaluedPropertyID ( M[i-object] M[d-object] )
M[sameAs ( i-object1 i-object2 )]		      = M[i-object1] = M[i-object2]
M[differentFrom ( i-object1 i-object2 )]	      = M[i-object1] = M[i-object2]
M[builtIn ( builtinID  d-object1 ... d-objectn )]     = builtinID ( M[d-object1] ... M[d-objectn] )
M[individualID]					      = individualID
M[dataLiteral]					      = dataLiteral
M[I-variable( URIreference )]			      = URIreference
M[D-variable( URIreference )]			      = URIreference
M[classID]					      = classID
M[restriction]					      = owl:Thing
M[unionOf( description1 ... descriptionn )]	      = owl:Nothing
M[intersectionOf( description1 ... descriptionn )     = owl:Thing
M[complementOf( description )]			      = owl:Nothing
M[oneOf( individualID1 ... individualIDn )]	      = owl:Thing
M[datatypeID]					      = datatypeID
M[rdfs:Literal]					      = rdfs:Literal

Mapping from Proposal Syntax to SWRL

L[Or ( CONDIT1 ... CONDIT1N )]     = Antecedent( N[CONDIT1] ... N[CONDIT1N] )
L[And ( CONDIT1 ... CONDIT1N )]    = Antecedent( N[CONDIT1] ... N[CONDIT1N] )
L[LITFORM]			   = N[LITFORM]
L[QUANTIF]			   = N[QUANTIF]

N[Exists Var1 ... Varn ( CONDIT )] = N[CONDIT]
N[Rel ( )]			   = owl:Thing(I-variable(ex:foo))
N[Rel ( TERM1 )]		   = Rel ( N[TERM1] )
N[Rel ( TERM1 TERM2 )]		   = Rel ( N[TERM1] N[TERM2] )
N[Rel ( TERM1 TERM2 ... TERMn )]   = Rel ( N[TERM1] N[TERM2] )
N[TERM11 = TERM2]		   = sameAs( N[TERM1] N[TERM2] )
N[Fun( TERM1 ... TERMn )]	   = ex:foo
N[?name]			   = I-variable( name )
N[object]			   = object
N[value]			   = value



To make this more self-contained, here are the two syntaxes:

Proposal Syntax:

Data     ::= value
Ind      ::= object
Var      ::= '?' name
TERM     ::= Data | Ind | Var | Expr
Expr     ::= Fun '(' TERM* ')'
Atom     ::= Rel '(' TERM* ')' | TERM '=' TERM
LITFORM  ::= Atom
QUANTIF  ::= 'Exists' Var+ '(' CONDIT ')'
CONJ     ::= 'And' '(' CONDIT* ')'
DISJ     ::= 'Or' '(' CONDIT* ')'
CONDIT   ::= LITFORM | QUANTIF | CONJ | DISJ

SWRL Syntax:

antecedent  ::= 'Antecedent(' atom* ')'
atom        ::= description '(' i-object ')'
	      | dataRange '(' d-object ')'
	      | individualvaluedPropertyID '(' i-object i-object ')'
	      | datavaluedPropertyID '(' i-object d-object ')'
	      | sameAs '(' i-object i-object ')'
	      | differentFrom '(' i-object i-object ')'
	      | builtIn '(' builtinID  d-object * ')'
i-object    ::= i-variable | individualID
d-object    ::= d-variable | dataLiteral
i-variable  ::= 'I-variable(' URIreference ')'
d-variable  ::= 'D-variable(' URIreference ')'
builtinID   ::= URIreference
dataRange   ::= datatypeID | 'rdfs:Literal'
description ::= classID
              | restriction
              | 'unionOf(' description* ')'
              | 'intersectionOf(' description* ')'
              | 'complementOf(' description ')'
              | 'oneOf(' { individualID } ')'

OWL DL restrictions don't play a part in the mapping, and so are not
included here.

SWRL also has

rule       ::= 'Implies(' [URIreference]  annotation* antecedent consequent ')'
consequent ::= 'Consequent(' atom* ')'

but they don't play a part here.
Here are two complete mappings between the proposal syntax and SWRL
syntax.  I claim that, based on the proposal, that they are as good as any
other.


Mapping from SWRL to Proposal Syntax

M[Antecedent( atom1 ... atomn )]                      = Or ( M[atom1] ... M[atomn] )
M[description ( i-object )]			      = M[description] ( M[i-object] )
M[dataRange ( d-object )]			      = M[dataRange] ( M[d-object] )
M[individualvaluedPropertyID ( i-object1 i-object2 )] = individualvaluedPropertyID ( M[i-object1] M[i-object2] )
M[datavaluedPropertyID ( i-object d-object )]	      = datavaluedPropertyID ( M[i-object] M[d-object] )
M[sameAs ( i-object1 i-object2 )]		      = M[i-object1] = M[i-object2]
M[differentFrom ( i-object1 i-object2 )]	      = M[i-object1] = M[i-object2]
M[builtIn ( builtinID  d-object1 ... d-objectn )]     = builtinID ( M[d-object1] ... M[d-objectn] )
M[individualID]					      = individualID
M[dataLiteral]					      = dataLiteral
M[I-variable( URIreference )]			      = URIreference
M[D-variable( URIreference )]			      = URIreference
M[classID]					      = classID
M[restriction]					      = owl:Thing
M[unionOf( description1 ... descriptionn )]	      = owl:Nothing
M[intersectionOf( description1 ... descriptionn )     = owl:Thing
M[complementOf( description )]			      = owl:Nothing
M[oneOf( individualID1 ... individualIDn )]	      = owl:Thing
M[datatypeID]					      = datatypeID
M[rdfs:Literal]					      = rdfs:Literal

Mapping from Proposal Syntax to SWRL

L[Or ( CONDIT1 ... CONDIT1N )]     = Antecedent( N[CONDIT1] ... N[CONDIT1N] )
L[And ( CONDIT1 ... CONDIT1N )]    = Antecedent( N[CONDIT1] ... N[CONDIT1N] )
L[LITFORM]			   = N[LITFORM]
L[QUANTIF]			   = N[QUANTIF]

N[Exists Var1 ... Varn ( CONDIT )] = N[CONDIT]
N[Rel ( )]			   = owl:Thing(I-variable(ex:foo))
N[Rel ( TERM1 )]		   = Rel ( N[TERM1] )
N[Rel ( TERM1 TERM2 )]		   = Rel ( N[TERM1] N[TERM2] )
N[Rel ( TERM1 TERM2 ... TERMn )]   = Rel ( N[TERM1] N[TERM2] )
N[TERM11 = TERM2]		   = sameAs( N[TERM1] N[TERM2] )
N[Fun( TERM1 ... TERMn )]	   = ex:foo
N[?name]			   = I-variable( name )
N[object]			   = object
N[value]			   = value



To make this more self-contained, here are the two syntaxes:

Proposal Syntax:

Data     ::= value
Ind      ::= object
Var      ::= '?' name
TERM     ::= Data | Ind | Var | Expr
Expr     ::= Fun '(' TERM* ')'
Atom     ::= Rel '(' TERM* ')' | TERM '=' TERM
LITFORM  ::= Atom
QUANTIF  ::= 'Exists' Var+ '(' CONDIT ')'
CONJ     ::= 'And' '(' CONDIT* ')'
DISJ     ::= 'Or' '(' CONDIT* ')'
CONDIT   ::= LITFORM | QUANTIF | CONJ | DISJ

SWRL Syntax:

antecedent  ::= 'Antecedent(' atom* ')'
atom        ::= description '(' i-object ')'
	      | dataRange '(' d-object ')'
	      | individualvaluedPropertyID '(' i-object i-object ')'
	      | datavaluedPropertyID '(' i-object d-object ')'
	      | sameAs '(' i-object i-object ')'
	      | differentFrom '(' i-object i-object ')'
	      | builtIn '(' builtinID  d-object * ')'
i-object    ::= i-variable | individualID
d-object    ::= d-variable | dataLiteral
i-variable  ::= 'I-variable(' URIreference ')'
d-variable  ::= 'D-variable(' URIreference ')'
builtinID   ::= URIreference
dataRange   ::= datatypeID | 'rdfs:Literal'
description ::= classID
              | restriction
              | 'unionOf(' description* ')'
              | 'intersectionOf(' description* ')'
              | 'complementOf(' description ')'
              | 'oneOf(' { individualID } ')'

OWL DL restrictions don't play a part in the mapping, and so are not
included here.

SWRL also has

rule       ::= 'Implies(' [URIreference]  annotation* antecedent consequent ')'
consequent ::= 'Consequent(' atom* ')'

but they don't play a part here.

Received on Tuesday, 16 May 2006 22:31:27 UTC