Re: Enhancing object-oriented programming with OWL

Heiko,

I can confirm your words from my practice -- getting rid of any
object-oriented models above RDF level (that is, above Jena or similar
API) actually results in a much more generic, lean, and flexible
design. Our approach was presented at the Linked Enterprise Data
Patterns workshop [LEDP].

[LEDP] http://www.w3.org/2011/09/LinkedData/ledp2011_submission_1.pdf

Martynas
graphity.org

On Fri, Aug 17, 2012 at 10:49 AM, Heiko Paulheim
<paulheim@ke.tu-darmstadt.de> wrote:
> Hi Tim,
>
> there are quite a few frameworks doing similar things; JenaBean, mentioned
> by Martynas, being one of them.
>
> Although the idea looks tempting, I do not think that simply mapping a class
> model to an OWL/RDFS ontology in a 1:1 fashion will result in a usable RDF
> model, since common modeling practices in ontology engineering and OOX are
> different and not trivially compatible. Thus, I believe that allowing more
> flexible mappings between a class model and OWL/RDFS than just wiring each
> Java class to an OWL/RDFS class and each attribute to a property is
> required.
>
> See our 2011 DESWeb paper [1] for an in-depth discussion.
>
> Best,
> Heiko
>
>
>
> [1] Paulheim et al.: "Mapping Pragmatic Class Models to Reference
> Ontologies". In: 2nd International Workshop on
> Data Engineering meets the Semantic Web (DESWeb), 2011.
>
> Am 17.08.2012 09:33, schrieb Martynas Jusevičius:
>
>> Hey Timothy,
>>
>> are you familiar with JenaBean? It uses annotations for a similar purpose:
>> http://code.google.com/p/jenabean/wiki/AnnotationGuide
>>
>> Martynas
>> graphity.org
>>
>> On Thu, Aug 16, 2012 at 8:42 PM, Timothy Armstrong
>> <tim.armstrong@gmx.com> wrote:
>>>
>>> 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
>>>
>>>
>
> --
> Dr. Heiko Paulheim
> Knowledge Engineering Group
> Technische Universität Darmstadt
> Phone: +49 6151 16 6634
> Fax:   +49 6151 16 5482
> http://www.ke.tu-darmstadt.de/staff/heiko-paulheim
>
>

Received on Friday, 17 August 2012 08:40:29 UTC