<?xml version="1.0"?>
<rdf:RDF
    xmlns:dcmitype="http://purl.org/dc/dcmitype/"
    xmlns:oqual="http://www.loa-cnr.it/ontologies/EVAL/oQual.owl#"
    xmlns:odalign="http://www.loa-cnr.it/ontologies/OD/odAlignment.owl#"
    xmlns:sys="http://www.loa-cnr.it/ontologies/Systems.owl#"
    xmlns:kco="http://www.loa-cnr.it/ontologies/KCO/KCO.owl#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:omv="http://omv.ontoware.org/2005/05/ontology#"
    xmlns:inf="http://www.loa-cnr.it/ontologies/InformationObjects.owl#"
    xmlns:pla="http://www.loa-cnr.it/ontologies/Plans.owl#"
    xmlns:dol="http://www.loa-cnr.it/ontologies/DOLCE-Lite.owl#"
    xmlns:edns="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#"
    xmlns="http://www.loa-cnr.it/ontologies/OD/odSystems.owl#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
  xml:base="http://www.loa-cnr.it/ontologies/OD/odSystems.owl">
  <owl:Ontology rdf:about="">
    <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >The C-ODO library currently contains 8 native ontologies, and imports or uses several others, either for design purposes (DOLCE, cDnS, etc.), or for extending their scope (owlodm, OMV, oQual, SKOS, NeOn networked ontology model).

odSystems.owl is the module describing functionalities, both at the social and at the computational levels. These functionalities are not those of an ontology (its 'task'), but those of the design of an ontology.

C-ODO is an ontology for ontology design, to be used as a set of social requirements for NeOn methodologies and tools.
The key notion is 'ontology project', which is assumed to be made up of knowledge-level ('epistemic') workflows, which on their turn contain 'argumentation structures' and 'design rationales' that motivate 'design solutions' taken from a 'choice space' generated by 'design patterns' over 'ontology elements'. 

Appropriate roles (e.g. 'knowledge product', 'knowledge creator') and tasks (e.g. functionalities like 'selection', 'importing', etc.) are used by project, workflow, and rationale schemas.

Situation classes ('ontology project execution', 'epistemic workflow enactment', 'argumentation situation', 'design making', 'design solution') are introduced in order to reason on the actual occurrences of those schemas. Moreover, ontology objects and other information objects used during the ontology lifecycle, together with the design operations and the designer agents, are framed by those situations if they comply to the roles and tasks used by the schemas.

Types of projects, workflows, argumentation, rationales, patterns, etc. are also introduced in C-ODO.

The schema-situation approach is an architectural design pattern that is wholly axiomatized in the cDnS ontology (http://www.loa-cnr.it/ontologies/cDnS.owl). It allows to talk of contexts (or methods, plans, etc.) in the same domain as the actual situations (executions, observations, etc.) that exemplify those contexts.

More generally, the ontology design ontology uses the following patterns:

- the DnS content pattern (http://www.loa-cnr.it/ontologies/ExtendedDnS.owl) has been used throughout, and the following sub-patterns have been used:
a) descriptions and concepts depend on existential axioms only when they involve 'descriptive' entities
b) descriptions are constrained wrt a given situation class SC
c) concepts are constrained wrt a given entity class EC
d) SC are defined by requiring that some entity from EC is in their setting.

- the collections pattern (http://www.loa-cnr.it/ontologies/ExtendedDnS.owl), and the following sub-patterns have been used:
a) collections have any entities as members
b) collections are covered or characterized by concepts
c) collections are unified by descriptions that use or define those concepts. 

-the plans pattern (http://www.loa-cnr.it/ontologies/Plans.owl): 
a) plans use tasks, roles, and parameters
b) plans have a main goal as a proper part
c) plans are 'executed' within plan executions by agents playing roles in order to perform the tasks used by the plan 
d) plan executions start from certain situations ('preconditions') and result in certain situations ('postconditions'). Postconditions can be compliant or not to the expected goal.</rdfs:comment>
    <owl:imports rdf:resource="http://www.loa-cnr.it/ontologies/OD/odAlignment.owl"/>
    <rdfs:label xml:lang="en">ontology design systems ontology</rdfs:label>
    <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
    >41</owl:versionInfo>
  </owl:Ontology>
  <owl:Class rdf:ID="FunctionalityMethod">
    <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >'Rich' functionality descriptions, in which roles, goals, parameters over roles and tasks, and complex tasks are put together to compose a 'method', e.g. a method to execute ontology selection, versioning, subclass addition, expressing disagreement, etc. There is an analogy to the parametric design paradigm (Motta, 1999), where so-called 'tasks' are analogous to functionality descriptions, while 'problem-solving methods' are analogous to functionality methods. 
Besides this distinction, it's possible to distinguish between social functionality descriptions/methods, and computational ones.  Analogously, in software engineering computational functionality descriptions are called 'requirements' or 'use cases', while computational functionality methods are called 'specifications'.
The difference between social and computational level is clearer on the specification (methods) side.</rdfs:comment>
    <rdfs:subClassOf>
      <owl:Class rdf:ID="FunctionalityDescription"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="http://purl.org/dc/dcmitype/InteractiveResource">
    <rdfs:subClassOf rdf:resource="http://www.loa-cnr.it/ontologies/KCO/KCO.owl#ExecutableDigitalObject"/>
  </owl:Class>
  <owl:Class rdf:about="http://purl.org/dc/dcmitype/Service">
    <rdfs:subClassOf rdf:resource="http://www.loa-cnr.it/ontologies/KCO/KCO.owl#ExecutableDigitalObject"/>
  </owl:Class>
  <owl:Class rdf:about="http://omv.ontoware.org/2005/05/ontology#OntologyEngineeringTool">
    <rdfs:subClassOf>
      <owl:Class rdf:ID="SoftwareSystem"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:ID="EvaluationMethod">
    <rdfs:subClassOf>
      <owl:Class rdf:ID="SocialMethodSpecification"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#action"/>
  <owl:Class rdf:about="http://purl.org/dc/dcmitype/Software">
    <rdfs:subClassOf rdf:resource="http://www.loa-cnr.it/ontologies/KCO/KCO.owl#ExecutableDigitalObject"/>
  </owl:Class>
  <owl:Class rdf:about="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#plan"/>
  <owl:Class rdf:ID="ComputationalOperation">
    <rdfs:subClassOf rdf:resource="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#action"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:ID="isTheAccomplishmentOf"/>
        </owl:onProperty>
        <owl:someValuesFrom>
          <owl:Class rdf:ID="ComputationalFunctionality"/>
        </owl:someValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:someValuesFrom rdf:resource="http://www.loa-cnr.it/ontologies/KCO/KCO.owl#computational-object"/>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="http://www.loa-cnr.it/ontologies/DOLCE-Lite.owl#participant"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >An action involving computational objects and accomplishing a functionality defined in a software specification.</rdfs:comment>
  </owl:Class>
  <owl:Class rdf:ID="GenericFunctionalityDescription">
    <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >'Poor' functionality descriptions, in which, besides a generic goal and possible roles, only the main task (functionality) to be accomplished is indicated, e.g.: ontology selection, ontology versioning, adding a subclass, disagreeing on a choice, etc.
Generic functionality descriptions are analogous to requirements, use cases, and parametric design' tasks.</rdfs:comment>
    <rdfs:subClassOf>
      <owl:Class rdf:about="#FunctionalityDescription"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="#ComputationalFunctionality">
    <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >A functionality to be implemented in a programming language.</rdfs:comment>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:someValuesFrom rdf:resource="#ComputationalOperation"/>
        <owl:onProperty>
          <owl:ObjectProperty rdf:ID="accomplishedThrough"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#defined-in"/>
        </owl:onProperty>
        <owl:someValuesFrom>
          <owl:Class rdf:ID="SoftwareMethodSpecification"/>
        </owl:someValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Class rdf:ID="Functionality"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:ID="SelectionMethod">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="http://www.loa-cnr.it/ontologies/OD/odAlignment.owl#usesConcept"/>
        </owl:onProperty>
        <owl:hasValue>
          <Functionality rdf:ID="selection"/>
        </owl:hasValue>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Class rdf:about="#SocialMethodSpecification"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="#Functionality">
    <rdfs:comment xml:lang="en">A functionality is considered here a task to be performed within an ontology project, e.g. an 'evaluation' functionality.
As any other task, functionalities are 'defined-in' some description/schema, in this case in some 'functionality description'.
Once defined, functionalities become available to be used-in a certain ontology project (schema).</rdfs:comment>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="http://www.loa-cnr.it/ontologies/OD/odAlignment.owl#isTaskDefinedIn"/>
        </owl:onProperty>
        <owl:someValuesFrom>
          <owl:Class rdf:about="#FunctionalityDescription"/>
        </owl:someValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#accomplishedThrough"/>
        </owl:onProperty>
        <owl:allValuesFrom rdf:resource="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#action"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf rdf:resource="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#task"/>
  </owl:Class>
  <owl:Class rdf:about="#SoftwareSystem">
    <rdfs:subClassOf rdf:resource="http://www.loa-cnr.it/ontologies/KCO/KCO.owl#ExecutableDigitalObject"/>
  </owl:Class>
  <owl:Class rdf:about="#FunctionalityDescription">
    <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >A plan that defines a certain functionality (a type of edns:task). Functionality descriptions can be of two types. 
The first includes 'poor' functionality descriptions, in which, besides a generic goal and possible roles, only the main task (functionality) to be accomplished is indicated, e.g.: ontology selection, ontology versioning, adding a subclass, disagreeing on a choice, etc.
The second type includes 'rich' functionality descriptions, in which roles, goals, parameters over roles and tasks, and complex tasks are put together to compose a 'method', e.g. a method to execute ontology selection, versioning, subclass addition, expressing disagreement, etc.
There is an analogy to the parametric design paradigm (Motta, 1999), where so-called 'tasks' are analogous to functionality descriptions, while 'problem-solving methods' are analogous to functionality methods.
Besides this distinction, it's possible to distinguish between social functionality descriptions/methods, and computational ones. 
Analogously, in software engineering computational functionality descriptions are called 'requirements' or 'use cases', while computational functionality methods are called 'specifications'.</rdfs:comment>
    <rdfs:subClassOf rdf:resource="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#plan"/>
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Restriction>
            <owl:onProperty>
              <owl:ObjectProperty rdf:about="http://www.loa-cnr.it/ontologies/OD/odAlignment.owl#definesTask"/>
            </owl:onProperty>
            <owl:someValuesFrom rdf:resource="#Functionality"/>
          </owl:Restriction>
          <owl:Class rdf:about="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#plan"/>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="ProvenanceDetectionMethod">
    <rdfs:subClassOf>
      <owl:Class rdf:about="#SoftwareMethodSpecification"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="#SoftwareMethodSpecification">
    <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >A description of a functionality to be implemented in a programming language or an architectural paradigm, e.g. an algorithm. 
Software specifications characterize 'computational functionalities' that are expected to be accomplished by running a computational operation.
A software specification only characterizes computational functionalities, because social, e.g. human-based, functionalities are 'simulated' in two ways: by 'substituting' social roles with computational roles; by 'supporting' social roles, which only appear as proxy roles.
See also Daniel Oberle's 'Semantic Middleware'.</rdfs:comment>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.loa-cnr.it/ontologies/OD/odAlignment.owl#definesTask"/>
        <owl:allValuesFrom rdf:resource="#ComputationalFunctionality"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.loa-cnr.it/ontologies/OD/odAlignment.owl#definesTask"/>
        <owl:someValuesFrom rdf:resource="#ComputationalFunctionality"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf rdf:resource="#FunctionalityMethod"/>
  </owl:Class>
  <owl:Class rdf:about="#SocialMethodSpecification">
    <rdfs:label xml:lang="en">Social method specification</rdfs:label>
    <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >It's possible to distinguish between social functionality descriptions/methods, and computational ones.  Analogously, in software engineering computational functionality descriptions are called 'requirements' or 'use cases', while computational functionality methods are called 'specifications'. The difference between social and computational level is clearer on the specification (methods) side.</rdfs:comment>
    <rdfs:subClassOf rdf:resource="#FunctionalityMethod"/>
  </owl:Class>
  <owl:ObjectProperty rdf:about="#accomplishedThrough">
    <rdfs:subPropertyOf rdf:resource="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#classifies"/>
    <rdfs:range rdf:resource="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#action"/>
    <owl:inverseOf>
      <owl:ObjectProperty rdf:about="#isTheAccomplishmentOf"/>
    </owl:inverseOf>
    <rdfs:domain rdf:resource="#Functionality"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#isTheAccomplishmentOf">
    <rdfs:subPropertyOf rdf:resource="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#classified-by"/>
    <owl:inverseOf rdf:resource="#accomplishedThrough"/>
    <rdfs:domain rdf:resource="http://www.loa-cnr.it/ontologies/ExtendedDnS.owl#action"/>
    <rdfs:range rdf:resource="#Functionality"/>
  </owl:ObjectProperty>
  <Functionality rdf:ID="cloning"/>
  <Functionality rdf:ID="importing"/>
</rdf:RDF>

<!-- Created with TopBraid Composer -->

