Hello all, we were working around this repository for enhance the actual ontology. By the way we think that is a great start, so we will continuing working on this.
The main idea is to continue the work based on the ontology built by @ColinMaudry to generate a well-structured and semantically correct ontology based on the knowledge of other ontologies of the domain. The intentions is to follow the semantics of OCDS without specifying individual cases as is the case of Paraguay or other countries. Having a generic and compatible ontology.
Once the OCDS ontology (CORE) is finished, our intention is to generate a more specific ontology for our scenario (DNCP https://www.contrataciones.gov.py/ ) relating simultaneously with ontologies in the contracting’s domain, like PPROC. It would be as an extention of the first (CORE) ontology.
Now we explain some tasks that we have made to the initial proposal of Colin.
1. Import Ontology to Protege http://protege.stanford.edu/.
The first step was to import the ontology to Protege software. By doing this, the software restructured ontology and made basic inferences. The structure which was initiated was grouped according to semantic concepts (class by class). Protege structured the ontology according to is Annotation property, DataType or ObjectProperty and then ordered alphabetically taking by reference the name of the property.
2. Identify errors or inconsistencies.
Also some syntactic inconsistencies were found in the ontology since maybe it was done without using any tools for ontological modeling, which results in syntax errors.
For example, the range of the Formervalue class was defined as "xsd: Integer", since there is no such data, protege inferred that it was a new data type. We make the change letter case ( "Integer", "integer") to correct the error.
another typing error found where "comment" was written instead of "comment" and immediately protects inferred as a new data type.
The inference engine added an axiom stating that rdf: descriptions equals owl: AnnotationProperty.
3. Specify the level of data types.
The whole ontology uses the data type rdf: Property. Because ObjectProperty and DataType property are sub classes of Property, we decided to specialize relations with these subclasses.
An important consideration is that the DataType Properties doesn’t need to be defined as functional as most reasoning engines may understand that two literals are different. Example: a reasoner should know That "1" xsd: int is different from "2" xsd: int.
4. modeling considerations. To be implemented
An important consideration is that we use Individuals for open codelists and for closed codelists we use Enumerated Classes. This is because the classes enumerated prevent the declaration of new individuals belonging to this class, thus being more restrictive. Source; https://www.w3.org/TR/2004/REC-owl-guide-20040210/#EnumeratedClasses
In addition, the property was used rdf: Resource, when it has to be rdfs:Resource. In this case we decided that semantically the property is better suited DCTERMS.URI.