W3C home > Mailing lists > Public > www-rdf-interest@w3.org > September 2003

Re: Enumeration in RDF?

From: Francesco CannistrÓ <fracan@inwind.it>
Date: Wed, 17 Sep 2003 18:17:31 +0200
Message-ID: <01d701c37d37$33b5c690$70941d97@Matrix>
To: <www-rdf-interest@w3.org>

While studying the possibility to type containers I have investigated many
approaches
(not always correct). Finally, I think I have found a really complete
solution for typing containers, but it is too much complex. I think the most
suitable approach remains the definition of customized vocabulary semantics.
Below I propose to your attention the solution that I found (but that I
discarded). It is an ontology that allows (ops ... should allow) to strictly
constrain a container to have a specific number of members of a specific
type.


Best Regards,
Francesco CannistrÓ

---------
---------

<owl:Class rdf:ID="ContainerMembershipStatement">
  <rdfs:subClassOf rdf:resource="&rdf-ns;Statement"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <rdf:Description rdf:about="&rdf-ns;Statement"/>
    <owl:Restriction>
      <owl:onProperty rdf:resource="&rdf-ns;predicate"/>
      <owl:allValuesFrom
rdf:resource="&rdfs-ns;ContainerMembershipProperty"/>
    </owl:Restriction>
    <owl:Restriction>
      <owl:onProperty rdf:resource="&rdf-ns;subject"/>
      <owl:allValuesFrom rdf:resource="&rdf-ns;Container"/>
    </owl:Restriction>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="MyTypedContainerMembershipStatement">
  <rdfs:subClassOf rdf:resource="#ContainerMembershipStatement"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <rdf:Description rdf:about="#ContainerMembershipStatement"/>
    <owl:Restriction>
      <owl:onProperty rdf:resource="&rdf-ns;object"/>
      <owl:allValuesFrom rdf:resource="#MyType"/>
    </owl:Restriction>
    <owl:Restriction>
      <owl:onProperty rdf:resource="&rdf-ns;object" />
      <owl:minCardinality
rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
    </owl:Restriction>
    <owl:Restriction>
      <owl:onProperty rdf:resource="&rdf-ns;object" />
      <owl:maxCardinality
rdf:datatype="&xsd;nonNegativeInteger">5</owl:maxCardinality>
    </owl:Restriction>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="MyTypedContainer">
  <rdfs:subClassOf rdf:resource="&rdf-ns;Container"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <rdf:Description rdf:about="&rdf-ns;Container"/>
    <owl:Restriction>
      <owl:onProperty>
        <owl:ObjectProperty>
          <owl:inverseOf>
            <owl:ObjectProperty rdf:about="&rdf-ns;subject" />
          </owl:inverseOf>
        </owl:ObjectProperty>
      </owl:onProperty>
      <owl:allValuesFrom
rdf:resource="#MyTypedContainerMembershipStatement"/>
    </owl:Restriction>
  </owl:intersectionOf>
</owl:Class>
Received on Wednesday, 17 September 2003 12:18:13 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:52:02 GMT