@base . @prefix rdf: . @prefix : . @prefix dc: . @prefix rdfs: . @prefix swrl: . @prefix foaf: . @prefix error: . @prefix owl: . @prefix xsd: . @prefix swrlb: . <> dc:contributor "Marco Ocana"^^xsd:string, "Paolo Ciccarese"^^xsd:string, "Silvio Peroni"^^xsd:string ; dc:creator ; dc:date "March 19, 2012"^^xsd:string ; dc:format "application/rdf+xml"^^xsd:string ; dc:language "en" ; dc:title """The Collections Ontology (CO)"""@en ; a owl:Ontology ; owl:imports ; owl:versionInfo "2.0"^^xsd:string . :Bag a owl:Class ; rdfs:comment "Collection that can have a number of copies of each object"@en ; rdfs:label "bag"@en ; rdfs:subClassOf :Collection ; owl:disjointWith :Set . :Collection a owl:Class ; rdfs:comment "A group of objects that can be considered as a whole."@en ; rdfs:label "collection"@en ; rdfs:subClassOf owl:Thing, [ a owl:Restriction ; owl:allValuesFrom owl:Thing ; owl:onProperty :element ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty :size ] ; owl:disjointWith :Item . :Item a owl:Class ; rdfs:comment "Element belonging to a bag"@en ; rdfs:label "item"@en ; rdfs:subClassOf owl:Thing, [ a owl:Restriction ; owl:onProperty [ owl:inverseOf :item ] ; owl:someValuesFrom :Bag ] . :List a owl:Class ; rdfs:comment "An ordered array of items, that can be present in multiple copies"@en ; rdfs:label "list"@en ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty :lastItem ], [ a owl:Restriction ; owl:maxCardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty :firstItem ], [ a owl:Class ; owl:intersectionOf (:Bag [ a owl:Restriction ; owl:allValuesFrom :ListItem ; owl:onProperty :item ] ) ] . :ListItem a owl:Class ; rdfs:comment "element belonging to a list"@en ; rdfs:label "list item"@en ; rdfs:subClassOf :Item, [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty :index ] . :Set a owl:Class ; rdfs:comment "A collection that cannot contain duplicate elements."@en ; rdfs:label "set"@en ; rdfs:subClassOf :Collection . :element a owl:ObjectProperty ; rdfs:comment "The link to the members of a collection"@en ; rdfs:domain :Collection ; rdfs:label "has element"@en ; owl:propertyChainAxiom (:item :itemContent ) . :elementOf a owl:ObjectProperty ; rdfs:comment "The link to a collection in which the object is member."@en ; rdfs:label "is element of"@en ; owl:inverseOf :element . :firstItem a owl:FunctionalProperty, owl:ObjectProperty ; rdfs:comment "The link to the first item of the list."@en ; rdfs:domain :List ; rdfs:label "has first item"@en ; rdfs:range [ a owl:Class ; owl:intersectionOf (:ListItem [ a owl:Restriction ; owl:cardinality "0"^^xsd:nonNegativeInteger ; owl:onProperty :previousItem ] [ a owl:Restriction ; owl:hasValue "1"^^xsd:positiveInteger ; owl:onProperty :index ] ) ] ; rdfs:subPropertyOf :item . :firstItemOf a owl:ObjectProperty ; rdfs:comment "The link to a list in which the item is first item."@en ; rdfs:label "is first item of"@en ; rdfs:subPropertyOf :itemOf ; owl:inverseOf :firstItem . :followedBy dc:description "Given the list (I[1], I[2], ... , I[i-1], I[i], I[i+1], ... , I[n-1], I[n]), the item I[i] is followed by I[i+1], ... , I[n-1] and I[n]."@en ; a owl:ObjectProperty, owl:TransitiveProperty ; rdfs:comment "The link to the following item in a list."@en ; rdfs:domain :ListItem ; rdfs:label "is followed by"@en ; rdfs:range :ListItem . :index a owl:DatatypeProperty ; rdfs:comment "A number identifying the position, starting from 1, of a particular list item within a list."@en ; rdfs:domain :ListItem ; rdfs:label "has index"@en ; rdfs:range xsd:positiveInteger . :item a owl:ObjectProperty ; rdfs:comment "The link to every item of the bag"@en ; rdfs:domain :Bag ; rdfs:label "has item"@en ; rdfs:range :Item ; owl:propertyChainAxiom (:item :nextItem ) . :itemContent a owl:FunctionalProperty, owl:ObjectProperty ; rdfs:comment "The link to the actual resource to which the item refers."@en ; rdfs:domain :Item ; rdfs:label "has item content"@en ; rdfs:range [ a owl:Class ; owl:complementOf :Item ] . :itemContentOf a owl:ObjectProperty ; rdfs:comment "The link to the item that refers to the resource."@en ; rdfs:label "is item content of"@en ; owl:inverseOf :itemContent . :itemOf a owl:ObjectProperty ; rdfs:comment "The link to a bag in which the item is member."@en ; rdfs:label "is item of"@en ; owl:inverseOf :item . :lastItem a owl:FunctionalProperty, owl:ObjectProperty ; rdfs:comment "The link to the last item of the list."@en ; rdfs:domain :List ; rdfs:label "has last item"@en ; rdfs:range [ a owl:Class ; owl:intersectionOf (:ListItem [ a owl:Restriction ; owl:cardinality "0"^^xsd:nonNegativeInteger ; owl:onProperty :nextItem ] ) ] ; rdfs:subPropertyOf :item . :lastItemOf a owl:ObjectProperty ; rdfs:comment "The link to a list in which the item is last item."@en ; rdfs:label "is last item of"@en ; rdfs:subPropertyOf :itemOf ; owl:inverseOf :lastItem . :nextItem dc:description "Given the list (I[1], I[2], ... , I[i-1], I[i], I[i+1], ... , I[n-1], I[n]), the next item of I[i] is I[i+1]."@en ; a owl:FunctionalProperty, owl:ObjectProperty ; rdfs:comment "The link to the next item in a list."@en ; rdfs:label "has next item"@en ; rdfs:subPropertyOf :followedBy . :precededBy dc:description "Given the list (I[1], I[2], ... , I[i-1], I[i], I[i+1], ... , I[n-1], I[n]), the item I[i] is preceded by I[i-1], ... , I[2] and I[1]."@en ; a owl:ObjectProperty, owl:TransitiveProperty ; rdfs:comment "The link to the preceding item in a list."@en ; rdfs:label "is preceded by"@en ; owl:inverseOf :followedBy . :previousItem dc:description "Given the list (I[1], I[2], ... , I[i-1], I[i], I[i+1], ... , I[n-1], I[n]), the previous item of I[i] is I[i-1]."@en ; a owl:FunctionalProperty, owl:ObjectProperty ; rdfs:comment "The link to the previous item in a list."@en ; rdfs:label "has previous item"@en ; rdfs:subPropertyOf :precededBy ; owl:inverseOf :nextItem . :size dc:description """CO defines the size of a collection as the sum of the number of times entities that are part of the collection appear in it. This means that co:size considers how much each entity is involved by a particular collection, i.e.: - the size of the set {a, b, c} is three - the size of the bag [a, a, b, b, b, c] is five - the size of the list (a, b, c, b, a, b, c, c) is seven"""@en ; a owl:DatatypeProperty ; rdfs:comment "The number of item belonging to a collection."@en ; rdfs:domain :Collection ; rdfs:label "has size"@en ; rdfs:range xsd:nonNegativeInteger . dc:contributor a owl:AnnotationProperty . dc:creator a owl:AnnotationProperty . dc:date a owl:AnnotationProperty . dc:description a owl:AnnotationProperty . dc:format a owl:AnnotationProperty . dc:language a owl:AnnotationProperty . dc:publisher a owl:AnnotationProperty . dc:title a owl:AnnotationProperty . error:hasError a owl:DatatypeProperty . owl:Thing a owl:Class . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . a swrl:Variable . [] a owl:Class ; rdfs:subClassOf [ a owl:Class ; owl:intersectionOf (:List [ a owl:Restriction ; owl:onProperty :firstItem ; owl:someValuesFrom :Item ] [ a owl:Restriction ; owl:onProperty :lastItem ; owl:someValuesFrom :Item ] ) ] ; owl:intersectionOf (:List [ a owl:Restriction ; owl:onProperty :item ; owl:someValuesFrom :ListItem ] ) . [] a swrl:Imp ; swrl:body ([ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :itemOf ] [ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :itemOf ] [ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :index ] [ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :index ] [ a swrl:BuiltinAtom ; swrl:arguments ( 1 ) ; swrl:builtin swrlb:add ] ) ; swrl:head ([ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :nextItem ] ) . [] a swrl:Imp ; swrl:body ([ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :precededBy ] ) ; swrl:head ([ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 "A list item cannot be preceded by itself" ; swrl:propertyPredicate error:hasError ] ) . [] a swrl:Imp ; swrl:body ([ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :lastItem ] [ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :size ] ) ; swrl:head ([ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :index ] ) . [] a swrl:Imp ; swrl:body ([ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :itemOf ] [ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :index ] [ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :size ] ) ; swrl:head ([ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :lastItem ] ) . [] a swrl:Imp ; swrl:body ([ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :followedBy ] ) ; swrl:head ([ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 "A list item cannot be followed by itself" ; swrl:propertyPredicate error:hasError ] ) . [] a swrl:Imp ; swrl:body ([ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :lastItem ] [ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :index ] ) ; swrl:head ([ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :size ] ) . [] a swrl:Imp ; swrl:body ([ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :itemOf ] [ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 "1" ; swrl:propertyPredicate :index ] ) ; swrl:head ([ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :firstItem ] ) . [] a swrl:Imp ; swrl:body ([ a swrl:IndividualPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :nextItem ] [ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :index ] [ a swrl:BuiltinAtom ; swrl:arguments ( 1 ) ; swrl:builtin swrlb:add ] ) ; swrl:head ([ a swrl:DatavaluedPropertyAtom ; swrl:argument1 ; swrl:argument2 ; swrl:propertyPredicate :index ] ) .