- From: Timothy Armstrong <tim.armstrong@gmx.com>
- Date: Thu, 16 Aug 2012 13:42:41 -0400
- To: semantic-web@w3.org
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