Tuesday 20 January 2009

Reasoning about the Book Recommendation example

First: Recommended list generation

It is a server side service -business logic is on the server-. I used the following SPARQL query

PREFIX recserv:

SELECT ?Books

WHERE {recserv:Deema recserv:hasCopy ?DeemaBooks.

?anyone recserv:hasCopy ?DeemaBooks.

FILTER ( ?anyone != recserv:Deema)

?anyone recserv:hasCopy ?Books.

FILTER ( ?Books != ?DeemaBooks)

}

Where recserv:Deema is the person we are recommending books for.

There are some points here maybe worth noting:

1- What if we wanted it to be on the client side?

The extreme case will be getting all the persons’ books, and executing a similar query on the client.


2- Instead of explicitly writing the query, is there a way of it being dynamically generated?

The client in some way specifies what it wants -> that is translated to SPARQL.

The issue here is will it be easier -for the client- than saying it in SPARQL? By easier, meaning it Agent-wise? This will take us back to the work of these guys Battle and Benson “Bridging the semantic Web and Web 2.0 with Representational State Transfer (REST)”

Should the service as they argue offer SPARQL endpoints?

Second: Evolving Services

Extending point two from the last section, we can imagine that when a service requested and cannot be satisfied, the client can provide the logic, it will then be added as a resource to the ontology.

Third: Properties (Relationships) become resources

Examples

/BookOntology/{Book_Id}/Authors

/PersonOntology/{Person_Id}/ BookCopies/

Fourth: Issues of redirection

When properties become a resource they provide a new path to other resources. Should the GET and PUT methods be redirected to the original resource? And restrict DELETE to deleting the association.

Fifth: Changes to the ontology

Assuming that we will have RESTful Ontology deployment engine:

How to distinguish calculated vs. asserted resources?

Is it something that should be added to the ontology
When the ontology is sent through this system should it be annotated with
-Inputs / Outputs (usually with transaction ontologies)
-Calculated resources

Sixth: A minor issue: how do we determine the API URIs from the ontology?

Example:

/BookOntology/{Book_Id}/Authors

We used this to model the hasAuthor property.

Should it be

/BookOntology/{Book_Id}/hasAuthors

Or maybe it doesn’t matter because it should not involve humans.

No comments:

Post a Comment