- From: Ivan Herman <ivan@w3.org>
- Date: Mon, 31 Mar 2008 15:35:52 +0200
- To: Bijan Parsia <bparsia@cs.man.ac.uk>
- CC: "Peter F. Patel-Schneider" <pfps@research.bell-labs.com>, public-owl-wg@w3.org
- Message-ID: <47F0E8B8.9020302@w3.org>
Bijan,
thanks to a long waiting at Logan airport yesterday, and in the hotel
lounge beforehand when was already kicked off my room:-), I attach the
turtle translation of the whole appendix. I have run it through a turtle
validator[1]. It almost validates except for the lines at the very end:
[ ] a owl:AllDifferent;
owl:distinctMembers ( :John :Mary :Bill :Susan )
because the validator does not understand the idiom of using [] in
subject position for an (unnamed) bnode (though this is clearly valid
syntax per[2]).
I think if this could be added to the primer appendix, this could be a
good start. I saw that you started to edit the document again, I did not
want to touch it for fear of messing up. I also think it could be a good
idea to add a turtle example to 1-2 places at the beginning of the
document (ie, new button, things like that) just to show the result. If
there is a decision of the group (maybe at the f2f?) as for how to go on
syntax-wise, I am happy to help in adding the examples overall.
B.t.w.: a simple autotranslation was not really a winner. For a primer
the proper organization, indentation, to be as close as possible to the
RDF/XML to be able to compare them, etc, were also important and my
first attempt to just run it through an automatic translation did not
cut it (although I did not spend too much time). Ie, most of it is
manual work (thanks to Logan aiport!:-)
Ivan
[1] http://rdfabout.com/demo/validator/
[2] http://www.w3.org/TeamSubmission/turtle/
Bijan Parsia wrote:
>
> On 28 Mar 2008, at 18:03, Ivan Herman wrote:
>
>> Bijan Parsia wrote:
>>>> 2. I am on record saying that I would like to have Turtle added to
>>>> this document as an alternative (and much more readable) syntax. I
>>>> want to put my money where my mouth is, so I will try to make a
>>>> turtle version of the RDF/XML ontology in the appendix; I hope to do
>>>> that before the f2f. Is that o.k. with you?
>>> Feel free, but I remind you that I'm aiming for automated
>>> translation, so your effort might be wasted work, in some sense. I'm
>>> also still thinking about the particular example and whether it's ideal.
>>> (Indeed, autotranslating the whole ontology is easy, it's doing the
>>> individual fragments that's a bit of a pita..not hard, merely a touch
>>> tedious. If having the whole ontology translated would suffice for
>>> you I can run the owl api and do it.)
>>
>> My ideal would be to have the turtle be integral part of the document,
>> just like RDF/XML and the rest.
>
> Oh, that's the goal, no doubt. It's just a bit tedious at the moment
> such that I'd rather spend my time working on other bits or on
> autotranslation. If you want to do it, I won't stop you at all. Just
> don't wack me if the day after you finish an autotranslation mechanism
> goes on line or I change the example entirely. As long as you are ok
> with that, go ahead.
>
> My point about the end is that it's very easy to translate and
> incorporate a "whole ontology" so I don't worry about wasted work there.
>
> If your concern is merely signaling, then you could translate the first
> few or we could put up a note. If you think it'll help feedback to have
> all the examples in turtle, then we should do that.
>
>> Autotranslating is indeed doable, though probably one would have to
>> massage to output a bit to make it more readable. But, of course,
>> doing the individual fragment that is, well,...
>
> I think it's fully doable.
>
>> O.k. Then let me turn the question back to you:-): what can I do to
>> help this process?
>
> Help with the autotranslator framework? Or, if you are ok with the
> translation maybe being thrown out, you can, of course, do it by hand.
> Obviously, more syntaxes sooner is better, but you should judge whether
> it's worth your effort.
>
> Cheers,
> Bijan.
>
>
--
Ivan Herman, W3C Semantic Web Activity Lead
Home: http://www.w3.org/People/Ivan/
PGP Key: http://www.ivan-herman.net/pgpkey.html
FOAF: http://www.ivan-herman.net/foaf.rdf
@prefix : <http://example.com/owl/families#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix owl11: <http://www.w3.org/2006/12/owl11#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix f: <http://example.com/owl/families#> .
@prefix g: <http://two.example.com/owl2/families#> .
<http://example.com/owl/families> a owl:Ontology;
owl:imports <http://two.example.com/owl2/families.owl>
.
:hasAncestor a owl:ObjectProperty, owl:TransitiveProperty, owl11:IrreflexiveProperty .
:hasChild a owl:ObjectProperty;
rdfs:subPropertyOf :hasAncestor;
rdfs:domain :Person;
rdfs:range :Person;
owl:equivalentProperty g:child
.
:hasDaughter a owl:ObjectProperty;
rdfs:range
[ a owl:Class;
owl:intersectionOf
( :Person
[ a owl:Restriction; owl:onProperty :hasGender; owl:hasValue :female]
)
];
rdfs:range :Person;
rdfs:domain :Person;
rdfs:subPropertyOf :hasChild;
rdfs:domain :Parent;
owl11:disjointObjectProperties :hasSon
.
:hasGender a owl:ObjectProperty .
:hasHusband owl:inverseOf :hasWife .
:hasSon a owl:ObjectProperty;
rdfs:range
[ a owl:Class;
owl:intersectionOf
( :Person
[ a owl:Restriction; owl:onProperty :hasGender; owl:hasValue :male]
)
];
rdfs:range :Person;
rdfs:domain :Person;
rdfs:subPropertyOf :hasChild;
rdfs:domain :Parent
.
:hasSpouse a owl:ObjectProperty, owl:SymmetricProperty, owl11:IrreflexiveProperty .
:hasWife a owl:ObjectProperty, owl:InverseFunctionalProperty,
owl:FunctionalProperty, owl11:AsymmetricProperty,
owl11:IrreflexiveProperty;
rdfs:domain :Person;
rdfs:range :Person;
rdfs:subPropertyOf :loves;
rdfs:range :Woman;
rdfs:subPropertyOf :hasSpouse;
rdfs:domain :Man
.
:loves a owl:ObjectProperty;
rdfs:domain :Person
.
:hasAge a owl:DatatypeProperty, owl:FunctionalProperty;
rdfs:domain :Person;
rdfs:range xsd:integer;
owl:equivalentProperty g:age
.
:Adult a owl:Class;
owl:equivalentClass
[ a owl:Class;
owl:intersectionOf
(
:Person
[ a owl:Restriction;
owl:onProperty :hasAge;
owl:someValuesFrom
[ a owl:DataRange;
owl11:onDataRange xsd:integer;
owl11:minInclusive "21"^^xsd:int;
]
]
);
];
owl:equivalentClass g:Grownup
.
:Child a owl:Class;
owl:equivalentClass
[ a owl:Class;
owl:intersectionOf
(
:Person
[ a owl:Class;
owl:complementOf
[ a owl:Restriction;
owl:onProperty :hasAge;
owl:someValuesFrom
[ a owl:DataRange;
owl11:onDataRange xsd:integer;
owl11:minInclusive "21"^^xsd:int;
]
]
]
)
]
.
:CivilMarriage a owl:Class .
:Man a owl:Class;
rdfs:subClassOf :Parent;
owl:equivalentClass
[ a owl:Class;
owl:intersectionOf
(
:Person
[ a owl:Restriction;
owl:onProperty :hasGender;
owl:hasValue :male;
]
)
]
.
:Marriage a owl:Class;
owl:equivalentClass
[ a owl:Class;
owl:unionOf ( :CivilMarriage :ReligiousMarriage )
]
.
:Narcissist a owl:Class;
owl:equivalentClass
[ a owl:Class;
owl:intersectionOf ( [ a owl11:SelfRestriction; owl:onProperty :loves ] :Person )
]
.
:Parent a owl:Class;
rdfs:subClassOf :Parent;
owl:equivalentClass
[ a owl:Class;
owl:intersectionOf
( [ a owl:Restriction;
owl:onProperty :hasChild;
owl11:onClass :Person;
owl:minCardinalityQ "1"^^xsd:nonNegativeInteger
]
:Person
)
]
.
:Person a owl:Class;
rdfs:subClassOf
[ a owl:Class;
owl:intersectionOf
(
[ a owl:Restriction;
owl:onProperty :hasGender;
owl:allValuesOf
[ a owl:Class;
owl:oneOf ( :female :male )
]
]
[ a owl:Restriction;
owl:onProperty :hasGender;
owl:cardinality "1"^^xsd:nonNegativeInteger
]
[ a owl:Restriction;
owl:onProperty :hasAge;
owl:cardinality "1"^^xsd:nonNegativeInteger
]
)
]
.
:ReligiousMarriage owl:disjointWith :CivilMarriage .
:Teenager a owl:Class;
owl:equivalentClass
[ a owl:Class;
owl:intersectionOf
(
:Person
[ a owl:Restriction;
owl:onProperty :hasAge;
owl:someValuesFrom
[ a owl:DataRange;
owl11:minInclusive "13"^^xsd:int;
owl11:maxInclusive "20"^^xsd:int;
owl11:onDataRange xsd:integer;
]
]
)
]
.
:Woman a owl:Class;
rdfs:subClassOf :Parent;
owl:equivalentClass
[ a owl:Class;
owl:intersectionOf
(
:Person
[ a owl:Restriction;
owl:onProperty :hasGender;
owl:hasValue :female
]
)
]
.
:YoungChild a owl:Class;
owl:equivalentClass
[ a owl:Class;
owl:intersectionOf
(
:Person
[ a owl:Class;
owl:complementOf
[ a owl:Class;
owl:unionOf ( :Adult :Teenager )
]
]
)
]
.
:Bill a [ a owl:Class; owl:complementOf :Narcissist ];
:hasAge "13"^^xsd:integer;
:hasGender :male
.
:Ellen a [ a owl:Restriction;
owl:onProperty :hasAge;
owl:someValuesFrom
[ a owl:DataRange;
owl11:minInclusive "15"^^xsd:int;
owl11:maxInclusive "21"^^xsd:int;
owl11:onDataRange xsd:integer;
]
]
.
:Emily a [ a owl:Restriction;
owl:onProperty :hasAge;
owl:someValuesFrom
[ a owl:DataRange;
owl:oneOf ( "39"^^xsd:integer "49"^^xsd:integer )
]
]
.
[ ] a owl11:NegativeDataPropertyAssertion;
rdf:subject :Jack;
rdf:predicate :hasAge;
rdf:object "53"^^xsd:integer
.
:Jeff a [ a owl:Restriction; owl:onProperty :hasChild; owl:cardinality "2"^^xsd:nonNegativeInteger ];
:hasAge "77"^^xsd:integer;
:hasChild :Ellen;
:hasWife :Emily;
:loves :Jeff;
:hasChild :Jack
.
:John a :Person;
:hasDaughter :Susan;
:hasGender :male;
:hasWife :Mary;
:hasSon :Bill;
:hasAge "33"^^xsd:integer;
owl:sameAs :Jack
.
:Mary a :Person;
:hasAge "31"^^xsd:integer;
:hasGender :female;
:hasSon :Bill;
:hasDaughter :Susan
.
:Susan
:hasAge "8"^^xsd:integer;
:hasGender :female
.
:female owl:sameAs g:feminine .
:male owl:sameAs g:masculine .
[ ] a owl:AllDifferent;
owl:distinctMembers ( :John :Mary :Bill :Susan )
[ ] a owl:AllDifferent;
owl:distinctMembers ( :Jeff :Emily :Jack :Ellen : Susan )
[ ] a owl:AllDifferent;
owl:distinctMembers ( :male :female )
( :hasSpouse :hasSon ) rdfs:subPropertyOf :hasSon .
( :hasSpouse :hasDaughter ) rdfs:subPropertyOf :hasDaughter .
Received on Monday, 31 March 2008 13:36:42 UTC