-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OWL-lite cardinality <=> 0/1 #47
Comments
booleans isList en isMandatory |
Issue is opgelost in revisie 371, Joop graag reviewen. |
Eigenlijk dienen alle commits aan branches/Teun/MandatoryMultiValue gereviewed te worden (r364, r365, r367, r368, r370 & r371) @TeunTheunissen, Wellicht is het handig om, wanneer je denkt dat het goed is en het goed bouwt incl. unit-tests, branches/Teun/MandatoryMultiValue te mergen met trunk zodat Joop de resulterende commit daaruit in één keer kan reviewen (dan hoeft Joop ook geen switch te doen naar de branch en weer terug naar trunk). |
Alex, ik heb in eerste instantie ontwikkeld in de branch, maar bij een update was de trunk ook aangepast. Ik heb daarna verder ontwikkeld in de trunk, die is dus uptodate, Joop hoeft zover ik kan overzien niet te switchen en kan de laatste revisie van de trunk reviewen. |
@AlexMekkering Wellicht kunnen we het zondag nog eens hebben over subversion |
De branch is niet gemerged met de trunk, dus Joop zal je wijzigingen niet zien in de trunk, zie: Zie voor meer info over het mergen bijv. https://svnext.ou.nl/INF_Studenten_ABI_team30/Environment%20&%20Misc/Resources/Subversion/TortoiseSVN-1.8.8-nl.pdf hoofdstuk 4.20.2. |
Dank, hoofdstuk gelezen en een merge uitgevoerd. We kunnen het er vanmiddag over hebben. |
Review goed! Ik heb nog even de vrijheid genomen om de naamgeving in de gui te normaliseren: AutoComplete, Singlevalue en multiValue wordt Auto complete, Single value en Multi value, staat uniform net wat netter samen met Hide label, Change type, etc. zie mijn commit die later komt vanavond (review niet nodig). |
Implementatie was nog niet compleet: de attributen owf:isList en owf:isMandatory werden niet verwerkt bij het inlezen van een fresnel bestand (load Fresnel). @TeunTheunissen please review. |
@LloydRutledge De implementatie heeft een vaste default voor de waarden van IsList (true) en Mandatory (false). Deze waarden worden niet geinitialiseerd vanuit de ontology, was dat wel de bedoeling? Ik heb de dbpedia ontology nagezocht en er wordt nergens een cardinaliteit gedefinieerd. |
@TeunTheunissen Ja, dat klopt waarschijnlijk. Cardinaliteit is leerzaam en interessant in class maar buiten RDFS-plus een dus iets gevaarlijk in het praktijk, en dus lang niet altijd gebruikt waar het conceptueel toch van toepassing zou zijn. Fresnel2wiki werkt ermee, toch? De aanpak voor de paper lijkt dat ik de opgeslagen Fresnel code edit met de bijhorende Fresnel-OWF triples en dan terug in de plugin zetten en dan de wiki maken. Moet dat werken? Voor de paper is dat prima. @AlexMekkering ik neem aan dat de GUI niks heeft om die direct om aan te passen. Een minder goed alternatief is om de DBPedia ontologie uit te breiden met OWF cardinaliteit op die properties. Direct op de DBP properties kan maar dan is het meer netjes als je subproperties ervan maken. Maar dan hoe krijg je die aan de lens? En dan ben je een onto aan het maken alleen om de interface te krijgen. |
De GUI heeft wel een manier om (indirect) de cardinaliteit voor een Property in te stellen, nl:
Bedoel je dit? |
@lloyd, zoals Alex het beschrijft werkt het. Je kan dus met de Gui de owf style properties isList en isMandatory instellen en daarna meteen de wiki code genereren. Er hoeft niet geedit te worden buiten de plugin om. |
De GUI interface ervoor is goed. Met aardig verrassingen! Maar ik krijg default gedrag niet. Noch in de GUI noch de opgeslagen Fresnel noch in de opgeslagen wikicode. Minstens niet met mijn test onto van de link hieronder. Werkt default generator van Mandatory en geen list uit andere test ontologieën, of uit bepaalde OWL construct patronen? De code zit op https://svnext.ou.nl/INF_Studenten_ABI_team30/Environment%20&%20Misc/Test/testInOnto.n3 De weergave van default de Frensel GUI is: Die wel met twee dataproperties op een test class. En die test class subclasst naar property min/max 1 restrictions. Maar er is geen _ of + bij de properties in de box. En de pulldown toont ook niet mandatory en list. |
Klopt, Teun. Met de GUI kan je mandatory aan en list uitzetten. Komt goed in de paper, Als dat ook via default kan van card <=> 1 wordt het ook leuk in de paper. |
Hallo Alex, Joop, Ik heb onze plugin aangepast zodat de multivalue/singlevalue en mandatory property's uit de data ontology gelezen worden. @AlexMekkering graag een review |
De merge is helemaal goed gegaan, ik wacht voor de testen je unit tests nog even af.
De afronding van de review volgt na het toevoegen van de testen. |
Mooi dat de merge goed gegaan is. Dank voor de refactorings. Ik heb aan de classe ontology de methode findClass() toegevoegd die een classe zoekt op basis van de uri. De methode findProperty() is toegevoegd aan de classe Class en zoekt de property op basis van de opgegeven uri. Vr.gr. Teun |
@TeunTheunissen, na het reviewen van de unit test heb ik de volgende opmerkingen:
Een property kan voor meerdere klassen gedefinieerd zijn. De cardinaliteit geldt volgens mij daarom niet voor een property zelf, maar voor een property voor een specifieke klasse: je kunt niet spreken van de cardinaliteit van een property, wanneer je de klasse niet weet waar de cardinaliteit van die property voor geldt. Dit zie je ook terug in de manier waaarop het binnen de ontologie gedefinieerd is: de restriction geldt voor de combinatie van klasse en property (gedefinieerd door owl:onProperty en owl:onClass). Wat vind jij? |
Dank voor de review ik ga deze punten oplossen. |
Maar voor de property zelf worden de min- en maxcardinality gezet, er is geen onderscheid voor dezelfde property voor verschillende klassen, dus er kan maar één definitie zijn (de min- en max-cardinality van de ontology.Property). Zal dan niet voor elke lens waar die property op gedefinieerd is, de isList en isMandatory eigenschappen hetzelfde gedaan worden? |
In de package 'nl.ou.fresnelforms.ontology' heeft de Property classe de attributen mincardinality en maxcardinality. deze classe wordt geinstantieerd in een array in de classe 'Class' hiermee zijn de cardinaliteiten gedefinieerd voor propties van een bepaalde classe. In de nl.ou.fresnelforms.fresnel worden de attributen 'isList' en 'mandatory' geinstantieerd in een proeprtybinding array in de lens classe. Dus hiermee is ook de link tussen lens en property eigenschappen vastgelegd. De fresnel code die gegenereerd wordt zijn de 'islist' en 'ismandatory' gekoppeld aan een enkel attribuut via de format definitie van dat attribuut. zie hieronder voor de james-dean ontology: _:b0 a fresnel:propertyDescription ; :ownsMovieOneMovieOwnerLensFormat Zover ik kan overzien zijn de cardinaliteiten gekoppeld aan properties van classe of lensen. |
Ik heb de james dean ontology uitgebreid met wat verschillende klassen en zie nu dat ze alle dezelfde islist en mandatory properties hebben staan.... |
Volgens mij ben je trouwens nog een bestand vergeten te mergen (of committen) met trunk, nl. PropertyLabelAlphabetComparator in package nl.ou.fresnelforms.view. |
Ik heb nog even naar je verhaal over de instantiatie van de properties gekeken en volgens mij zit het als volgt:
Mijn conclusie is daarom dat een specifieke Property object, of dat nu in 0, 1 of 100 klassen gebruikt wordt, slechts eenmaal geinstantieerd wordt. Wanneer je daaraan vervolgens min-en maxcardinality velden toevoegt, zullen deze voor elke property/klasse combinatie voor een property hetzelfde zijn omdat vanuit een willekeurige klasse waar die property voor geldt, telkens verwezen wordt naar dat ene Property-object. Dit gedrag lijkt me trouwens wel in lijn met hoe Properties en Classes gedefinieerd zijn binnen RDFS. De PropertyBinding binnen de nl.ou.fresnelforms.fresnel package representeert een relatie tussen een property en een class (eigenlijk die tussen een property en een Lens), dus die isList en mandatory zijn daar wel op hun plaats. |
De classe PropertyLabelAlphabetComparator is toegevoegd aan de repository. |
Alex, ik heb de code nog eens doorgelopen en ben het helemaal met je eens, er wordt verwezen naar een en hetzelfde property object. |
Nog eens de code bekeken, een clone constructor is geen best idee, er wordt teveel dubbel opgeslagen. Ik denk ook dat we moeten gaan voor een extra klasse. |
@AlexMekkering, die zijn goede punten over de context en "range" van een cardinality restriction. De cardinality OWL properties vallen altijd in een owl:Restriction die ook altijd een owl:onProperty class heeft. Ja, geen owl:onClass property. Maar owl:Restriction bepaalde een class. En dan meestal als object in een subClassOf of equivalent property voor een al benoemde class. Zo schrijft Protégé cardinality op in OWL. En die restrictions zijn dan op de combinaties van property en class. En snel opstelling via Protégé geeft:
@TeunTheunissen, is deze het patroon dat de default Fresnel-OWL generator zoekt? En zet ie dan de mandatory en/of list (of default niet) in alleen de Form voor die ene class? |
@LloydRutledge Yep, er wordt gezocht naar restrictions voor een classe waarbij gekeken wordt naar equivalente en naar subclasses. Daarna wordt gefilterd op min en maxcardinaliteit. Vervolgens wordt de min/max cardinaliteit toegkend aan de juiste property. Dit gaat veranderen zodat de min en max cardinaliteit toegekend wordt aan classe in combinatie met de property. |
De cardinalities zijn nu geimplementeerd per classe dmv de classe PropertyRestriction. De james Dean ontology is uitgebreid met de combinaties die mogelijk zijn met islist en ismandatory, 4 dus. De unittest is aangepast. @AlexMekkering graag reviewen. |
Review OK. Ik het gevoel dat het wat simpeler kan (er is sprake van duplicate code), maar functioneel gezien is het helemaal correct. De unit tests zijn ook netjes en volledig uitgevoerd, dus 👍 Ik heb nog even wat checkstyle meldingen opgelost in r494. @TeunTheunissen, wil jij OWFdev.xlsx in de design map hiervoor nog even up-to-date maken? |
Ik heb de duplicate code gezien maar kon geen mooie oplossing ervoor bedenken dus heb ik het zo maar laten staan. Dank voor de checkstyle meldingen. De OWFdev.xlsx sheet is aangepast. |
Implementeer a.u.b. de cardinaliteit die in de OWL dialecten behalve OWL Full zit. Dus min, max en gewoon cardinaliteit met allen 0 en 1 als waarden. Milestone is Forms omdat het nodig voor de TBL scenario lijkt. Assignee lijkt me Teun omdat het moet met de onto beginnen. En dan tegelijketijd:
Deze rijen in de tabel in https://svnext.ou.nl/INF_Studenten_ABI_team30/source/trunk/FresnelForms/design/OWFdev.xlsx zijn dus rood.
The text was updated successfully, but these errors were encountered: