Peter,

Thanks for your response. So if I understand you correctly, you were saying that pD* has some limitations. (The examples you gave are good examples btw.) That is true. It is just a fragment so we don't truly expect to see the same kind of entailment compared to complete OWL DL. However, all these limitations don't seem to preclude it from being *a good starting point* of a standard fragment. The strong points of pD* are 1) it allows simple and efficient implementation, 2) it scales, 3)  users understand those rules much easier than model theoretic semantics; 4) it covers transitivity, sameAs, and functional and inverse functional properties and those constructs are cared the most by enterprise applications.

Zhe
In terms of "completeness," I think pD* rules are complete (correct me
if I am wrong on this please). 
    

Not quite.  The pD* rules need an auxiliary test for contradictions.
They could probably be made refutation complete.

  
And I think pD* vocabulary covers all the
core requirements Oracle sees on the field.
    

I take this to mean that Oracle sees only the following constructs
involving vocabulary from the owl: namespace

- functional, inversefunctional, symmetric, transitive properties
- object equality and inequality
- inverse roles
- equivalent classes and properties
- existential, universal, and filler restrictions
- disjoint classes

This means no cardinalities at all, nor complements, nor deprecation,
nor imports, nor ontology properties, nor use of owl:Thing or
owl:Nothing.

It also means no inferences *from* existential restrictions, and no
inferences *of* universal restrictions.  Also no inferences *of*
unmentioned existential restrictions or unmentioned filler restrictions.

Also very limited inference *of* subclass and subproperty relationships,
and equivalent classes and properties.  Similarly, limited inference
*of* same individuals and no inference *of* distinct individuals.  Also
no inference *of* property functionality, inverse functionality, or
symmetricity, transitivity.

To see the sort of thing that is lost in pD*, consider that

p rdf:type C .
q rdf:type D .
C owl:disjointWith D .

does not pD* entail 

p owl:differentFrom q .

Nor does 

p r q .

pD* entail

p rdf:type _:e .
_:e owl:hasValue q .
_:e owl:onProperty r .


Nor does 

p rdf:type _:s .
_:s owl:someValuesFrom C .
_:s owl:onProperty r .

pD* entail

p r _:x .

[...]

  
Zhe
    

peter