- From: Jeremy Wong 黃泓量 <50263336@student.cityu.edu.hk>
- Date: Sun, 10 Apr 2005 12:33:05 +0800
- To: semantic-web@w3.org
- Cc: public-owl-dev@w3.org
- Message-id: <002801c53d86$63ca9520$0401a8c0@wongkjo9u38gzb>
I just devise an ontology this morning.. it is originated from the rule... { sig:connectSignalTo rdf:type rdf:Property ; universal:domain sig:OutputSignal ; universal:range sig:InputSignal ; universal:subPropertyOf gom:connectTo . ?S gom:connectTo ?O ; rdf:type sig:OutputSignal . ?O rdf:type sig:InputSignal . } => { ?S sig:connectSignalTo ?O . } . I wanted to express the rule purely using the vocabulary of RDF schema in fact. I fail to do so because the 3 vocabularies, rdfs:domain, rdfs:range and rdfs:subPropertyOf, are not functional. In this sense, the semantic inference of the above rule cannot be established.. Below is the schema and the semantics of the ontology.. -- ## schema universal:domain rdf:type owl:FunctionalProperty ; rdfs:subPropertyOf rdfs:domain . universal:range rdf:type owl:FunctionalProperty ; rdfs:subPropertyOf rdfs:range . universal:subPropertyOf rdf:type owl:FunctionalProperty ; rdfs:subPropertyOf rdfs:subProperty .. ## semantics ## #uni0 { ?P rdf:type rdf:Property ; universal:domain ?D0 ; universal:range ?R0 ; universal:subPropertyOf ?P0 . ?S ?P0 ?O ; rdf:type ?D0 . ?O rdf:type ?R0 . } => { ?S ?P ?O . } . #uni1 # # CEXT(S(D0)) ⊆ CEXT(S(D1)) ∩ ... ∩ CEXT(S(Dn)) # # CEXT(S(D0)) ⊆ CEXT(S(D1)) if there exists <P,D0> ∈ EXT(universal:domain) and <P,D1> ∈ EXT(rdfs:domain) # <P,D0a> ∈ EXT(universal:domain) and <P,D0b> ∈ EXT(universal:domain) only if D0a = D0b # { ?P universal:domain ?D0 ; rdfs:domain ?D1 . } => { ?D0 rdfs:subPropertyOf ?D1 . } . #uni2 # # CEXT(S(R0)) ⊆ CEXT(S(R1)) ∩ ... ∩ CEXT(S(Rn)) # # CEXT(S(R0)) ⊆ CEXT(S(R1)) if there exists <P,R0> ∈ EXT(universal:range) and <P,R1> ∈ EXT(rdfs:range) # <P,R0a> ∈ EXT(universal:range) and <P,R0b> ∈ EXT(universal:range) only if R0a = R0b # { ?P universal:range ?R0 ; rdfs:range ?R1 . } => { ?R0 rdfs:subPropertyOf ?R1 . } . #uni3 # # CEXT(S(P0)) ⊆ CEXT(S(P1)) ∩ ... ∩ CEXT(S(Pn)) # # CEXT(S(P0)) ⊆ CEXT(S(P1)) if there exists <P,P0> ∈ EXT(universal:subPropertyOf) and <P,D1> ∈ EXT(rdfs:subPropertyOf) # <P,P0a> ∈ EXT(universal:subPropertyOf) and <P,P0b> ∈ EXT(universal:subPropertyOf) only if P0a = P0b # { ?P universal:subPropertyOf ?P0 ; rdfs:subPropertyOf ?P1 . } => { ?P0 rdfs:subPropertyOf ?P1 . } . -- Jeremy
Received on Sunday, 10 April 2005 04:34:00 UTC