forked from hsperker/product-knowledge
-
Notifications
You must be signed in to change notification settings - Fork 0
/
material_skill.sparql
1 lines (1 loc) · 2.68 KB
/
material_skill.sparql
1
PREFIX cx: <https://raw.githubusercontent.com/catenax-ng/product-knowledge/main/ontology/cx_ontology.ttl#>\nPREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\nPREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\nPREFIX xsd: <http://www.w3.org/2001/XMLSchema#> \n\n######\n# Sample \"Material Incident\" Search Skill \n# An incident has\n# - a description of the target material\n# - a geographical region (as a spatial segment)\n# The skill produces\n# - incident site(s) and source part(s)\n# - affected product(s) and organization(s)\n# - (m)bom trace(s) from source to product \n######\n\nSELECT ?site ?part ?partName ?vendor ?product ?productName ?lat ?lon ?part2 ?part3 ?part4 ?site2 ?site3 ?site4 ?site5 ?lat2 ?lon2 ?lat3 ?lon3 ?lat4 ?lon4 ?lat5 ?lon5 WHERE {\n\n VALUES (?material ?latmin ?latmax ?lonmin ?lonmax) { \n (\"@material\"^^xsd:string \"@latmin\"^^xsd:double \"@latmax\"^^xsd:double \"@lonmin\"^^xsd:double \"@lonmax\"^^xsd:double) \n }\n\n ## Look for production sites in the region\n ## using the BPNM/Golden Record Catalogue\n ?site cx:hasGeoInformation [\n cx:hasLatitude ?lat;\n cx:hasLongitude ?lon\n ].\n FILTER( ?lat >= ?latmin && ?lat <= ?latmax &&\n ?lon >= ?lonmin && ?lon <= ?lonmax)\n \n ## Find the connector address of the responsible\n ## businesspartner/orga from the federated data catalogue \n ?incidentOrga cx:hasSite ?site;\n cx:hasConnector ?connectorUrl.\n \n SERVICE ?connectorUrl {\n\n ## Is there a product which has the incident \"material\"\n ## workaround: use the part name\n ?part rdf:type cx:Part;\n cx:partName ?partName;\n cx:isProducedBy ?site.\n FILTER( CONTAINS(?partName, ?material)).\n\n ?part cx:isPartOf ?part2.\n ?part2 cx:partName ?part2Name;\n cx:isProducedBy ?site2.\n \n OPTIONAL {\n ?part2 cx:isPartOf ?part3.\n ?part3 cx:partName ?part3Name;\n cx:isProducedBy ?site3.\n }\n\n OPTIONAL {\n ?part3 cx:isPartOf ?part4.\n ?part4 cx:partName ?part4Name;\n cx:isProducedBy ?site4.\n }\n\n OPTIONAL {\n ?part4 cx:isPartOf ?product.\n ?product cx:partName ?productName;\n cx:isProducedBy ?site5.\n }\n }\n\n ?vendor cx:hasSite ?site5.\n ?site2 cx:hasGeoInformation [\n cx:hasLatitude ?lat2;\n cx:hasLongitude ?lon2\n ].\n ?site3 cx:hasGeoInformation [\n cx:hasLatitude ?lat3;\n cx:hasLongitude ?lon3\n ].\n ?site4 cx:hasGeoInformation [\n cx:hasLatitude ?lat4;\n cx:hasLongitude ?lon4\n ].\n ?site5 cx:hasGeoInformation [\n cx:hasLatitude ?lat5;\n cx:hasLongitude ?lon5\n ].\n} \n