Skip to content

Instantly share code, notes, and snippets.

@alganet
Last active October 3, 2015 07:37
Show Gist options
  • Save alganet/2418047 to your computer and use it in GitHub Desktop.
Save alganet/2418047 to your computer and use it in GitHub Desktop.
Respect Project Roadmap

Respect Project Roadmap

Respect is a small set of independent libraries. We do not plan to release a full stack framework, but we do have a roadmap for new components. Many of them may fit in other organizations outside Respect and many of them may include contributions to other projects.

The main goal is to provide a standards-based platform and ecosystem for Semantic Web development based on common PHP technology.

About Semantic Web

The best way to describe what is the semantic web is to look at this image:

Linked Data Cloud Graph

Each node on this graph represents an information provider. They're connected by a stack of WC3 technologies known as Semantic Web. These technologies were made to integrate data seamlessly on the web.

Many of these nodes are exposed by services we use today, such as Wikipedia (right in the middle). Any website can expose granular semantic information. Semantic Web allows the web to integrate without knowing each service API by declaring an universal way of describing things. This universal way of describing things is a data format called RDF, extended by many others such as RDFS, OWL and POWDER.

If you know microformats, think of Semantic Web as Microformats on steroids.

Cleaning Up

For the data to be standardized, the web needs to be standardized. In fact, the web is already standardized, we just need to adopt these standards. Semantic Web is built on layers of standardss:

Semantic Web Cake Layer

These technologies do exist and implementations in several languages are available, but they're incomplete and they mismatch a lot. What we have is:

The actual Semantic Web Cake Layer

So we need to fix it, make standards support a first-class citizen on web development. We should Respect standards :)

Why

I'm sure many companies like Google (who recently bought Freebase, a semantic web startup), Talis (who exposes UK Government data on the semantic web) and Garlik (who crawls social data from the semantic web) are making money out of the current state of the semantic web, but they do so by investing many thousands of dollars in research. These technologies nowadays demand research to be useful.

One of our goals is to make these technologies productive and useful right from the start of a project. In the end, if you want, you'll be able to expose them to the Linked Data.

How

Our first goal is to build the right toolkit to get any modern application running from scratch in weeks. This also is what the market wants, so could be fun. Underneath, all of our components aren't built just for productivity.

Getting a little more technical, if you look closer, you'll notice a pattern: All of our components follow the same basic architecture. All of them are fluent composite builders. All of them have some level of hierarchy. All of them can be used inside themselves. All of them have fluent interfaces to build complex objects.

All of that makes Respect very declarative while still low level. Our codebase is surprisingly small comparing to others. Full of hacks too, expect something very multi-paradigm, not pure OOP.

The declarative nature of each component makes them easy to describe. We do this often while talking about the project (eg "Did you see what Nick implemented on the Accept Routine?").

Respect was always made for users to like in the first place, then developers to contribute in second. If an user can describe a component and a developer can contribute with it, a short path for something nice is coming.

Creating RDF (the core foundation of the Semantic Web) is easy. All you need to do is write triples, a lot of triples. Triples are the most atomic piece of information on the web. Everything can be described with triples easily.

ball color blue
ball weight 10
ball diameter 5

Alexandre is Person
Alexandre friend Augusto
Alexandre interested-in PHP
Augusto interested-in PHP

C'mon, it's easy to extract information from a format like this, huh? The second sample is even better, we can infere things. If Alexandre friend Augusto, obviously Augusto friend Alexandre is implied. There are RDF tools that can do this automatically. Yes, you don't have to code anything.

But for a RDF storage, query parser or reasoner to process things properly, it needs a more strict format. They're still triples, but now instead of strings you have mnemonic, SEO-friendly universal IDs.

The best universal IDs known: URIs.

<http://gaigalas.net> <rdfs:Class> <foaf:Person>
<http://augustopascutti.com> <rdfs:Class> <foaf:Person>
<http://gaigalas.net> <foaf:friend> <http://augustopascutti.com>
...

It should be easy to generate triples like this, following a public or private vocabulary. We can even do it in PHP. We often have more complex logging lines in our application than this. We often have more complex tests on our code.

The fact is that our code can reflect itself if needed and return a set of triples. We already proved it and we're looking with our hearts to find the best way to leverage Respect\Describe in a few months or years.


To be continued...

@cordoval
Copy link

oh nice man, thanks for this intro to Convert.

a pattern: All of our components follow the same basic architecture. All of them are fluent composite builders. All of them have some level of hierarchy. All of them can be used inside themselves. All of them have fluent interfaces to build complex objects.

Is this an ideal? Why not doing a tutorial on this right exact single fact? :D Would rock. say o/

@alganet
Copy link
Author

alganet commented Jul 16, 2012

@cordoval We're thinking about starting a blog to talk about our architecture moves and news on our projects =)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment