diff --git a/README.md b/README.md index d500a621..82b23a20 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,28 @@ Profiles: -![OWL EL Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_EL.json) -![OWL QL Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_QL.json) -![OWL RL Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_RL.json) +![OWL EL Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_EL.json) +![OWL QL Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_QL.json) +![OWL RL Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_RL.json) Model tests: -![Pass Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_MODEL_PASS.json) -![NotTested Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_MODEL_NOTTESTED.json) -![CannotTell Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_MODEL_CANNOTTELL.json) -![MinorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_MODEL_MINORFAIL.json) -![MajorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_MODEL_MAJORFAIL.json) +![Pass Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_MODEL_PASS.json) +![NotTested Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_MODEL_NOTTESTED.json) +![CannotTell Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_MODEL_CANNOTTELL.json) +![MinorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_MODEL_MINORFAIL.json) +![MajorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_MODEL_MAJORFAIL.json) Data tests: -![Pass Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_DATA_PASS.json) -![NotTested Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_DATA_NOTTESTED.json) -![CannotTell Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_DATA_CANNOTTELL.json) -![MinorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_DATA_MINORFAIL.json) -![MajorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_DATA_MAJORFAIL.json) +![Pass Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_DATA_PASS.json) +![NotTested Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_DATA_NOTTESTED.json) +![CannotTell Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_DATA_CANNOTTELL.json) +![MinorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_DATA_MINORFAIL.json) +![MajorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_DATA_MAJORFAIL.json) Query tests: -![Pass Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_QUERY_PASS.json) -![NotTested Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_QUERY_NOTTESTED.json) -![CannotTell Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_QUERY_CANNOTTELL.json) -![MinorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_QUERY_MINORFAIL.json) -![MajorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/NicoRobertIn/c4128ff5fec462d83e2ae8a229917537/raw/heads_main_QUERY_MAJORFAIL.json) +![Pass Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_QUERY_PASS.json) +![NotTested Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_QUERY_NOTTESTED.json) +![CannotTell Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_QUERY_CANNOTTELL.json) +![MinorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_QUERY_MINORFAIL.json) +![MajorFail Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gnardin/c4128ff5fec462d83e2ae8a229917537/raw/heads_update-scenario-logistics-configure-organization_QUERY_MAJORFAIL.json) # Hyperagent ontology git space [HyperAgents](https://www.hyperagents.org/) is an ANR/SNF project working towards the deployment of world-wide hybrid communities of people and artificial agents on the Web. For this purpose, we are defining a new class of multi-agent systems (MAS) that are: diff --git a/domains/logistics/configure-organization/README.md b/domains/logistics/configure-organization/README.md index 5a7e95df..ffc67365 100644 --- a/domains/logistics/configure-organization/README.md +++ b/domains/logistics/configure-organization/README.md @@ -2,35 +2,40 @@ ## Description -The FL Logistics has a depot in Lyon and another in Saint-Étienne. Each depot has one _receiving_ and one _picking_ setting. Each _receiving_ setting has one forklift, one pallet jack, and one barcode reader. Each _picking_ setting has one forklift, one pallet jack, and one label printer. Only one employee can be associated with the usage of one setting, but the same employee can be associated with the usage of multiple settings. +The FL Logistics has a depot in Lyon and another in Saint-Étienne. Each depot has one _receive_ and one _pick_ setting. -Forklifts are capable of lifting up and lifting down materials on pallets to/from high shelves, as well as moving them from one location to another. Pallet jacks are capable of lifting up and lifting down materials on pallets placed on the floor and move them from one location to another. They both are used for loading and unloading trucks by moving materials in the _receiving_ and the _picking_ settings. +In the _receive_ setting, agents have access to equipment that can handle (i.e., lift and move) pallets and can read barcodes identifying the pallets' content. -The barcode reader is capable of reading barcodes identifying materials on a pallet. The label machine is capable of printing labels with barcode to identify the materials on a pallet. +In the _pick_ setting, agents have access to equipment that can handle (i.e., lift and move) pallets and print labels with barcode identifying the pallets' content. -Marie can use the forklift and pallet jack to unload trucks (i.e., lift pallets and move them in the _receiving_ setting) and the barcode reader to check the pallet content. +Forklifts are capable of lifting up and down pallets to/from high shelves, as well as moving them from one location to another. Pallet jacks are capable of lifting up and down pallets and move them from one location to another. -Nancy can use the forklift and pallet jack to load trucks (i.e., lift pallets and move them in the _picking_ setting) and the label printer to print the labels identifying the pallets content. +The barcode reader is capable of reading barcodes and the label machine is capable of printing labels with barcode. -Leo can use the forklift and pallet jack to unload trucks (i.e., lift pallets and move them in the _receiving_ setting) and load trucks (i.e., lift pallets and move them in the _picking_ setting), the barcode reader to check the pallet content, and the label printer to print the labels identifying the pallets content. +Each depot makes available one forklift, one pallet jack, and one barcode reader in the _receive_ setting, and one forklift, one pallet jack, and one label printer in the _pick_ setting. + +Marie, a collector in Lyon, can use the Forklift 1 and Pallet Jack 1 to unload trucks and the Barcode Reader 1 to check the pallet's content. + +Nancy, a deliverer in Lyon, can use the Forklift 2 and Pallet Jack 2 to load trucks and the Label Printer 1 to print the labels identifying the pallet's content. + +Leo, a collector and deliverer in Saint-Étienne, can use the Forklift 3 and Pallet Jack 3 to load and unload trucks, the Barcode Reader 2 to check the pallet's content, and the Label Printer 2 to print the labels identifying the pallet's content. ## Competency questions | ID | Question in Natural Language | Example | |----|------------------------------|---------| -| q1 | What are the artifacts that an agent of the organization X can have in setting Y? | What are the artifacts that an agent of the FL Logistics can have in the _receiving_ setting? `ex:Barcode_Reader_1`, `ex:Barcode_Reader_2`, `ex:Forklift_1`, `ex:Forklift_2`, `ex:Forklift_3`, `ex:Forklift_4`, `ex:Palletjack_1`, `ex:Palletjack_2`, `ex:Palletjack_3`, `ex:Palletjack_4` | -| q2 | What are the settings of an organization X? | What are the settings of the FL Logistics? `ex:PickingSetting`, `ex:ReceivingSetting` | -| q3 | What are the facilities that the artifact X have? | What are the facilities that Forklift 1 have? `ex:LiftDown`, `ex:LiftUp`, `ex:Move` | -| q4 | What are the agents currently in the setting Y? | What are the agents currently in the _picking_ setting? `ex:Leo`, `ex:Nancy` | +| q1 | What are the artifacts that an agent of the organization X has access to in the setting Y? | What are the artifacts that an agent of the FL Logistics has access to in the _receive_ setting? `ex:Barcode_Reader_1`, `ex:Barcode_Reader_2`, `ex:Forklift_1`, `ex:Forklift_3`, `ex:Palletjack_1`, `ex:Palletjack_3` | +| q2 | What are the settings of an organization X? | What are the settings of the FL Logistics? `ex:PickSetting`, `ex:ReceiveSetting` | +| q3 | What are the facilities that the artifact X have? | What are the facilities that Forklift 1 has? `ex:LiftDown`, `ex:LiftUp`, `ex:Move` | +| q4 | What are the agents currently in the setting Y? | What are the agents currently in the _pick_ setting? `ex:Leo`, `ex:Nancy` | +| q5 | What are the facilities that artifact X has in each access? | What are the facilities that the Forklift 1 has in each access? `ex:FL_Lyon_Receive_Move_Access,ex:LiftDown`, `ex:FL_Lyon_Receive_Move_Access,ex:LiftUp`, `ex:FL_Lyon_Receive_Move_Access,ex:Move` | ## Glossary ![image](configure-organization.png) -* **Usage**: A set of Facilities that Agents can use in a Setting. -* **Access**: An opportunity an Agent have to use an Artifact in the context of a Usage. -* **Usage Constraint**: A constraint imposed on Usages, e.g., limiting the number of Agents participating in that Usage or the same Agent cannot be part of two Usages simultaneously. -* **Setting**: A Setting is the context in which a Usage is set. +* **Access**: An opportunity an Agent has to use Facilities of Artifacts in a Setting. Agents have access even if they never use these Facilities. One Access should not be understood as one 'use' of these Facilities. +* **Setting**: A Setting is the context in which an Access is set. * **Facility**: see [Create an Organization](https://github.com/HyperAgents/ns.hyperagents.org/blob/master/domains/logistics/create-organization/README.md) scenario. * **Organization**: see [Discover Organizations, their Members and Materials in Hypermedia Environments](https://github.com/HyperAgents/hmas/blob/master/domains/manufacturing-environments/discover-organization/README.md) scenario. * **Agent**: see [Discover Organizations, their Members and Materials in Hypermedia Environments](https://github.com/HyperAgents/hmas/blob/master/domains/manufacturing-environments/discover-organization/README.md) scenario. @@ -38,20 +43,19 @@ Leo can use the forklift and pallet jack to unload trucks (i.e., lift pallets an ## Recommendations -* The Access Constraint is represented as a SHACL shape instead of an RDF triple. For example, the SHACL shape constraining that the artifacts in an access have all facilities that are also facilities of a usage. +* The Access Constraint is represented as a SHACL shape instead of an RDF triple. For example, the SHACL shape constraining that the facilities referenced in the access are jointly provided by all the artifacts associated to that access. ``` ex:AccessFacilitiesShape a sh:NodeShape ; sh:targetClass hmas:Access ; sh:sparql [ a sh:SPARQLConstraint ; - sh:message "The artifacts should have all the facilities specified in the usage." ; + sh:message "The artifacts associated to an access should jointly have all the facilities associated to that access." ; sh:prefixes ex:, hmas:, rdfs: ; sh:select """ SELECT (?access as $this) WHERE { - ?access hmas:isAccessFor ?usage . - ?usage hmas:isUsageOf ?facility . + ?access hmas:isAccessFor ?facility . FILTER NOT EXISTS { ?access hmas:isAccessTo ?artifact . diff --git a/domains/logistics/configure-organization/configure-organization.drawio b/domains/logistics/configure-organization/configure-organization.drawio index aee82477..92bc4e77 100644 --- a/domains/logistics/configure-organization/configure-organization.drawio +++ b/domains/logistics/configure-organization/configure-organization.drawio @@ -1,61 +1,61 @@ - - - + + + - - - + + + - + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + @@ -63,63 +63,42 @@ - - - - - + + + + - - - - - - - - - + + - - - - - - - - - - - - - - - - + + + - - + + - - + + - - + + - - - + + + - - + + diff --git a/domains/logistics/configure-organization/configure-organization.png b/domains/logistics/configure-organization/configure-organization.png index 045842e5..65195775 100644 Binary files a/domains/logistics/configure-organization/configure-organization.png and b/domains/logistics/configure-organization/configure-organization.png differ diff --git a/domains/logistics/configure-organization/dataset.ttl b/domains/logistics/configure-organization/dataset.ttl index b304b375..f5f9bd98 100644 --- a/domains/logistics/configure-organization/dataset.ttl +++ b/domains/logistics/configure-organization/dataset.ttl @@ -26,7 +26,7 @@ rdfs: ## Workspace ex:LogisticsWS a hmas:Workspace ; - hmas:contains ex:John, ex:Frank, ex:Gabriel, ex:Igor, ex:Jane, ex:Kate, ex:Leo, ex:Marie, ex:Nancy, ex:Forklift_1, ex:Forklift_2, ex:Forklift_3, ex:Forklift_4, ex:Palletjack_1, ex:Palletjack_2, ex:Palletjack_3, ex:Palletjack_4, ex:Barcode_Reader_1, ex:Barcode_Reader_2, ex:Label_Printer_1, ex:Label_Printer_2 . + hmas:contains ex:John, ex:Frank, ex:Gabriel, ex:Igor, ex:Jane, ex:Kate, ex:Leo, ex:Marie, ex:Nancy, ex:Forklift_1, ex:Forklift_2, ex:Forklift_3, ex:Palletjack_1, ex:Palletjack_2, ex:Palletjack_3, ex:Barcode_Reader_1, ex:Barcode_Reader_2, ex:Label_Printer_1, ex:Label_Printer_2 . ## Agents ex:John a hmas:Agent ; @@ -70,10 +70,6 @@ ex:Forklift_3 a hmas:Artifact ; hmas:isContainedIn ex:LogisticsWS ; hmas:isMaterialOf ex:FL_Logistics ; hmas:hasFacility ex:LiftUp, ex:LiftDown, ex:Move . -ex:Forklift_4 a hmas:Artifact ; - hmas:isContainedIn ex:LogisticsWS ; - hmas:isMaterialOf ex:FL_Logistics ; - hmas:hasFacility ex:LiftUp, ex:LiftDown, ex:Move . ex:Palletjack_1 a hmas:Artifact ; hmas:isContainedIn ex:LogisticsWS ; hmas:isMaterialOf ex:FL_Logistics ; @@ -86,10 +82,6 @@ ex:Palletjack_3 a hmas:Artifact ; hmas:isContainedIn ex:LogisticsWS ; hmas:isMaterialOf ex:FL_Logistics ; hmas:hasFacility ex:LiftUp, ex:LiftDown, ex:Move . -ex:Palletjack_4 a hmas:Artifact ; - hmas:isContainedIn ex:LogisticsWS ; - hmas:isMaterialOf ex:FL_Logistics ; - hmas:hasFacility ex:LiftUp, ex:LiftDown, ex:Move . ex:Barcode_Reader_1 a hmas:Artifact ; hmas:isContainedIn ex:LogisticsWS ; hmas:isMaterialOf ex:FL_Logistics ; @@ -303,11 +295,11 @@ ex:Logistics a sh:NodeShape, rdfs:Class ; ] ; sh:property [ sh:path hmas:proposesSetting ; - sh:hasValue ex:ReceivingSetting ; + sh:hasValue ex:ReceiveSetting ; ] ; sh:property [ sh:path hmas:proposesSetting ; - sh:hasValue ex:PickingSetting ; + sh:hasValue ex:PickSetting ; ] ; sh:property [ sh:path hmas:proposesFacility ; @@ -477,7 +469,6 @@ ex:Planner_Planning_Membership a sh:NodeShape, rdfs:Class ; sh:path hmas:isMembershipOf ; sh:qualifiedValueShape [ sh:class hmas:Agent ] ; sh:qualifiedMinCount 1 ; - sh:qualifiedMaxCount 1 ; ] ; sh:property [ sh:path hmas:isMembershipFor ; @@ -495,7 +486,6 @@ ex:Carrier_Shipping_Membership a sh:NodeShape, rdfs:Class ; sh:path hmas:isMembershipOf ; sh:qualifiedValueShape [ sh:class hmas:Agent ] ; sh:qualifiedMinCount 1 ; - sh:qualifiedMaxCount 1 ; ] ; sh:property [ sh:path hmas:isMembershipFor ; @@ -507,6 +497,40 @@ ex:Carrier_Shipping_Membership a sh:NodeShape, rdfs:Class ; sh:qualifiedMinCount 1 ; sh:qualifiedMaxCount 1 ; ] . +ex:Collector_Shipping_Membership a sh:NodeShape, rdfs:Class ; + rdfs:subClassOf hmas:Membership ; + sh:property [ + sh:path hmas:isMembershipOf ; + sh:qualifiedValueShape [ sh:class hmas:Agent ] ; + sh:qualifiedMinCount 1 ; + ] ; + sh:property [ + sh:path hmas:isMembershipFor ; + sh:hasValue ex:Collector ; + ] ; + sh:property [ + sh:path hmas:isMembershipIn ; + sh:qualifiedValueShape [ sh:class ex:ShippingDepartment ] ; + sh:qualifiedMinCount 1 ; + sh:qualifiedMaxCount 1 ; + ] . +ex:Deliverer_Shipping_Membership a sh:NodeShape, rdfs:Class ; + rdfs:subClassOf hmas:Membership ; + sh:property [ + sh:path hmas:isMembershipOf ; + sh:qualifiedValueShape [ sh:class hmas:Agent ] ; + sh:qualifiedMinCount 1 ; + ] ; + sh:property [ + sh:path hmas:isMembershipFor ; + sh:hasValue ex:Deliverer ; + ] ; + sh:property [ + sh:path hmas:isMembershipIn ; + sh:qualifiedValueShape [ sh:class ex:ShippingDepartment ] ; + sh:qualifiedMinCount 1 ; + sh:qualifiedMaxCount 1 ; + ] . ## Membership Incompatibility Specifications ex:DirectorIncompatibilityShape a sh:NodeShape ; @@ -615,77 +639,79 @@ ex:CommitmentCardinalityShape a sh:NodeShape ; sh:maxCount 1 ; ] . -## Usage Specifications -ex:Collecting_Usage a sh:NodeShape, rdfs:Class ; - rdfs:subClassOf hmas:Usage ; - sh:property [ - sh:path hmas:isUsageOf ; - sh:maxCount 4 ; - ] ; +## Access Specifications +ex:Receive_Move_Access a sh:NodeShape, rdfs:Class ; + rdfs:subClassOf hmas:Access ; sh:property [ - sh:path hmas:isUsageOf ; - sh:hasValue ex:LiftUp ; + sh:path hmas:isAccessOf ; + sh:qualifiedValueShape [ sh:class hmas:Agent ] ; + sh:qualifiedMinCount 1 ; + sh:qualifiedMaxCount 1 ; ] ; sh:property [ - sh:path hmas:isUsageOf ; - sh:hasValue ex:LiftDown ; + sh:path hmas:isAccessTo ; + sh:qualifiedValueShape [ sh:class hmas:Artifact ] ; + sh:qualifiedMinCount 1 ; ] ; sh:property [ - sh:path hmas:isUsageOf ; - sh:hasValue ex:Move ; + sh:path hmas:isAccessIn ; + sh:hasValue ex:ReceiveSetting ; ] ; sh:property [ - sh:path hmas:isUsageOf ; - sh:hasValue ex:ReadBarcode ; + sh:path hmas:isAccessFor ; + sh:minCount 3 ; + sh:maxCount 3 ; ] ; sh:property [ - sh:path hmas:isUsageIn ; - sh:hasValue ex:ReceivingSetting ; - sh:maxCount 1 ; - ] . -ex:Delivering_Usage a sh:NodeShape, rdfs:Class ; - rdfs:subClassOf hmas:Usage ; - sh:property [ - sh:path hmas:isUsageOf ; - sh:maxCount 4 ; - ] ; - sh:property [ - sh:path hmas:isUsageOf ; + sh:path hmas:isAccessFor ; sh:hasValue ex:LiftUp ; ] ; sh:property [ - sh:path hmas:isUsageOf ; + sh:path hmas:isAccessFor ; sh:hasValue ex:LiftDown ; ] ; sh:property [ - sh:path hmas:isUsageOf ; + sh:path hmas:isAccessFor ; sh:hasValue ex:Move ; + ] . +ex:Receive_ReadBarCode_Access a sh:NodeShape, rdfs:Class ; + rdfs:subClassOf hmas:Access ; + sh:property [ + sh:path hmas:isAccessOf ; + sh:qualifiedValueShape [ sh:class hmas:Agent ] ; + sh:qualifiedMinCount 1 ; + sh:qualifiedMaxCount 1 ; ] ; sh:property [ - sh:path hmas:isUsageOf ; - sh:hasValue ex:PrintLabel ; + sh:path hmas:isAccessTo ; + sh:qualifiedValueShape [ sh:class hmas:Artifact ] ; + sh:qualifiedMinCount 1 ; ] ; sh:property [ - sh:path hmas:isUsageIn ; - sh:hasValue ex:PickingSetting ; + sh:path hmas:isAccessIn ; + sh:hasValue ex:ReceiveSetting ; + ] ; + sh:property [ + sh:path hmas:isAccessFor ; + sh:minCount 1 ; sh:maxCount 1 ; + ] ; + sh:property [ + sh:path hmas:isAccessFor ; + sh:hasValue ex:ReadBarcode ; ] . -## Usage Relationship Specifications -ex:compatibleUsage rdfs:subPropertyOf hmas:hasUsageRelationshipWith . - ## Access Constraint Specifications ex:AccessFacilitiesShape a sh:NodeShape ; sh:targetClass hmas:Access ; sh:sparql [ a sh:SPARQLConstraint ; - sh:message "The artifacts should have all the facilities specified in the usage." ; + sh:message "The artifacts associated to an access should jointly have all the facilities associated to that access." ; sh:prefixes ex:, hmas:, rdfs: ; sh:select """ SELECT (?access as $this) WHERE { - ?access hmas:isAccessFor ?usage . - ?usage hmas:isUsageOf ?facility . + ?access hmas:isAccessFor ?facility . FILTER NOT EXISTS { ?access hmas:isAccessTo ?artifact . @@ -713,6 +739,8 @@ ex:FinanceOfficer a hmas:Role . ex:AccountManager a hmas:Role . ex:Planner a hmas:Role . ex:Carrier a hmas:Role . +ex:Collector a hmas:Role . +ex:Deliverer a hmas:Role . ## Groups ex:FL_AdministrativeDepartment a ex:AdministrativeDepartment ; @@ -760,9 +788,21 @@ ex:FL_Carrier_Shipping a ex:Carrier_Shipping_Membership ; hmas:isMembershipOf ex:Jane ; hmas:isMembershipFor ex:Carrier ; hmas:isMembershipIn ex:FL_ShippingDepartment . - +ex:FL_Collector_Shipping a ex:Collector_Shipping_Membership ; + hmas:isMembershipOf ex:Marie, ex:Leo ; + hmas:isMembershipFor ex:Collector ; + hmas:isMembershipIn ex:FL_ShippingDepartment . +ex:FL_Deliverer_Shipping a ex:Deliverer_Shipping_Membership ; + hmas:isMembershipOf ex:Nancy, ex:Leo ; + hmas:isMembershipFor ex:Deliverer ; + hmas:isMembershipIn ex:FL_ShippingDepartment . + ex:FL_Planner_Planning ex:canCommunicateWith ex:FL_Carrier_Shipping . +ex:FL_Planner_Planning ex:canCommunicateWith ex:FL_Colletor_Shipping . +ex:FL_Planner_Planning ex:canCommunicateWith ex:FL_Deliverer_Shipping . ex:FL_Carrier_Shipping ex:canCommunicateWith ex:FL_Planner_Planning . +ex:FL_Collector_Shipping ex:canCommunicateWith ex:FL_Planner_Planning . +ex:FL_Deliverer_Shipping ex:canCommunicateWith ex:FL_Planner_Planning . ## Organizational Goals ex:HumanResourcesManaged a hmas:OrganizationalGoal . @@ -811,9 +851,9 @@ ex:AccountManager_Dept_Hire_Commitment a hmas:Commitment ; hmas:isCommitmentFor ex:AccountManager_Dept_Hire_Mission . ## Settings -ex:PickingSetting a hmas:Setting ; +ex:PickSetting a hmas:Setting ; hmas:isSettingOf ex:FL_Logistics . -ex:ReceivingSetting a hmas:Setting ; +ex:ReceiveSetting a hmas:Setting ; hmas:isSettingOf ex:FL_Logistics . ## Facilities @@ -837,39 +877,50 @@ ex:PrintLabel a hmas:Facility ; rdfs:comment "Ability to print a label with barcode."@en ; rdfs:label "print label"@en, "imprimer l'étiquette"@fr . -## Usages -ex:FL_Lyon_Collecting_Usage a ex:Collecting_Usage ; - hmas:isUsageIn ex:ReceivingSetting ; - hmas:isUsageOf ex:LiftUp, ex:LiftDown, ex:Move, ex:ReadBarcode . -ex:FL_StEtienne_Collecting_Usage a ex:Collecting_Usage ; - hmas:isUsageIn ex:ReceivingSetting ; - hmas:isUsageOf ex:LiftUp, ex:LiftDown, ex:Move, ex:ReadBarcode . -ex:FL_Lyon_Delivering_Usage a ex:Delivering_Usage ; - hmas:isUsageIn ex:PickingSetting ; - hmas:isUsageOf ex:LiftUp, ex:LiftDown, ex:Move, ex:PrintLabel . -ex:FL_StEtienne_Delivering_Usage a ex:Delivering_Usage ; - hmas:isUsageIn ex:PickingSetting ; - hmas:isUsageOf ex:LiftUp, ex:LiftDown, ex:Move, ex:PrintLabel . - -ex:FL_StEtienne_Collecting_Usage ex:compatibleUsage ex:FL_StEtienne_Delivering_Usage . - ## Accesses -ex:FL_Lyon_Collecting_Access a hmas:Access ; +ex:FL_Lyon_Receive_Move_Access a ex:Receive_Move_Access ; hmas:isAccessOf ex:Marie ; - hmas:isAccessTo ex:Forklift_1, ex:Palletjack_1, ex:Barcode_Reader_1 ; - hmas:isAccessFor ex:FL_Lyon_Collecting_Usage . -ex:FL_StEtienne_Collecting_Access a hmas:Access ; - hmas:isAccessOf ex:Leo ; - hmas:isAccessTo ex:Forklift_2, ex:Palletjack_2, ex:Barcode_Reader_2 ; - hmas:isAccessFor ex:FL_StEtienne_Collecting_Usage . -ex:FL_Lyon_Delivering_Access a hmas:Access ; + hmas:isAccessTo ex:Forklift_1, ex:Palletjack_1 ; + hmas:isAccessIn ex:ReceiveSetting ; + hmas:isAccessFor ex:LiftUp, ex:LiftDown, ex:Move . +ex:FL_Lyon_Receive_ReadBarcode_Access a ex:Receive_ReadBarCode_Access ; + hmas:isAccessOf ex:Marie ; + hmas:isAccessTo ex:Barcode_Reader_1 ; + hmas:isAccessIn ex:ReceiveSetting ; + hmas:isAccessFor ex:ReadBarcode . + +ex:FL_Lyon_Pick_Move_Access a hmas:Access ; + hmas:isAccessOf ex:Nancy ; + hmas:isAccessTo ex:Forklift_2, ex:Palletjack_2 ; + hmas:isAccessIn ex:PickSetting ; + hmas:isAccessFor ex:LiftUp, ex:LiftDown, ex:Move . +ex:FL_Lyon_Pick_PrintLabel_Access a hmas:Access ; hmas:isAccessOf ex:Nancy ; - hmas:isAccessTo ex:Forklift_3, ex:Palletjack_3, ex:Label_Printer_1 ; - hmas:isAccessFor ex:FL_Lyon_Delivering_Usage . -ex:FL_StEtienne_Delivering_Access a hmas:Access ; + hmas:isAccessTo ex:Label_Printer_1 ; + hmas:isAccessIn ex:PickSetting ; + hmas:isAccessFor ex:PrintLabel . + +ex:FL_StEtienne_Receive_Move_Access a ex:Receive_Move_Access ; + hmas:isAccessOf ex:Leo ; + hmas:isAccessTo ex:Forklift_3, ex:Palletjack_3 ; + hmas:isAccessIn ex:ReceiveSetting ; + hmas:isAccessFor ex:LiftUp, ex:LiftDown, ex:Move . +ex:FL_StEtienne_Receive_ReadBarcode_Access a ex:Receive_ReadBarCode_Access ; + hmas:isAccessOf ex:Leo ; + hmas:isAccessTo ex:Barcode_Reader_2 ; + hmas:isAccessIn ex:ReceiveSetting ; + hmas:isAccessFor ex:ReadBarcode . + +ex:FL_StEtienne_Pick_Move_Access a hmas:Access ; + hmas:isAccessOf ex:Leo ; + hmas:isAccessTo ex:Forklift_3, ex:Palletjack_3 ; + hmas:isAccessIn ex:PickSetting ; + hmas:isAccessFor ex:LiftUp, ex:LiftDown, ex:Move . +ex:FL_StEtienne_Pick_PrintLabel_Access a hmas:Access ; hmas:isAccessOf ex:Leo ; - hmas:isAccessTo ex:Forklift_4, ex:Palletjack_4, ex:Label_Printer_2 ; - hmas:isAccessFor ex:FL_StEtienne_Delivering_Usage . + hmas:isAccessTo ex:Label_Printer_2 ; + hmas:isAccessIn ex:PickSetting ; + hmas:isAccessFor ex:PrintLabel . ## Organizations ex:FL_LogisticsProfile a hmas:ResourceProfile . @@ -881,5 +932,5 @@ ex:FL_Logistics a ex:Logistics ; hmas:proposesRole ex:Director, ex:HumanResourcesOfficer, ex:FinanceOfficer, ex:AccountManager, ex:Planner, ex:Carrier, ex:Collector, ex:Deliverer ; hmas:isStructuredBy ex:FL_AdministrativeDepartment, ex:FL_OperationsDepartment, ex:FL_HumanResourcesDepartment, ex:FL_FinanceDepartment, ex:FL_CommercialDepartment, ex:FL_PlanningDepartment, ex:FL_ShippingDepartment ; hmas:proposesProcess ex:AccountManager_Hire_Process ; - hmas:proposesSetting ex:PickingSetting, ex:ReceivingSetting ; + hmas:proposesSetting ex:PickSetting, ex:ReceiveSetting ; hmas:proposesFacility ex:LiftUp, ex:LiftDown, ex:Move, ex:ReadBarcode, ex:PrintLabel . diff --git a/domains/logistics/configure-organization/onto.ttl b/domains/logistics/configure-organization/onto.ttl index bce7354b..6e44afdc 100644 --- a/domains/logistics/configure-organization/onto.ttl +++ b/domains/logistics/configure-organization/onto.ttl @@ -17,19 +17,14 @@ # Classes ################################################################# -:Usage a owl:Class ; - rdfs:isDefinedBy :regulation ; - rdfs:comment "A set of Facilities that Agents can use in a Setting."@en ; - rdfs:label "usage"@en, "usage"@fr . - :Setting a owl:Class ; rdfs:isDefinedBy :regulation ; - rdfs:comment "A Setting is the context in which a Usage is set."@en ; - rdfs:label "setting"@en, "contexte d'usage"@fr . + rdfs:comment "A Setting is the context in which an Access is set."@en ; + rdfs:label "setting"@en, "contexte d'accès"@fr . :Access a owl:Class ; rdfs:isDefinedBy :regulation ; - rdfs:comment "An opportunity an Agent have to use an Artifact in the context of a Usage."@en ; + rdfs:comment "An opportunity an Agent has to use Facilities of Artifacts in a Setting. Agents have access even if they never use these Facilities. One Access should not be understood as one 'use' of these Facilities."@en ; rdfs:label "access"@en, "accès"@fr . ################################################################# @@ -41,42 +36,28 @@ rdfs:domain :Access ; rdfs:range :Artifact ; rdfs:comment "A relation that refers to an Artifact involved in an Access."@en ; - rdfs:label "is access to"@en, "est l'accès à"@fr . + rdfs:label "is access to"@en, "est accès à"@fr . :isAccessOf a owl:ObjectProperty ; rdfs:isDefinedBy :regulation ; rdfs:domain :Access ; rdfs:range :Agent ; rdfs:comment "A relation that refers to an Agent involved in an Access."@en ; - rdfs:label "is access of"@en, "est l'accès de"@fr . + rdfs:label "is access of"@en, "est accès de"@fr . :isAccessFor a owl:ObjectProperty ; rdfs:isDefinedBy :regulation ; rdfs:domain :Access ; - rdfs:range :Usage ; - rdfs:comment "A relation that refers to a Usage involved in an Access."@en ; - rdfs:label "is access for"@en, "est l'accès pour"@fr . - -:isUsageOf a owl:ObjectProperty ; - rdfs:isDefinedBy :regulation ; - rdfs:domain :Usage ; rdfs:range :Facility ; - rdfs:comment "A relation that refers to a Facility involved in a Usage."@en ; - rdfs:label "is usage of"@en, "est un usage de"@fr . + rdfs:comment "A relation that refers to a Facility involved in an Access."@en ; + rdfs:label "is access for"@en, "est accès pour"@fr . -:isUsageIn a owl:ObjectProperty ; +:isAccessIn a owl:ObjectProperty ; rdfs:isDefinedBy :regulation ; - rdfs:domain :Usage ; + rdfs:domain :Access ; rdfs:range :Setting ; - rdfs:comment "A relation that refers to a Setting involved in a Usage."@en ; - rdfs:label "is usage in"@en, "est un usage dans"@fr . - -:hasUsageRelationshipWith a owl:ObjectProperty ; - rdfs:isDefinedBy :regulation ; - rdfs:domain :Usage ; - rdfs:range :Usage ; - rdfs:comment "A relation that refers to the relationship between two Usages."@en ; - rdfs:label "has usage relationship with"@en, "a une relation d'usage avec"@fr . + rdfs:comment "A relation that refers to a Setting involved in an Access."@en ; + rdfs:label "is access in"@en, "est accès dans"@fr . :hasFacility a owl:ObjectProperty ; rdfs:isDefinedBy :regulation ; @@ -90,11 +71,11 @@ rdfs:domain :Setting ; rdfs:range :Organization ; rdfs:comment "A relation that refers to a Setting of an Organization."@en ; - rdfs:label "is setting of"@en, "est un contexte d'usage de"@fr . + rdfs:label "is setting of"@en, "est contexte d'usage de"@fr . :proposesSetting a owl:ObjectProperty ; rdfs:isDefinedBy :regulation ; rdfs:domain :Organization ; rdfs:range :Setting ; rdfs:comment "A relation that refers to a Setting that can be used in the context of an Organization."@en ; - rdfs:label "proposes setting"@en, "fournit un contexte d'usage"@fr . + rdfs:label "proposes setting"@en, "fournit contexte d'usage"@fr . diff --git a/domains/logistics/configure-organization/q1.csv b/domains/logistics/configure-organization/q1.csv index 80c45803..2fcae9e4 100644 --- a/domains/logistics/configure-organization/q1.csv +++ b/domains/logistics/configure-organization/q1.csv @@ -2,10 +2,6 @@ artifact http://example.org/Barcode_Reader_1 http://example.org/Barcode_Reader_2 http://example.org/Forklift_1 -http://example.org/Forklift_2 http://example.org/Forklift_3 -http://example.org/Forklift_4 http://example.org/Palletjack_1 -http://example.org/Palletjack_2 http://example.org/Palletjack_3 -http://example.org/Palletjack_4 diff --git a/domains/logistics/configure-organization/q1.rq b/domains/logistics/configure-organization/q1.rq index fdcd7c13..a7b7f3e5 100644 --- a/domains/logistics/configure-organization/q1.rq +++ b/domains/logistics/configure-organization/q1.rq @@ -3,9 +3,9 @@ prefix hmas: select distinct ?artifact where { - ?usage a ?usageModel ; - hmas:isUsageIn ex:ReceivingSetting ; - hmas:isUsageOf ?facility . + ?access hmas:isAccessIn ex:ReceiveSetting ; + hmas:isAccessFor ?facility ; + hmas:isAccessTo ?artifact . ?artifact hmas:isMaterialOf ex:FL_Logistics ; hmas:hasFacility ?facility . diff --git a/domains/logistics/configure-organization/q2.csv b/domains/logistics/configure-organization/q2.csv index 587a225a..7c177703 100644 --- a/domains/logistics/configure-organization/q2.csv +++ b/domains/logistics/configure-organization/q2.csv @@ -1,3 +1,3 @@ setting -http://example.org/PickingSetting -http://example.org/ReceivingSetting +http://example.org/PickSetting +http://example.org/ReceiveSetting diff --git a/domains/logistics/configure-organization/q4.rq b/domains/logistics/configure-organization/q4.rq index e11f1570..54b8093b 100644 --- a/domains/logistics/configure-organization/q4.rq +++ b/domains/logistics/configure-organization/q4.rq @@ -3,11 +3,7 @@ prefix hmas: select distinct ?agent where { - ?usage a ?usageModel ; - hmas:isUsageIn ex:PickingSetting . - - ?use a hmas:Access ; - hmas:isAccessFor ?usage ; - hmas:isAccessOf ?agent . + ?access hmas:isAccessIn ex:PickSetting ; + hmas:isAccessOf ?agent . } order by ?agent diff --git a/domains/logistics/configure-organization/q5.csv b/domains/logistics/configure-organization/q5.csv new file mode 100644 index 00000000..a2d25d7b --- /dev/null +++ b/domains/logistics/configure-organization/q5.csv @@ -0,0 +1,4 @@ +access,facility +http://example.org/FL_Lyon_Receive_Move_Access,http://example.org/LiftDown +http://example.org/FL_Lyon_Receive_Move_Access,http://example.org/LiftUp +http://example.org/FL_Lyon_Receive_Move_Access,http://example.org/Move diff --git a/domains/logistics/configure-organization/q5.rq b/domains/logistics/configure-organization/q5.rq new file mode 100644 index 00000000..1032411f --- /dev/null +++ b/domains/logistics/configure-organization/q5.rq @@ -0,0 +1,11 @@ +prefix ex: +prefix hmas: + +select distinct ?access ?facility +where { + ex:Forklift_1 hmas:hasFacility ?facility . + + ?access hmas:isAccessTo ex:Forklift_1 ; + hmas:isAccessFor ?facility . +} +order by ?access ?facility diff --git a/src/regulation.ttl b/src/regulation.ttl index 1fb67746..97361f14 100755 --- a/src/regulation.ttl +++ b/src/regulation.ttl @@ -21,7 +21,7 @@ dct:title "Hypermedia MAS Regulation Ontology"@en, "Ontologie de Régulation des SMA Hypermédias"@fr ; dct:description "An ontology to describe the regulation of Hypermedia Multi-Agent Systems."@en, "L'ontologie pour décrire la régulation des systèmes multi-agents hypermédias."@fr ; dct:issued "2022-05-01"^^xsd:date ; - dct:modified "2024-05-27"^^xsd:date ; + dct:modified "2024-12-09"^^xsd:date ; owl:imports :core ; dct:creator ; dct:contributor ; @@ -110,19 +110,14 @@ rdfs:comment "A Commitment is an engagement of an Agent with the duties of a Mission."@en ; rdfs:label "commitment"@en, "engagement"@fr . -:Usage a owl:Class ; - rdfs:isDefinedBy :regulation ; - rdfs:comment "A set of Facilities that Agents can use in a Setting."@en ; - rdfs:label "usage"@en, "usage"@fr . - :Setting a owl:Class ; rdfs:isDefinedBy :regulation ; - rdfs:comment "A Setting is the context in which a Usage is set."@en ; - rdfs:label "setting"@en, "contexte d'usage"@fr . + rdfs:comment "A Setting is the context in which an Access is set."@en ; + rdfs:label "setting"@en, "contexte d'accès"@fr . :Access a owl:Class ; rdfs:isDefinedBy :regulation ; - rdfs:comment "An opportunity an Agent have to use an Artifact in the context of a Usage."@en ; + rdfs:comment "An opportunity an Agent has to use Facilities of Artifacts in a Setting. Agents have access even if they never use these Facilities. One Access should not be understood as one 'use' of these Facilities."@en ; rdfs:label "access"@en, "accès"@fr . ################################################################# @@ -263,42 +258,28 @@ rdfs:domain :Access ; rdfs:range :Artifact ; rdfs:comment "A relation that refers to an Artifact involved in an Access."@en ; - rdfs:label "is access to"@en, "est l'accès à"@fr . + rdfs:label "is access to"@en, "est accès à"@fr . :isAccessOf a owl:ObjectProperty ; rdfs:isDefinedBy :regulation ; rdfs:domain :Access ; rdfs:range :Agent ; rdfs:comment "A relation that refers to an Agent involved in an Access."@en ; - rdfs:label "is access of"@en, "est l'accès de"@fr . + rdfs:label "is access of"@en, "est accès de"@fr . :isAccessFor a owl:ObjectProperty ; rdfs:isDefinedBy :regulation ; rdfs:domain :Access ; - rdfs:range :Usage ; - rdfs:comment "A relation that refers to a Usage involved in an Access."@en ; - rdfs:label "is access for"@en, "est l'accès pour"@fr . - -:isUsageOf a owl:ObjectProperty ; - rdfs:isDefinedBy :regulation ; - rdfs:domain :Usage ; rdfs:range :Facility ; - rdfs:comment "A relation that refers to a Facility involved in a Usage."@en ; - rdfs:label "is usage of"@en, "est un usage de"@fr . + rdfs:comment "A relation that refers to a Facility involved in an Access."@en ; + rdfs:label "is access for"@en, "est accès pour"@fr . -:isUsageIn a owl:ObjectProperty ; +:isAccessIn a owl:ObjectProperty ; rdfs:isDefinedBy :regulation ; - rdfs:domain :Usage ; + rdfs:domain :Access ; rdfs:range :Setting ; - rdfs:comment "A relation that refers to a Setting involved in a Usage."@en ; - rdfs:label "is usage in"@en, "est un usage dans"@fr . - -:hasUsageRelationshipWith a owl:ObjectProperty ; - rdfs:isDefinedBy :regulation ; - rdfs:domain :Usage ; - rdfs:range :Usage ; - rdfs:comment "A relation that refers to the relationship between two Usages."@en ; - rdfs:label "has usage relationship with"@en, "a une relation d'usage avec"@fr . + rdfs:comment "A relation that refers to a Setting involved in an Access."@en ; + rdfs:label "is access in"@en, "est accès dans"@fr . :hasFacility a owl:ObjectProperty ; rdfs:isDefinedBy :regulation ; @@ -312,11 +293,11 @@ rdfs:domain :Setting ; rdfs:range :Organization ; rdfs:comment "A relation that refers to a Setting of an Organization."@en ; - rdfs:label "is setting of"@en, "est un contexte d'usage de"@fr . + rdfs:label "is setting of"@en, "est contexte d'usage de"@fr . :proposesSetting a owl:ObjectProperty ; rdfs:isDefinedBy :regulation ; rdfs:domain :Organization ; rdfs:range :Setting ; rdfs:comment "A relation that refers to a Setting that can be used in the context of an Organization."@en ; - rdfs:label "proposes setting"@en, "fournit un contexte d'usage"@fr . + rdfs:label "proposes setting"@en, "fournit contexte d'usage"@fr .