def _create_triples(self, ontology):
     ClassConstruct._create_triples(self, ontology)
     ontology.add_triple(self.storid, rdf_type, owl_restriction)
     ontology.add_triple(self.storid, owl_onproperty, self.property.storid)
     if (self.type == SOME) or (self.type == ONLY) or (
             self.type == VALUE) or (self.type == HAS_SELF):
         value = _universal_datatype_2_abbrev.get(
             self.value) or ontology.world._to_rdf(self.value)
         ontology.add_triple(self.storid, self.type, value)
     else:
         if self.value is None:
             if not self.cardinality is None:
                 ontology.add_triple(
                     self.storid, _qualified_2_non_qualified[self.type],
                     '"%s"%s' % (self.cardinality, _non_negative_integer))
         else:
             if not self.cardinality is None:
                 ontology.add_triple(
                     self.storid, self.type,
                     '"%s"%s' % (self.cardinality, _non_negative_integer))
             value = _universal_datatype_2_abbrev.get(self.value)
             if value:
                 ontology.add_triple(self.storid, owl_ondatarange, value)
             else:
                 value = ontology.world._to_rdf(self.value)
                 ontology.add_triple(self.storid, owl_onclass, value)
Exemplo n.º 2
0
 def _range_changed(Prop, old):
   new = frozenset(Prop.range)
   old = frozenset(old)
   for x in old - new:
     x2 = _universal_datatype_2_abbrev.get(x) or x.storid
     Prop.namespace.ontology.del_triple(Prop.storid, rdf_range, x2)
     if isinstance(x, ClassConstruct): x._set_ontology(None)
   for x in new - old:
     if isinstance(x, ClassConstruct): x._set_ontology(Prop.namespace.ontology)
     x2 = _universal_datatype_2_abbrev.get(x) or x.storid
     Prop.namespace.ontology.add_triple(Prop.storid, rdf_range, x2)
Exemplo n.º 3
0
 def _range_changed(Prop, old):
   new = frozenset(Prop.range)
   old = frozenset(old)
   for x in old - new:
     x2 = _universal_datatype_2_abbrev.get(x) or x.storid
     Prop.namespace.ontology._del_obj_triple_spo(Prop.storid, rdf_range, x2)
     if isinstance(x, Construct): x._set_ontology(None)
   for x in new - old:
     if isinstance(x, Construct): x = x._set_ontology_copy_if_needed(Prop.namespace.ontology, Prop.range)
     x2 = _universal_datatype_2_abbrev.get(x) or x.storid
     Prop.namespace.ontology._add_obj_triple_spo(Prop.storid, rdf_range, x2)
     
   if "_range_iri" in Prop.__dict__: del Prop._range_iri
Exemplo n.º 4
0
 def _set_list(self, bnode, l):
     if not l:
         self.add_triple(bnode, rdf_first, rdf_nil)
         self.add_triple(bnode, rdf_rest, rdf_nil)
         return
     for i in range(len(l)):
         self.add_triple(
             bnode, rdf_first,
             _universal_datatype_2_abbrev.get(l[i]) or self._to_rdf(l[i]))
         if i < len(l) - 1:
             bnode_next = self.world.new_blank_node()
             self.add_triple(bnode, rdf_rest, bnode_next)
             bnode = bnode_next
         else:
             self.add_triple(bnode, rdf_rest, rdf_nil)