NetFuel 0.52

Library Overview

NetFuel is a .NET/MONO library for simplifying P2P application development. NetFuel loads applications as .NET assemblies and allows them to interoperate. NetFuel is based upon the ASP.NET web services paradigm of coding, except in a P2P context. This library hopes to blur the line between computer programmers and ontologists and to promote a peer-to-peer semantic web environment by facilitating rapid prototyping, research and development in this area.

Modular System Design

The modular division of functionality implemented by this library allows your application to work with any protocol (soap, xml, rdf...) over any transport (udp, http...) and utilize numerous mechanisms (rpc, event-driven object streaming...). Module types are: Engine, Protocol, Transport, Ontology and Library. (Rule systems are a candidate sixth module type that would singularly be able to ammend to Ontology modules. Is this seperable from application logic in the idea of seperation of functionality for CAS? Should Ontology modules contain their own logic for this? Please feel free to contact me with any ideas or comments.)

engines

Engines contain application logic and utilize protocols and transports to communicate with other machines. Engines are allowed to obtain other engines (both local and remote) in lists, retrieved by interface containing the desired functionality. Engines can read and write to distinct subfolders and to a folder shared between all engines. A major goal of this project is to simplify the development of these through quality implementation of reusable components of the types below.

protocols

Protocols transform between runtime objects and byte streams. Protocols are allowed to access infrastructure (type info, serialization surrogates) necessary for this end.

transports

Transports are responsible for getting bytes between machines. Transports are allowed to access sockets. One transport is allowed to access the file system and handle the 'file://' schema. This special case transport only has the permission to access the application directory and subfolders and delegates these folder permissions to other modules requesting resources.

Ontology

Ontology objects are dynamic and organized type repositories. They may use Protocols and Transports in acquiring type information as necessary. Ontology modules are allowed to access reflection (moreso than Protocols) and emitting, the runtime creation of type information and bytecode. Ontology modules are also allowed to load other assemblies from their distinct subfolders. Ontology modules are for acquiring and storing interrelated types seperately from the other components. Each Ontology module has a unique root namespace (SUMO., WordNet., CYC., ...) and provides runtime type information to Engines and Protocols.

libraries

Library assemblies hold common functionality that can be linked to by any of the above module types.

URI-Based Networking

Sending and receiving data is object-oriented, applications are not exposed to byte streaming, they send and receive runtime objects to and from other machines without regard to networking mechanism. This is handled through URI-based networking, where the principle data structure for operations is the URI and modular handlers interoperate based upon the composition of a URI.

Platform-Independent Protocol-Independent Transport-Independent Networking and Remoting

With this library, your application can connect to other machines using any protocol and transport, using RPC's, object streaming, remoting and/or remote interfaces to access functionality on or send/receive objects to and from other machines.

Object Sharing Environment

With independence from protocol and transport and P2P interoperation, a goal of this library is to facilitate runtime object sharing, where memory-resident objects are described and available for remote machines to acquire, in addition to files stored on disk.

Synchronized Distributed Objects

Remoting applied to P2P, this concept extends the concept of a remotable object to reside on numerous machines simultaneously (complete implementation not expected for 0.52).

Secure Environment

Each module operates in a task-specific security environment, given permission by CAS to do only what is necessary for the module type's functionality. The seperation of functionality discussed above adds an additional layer of security in a mobile-code environment in addition to allowing component-level versioning.

Subprojects

Enumerated Graph Processing

This subproject aims to discover if representing URI's by mapped integers instead of strings is faster for graph processing and, if so, to what degree. Reference: http://www.websemanticsjournal.org/ps/pub/2005-16. A goal is alleviating the storing of redundant substrings in URI (e.g. everything before the '#') when processing large OWL files. See: http://ebiquity.umbc.edu/blogger/?page_id=452

Ontology Compilation

While the core library has no constraints on the underlying storage of dynamic ontology files between runtime sessions (OWL files, multiple assemblies, one assembly), a goal is to implement an interface to where each ontology module can export to a single (possibly large) assembly for development purposes. Interestingly, end users of your engine would not require the types implemented in your engine in their ontology module, initially, as they can be acquired at runtime. As a developer, you will be able to use, for example, SUMO.Entity.Physical... objects in your code with intellisense showing comments, descriptions and a list of one or more (ontology merging not expected in immediately upcoming versions) URI in the description. (with an intellisense XML support file also dumped). Eclipse IDE is also well suited for this.
Here is a sample SUMO .dll file for inspection.

AGILE OWL

Automatic generation of interpreted language executables (AGILE) independent of platform or programming language. Moving code between machines in distributed environments (Java/.NET interoperability) via OWL and byte code files representing method implementations instead of groups of classes. These byte code pieces (method implementations) can also be represented as structured knowledge for translation between .NET and Java.

Hyperlinks

Protégé

“Protégé is a free, open-source platform that provides a growing user community with a suite of tools to construct domain models and knowledge-based applications with ontologies. At its core, Protégé implements a rich set of knowledge-modeling structures and actions that support the creation, visualization, and manipulation of ontologies in various representation formats. Protégé can be customized to provide domain-friendly support for creating knowledge models and entering data. Further, Protégé can be extended by way of a plug-in architecture and a Java-based Application Programming Interface (API) for building knowledge-based tools and applications.”

http://protege.stanford.edu/

JENA

“Jena is a Java framework for building Semantic Web applications. It provides a programmatic environment for RDF, RDFS and OWL, SPARQL and includes a rule-based inference engine. Jena is open source and grown out of work with the HP Labs Semantic Web Programme.”

http://jena.sourceforge.net/
.NET ports of JENA components: XERCES.NET, XALAN.NET, ORO.NET, LUCENE.NET

Sesame

“Sesame is an open source RDF framework with support for RDF Schema inferencing and querying. Originally, it was developed by Aduna (then known as Aidministrator) as a research prototype for the EU research project On-To-Knowledge. Now, it is further developed and maintained by Aduna in cooperation with NLnet Foundation, developers from Ontotext, and a number of volunteer developers who contribute ideas, bug reports and fixes.”

http://www.openrdf.org

Haystack

“Haystack represents a significant departure from traditional notions of information management. However, our work is grounded in a handful of simple principles, upon which the entire system is built. In the past, information was scattered between e-mail client(s), filesystem, calendar, and address book(s), the Web, and other custom repositories. Haystack eliminates this partition so that individuals can work with their information in a unified fashion. ”

http://haystack.csail.mit.edu/home.html

owl-s process model

“OWL-S is a OWL-based Web service ontology, which supplies Web service providers with a core set of constructs for describing the properties and capabilities of their Web services in unambiguous, computer-intepretable form. OWL-S markup of Web services will facilitate the automation of Web service tasks, including automated Web service discovery, execution, composition and interoperation. Following the layered approach to markup language development, the current version of OWL-S builds on the Ontology Web Language (OWL) Recommendation produced by the Web-Ontology Working Group at the World Wide Web Consortium.”

http://www.ai.sri.com/daml/services/owl-s/1.2/
process model picture

dbpedia

“The dbpedia.org project approaches both problems by extracting structured information from Wikipedia and by making this information available on the Semantic Web. dbpedia.org allows you to ask sophisticated queries against Wikipedia and to link other datasets on the Web to dbpedia data.”

http://dbpedia.org/

developers welcome

coding aside, any ideas?

Feedback always welcome, not only any bugs but also suggestions for improvements or your thoughts, in general.

future-proof modularization

The last version shows a sketch of the interfaces for the module types, the goal is to finalize them with consideration to any special cases possibly missed in the initial generalizations.

module implementation

Good at serialization and/or network programming? Know how to code any of the peer to peer network protocols or transports?

user interface conceptualization

XAML, SWF's? Still pretty open on how to seperate interface from applications and object types to make everything skinnable and interoperable.

beta testers

As modules are completed you're more than wecome to test and tinker, please report any positive results from adjustments.

contact

blog click here and prepare to be blogified

adam-s@users.sourceforge.net. Please include the word 'netfuel' in the subject line for promptest reply.