- 140 Views
- Uploaded on
- Presentation posted in: General

Initial ideas on Distributed Reasoning

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Initial ideas on Distributed Reasoning

- The subset of RDF/OWL and that has rule-based inference – OWL –RL
- In general, datalog
- Example:
- rdfs:domain, range, subClassof, subPropertyof
- Inverseof, transitive property, symmetic property,
- …

- Subproperty
- Subclass
- Class instance
- Property instance
- Redirection

- P(x,y) :- Q(x,y) .
- C(x) :- D(x) .
- C(a) .
- P(a,b) .
- a=b.

- Domain
- Range
- Transitive P
- Symmetric P
- Functional P
- InverseFunctional P
- Inverse of

- C(x) :- P(x,y)
- C(y) :- P(x,y)
- P(x,y) :- P(x,z), P(z,y)
- P(x,y) :- P(y,x)
- SameAs(x,y) :- P(z,x),P(z,y)
- SameAs(x,y) :- P(x,z),P(y,z)
- Q(x,y) :- P(y,x)

- Conjunction
- Disjunction
- Property Chain
- Negation
- Has Value
- Cardinality

- C(x) :- A(x), B(x) .
- C(x) :- A(x). C(x):- B(x).
- R (x,y):- P(x,z), Q(z,y) .
- C(x):- not D(x) .C(x): - #count{x, P(x,y)}<=0 .
- C(x) :- P(x,a) .
- C(x) : #count{x, P(x,y)}>=3 .

This is also query language

- Assumption: data are distributed; rule set is relatively small, every node has the full rule set
- Data can be duplicated in GIDS manner

- If there is no join, the result set can be a simple union
- Domain, range, subC, subP, inverseOf, symmetric, disjunction, has value

- Each node compute a local answer, the whole answer set is their union

Negation and cardinality queries can be distributed by MapReduce (counting)

void map(String name, String document):

// name: document name

// document: document contents

for each word w in document:

EmitIntermediate(w, "1");

void reduce(String word, IteratorpartialCounts):

// word: a word

// partialCounts: a list of aggregated partial counts

int result = 0;

for each pc in partialCounts:

result += ParseInt(pc);

Emit(AsString(result));

Also see: http://ayende.com/Blog/archive/2010/03/14/map-reduce-ndash-a-visual-explanation.aspx

- E.g. C(x) :- D(x), E(x)
- Node 1: { D(a) }
- Node 2: { E(a) }

- One solution: in query answering, do dependency check, and copy partial result to one place
- E.,g. C1(x) : - D(X) C2(x) :-E(X)
- Copy instances of C1 and C2 to one node
- On that node, add rule C(x) :-C1(x), C2(x)

- Optimization: hashing or indexing?