PIMO Frequently Asked Questions FAQ

related to PimoOntology and OntologiesHowTo.

The PIMO ontology is explained in this document:

How to

How to extend the PIMO ontology or other ontologies with new classes?

I am working on project ACME-PAD and we want to add a class ACME-NOTE to PIMO. Can I just create this class in PIMO and upload it to the store somehow?

Answer: The general process is described in the PIMO-PDF document (see PimoOntology) in Section "Extending PIMO". You should not extend the PIMO namespace and add new classes there, as this namespace is hosted on www.semanticdesktop.org and maintained by OSCAF, a standardization organisation. What you do is create your own ACME ontology and upload it to your user's semantic desktops. Follow the instructions given in the PDF document. You should come up with something like this from the teaching.turtle file:

teaching:TeachingOntology a nrl:Ontology;
nao:creator teaching:TeachingOntologyCreator.
teaching:TeachingOntologyCreator a nao:Party;
rdfs:label "Knud Möller".

teaching:Student a rdfs:Class;
rdfs:subClassOf pimo:Person.

Save this as RDF/XML into a file and upload it into the semantic desktop. Uploading is described on UsingOntologies. Then, if everything works as expected, you should see the new class in the user interface and be able to create instances of it.

How to annotate a webpage or a file?

See  pimo.pdf, section "10.7 Tagging and Annotating Files".

We have a number of classes (such as language, gender) that provide enumerations as allowed classes for properties. Do we make all of these classes subclasses of thing?

This depends if the instances (english, german for language, male+female for gender) are a topic for furhter annotation. Making something a Thing does render the entity annotatable using "related", "hasTopic", etc. For gender, this may not be needed, for language it may be interesting. Again, the instances "english" and "german" can be modelled as instances in a shared ontology, the class "Language" would be either a normal RDFS class or a subclass of Thing. The domain of pimo and group ontologies is things that the user interact with and work with, is language a thing that users interact with? (in a translation office: yes)

How do I get all related objects to a given one?

Namely everything that is not a property, z.B. to get all Persons related to a specific Task Assuming "a?" is your given object. The best way is to query for properties that are sub-property of pimo:objectProperty:

SELECT ?x ?p WHERE {?a ?p ?x. ?p rdfs:subProperyOf pimo:objectProperty.}

Another way is to query all objects that are isntances of thing:

SELECT ?x ?p WHERE {?a ?p ?x. ?x rdf:type ?t. ?t rdfs:subClassOf pimo:Thing.}

Why ?

Why is the class Thing is a super-class and a subclass of the super-class ClassorThingorAssociation also?

Thing is a subclass of ClassOrThingOrAssociation (and intermediate classes). The ClassOrThingOrAssociation classes are used to model properties that have multiple entities in their domain. In rdfs, a property usually has only one domain, and we could not find a semantic name that describes the kind of entitity these properties refer to. It is an abstract class.

Why is Organisation is both a subclass of Thing and a subclass of Agent (which is a subclass of Thing also)?

Agent is an abstract class for things that can be an actor, everything is a thing. The additional subclass relation is superficial and may be removed in the future. Semantically, it does not matter.

Should we use instances in our domain ontology PIMO+TMI?

It depends on what you model. Instances are useful to model entities that are shared amongst the intended audience of the ontology. For example, Instances of the class Topic would be useful for an ontology modeling a scientific field, or instanced of Person, Project, and Organization are useful for company ontologies / organizational memories.

We dont think that Project should be a subclass of Process Concept but a subclass of Thing, since projects could be something more/different than a process

Oxford dictionary defines it as "an enterprise carefully planned to achieve a particular aim." The process aspect of projects is a distinctive property, projects usually have a defined duration and separate each other from other ongoing work in companies. May need further discussion.

Isn't Reification Enough for a Personal View?

The Semantic Web provides another possibility to express a personal view on information elements, namely using normal annotations to the existing elements (by adding triples to them) and then reifying the triples and annotating them as being expressed as personal view. Using named graphs and NRL is conceptually the same to reification and could also be used for this. The reasons not to use reification or Named Graphs as primary modelling concept are both technical and political:

  • Data expressed in PIMO should be long-lasting and not be influenced by changes of operating systems, applications or the movement of files. To ensure this, the primary URIs of things are generated in a separated namespace, tied to the user.
  • When Information Elements move, are deleted or are not accessible by the user anymore, they can be found again based on the identifying properties annotated to the stable URIs minted for Things.
  • Using annotations on existing URIs would make the decision for the primary URI for a Thing ambiguous. The structure of Things implies that there is one primary representation, the Thing with its minted URI, pointing to all other representations using relations. This allows implementations to quickly find the focus point (the Thing) from which all other information about it can be found. Although this is typically handled by inference engines, the current approach allows to find various sources of information about a thing in the globally distributed Semantic Web, where distributed inference is not available.
  • Reification is often criticized as being complicated, basing the whole system on it would direct this critique in the wrong direction.
  • From a philosophical point of view, each individual sees and perceives the world through their own eyes and interprets it according to their own mental model.

Why not Use owl:sameAs?

OWL's sameAs is an equivalence relation (transitive, reflexive, symmetric) whereas groundingOccurrence is directed and inverse functional. To express that a Thing and an entity from a domain ontology are modeling the same concept from the real world, and that users have agreed on that, use pimo:hasOtherRepresentation (or pimo:hasOtherConceptualization for classes).

Connecting two resources with owl:sameAs implies that they refer to the same real-world entity. As PIMO is subjective, pimo:groundingOccurrence expresses that from the point of view of the user, they are the same, but not necessarily for other users. Using sameAs would create n! relations between n same objects, a fully connected graph. Given an InformationElement as input, querying what Thing has this as a grounding occurrence returns in one step the correct single answer, using a simplest query possible. This cannot be done using owl:sameAs, because the answers are possibly many InformationElements from the model, the unique Thing being one of them, only distinguished by its class being a subclass of pimo:Thing. So the separation has the semantic reason that the view is directed from the user towards his InformationElements, and the technical reason that this allows an efficient realization in possible implementations.

Why isn't skos:Concept Used?

The interested reader may suggest to use skos:Concept instead of pimo:Thing. But then, all resources would have the same type, namely skos:Concept. Then all domain/range, subclass and subproperty features of RDF are not usable and existing ontologies (such as NRL or NIE) cannot be used to model Things. This is visible when looking at the skos:narrowerInstantive property, which is a parallel approach to rdf:type. We have tried SKOS in an evaluation and implemented a prototype using it during the EPOS project, coming to this conclusion.