Ah, I didn't look at the RDF/XML snippet. Yes, then it's clear and your solution should work perfectly.
Cheers, Lorenz > Hi Lorenz, > > On 09/11/16 09:17, Lorenz B. wrote: >> Hello Dave, >> >> my question would be whether he ask how to set this singleton >> enumeration as >> >> a) the range of the property or >> >> b) used in a class expression with >> >> b1) owl:hasValue or >> >> b2) like you suggested to use owl:allValuesFrom > > The example "desired output" RDF/XML seemed fairly clear that the goal > is to create an allValuesFrom restriction. > > Cheers, > Dave > >> >> >> >> Cheers, >> Lorenz >> >>> On 08/11/16 14:02, Jos Lehmann wrote: >>>> Hi there >>>> >>>> >>>> >>>> I am new to jena and I'm trying the write the two following >>>> restrictions into an owl (rdf/xml) ontology: >>>> >>>> >>>> >>>> - in_category property should range over a singleton (Collection) >>>> containing only #Bo, >>> >>> You need to create an enumerated class (oneOf) containing #Bo (see >>> OntModel#createEnumeratedClass) and pass that class to the >>> allValuesFrom restriction. >>> >>>> - is_XXX_type should range over a singleton containing only the >>>> Boolean value "true" >>> >>> That's OWL2 which is not supported by Jena's convenience OntAPI. So >>> you'll need top do this at the RDF level - create an anonymous >>> instance of rdfs:Datatype, create a RDFList containing boolean true >>> then link them with an owl:oneOf property, then again pass that to the >>> allValuesFrom. >>> >>> Dave >>> >>>> My code (below) cannot write the parts of the desired output (below) >>>> marked with ==>. >>>> >>>> >>>> >>>> So far, I have been working to achieve the second part of the desired >>>> output (i.e. the #is_XXX_type part), and that's my priority, but >>>> suggestions on the first part would be welcome. >>>> >>>> >>>> >>>> >>>> >>>> DESIRED OUTPUT >>>> >>>> >>>> >>>> <owl:Class >>>> rdf:about="http://www._.net/ontologies/2016/XXXs_Ontology.owl#B7"> >>>> >>>> <rdfs:subClassOf >>>> rdf:resource="http://www._.net/ontologies/2016/XXXs_Ontology.owl#B"/> >>>> >>>> <rdfs:subClassOf >>>> rdf:resource="http://www._.net/ontologies/2016/XXXs_Ontology.owl#T"/> >>>> >>>> <rdfs:subClassOf> >>>> >>>> <owl:Restriction> >>>> >>>> <owl:onProperty >>>> rdf:resource="http://www._.net/ontologies/2016/XXXs_Ontology.owl#in_category"/> >>>> >>>> >>>> <owl:allValuesFrom> >>>> >>>> ==> <owl:Class> >>>> >>>> ==> <owl:oneOf rdf:parseType="Collection"> >>>> >>>> ==> <rdf:Description >>>> rdf:about="http://www._.net/ontologies/2016/XXXs_Ontology.owl#Bo"/> >>>> >>>> ==> </owl:oneOf> >>>> >>>> ==> </owl:Class> >>>> >>>> </owl:allValuesFrom> >>>> >>>> </owl:Restriction> >>>> >>>> </rdfs:subClassOf> >>>> >>>> <rdfs:subClassOf> >>>> >>>> <owl:Restriction> >>>> >>>> <owl:onProperty >>>> rdf:resource="http://www._.net/ontologies/2016/XXXs_Ontology.owl#is_XXX_type"/> >>>> >>>> >>>> <owl:allValuesFrom> >>>> >>>> ==> <rdfs:Datatype> >>>> >>>> ==> <owl:oneOf> >>>> >>>> ==> <rdf:Description> >>>> >>>> ==> <rdf:type >>>> rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#List"/> >>>> >>>> ==> <rdf:first >>>> rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</rdf:first> >>>> >>>> >>>> ==> <rdf:rest >>>> rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/> >>>> >>>> ==> </rdf:Description> >>>> >>>> ==> </owl:oneOf> >>>> >>>> </rdfs:Datatype> >>>> >>>> </owl:allValuesFrom> >>>> >>>> </owl:Restriction> >>>> >>>> </rdfs:subClassOf> >>>> >>>> </owl:Class> >>>> >>>> >>>> >>>> >>>> >>>> MY CODE (note: the new class is derived from an existing individual) >>>> >>>> >>>> >>>> OntClass newClass = >>>> model2.createClass(thisInstance.toString()); >>>> >>>> >>>> >>>> DatatypeProperty is_XXX_type = >>>> model2.createDatatypeProperty("http://www._.net/ontologies/2016/XXXs_Ontology.owl#is_XXX_type"); >>>> >>>> >>>> >>>> >>>> is_XXX_type.setRange(XSD.xboolean); >>>> >>>> >>>> >>>> Restriction restriction = >>>> model2.createAllValuesFromRestriction(null, is_ XXX_type, >>>> XSD.xboolean); >>>> >>>> >>>> >>>> newClass.addSuperClass(restriction); >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> MY PRESENT OUTPUT FOR THE is_XXX_type CASE: >>>> >>>> >>>> >>>> <owl:Class >>>> rdf:about="http://www._.net/ontologies/2016/XXXs_Ontology.owl#B7"> >>>> >>>> <rdfs:subClassOf> >>>> >>>> <owl:Restriction> >>>> >>>> <owl:allValuesFrom >>>> rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/> >>>> >>>> <owl:onProperty> >>>> >>>> <owl:DatatypeProperty >>>> rdf:about="http://www._.net/ontologies/2016/XXXs_Ontology.owl#is_XXX_type"/> >>>> >>>> >>>> </owl:onProperty> >>>> >>>> </owl:Restriction> >>>> >>>> </rdfs:subClassOf> >>>> >>>> </owl:Class> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> Thank you in advance for the advice. >>>> >>>> >>>> >>>> Jos Lehmann >>>> >>>> >>>> >>>> Knowledge Management >>>> >>>> Bauhaus Luftfahrt e.V. >>>> >>>> GERMANY >>>> >>>> >>>> >>>> >>>> >>>> >>> > -- Lorenz Bühmann AKSW group, University of Leipzig Group: http://aksw.org - semantic web research center
