- From: Peter F. Patel-Schneider <pfps@inf.unibz.it>
- Date: Tue, 16 May 2006 13:21:49 -0400 (EDT)
- To: public-rif-wg@w3.org
- Message-Id: <20060516.132149.92306302.pfps@research.bell-labs.com>
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