Skip to content

Utility templates

Dense property

@prefix : <http://odp.aspectowl.xyz/util/0.1#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ottr:  <http://ns.ottr.xyz/0.4/> .
@prefix o-owl-re: <http://tpl.ottr.xyz/owl/restriction/0.1/> .
@prefix o-owl-ax: <http://tpl.ottr.xyz/owl/axiom/0.1/> .
@prefix o-rdf: <http://tpl.ottr.xyz/rdf/0.1/> .


:DenseProperty [ ! owl:ObjectProperty ?R ] :: {

  # Property Chain
  o-rdf:Type(?R, owl:ObjectProperty),
#  o-owl-ax:SubObjectPropertyOfChain(?R, (?R, ?R)),
  o-owl-ax:SubObjectPropertyOfChain(?R, (:r, :r)),

  # owl:Thing SubClassOf: not (R some Self)
  o-owl-ax:SubClassOf(owl:Thing, ?_b0),
  o-rdf:Type(?_b0, owl:Class),
  ottr:Triple(?_b0, owl:complementOf, ?_b1),
  o-rdf:Type(?_b1, owl:Restriction),
  ottr:Triple(?_b1, owl:onProperty, ?R),
  ottr:Triple(?_b1, owl:hasSelf, true)
} .

Coming soon. 🚧

Euclidian property

@prefix : <http://odp.aspectowl.xyz/util/0.1#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix swrl:  <http://www.w3.org/2003/11/swrl#> .
@prefix ottr:  <http://ns.ottr.xyz/0.4/> .
@prefix o-owl-re: <http://tpl.ottr.xyz/owl/restriction/0.1/> .
@prefix o-owl-ax: <http://tpl.ottr.xyz/owl/axiom/0.1/> .
@prefix o-rdf: <http://tpl.ottr.xyz/rdf/0.1/> .


:EuclidianProperty [ ! owl:ObjectProperty ?R ] :: {
  o-rdf:Type(?R, owl:ObjectProperty),

  # Rule: R(?w, ?v), R(?w, ?u) -> R(?v, ?u)
  o-rdf:Type(<urn:swrl#u>, swrl:Variable),
  o-rdf:Type(<urn:swrl#v>, swrl:Variable),
  o-rdf:Type(<urn:swrl#w>, swrl:Variable),

  o-rdf:Type(?_rule, swrl:Imp),

  ottr:Triple(?_rule, swrl:body, ?_body),
  o-rdf:Type(?_body, swrl:AtomList),
  ottr:Triple(?_body, rdf:first, ?_b0),
  o-rdf:Type(?_b0, swrl:IndividualPropertyAtom),
  ottr:Triple(?_b0, swrl:propertyPredicate, ?R),
  ottr:Triple(?_b0, swrl:argument1, <urn:swrl#w>),
  ottr:Triple(?_b0, swrl:argument2, <urn:swrl#v>),
  ottr:Triple(?_body, rdf:rest, ?_b1),
  o-rdf:Type(?_b1, swrl:AtomList),
  ottr:Triple(?_b1, rdf:first, ?_b2),
  o-rdf:Type(?_b2, swrl:IndividualPropertyAtom),
  ottr:Triple(?_b2, swrl:propertyPredicate, ?R),
  ottr:Triple(?_b2, swrl:argument1, <urn:swrl#w>),
  ottr:Triple(?_b2, swrl:argument2, <urn:swrl#u>),
  ottr:Triple(?_b2, rdf:rest, rdf:nil),

  ottr:Triple(?_rule, swrl:head, ?_head),
  o-rdf:Type(?_head, swrl:AtomList),
  ottr:Triple(?_head, rdf:first, ?_b3),
  o-rdf:Type(?_b3, swrl:IndividualPropertyAtom),
  ottr:Triple(?_b3, swrl:propertyPredicate, ?R),
  ottr:Triple(?_b3, swrl:argument1, <urn:swrl#v>),
  ottr:Triple(?_b3, swrl:argument2, <urn:swrl#u>),
  ottr:Triple(?_head, rdf:rest, rdf:nil)
} .

Coming soon. 🚧

Serial property

@prefix : <http://odp.aspectowl.xyz/util/0.1#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ottr:  <http://ns.ottr.xyz/0.4/> .
@prefix o-owl-re: <http://tpl.ottr.xyz/owl/restriction/0.1/> .
@prefix o-owl-ax: <http://tpl.ottr.xyz/owl/axiom/0.1/> .
@prefix o-rdf: <http://tpl.ottr.xyz/rdf/0.1/> .


:SerialProperty [ ! owl:ObjectProperty ?R ] :: {
  o-rdf:Type(?R, owl:ObjectProperty),

  # owl:Thing SubClassOf: R some owl:Thing
  o-owl-ax:SubClassOf(owl:Thing, ?_b0),
  o-owl-re:ObjectSomeValuesFrom(?_b0, ?R, owl:Thing)
} .

Coming soon. 🚧

Shift-reflexive property

@prefix : <http://odp.aspectowl.xyz/util/0.1#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix swrl:  <http://www.w3.org/2003/11/swrl#> .
@prefix ottr:  <http://ns.ottr.xyz/0.4/> .
@prefix o-owl-re: <http://tpl.ottr.xyz/owl/restriction/0.1/> .
@prefix o-owl-ax: <http://tpl.ottr.xyz/owl/axiom/0.1/> .
@prefix o-rdf: <http://tpl.ottr.xyz/rdf/0.1/> .

:ShiftReflexiveProperty [ ! owl:ObjectProperty ?R ] :: {
  o-rdf:Type(?R, owl:ObjectProperty),
  o-rdf:Type(?_R1, owl:ObjectProperty),
  ottr:Triple(?_R1, owl:inverseOf, ?R),

  o-rdf:Type(?_b0, owl:Class),
  o-owl-re:SomeValuesFrom(?_b0, ?_R1, owl:Thing),

  o-rdf:Type(?_b1, owl:Restriction),
  ottr:Triple(?_b1, owl:onProperty, ?R),
  ottr:Triple(?_b1, owl:hasSelf, true),

  o-owl-ax:SubClassOf(?_b0, ?_b1)
} .

Coming soon. 🚧

EquivUnionHasValueOneOf

@prefix : <http://odp.aspectowl.xyz/util/0.1#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ottr:  <http://ns.ottr.xyz/0.4/> .
@prefix o-owl-re: <http://tpl.ottr.xyz/owl/restriction/0.1/> .
@prefix o-owl-ax: <http://tpl.ottr.xyz/owl/axiom/0.1/> .
@prefix o-rdf: <http://tpl.ottr.xyz/rdf/0.1/> .

:EquivUnionHasValueOneOf [ ! owl:Class ?C, ! owl:ObjectProperty ?R, ? owl:NamedIndividual ?I ] :: {

  o-owl-re:HasValue(?_hv, ?R, ?I),
  o-owl-re:ObjectOneOf(?_oo, (?I)),
  o-owl-ax:EquivObjectUnionOf(?C, (?_hv, ?_oo))
} .

Coming soon. 🚧