Enhancing object-oriented programming with OWL

Hello everyone,

My understanding is that we can post all object-oriented data on the 
Semantic Web, as object-oriented programming and OWL and are entirely 
compatible.  I have a correspondence between OOP and OWL. 
Object-oriented classes are OWL classes, object-oriented attributes are 
OWL properties, object-oriented operations are Semantic Web Services, 
and object-oriented packages are ontologies.  Class membership is unary 
predicates, and attributes are binary predicates, relating two 
entities.  In Java, if a field is a Java Collection or an array, each 
element in it is just the object of a triple.  I interpret all 
object-oriented data as being triples in RDF.  So we should be able to 
serialize all object-oriented data to RDF.  We can thus have lots more 
data on the Semantic Web!

Based on these principles, what we want to do is extend OOP to make it 
into OWL, i.e. to make it better.  I've developed an extension to Java 
using OWL and have just released it open source: 
http://www.semanticoop.org.  I'm looking to talk to people about it.  
I've translated the entire RDF, RDFS, and OWL ontologies into Java; see 
the packages beginning with org.w3 at http://www.semanticoop.org/xref/.  
Here is rdfs:comment, for instance, as a Java annotation in a file 
comment.java:

@AnnotationProperty
@label("comment")
@comment("A description of the subject resource.")
@isDefinedBy("http://www.w3.org/2000/01/rdf-schema#")
@domain(Resource.class)
@range(Literal.class)

@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface comment
{
     public String[] value();
}

The OWL annotation properties are Java annotations, so I can write 
ontologies entirely in Java.

The proof that the correspondence between attributes and properties 
holds up is just that I have most of the property reasoning working for 
attributes, and it all makes sense and seems like it would be very 
useful in object-oriented programming.  We will allow programmers to 
define classes as intersections, unions, or complements of other 
classes, run SPARQL queries and rules on main memory, and do everything 
else we can do with OWL inside an object-oriented language, object 
database, or object-relational database.

I have a lot working.  I came across other software that treats 
attributes as properties, like AliBaba, very late in the development 
process.  I think I did a lot differently.  Would anyone be interested 
in talking about it or hearing more?  This is the first I'm announcing 
the project.  I've just done everything myself to this point, so I've 
gotten as far as I could.  I was trying to do it as part of my Ph.D. 
research.  I'm currently looking to talk to people about the software 
rather than for people to use it yet. Well, I hope people like it.

Thank you,
Tim Armstrong

Received on Friday, 17 August 2012 07:02:40 UTC