From ac308fb1db051c43953637017b7ec927fad9a6f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marie-Ang=C3=A9lique=20Laporte?= Date: Thu, 16 Dec 2021 12:58:15 +0100 Subject: [PATCH] adding fsc rdf --- fsc.ttl | 2894 ++++++++++++++++++++++++++++++++++++++++++ util/rdf_creation.py | 636 +++++++--- 2 files changed, 3327 insertions(+), 203 deletions(-) create mode 100644 fsc.ttl diff --git a/fsc.ttl b/fsc.ttl new file mode 100644 index 00000000..dc85a320 --- /dev/null +++ b/fsc.ttl @@ -0,0 +1,2894 @@ +@prefix ns1: . +@prefix ns2: . +@prefix ns3: . +@prefix rdfs: . +@prefix xsd: . + + a ns1:Class, + ns1:Ontology ; + rdfs:subClassOf ; + ns2:prefLabel "" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Acer campestre" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Acer platanoides" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Acer pseudoplatanus" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Agreements with affected Indigenous Peoples, etc" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Agreements with affected local communities" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Agriculture" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Alnus glutinosa" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Animal" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Animal hauling" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Areas used by local communities and IP" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Bar or quadratic code" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Benefits from the Forest" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Better public, landowner, and supplier communication" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Betula pendula" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Boreal" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Both SLIMF types" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Broad spectrum insecticides" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Buffer zone" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Carpinus betulus" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Certifying body standard based on V4" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Chain of Custody" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Chemical fertilisers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Chemical storage sites" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Chemical use control" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Chemical use records" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Cluster sampling" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Commercial tourism" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Communications with stakeholders" . + + a ns1:Class ; + rdfs:subClassOf , + ; + ns2:prefLabel "Community" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Community Relations" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Compliance with Laws" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Concession" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Concession agreements" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Conservation area set aside" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Contacted by phone" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Contractor contracts" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Controlled Wood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Copies of applicable laws" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Cultivation practice" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Disease" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Documentation showing tenure or land-use rights" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Documents with transportation" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Drone monitoring" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Economic" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Economic interests" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Ecosystem service procedure FSC-PRO-30-006" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Email, or letter" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Environmental" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Environmental Values and Impacts" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Environmental impacts monitoring records" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Environmental interests" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Erosion control" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Eucalyptus globulus" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Experts" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "FSC-accredited certification bodies" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "FSC-relevant" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "FSC impact-related" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "FSC interim national standard based on V5" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "FSC network partners" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "FSC regional offices" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Face to face meetings" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Fagus sylvatica" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Forest Management" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Forest inventory" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Forest roads" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Forest workers and contractors" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Fraxinus excelsior" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Fungus" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Good management practice" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Group certificate" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Group single low intensity management units" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Group standard FSC-STD-30-005" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "HCV1 Species diversity" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "HCV2 Landscape-level ecosystems and mosaics" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "HCV3 Ecosystems and habitats" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "HCV4 Critical ecosystem services" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "HCV5 Community needs" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "HCV6 Cultural values" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "HCVs" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Harvesting and production records" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Herbicides" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "High Conservation Values" . + + a ns1:Class ; + rdfs:subClassOf , + ; + ns2:prefLabel "Hunting" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Implementation of Management Activities" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Improvement of forest management and practices" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Improvement of management systems and performance" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Indigenous" . + + a ns1:Class ; + rdfs:subClassOf , + ; + ns2:prefLabel "Indigenous People" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Indigenous Peoples' Rights" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Industrial operation" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Insect" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Insecticides" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Inventory records" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Larix kaempferi" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Local communities" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Local customary notice boards" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Local radio announcements" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Long term management plan(s)" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Low intensity" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Main Evaluation" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Management Planning" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Manual harvesting" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Mechanized harvesting" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Mining" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Mixed Forest" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Monitoring and Assessment" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Monitoring sites" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Multiple management units" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N10 Other non-timber forest products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N1 Barks" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N2 Soil conditioner and substrates for plants" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N3.1 Natural cork, raw or boiled" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N3.2 Cork powder" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N3.3 Cork granules" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N3.4 Cork stoppers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N3.5 Rolls and panels of compressed cork" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N3.6 Cork disks" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N3.7 Articles of cork" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N3 Cork and articles of cork" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N4.1 Rattan cane (rough form)" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N4.2 Rattan taper (clean, peeled and spitted)" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N4.3 Decorative objects and wickerwork" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N4.4 Rattan furniture" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N4.5 Rattan furniture components" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N4 Straw, wicker, rattan and similar" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N5.10 Bamboo pulp" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N5.1 Natural bamboo" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N5.2 Edible bamboo" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N5.3 Fuel bamboo" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N5.4 Bamboo plywood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N5.5 Bamboo flooring" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N5.6 Bamboo furniture" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N5.7 Bamboo household articles and wickerwork" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N5.8 Bamboo textiles" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N5.9 Bamboo vinegar" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N5 Bamboo and articles of bamboo" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N6.1 Flowers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N6.2 Grasses, ferns, mosses and lichens" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N6.3.1 Christmas trees" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N6.3 Whole trees or plants" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N6.4 Pine cones" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N6 Plants and parts of plants" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.1.1 Natural rubber" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.1.2 Tyres" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.1.3 Balls" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.1.4 Footwear" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.1.5 Rubber foam pillows and mattresses" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.1.6 Balata, gutta-percha, guayule, chicle" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.1.7 Other manufactured articles of rubber" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.1 Rubber/ Latex" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.2 Gum resin" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.3 Resin and manufactured resin products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.4 Tannin" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7.5 Essential oils" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N7 Natural gums, resins, oils and derivatives" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N8.1 Ethanol" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N8.2 Medicinal plants and products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N8.3 Pharmaceutical raw materials" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N8.4 Cosmetics and health care products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N8.5 Wood vinegar" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N8.6 Pyroligneous acid" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N8 Chemical, medicinal and cosmetic products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N9.1 Nuts" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N9.2 Tea" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N9.3 Palm-hearts" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N9.4 Mushrooms, truffles" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N9.5 Fruits" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N9.6.1 Maple syrup or sugar" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N9.6.2 Birch syrup or sugar" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N9.6 Sap-based foods" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N9.7 Game" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N9.8 Honey" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "N9 Food" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "NRA working groups" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "National and state forest agencies" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "National forest stewardship standard based on V4" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "National forest stewardship standard based on V5" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Natural Forest" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Natural Forest - Boreal" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Natural Forest - Community forestry" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Natural Forest - Conservation purposes" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Natural Forest - Temperate" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Natural Forest - Tropical" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Non-SLIMF" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Notice in press" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Notice on relevant websites" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Nursery" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Office" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Ongoing research" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Other certification scheme" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.1.1 Groundwood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.1.2 Refiner pulp" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.1 Mechanical pulp, bleached" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.2.1 Groundwood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.2.2 Refiner pulp" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.2 Mechanical pulp, unbleached" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.3 Chemical pulp, bleached" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.4 Chemical pulp, unbleached" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.5 Semi-chemical pulp, bleached" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.6 Semi-chemical pulp, unbleached" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.7.1 Specialty cellulose" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.7.2 Cellulose derivatives" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.7.3 Regenerated cellulose film" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.7.4 Rayon and other synthetic fibres" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.7 Dissolving pulp" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.8.1 Recovered pulp, deinked" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.8.2 Recovered pulp, not deinked" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1.8 Pulp from recovered paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P10 Other pulp and paper products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P1 Pulp" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.1.1 Coated paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.1.2 Uncoated paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.1 Copying, printing, communication paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.2 Newsprint" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.3 rapping and packaging Paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.10 Composite papers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.11 Wallpaper base" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.12 Security paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.1 Impregnated papers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.2 Photographic base papers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.3 Thermographic papers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.4 Translucent papers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.5 Self-copying and carbon papers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.6 Cigarette papers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.7 Filter papers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.8 Crepe papers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4.9 Embossed paper and perforated paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.4 Specialty paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.5 Hand-made papers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2.6 Tissue paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P2 Paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P3.1 Uncoated paperboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P3.2 Coated paperboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P3.3 Pressboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P3.4.1 High-pressure laminates" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P3.4.2 Low-pressure laminates" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P3.4.3 Continuous pressure laminates" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P3.4 Paperboard laminates" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P3.5 Metalized paperboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P3.6 Crepe paperboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P3 Paperboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P4.1 Linerboard or testliner" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P4.2 Fluting" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P4.3 Corrugated fibreboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P4 Corrugated paper and paperboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P5.1 Cardboard packaging" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P5.2 Corrugated paper packaging" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P5.3 Sacks and bags of paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P5.4 Food wrapping paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P5.5 Carton pack for beverages and liquid food" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P5.6 Egg boxes and similar" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P5.7 Optical disc packaging and covers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P5 Packaging and wrappings of paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P6.1 Cleaning tissues and paper towels" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P6.2 Facial tissues and refreshing tissues" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P6.3 Napkins / serviettes" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P6.4 Toilet paper / bathroom tissue" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P6.5 Sanitary towels, tampons, diapers and similar" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P6.6 Tablecloths" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P6.7 Dinnerware" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P6.8 Medical supplies made of pulp/paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P6 Household and sanitary pulp and paper products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P7.10 Postage stamps" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P7.1 Notebooks" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P7.2 Pads" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P7.3 File folders" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P7.4 Rolled thermal paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P7.5 Post and greeting cards" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P7.6 Envelopes" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P7.7 Gummed papers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P7.8 Adhesive labels" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P7.9 Transfers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P7 Stationery of paper (printed and unprinted)" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P8.1 Books" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P8.2 Magazines" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P8.3 Newspaper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P8.4 Advertising materials" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P8.5 Business cards" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P8.6 Calendars, diaries and organisers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P8.7 Toys and games made with paper" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P8.8 Wallpapers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P8 Printed materials" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "P9 Bobbins, spools, rolls and similar" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Picea abies" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Picea sitchensis" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Pine wildling" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Pinus pinaster" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Pinus pinea" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Pinus sylvestris" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Plant" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Plantation" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Political, legal, systemic" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Pre-Evaluation" . + + a ns1:Class ; + rdfs:subClassOf , + ; + ns2:prefLabel "Private" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Production forest area" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Protected area" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Prunus avium" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Pseudotsuga menziesii" . + + a ns1:Class ; + rdfs:subClassOf , + ; + ns2:prefLabel "Public" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Public confidence" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Purchasing and sales documentation" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Quercus petraea" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Quercus robur" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Quercus rubra" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Random sampling" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Re-Evaluation" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Records of complaints/disputes and resolution" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Records of payments of royalties, fees, or taxes" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Records of payments to workers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Recreation" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Reduction" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Reference forest" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Remote sensing" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Removal" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Replacement" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Research institutions and universities" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Results of monitoring forest growth and health" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Road maintenance" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "SLIMF - Boreal" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "SLIMF - Community" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "SLIMF - Conservation" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "SLIMF - Plantation" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "SLIMF - Temperate" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "SLIMF - Tropical" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Sampling plots" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Seed orchards" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Semi-mechanized harvesting" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Single low intensity management unit" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Single management unit" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Single small management unit" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Small forest" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Small or Low-Intensity Managed Forest" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Smallholder" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Social" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Social impact survey results" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Social interests" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Social media broadcast" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Social survey" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Special Evaluation" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Specific strategy" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Specific strategy - biocontrol" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Standard development groups" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Stratified sampling" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Subtropical" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Surveillance" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Systematic sampling" . + + a ns1:Class ; + rdfs:subClassOf , + ; + ns2:prefLabel "TBC" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Technical management guides relating to operations" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Temperate" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Trademark standard FSC-STD-50-001" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Training" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Tree mark" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Tropical" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Uncertified dissimilar forestry regime" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Uncertified other land uses" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Uncertified similar forestry regime" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Up to date maps of roads, management sites, etc" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W1.1 Roundwood (logs)" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W1.2 Fuel wood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W1.3 Twigs" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W10.1 Solid wood packaging" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W10.2 Cable-drums" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W10.3 Pallets and skids" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W10.4 Cooper's products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W10.5 Container flooring" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W10 Wood package and similar" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.10 Wooden insulation" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.11 Window blinds, shutters and similar" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.12 Houses and building elements" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.13 Marine constructions, except boats" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.14 Trusses and roofs" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.15 Roofing tiles" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.1 Doors and door frames" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.2 Windows and window frames" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.3 Stairs" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.4 Dividers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.5.1 Laminate flooring" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.5.2 Parquet flooring" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.5.3 Plank flooring" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.5.4 Wood-block flooring" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.5.5 Engineered flooring" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.5 Flooring" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.6 Gates and garage doors" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.7 Wall cladding" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.8 Mouldings" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11.9 Hot tubs and sauna" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W11 Wood for construction" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.10 Cupboards and chests" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.11 Kitchen countertops" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.12 Parts of furniture" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.13 Shelves" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.1 Cabinet" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.2 Custom furniture" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.3 Tables" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.4 Beds" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.5 Couches and armchairs" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.6 Chairs and stools" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.7 Office furniture" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.8 Institutional casework" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12.9 Wardrobes" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W12 Indoor furniture" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13.1.1 Garden tables" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13.1.2 Garden benches" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13.1.3 Garden chairs and stools" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13.1.4 Hammocks and hammock frames" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13.1 Garden furniture" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13.2 Trellis and plant support" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13.3 Shelters and parasols" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13.4 Fences, fence stakes, pales" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13.5 Decking and garden sleepers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13.6 Garden sheds" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13.7 Other outdoor furniture and gardening products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W13 Outdoor furniture and gardening" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W14.1 String musical instruments" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W14.2 Keyboard musical instruments" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W14.3 Wind or mouth-blown musical instruments" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W14.4 Percussion instruments" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W14.5 Parts of musical instruments" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W14 Musical instruments" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W15.1 Playground equipment" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W15.2 Toys and games made with wood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W15.3.1 Bicycles" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W15.3.2 Bats, sticks, poles and paddles" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W15.3.3 Boards and skis" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W15.3.4 Other sporting goods" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W15.3 Sporting goods" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W15 Recreational goods" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W16.10 Bath items or accessories" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W16.1 Wooden frames" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W16.2 Brooms, brushes and brush handles" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W16.3 Tableware, kitchenware and similar" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W16.4 Clothes hangers and pegs" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W16.5 Toilet seats" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W16.6 Matches" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W16.7 Mousetraps" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W16.8 Fans" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W16.9 Ladders" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W16 Household articles" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W17.1 Pens" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W17.2 Pencils" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W17.3 Rulers" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W17.4 Stamps" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W17 Stationery of wood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.10 Boats" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.11 Wooden lighters" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.12 Wildlife and pet products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.1 Dowels and turnery parts of wood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.2 Coffins" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.3 Medical supplies made of wood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.4 Tools, tool bodies and tool handles" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.5 Ice pop/lolly sticks" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.6 Jewellery" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.7 Works of art" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.8 Ornamental and decorative objects" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18.9 Wheels" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W18 Other manufactured wood products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W19 Other wood productsl 2 Level 3 Examples" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W1 Rough wood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W2 Wood charcoal" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W3.1 Wood chips" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W3.2 Sawdust" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W3.3 Wood shavings" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W3.4 Wood wool" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W3.5 Wood flour" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W3.6 Wood pellets" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W3.7 Sawdust briquettes" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W3 Wood in chips or particles" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W4.1 Impregnated roundwood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W4.2 Impregnated railway sleepers/ties" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W4.3.1 Treated glued laminated timber" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W4.3.2 Treated finger jointed lumber" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W4.3 Treated dimensional lumber,timber or plywood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W4 Impregnated/treated wood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W5.1 Flitches and boules" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W5.2 Solid wood boards" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W5.3 Beams" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W5.4 Planks" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W5.5 Poles and piles" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W5.6 Railway sleepers/ties, not impregnated" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W5.7 Raw wood for parquet flooring" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W5.8 Slabs and edgings" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W5.9 Pencil slats" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W5 Solid wood (sawn, chipped, sliced or peeled)" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W6.1 Dimensional timber and lumber, finished" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W6.2 Non-dimensional timber and lumber" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W6.3 Boards, finished" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W6 Products from planing mill" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W7.1 Peeled veneer" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W7.2 Sliced veneer" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W7.3 Sawn veneer" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W7.4 Veneer strips" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W7 Veneer" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.1.1 Laminboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.1.2 Veneer plywood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.1 Plywood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.2.1 Melamine particleboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.2.2 Veneered particleboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.2.3 Oriented Strand Board" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.2.4 Smooth-surface panel" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.2.5 Wood cement particleboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.2.6 Plasterboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.2.7 Strawboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.2.8 Graded particleboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.2 Particleboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.3.1 High-density fibreboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.3.2 Medium-density fibreboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.3.3 Softboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.3.4 Medium-hard-fibreboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8.3 Fibreboard" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W8 Wood panels" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9.10 Compressed wood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9.11 Wood-plastic composites" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9.1 Finger jointed wood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9.2 Laminated veneer lumber" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9.3 Parallel strand lumber" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9.4 Wood-wool board" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9.5 Solid-wood board" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9.6 Glued laminated timber" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9.7 I-joists and I-beams" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9.8 Laminated compressed wood" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9.9 Composite board" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "W9 Engineered wood products" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Water courses" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Water source" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Weed" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Wildlife evaluation records" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Work instructions" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Workers' Rights and Employment Conditions" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "Workers' amenities" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "adv" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "cw" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "dir" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "gui" . + + a ns1:Class ; + rdfs:subClassOf , + ; + ns2:prefLabel "no" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "ns" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "pol" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "pro" . + + a ns1:Class ; + rdfs:subClassOf ; + ns2:prefLabel "std" . + + a ns1:Class ; + rdfs:subClassOf , + ; + ns2:prefLabel "yes" . + + a ns1:Class ; + rdfs:subClassOf [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + ; + ns2:prefLabel "Coverage" . + + a ns1:Class ; + rdfs:subClassOf [ a ns1:Restriction ; + ns1:maxQualifiedCardinality 1 ; + ns1:onClass ; + ns1:onProperty ], + ; + ns2:prefLabel "Impact" . + + a ns1:Class ; + rdfs:subClassOf [ a ns1:Restriction ; + ns1:maxQualifiedCardinality 1 ; + ns1:onClass ; + ns1:onProperty ], + ; + ns2:prefLabel "Status" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-audit-documentation-categories.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-audit-documentation-categories" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-audit-sampling-system.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-audit-sampling-system" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-audit-site-types.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-audit-site-types" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-audit-stakeholder-engagement-types.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-audit-stakeholder-engagement-types" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-audit-stakeholder-types.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-audit-stakeholder-types" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-audit-type.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-audit-type" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-certificate-category.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Categories of FSC certificates" ; + ns2:prefLabel "fsc-certificate-category" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-certificate-type.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Types of FSC certificates" ; + ns2:prefLabel "fsc-certificate-type" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-controlled-wood-code.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-controlled-wood-code" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-coverage-region.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "FSC regions if different to the ISEAL list" ; + ns2:prefLabel "fsc-coverage-region" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:definition "Indicate the outcome(s) the resource mainly supports or contributes to" ; + ns2:prefLabel "fsc-economic-issues" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:prefLabel "fsc-economic-topics" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:definition "Indicate the outcome(s) the resource mainly supports or contributes to" ; + ns2:prefLabel "fsc-environmental-issues" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:prefLabel "fsc-environmental-topics" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-evidence-category.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-evidence-category" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-forest-and-tree-species.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Indicate the species included in the coverage of the resource" ; + ns2:prefLabel "fsc-forest-and-tree-species" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-forest-biome-zone.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Indicate the zone(s) included in the coverage of the resource" ; + ns2:prefLabel "fsc-forest-biome-zone" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-forest-harvesting-techniques.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-forest-harvesting-techniques" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-forest-management-principle.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Indicate the FM principle(s) the resource supports or contributes to" ; + ns2:prefLabel "fsc-forest-management-principle" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-forest-management-type-of-control.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Indicate the FM control type(s) included in the coverage of the resource" ; + ns2:prefLabel "fsc-forest-management-type-of-control" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-forest-monitoring-methods.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-forest-monitoring-methods" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-forest-products.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Indicate the products included in the coverage of the resource" ; + ns2:prefLabel "fsc-forest-products" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-forest-products-identification-system.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-forest-products-identification-system" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-forest-type.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Indicate the type(s) included in the coverage of the resource" ; + ns2:prefLabel "fsc-forest-type" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-forestry-environmental-safeguards.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-forestry-environmental-safeguards" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-high-conservation-values.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-high-conservation-values" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-non-forestry-activities.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-non-forestry-activities" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-non-forestry-services-for-local-communities.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-non-forestry-services-for-local-communities" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-outcomes-and-benefits.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Indicate the outcome(s) the resource mainly supports or contributes to" ; + ns2:prefLabel "fsc-outcomes-and-benefits" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:definition "The alternative biocontrol agent to control a pest" ; + ns2:prefLabel "fsc-pest-biocontrol-agent" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:definition "The common name of a pest" ; + ns2:prefLabel "fsc-pest-common-name" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:definition "The species name of the pest" ; + ns2:prefLabel "fsc-pest-species-name" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-pest-type.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "The type of a pest" ; + ns2:prefLabel "fsc-pest-type" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-pesticide-active-ingredient.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Pesticide active ingredient" ; + ns2:prefLabel "fsc-pesticide-active-ingredient" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:definition "The challenge a pesticide aims to control" ; + ns2:prefLabel "fsc-pesticide-alternatives-challenge" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-pesticide-alternatives-method.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "The method used to control a pest" ; + ns2:prefLabel "fsc-pesticide-alternatives-method" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:definition "The strategy to tackle a pest" ; + ns2:prefLabel "fsc-pesticide-alternatives-strategy" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-pesticide-alternatives-trial-status.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "The type of alternatives strategy" ; + ns2:prefLabel "fsc-pesticide-alternatives-trial-status" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-pesticide-alternatives-type.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Whether the alternative pesticide approach has been trialed" ; + ns2:prefLabel "fsc-pesticide-alternatives-type" ; + ns2:scopeNote "Yes or No" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-pesticide-common-name.txt" ; + rdfs:comment "http://www.alanwood.net/pesticides/index_cn_frame.html" ; + ns1:domain ; + ns1:range ; + ns2:definition "The common name of the pesticide" ; + ns2:prefLabel "fsc-pesticide-common-name" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:definition "Indicate the outcome(s) the resource mainly supports or contributes to" ; + ns2:prefLabel "fsc-political-systemic-or-legal-issues" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:prefLabel "fsc-political-systemic-or-legal-topics" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-resource-type.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-resource-type" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-scope---slimf-type.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Small or Low Intensity Managed Forests" ; + ns2:prefLabel "fsc-scope---slimf-type" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:definition "Indicate the outcome(s) the resource mainly supports or contributes to" ; + ns2:prefLabel "fsc-social-issues" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:prefLabel "fsc-social-topics" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-standard-type.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-standard-type" ; + ns2:scopeNote "select from control list" . + + a ns1:DatatypeProperty ; + ns1:domain ; + ns1:range xsd:string ; + ns2:definition "Enter any keywords that help to describe the resource content or coverage" ; + ns2:prefLabel "fsc-subject-keywords" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-sustainability-dimension.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Indicate the sustainability dimension the resource mainly supports or contributes to" ; + ns2:prefLabel "fsc-sustainability-dimension" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-tenure-management.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Indicate the tenure management included in the coverage of the resource" ; + ns2:prefLabel "fsc-tenure-management" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-tenure-ownership.txt" ; + ns1:domain ; + ns1:range ; + ns2:definition "Indicate the tenure ownership included in the coverage of the resource" ; + ns2:prefLabel "fsc-tenure-ownership" ; + ns2:scopeNote "select from control list" . + + a ns1:ObjectProperty ; + ns3:rangeIncludes "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/fsc-transition-status.txt" ; + ns1:domain ; + ns1:range ; + ns2:prefLabel "fsc-transition-status" ; + ns2:scopeNote "Yes or No" . + + a ns1:Class ; + rdfs:subClassOf [ a ns1:Restriction ; + ns1:maxQualifiedCardinality 1 ; + ns1:onClass ; + ns1:onProperty ], + [ a ns1:Restriction ; + ns1:maxQualifiedCardinality 1 ; + ns1:onClass ; + ns1:onProperty ], + ; + ns2:prefLabel "Certificate" . + + a ns1:Class ; + rdfs:subClassOf [ a ns1:Restriction ; + ns1:maxQualifiedCardinality 1 ; + ns1:onClass ; + ns1:onProperty ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + ; + ns2:prefLabel "Form" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-controlled-wood-code" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-coverage-region" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-pesticide-common-name" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-evidence-category" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-pesticide-alternatives-type" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-transition-status" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-certificate-category" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-forest-products-identification-system" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-pesticide-alternatives-method" . + + a ns1:Class ; + rdfs:subClassOf [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:maxQualifiedCardinality 1 ; + ns1:onClass ; + ns1:onProperty ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + ; + ns2:prefLabel "Assurance" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-audit-sampling-system" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-forest-biome-zone" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-forest-harvesting-techniques" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-forestry-environmental-safeguards" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-outcomes-and-benefits" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-pesticide-active-ingredient" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-scope---slimf-type" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-sustainability-dimension" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-audit-type" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-forest-management-type-of-control" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-forest-monitoring-methods" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-non-forestry-activities" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-non-forestry-services-for-local-communities" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-pesticide-alternatives-trial-status" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-tenure-management" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-tenure-ownership" . + + a ns1:Class ; + ns2:prefLabel "FSC" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-certificate-type" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-high-conservation-values" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-pest-type" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-standard-type" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-audit-stakeholder-engagement-types" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-resource-type" . + + a ns1:Class ; + rdfs:subClassOf [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:maxQualifiedCardinality 1 ; + ns1:onClass ; + ns1:onProperty ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + ; + ns2:prefLabel "Pesticides" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-forest-management-principle" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-audit-site-types" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-audit-stakeholder-types" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-forest-type" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-forest-and-tree-species" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-audit-documentation-categories" . + + a ns1:Class ; + rdfs:subClassOf [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:maxQualifiedCardinality 1 ; + ns1:onClass ; + ns1:onProperty ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:onProperty ; + ns1:someValuesFrom xsd:string ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + [ a ns1:Restriction ; + ns1:minQualifiedCardinality 1 ; + ns1:onProperty ; + ns1:someValuesFrom ], + ; + ns2:prefLabel "Scope" . + + a ns1:Class ; + ns2:prefLabel "VOCAB fsc-forest-products" . + diff --git a/util/rdf_creation.py b/util/rdf_creation.py index 67bc9a47..1007e4fc 100644 --- a/util/rdf_creation.py +++ b/util/rdf_creation.py @@ -10,228 +10,458 @@ import pandas as pd import re -g = Graph() +def make_core(): + g = Graph() -##namespace -# NS = "http://iseal.org/terms/" -NS = "https://alanorth.github.io/iseal-schema/#" -## create ontology -iseal = URIRef(NS) -g.add((iseal, RDF.type, OWL.Ontology)) + ##namespace + # NS = "http://iseal.org/terms/" + NS = "https://alanorth.github.io/iseal-schema/#" + ## create ontology + iseal = URIRef(NS) + g.add((iseal, RDF.type, OWL.Ontology)) + df = pd.read_csv("../data/schema-fields.csv") + df.dropna(how="all", axis=1) + df.fillna("", inplace=True) -df = pd.read_csv("../data/schema-fields.csv") -df.dropna(how="all", axis=1) -df.fillna("", inplace=True) + for index, row in df.iterrows(): + element_name = row["element name"] + element_description = row["element description"] + comment = row["element guidance"] + example = row["element link for more information"] + cardinality = row["element options"] + prop_type = row["element type"] + controlled_vocab = row["element controlled values or terms"] + module = row["idss element cluster"] + module_cat = row["idss schema module"] + dc = row["element link for dublin core attributes"] + dspace = row["dspace field name"] + ##module + moduleUri = URIRef(NS + module) + if not (None, SKOS.prefLabel, Literal(module)) in g: + ##create module as skos concept + g.add((moduleUri, RDF.type, OWL.Class)) ## SKOS.Concept + g.add((moduleUri, SKOS.prefLabel, Literal(module))) + ##element + # if '-' not in element_name: + if True: ## lazy reindenting + concept = module_cat # element_name.split(' - ')[0] + # element = element_name.strip() + ## code from Alan + # Make sure element name is URL friendly because we need to use it in + # the file system and in the URL. + # + # Replace two or more whitespaces with one + element_name = re.sub(r"\s{2,}", " ", element_name) + # Replace unnecessary stuff in some element names (I should tell Peter + # that these belong in the description) + element_name = re.sub(r"\s?\(\w+\)", "", element_name) + # Remove commas and question marks + element_name = re.sub(r"[,?]", "", element_name) + # Replace ": " with a dash (as in "Evaluation: ") + element_name = element_name.replace(": ", "-") + # Replace " / " with a dash (as in "biome / zone") + element_name = element_name.replace(" / ", "-") + # Replace whitespace, colons, and slashes with dashes + element_name = re.sub(r"[\s/]", "-", element_name) + # Lower case it + element_name = element_name.lower() + # Strip just in case + element_name = element_name.strip() -for index, row in df.iterrows(): - element_name = row["element name"] - element_description = row["element description"] - comment = row["element guidance"] - example = row["element link for more information"] - cardinality = row["element options"] - prop_type = row["element type"] - controlled_vocab = row["element controlled values or terms"] - module = row["idss element cluster"] - module_cat = row["idss schema module"] - dc = row["element link for dublin core attributes"] - dspace = row["dspace field name"] + # For example Certifying Body, FSC audit, Certificate, etc + cluster = row["idss element cluster"].capitalize() - ##module - moduleUri = URIRef(NS + module) - if not (None, SKOS.prefLabel, Literal(module)) in g: - ##create module as skos concept - g.add((moduleUri, RDF.type, OWL.Class)) ## SKOS.Concept - g.add((moduleUri, SKOS.prefLabel, Literal(module))) - ##element - # if '-' not in element_name: - if True: ## lazy reindenting - concept = module_cat # element_name.split(' - ')[0] - # element = element_name.strip() - ## code from Alan - # Make sure element name is URL friendly because we need to use it in - # the file system and in the URL. - # - # Replace two or more whitespaces with one - element_name = re.sub(r"\s{2,}", " ", element_name) - # Replace unnecessary stuff in some element names (I should tell Peter - # that these belong in the description) - element_name = re.sub(r"\s?\(\w+\)", "", element_name) - # Remove commas and question marks - element_name = re.sub(r"[,?]", "", element_name) - # Replace ": " with a dash (as in "Evaluation: ") - element_name = element_name.replace(": ", "-") - # Replace " / " with a dash (as in "biome / zone") - element_name = element_name.replace(" / ", "-") - # Replace whitespace, colons, and slashes with dashes - element_name = re.sub(r"[\s/]", "-", element_name) - # Lower case it - element_name = element_name.lower() - # Strip just in case - element_name = element_name.strip() + # For example Assurance, Certification, Core, Impact, etc + module = row["idss schema module"].capitalize() - # For example Certifying Body, FSC audit, Certificate, etc - cluster = row["idss element cluster"].capitalize() + # Generate a "safe" version of the element name for use in URLs and + # files by combining the cluster and the element name. This could + # change in the future. + element_name_safe = cluster.replace(" ", "-").lower() + "-" + element_name - # For example Assurance, Certification, Core, Impact, etc - module = row["idss schema module"].capitalize() + element = element_name_safe - # Generate a "safe" version of the element name for use in URLs and - # files by combining the cluster and the element name. This could - # change in the future. - element_name_safe = cluster.replace(" ", "-").lower() + "-" + element_name + conceptUri = URIRef(NS + concept.replace(" ", "_")) + if not (None, SKOS.prefLabel, Literal(concept)) in g: + ##create concept as skos concept + g.add((conceptUri, RDF.type, OWL.Class)) ## SKOS.Concept + g.add((conceptUri, SKOS.prefLabel, Literal(concept))) + g.add((conceptUri, RDFS.subClassOf, moduleUri)) - element = element_name_safe - - conceptUri = URIRef(NS + concept.replace(" ", "_")) - if not (None, SKOS.prefLabel, Literal(concept)) in g: - ##create concept as skos concept - g.add((conceptUri, RDF.type, OWL.Class)) ## SKOS.Concept - g.add((conceptUri, SKOS.prefLabel, Literal(concept))) - g.add((conceptUri, RDFS.subClassOf, moduleUri)) - - ## create properties - elementURI = URIRef(NS + element.replace(" ", "_")) - if prop_type == "CONTROLLED VALUE": ## object property - g.add((elementURI, SKOS.prefLabel, Literal(element))) - g.add((elementURI, RDF.type, OWL.ObjectProperty)) - g.add((elementURI, OWL.domain, conceptUri)) - ## add suproperty link - if dc: - dct = dc.split(":")[1] - if "wgs84" in dc: - g.add( - ( - elementURI, - RDFS.subPropertyOf, - URIRef("http://www.w3.org/2003/01/geo/wgs84_pos#" + dct), + ## create properties + elementURI = URIRef(NS + element.replace(" ", "_")) + if prop_type == "CONTROLLED VALUE": ## object property + g.add((elementURI, SKOS.prefLabel, Literal(element))) + g.add((elementURI, RDF.type, OWL.ObjectProperty)) + g.add((elementURI, OWL.domain, conceptUri)) + ## add suproperty link + if dc: + dct = dc.split(":")[1] + if "wgs84" in dc: + g.add( + ( + elementURI, + RDFS.subPropertyOf, + URIRef( + "http://www.w3.org/2003/01/geo/wgs84_pos#" + dct + ), + ) ) + else: + g.add( + ( + elementURI, + RDFS.subPropertyOf, + URIRef("http://purl.org/dc/terms/" + dct), + ) + ) + ## add dspace alternative ID + g.add( + ( + elementURI, + URIRef("http://purl.org/dc/terms/alternative"), + Literal(dspace), ) + ) + ## create controlled vocab + cvURI = URIRef(NS + "VOCAB_" + element.replace(" ", "_")) + g.add( + (cvURI, RDF.type, OWL.Class) + ) ## SKOS.Concept ## SKOS.Collection?? + g.add((cvURI, SKOS.prefLabel, Literal("VOCAB " + element))) + for term in controlled_vocab.split("||"): + termURI = URIRef(NS + term.replace(" ", "_").replace("|", "")) + g.add((termURI, RDF.type, OWL.Class)) ## SKOS.Concept + g.add((termURI, SKOS.prefLabel, Literal(term))) + g.add((termURI, RDFS.subClassOf, cvURI)) ## SKOS.member??? + g.add((elementURI, OWL.range, cvURI)) + + ## add the controlled vocab information on properties directly + g.add( + ( + elementURI, + URIRef("http://purl.org/dc/dcam/rangeIncludes"), + Literal( + "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/" + + element + + ".txt" + ), + ) + ) + + ## cardinality + if cardinality == "MULTI SELECT FROM CONTROL LIST": + br = BNode() + g.add((br, RDF.type, OWL.Restriction)) + g.add((br, OWL.onProperty, elementURI)) + g.add((br, OWL.minQualifiedCardinality, Literal(1))) + g.add((br, OWL.someValuesFrom, cvURI)) + g.add((conceptUri, RDFS.subClassOf, br)) else: - g.add( - ( - elementURI, - RDFS.subPropertyOf, - URIRef("http://purl.org/dc/terms/" + dct), + br = BNode() + g.add((br, RDF.type, OWL.Restriction)) + g.add((br, OWL.onProperty, elementURI)) + g.add((br, OWL.maxQualifiedCardinality, Literal(1))) + g.add((br, OWL.onClass, cvURI)) + g.add((conceptUri, RDFS.subClassOf, br)) + + # elif prop_type == 'URL': ## object property + # g.add((elementURI, RDF.type, OWL.ObjectProperty)) + # g.add((elementURI, OWL.domain, conceptUri)) + # g.add((elementURI, OWL.range, URIRef("") )) + # g.add((elementURI, SKOS.prefLabel, Literal(element))) + else: ## datatype properties + g.add((elementURI, SKOS.prefLabel, Literal(element))) + g.add((elementURI, RDF.type, OWL.DatatypeProperty)) + g.add((elementURI, OWL.domain, conceptUri)) + if dc: + dct = dc.split(":")[1] + if "wgs84" in dc: + g.add( + ( + elementURI, + RDFS.subPropertyOf, + URIRef( + "http://www.w3.org/2003/01/geo/wgs84_pos#" + dct + ), + ) ) - ) - ## add dspace alternative ID - g.add( - ( - elementURI, - URIRef("http://purl.org/dc/terms/alternative"), - Literal(dspace), - ) - ) - ## create controlled vocab - cvURI = URIRef(NS + "VOCAB_" + element.replace(" ", "_")) - g.add((cvURI, RDF.type, OWL.Class)) ## SKOS.Concept ## SKOS.Collection?? - g.add((cvURI, SKOS.prefLabel, Literal("VOCAB " + element))) - for term in controlled_vocab.split("||"): - termURI = URIRef(NS + term.replace(" ", "_").replace("|", "")) - g.add((termURI, RDF.type, OWL.Class)) ## SKOS.Concept - g.add((termURI, SKOS.prefLabel, Literal(term))) - g.add((termURI, RDFS.subClassOf, cvURI)) ## SKOS.member??? - g.add((elementURI, OWL.range, cvURI)) - - ## add the controlled vocab information on properties directly - g.add( - ( - elementURI, - URIRef("http://purl.org/dc/dcam/rangeIncludes"), - Literal( - "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/" - + element - + ".txt" - ), - ) - ) - - ## cardinality - if cardinality == "MULTI SELECT FROM CONTROL LIST": - br = BNode() - g.add((br, RDF.type, OWL.Restriction)) - g.add((br, OWL.onProperty, elementURI)) - g.add((br, OWL.minQualifiedCardinality, Literal(1))) - g.add((br, OWL.someValuesFrom, cvURI)) - g.add((conceptUri, RDFS.subClassOf, br)) - else: - br = BNode() - g.add((br, RDF.type, OWL.Restriction)) - g.add((br, OWL.onProperty, elementURI)) - g.add((br, OWL.maxQualifiedCardinality, Literal(1))) - g.add((br, OWL.onClass, cvURI)) - g.add((conceptUri, RDFS.subClassOf, br)) - - # elif prop_type == 'URL': ## object property - # g.add((elementURI, RDF.type, OWL.ObjectProperty)) - # g.add((elementURI, OWL.domain, conceptUri)) - # g.add((elementURI, OWL.range, URIRef("") )) - # g.add((elementURI, SKOS.prefLabel, Literal(element))) - else: ## datatype properties - g.add((elementURI, SKOS.prefLabel, Literal(element))) - g.add((elementURI, RDF.type, OWL.DatatypeProperty)) - g.add((elementURI, OWL.domain, conceptUri)) - if dc: - dct = dc.split(":")[1] - if "wgs84" in dc: - g.add( - ( - elementURI, - RDFS.subPropertyOf, - URIRef("http://www.w3.org/2003/01/geo/wgs84_pos#" + dct), + else: + g.add( + ( + elementURI, + RDFS.subPropertyOf, + URIRef("http://purl.org/dc/terms/" + dct), + ) ) + ## add dspace alternative ID + g.add( + ( + elementURI, + URIRef("http://purl.org/dc/terms/alternative"), + Literal(dspace), ) + ) + range = None + if prop_type == "DATE": + g.add((elementURI, OWL.range, XSD.date)) + range = XSD.date + elif prop_type == "NUMERIC VALUE": + g.add((elementURI, OWL.range, XSD.float)) + range = XSD.float else: - g.add( - ( - elementURI, - RDFS.subPropertyOf, - URIRef("http://purl.org/dc/terms/" + dct), + g.add((elementURI, OWL.range, XSD.string)) + range = XSD.string + ##cardinality + if cardinality == "REPEAT VALUES": + br = BNode() + g.add((br, RDF.type, OWL.Restriction)) + g.add((br, OWL.onProperty, elementURI)) + g.add((br, OWL.someValuesFrom, range)) + g.add((conceptUri, RDFS.subClassOf, br)) + else: + br = BNode() + g.add((br, RDF.type, OWL.Restriction)) + g.add((br, OWL.onProperty, elementURI)) + g.add((br, OWL.maxQualifiedCardinality, Literal(1))) + g.add((br, OWL.onDataRange, range)) + g.add((conceptUri, RDFS.subClassOf, br)) + + if comment: + g.add((elementURI, SKOS.scopeNote, Literal(comment))) + if example: + g.add((elementURI, RDFS.comment, Literal(example))) + if element_description: + g.add((elementURI, SKOS.definition, Literal(element_description))) + # else: + # print(element_name) + + ## save graph + g.serialize(destination="idds_new3.ttl", format="turtle") + + +def make_fsc(): + g = Graph() + + ##namespace + # NS = "http://iseal.org/terms/" + NS = "https://alanorth.github.io/iseal-schema/FSC#" + ## create ontology + iseal = URIRef(NS) + g.add((iseal, RDF.type, OWL.Ontology)) + + df = pd.read_excel("./idss_schema_fields_new2.xlsx", "fsc extension") + df.dropna(how="all", axis=1) + df.fillna("", inplace=True) + + for index, row in df.iterrows(): + element_name = row["element name"] + element_description = row["element description"] + comment = row["element guidance"] + example = row["element link for more information"] + cardinality = row["element options"] + prop_type = row["element type"] + controlled_vocab = row["element controlled values or terms"] + module = row["idss element cluster"] + module_cat = row["fsc extension module"] + dc = row["element link for dublin core attributes"] + dspace = row["dspace field name"] + + ##module + moduleUri = URIRef(NS + module) + if not (None, SKOS.prefLabel, Literal(module)) in g: + ##create module as skos concept + g.add((moduleUri, RDF.type, OWL.Class)) ## SKOS.Concept + g.add((moduleUri, SKOS.prefLabel, Literal(module))) + ##element + # if '-' not in element_name: + if True: ## lazy reindenting + concept = module_cat # element_name.split(' - ')[0] + # element = element_name.strip() + ## code from Alan + # Make sure element name is URL friendly because we need to use it in + # the file system and in the URL. + # + # Replace two or more whitespaces with one + element_name = re.sub(r"\s{2,}", " ", element_name) + # Replace unnecessary stuff in some element names (I should tell Peter + # that these belong in the description) + element_name = re.sub(r"\s?\(\w+\)", "", element_name) + # Remove commas and question marks + element_name = re.sub(r"[,?]", "", element_name) + # Replace ": " with a dash (as in "Evaluation: ") + element_name = element_name.replace(": ", "-") + # Replace " / " with a dash (as in "biome / zone") + element_name = element_name.replace(" / ", "-") + # Replace whitespace, colons, and slashes with dashes + element_name = re.sub(r"[\s/]", "-", element_name) + # Lower case it + element_name = element_name.lower() + # Strip just in case + element_name = element_name.strip() + + # For example Certifying Body, FSC audit, Certificate, etc + cluster = row["idss element cluster"].capitalize() + + # For example Assurance, Certification, Core, Impact, etc + module = row["fsc extension module"].capitalize() + + # Generate a "safe" version of the element name for use in URLs and + # files by combining the cluster and the element name. This could + # change in the future. + element_name_safe = cluster.replace(" ", "-").lower() + "-" + element_name + + element = element_name_safe + # remove extra fsc in name + element = element.replace("fsc-fsc-", "fsc-") + + conceptUri = URIRef(NS + concept.replace(" ", "_")) + if not (None, SKOS.prefLabel, Literal(concept)) in g: + ##create concept as skos concept + g.add((conceptUri, RDF.type, OWL.Class)) ## SKOS.Concept + g.add((conceptUri, SKOS.prefLabel, Literal(concept))) + g.add((conceptUri, RDFS.subClassOf, moduleUri)) + + ## create properties + elementURI = URIRef(NS + element.replace(" ", "_")) + if prop_type == "CONTROLLED VALUE": ## object property + g.add((elementURI, SKOS.prefLabel, Literal(element))) + g.add((elementURI, RDF.type, OWL.ObjectProperty)) + g.add((elementURI, OWL.domain, conceptUri)) + ## add suproperty link + if dc: + dct = dc.split(":")[1] + if "wgs84" in dc: + g.add( + ( + elementURI, + RDFS.subPropertyOf, + URIRef( + "http://www.w3.org/2003/01/geo/wgs84_pos#" + dct + ), + ) ) + else: + g.add( + ( + elementURI, + RDFS.subPropertyOf, + URIRef("http://purl.org/dc/terms/" + dct), + ) + ) + ## add dspace alternative ID + # g.add((elementURI, URIRef("http://purl.org/dc/terms/alternative"), Literal(dspace))) + ## create controlled vocab + cvURI = URIRef(NS + "VOCAB_" + element.replace(" ", "_")) + g.add( + (cvURI, RDF.type, OWL.Class) + ) ## SKOS.Concept ## SKOS.Collection?? + g.add((cvURI, SKOS.prefLabel, Literal("VOCAB " + element))) + for term in controlled_vocab.split("||"): + termURI = URIRef(NS + term.replace(" ", "_").replace("|", "")) + g.add((termURI, RDF.type, OWL.Class)) ## SKOS.Concept + g.add((termURI, SKOS.prefLabel, Literal(term))) + g.add((termURI, RDFS.subClassOf, cvURI)) ## SKOS.member??? + g.add((elementURI, OWL.range, cvURI)) + + ## add the controlled vocab information on properties directly + g.add( + ( + elementURI, + URIRef("http://purl.org/dc/dcam/rangeIncludes"), + Literal( + "https://raw.githubusercontent.com/alanorth/iseal-schema/main/data/controlled-vocabularies/" + + element + + ".txt" + ), ) - ## add dspace alternative ID - g.add( - ( - elementURI, - URIRef("http://purl.org/dc/terms/alternative"), - Literal(dspace), ) - ) - range = None - if prop_type == "DATE": - g.add((elementURI, OWL.range, XSD.date)) - range = XSD.date - elif prop_type == "NUMERIC VALUE": - g.add((elementURI, OWL.range, XSD.float)) - range = XSD.float - else: - g.add((elementURI, OWL.range, XSD.string)) - range = XSD.string - ##cardinality - if cardinality == "REPEAT VALUES": - br = BNode() - g.add((br, RDF.type, OWL.Restriction)) - g.add((br, OWL.onProperty, elementURI)) - g.add((br, OWL.someValuesFrom, range)) - g.add((conceptUri, RDFS.subClassOf, br)) - else: - br = BNode() - g.add((br, RDF.type, OWL.Restriction)) - g.add((br, OWL.onProperty, elementURI)) - g.add((br, OWL.maxQualifiedCardinality, Literal(1))) - g.add((br, OWL.onDataRange, range)) - g.add((conceptUri, RDFS.subClassOf, br)) - if comment: - g.add((elementURI, SKOS.scopeNote, Literal(comment))) - if example: - g.add((elementURI, RDFS.comment, Literal(example))) - if element_description: - g.add((elementURI, SKOS.definition, Literal(element_description))) - # else: - # print(element_name) + ## cardinality + if cardinality == "MULTI SELECT FROM CONTROL LIST": + br = BNode() + g.add((br, RDF.type, OWL.Restriction)) + g.add((br, OWL.onProperty, elementURI)) + g.add((br, OWL.minQualifiedCardinality, Literal(1))) + g.add((br, OWL.someValuesFrom, cvURI)) + g.add((conceptUri, RDFS.subClassOf, br)) + else: + br = BNode() + g.add((br, RDF.type, OWL.Restriction)) + g.add((br, OWL.onProperty, elementURI)) + g.add((br, OWL.maxQualifiedCardinality, Literal(1))) + g.add((br, OWL.onClass, cvURI)) + g.add((conceptUri, RDFS.subClassOf, br)) -## save graph -g.serialize(destination="idds_new3.ttl", format="turtle") + # elif prop_type == 'URL': ## object property + # g.add((elementURI, RDF.type, OWL.ObjectProperty)) + # g.add((elementURI, OWL.domain, conceptUri)) + # g.add((elementURI, OWL.range, URIRef("") )) + # g.add((elementURI, SKOS.prefLabel, Literal(element))) + else: ## datatype properties + g.add((elementURI, SKOS.prefLabel, Literal(element))) + g.add((elementURI, RDF.type, OWL.DatatypeProperty)) + g.add((elementURI, OWL.domain, conceptUri)) + if dc: + dct = dc.split(":")[1] + if "wgs84" in dc: + g.add( + ( + elementURI, + RDFS.subPropertyOf, + URIRef( + "http://www.w3.org/2003/01/geo/wgs84_pos#" + dct + ), + ) + ) + else: + g.add( + ( + elementURI, + RDFS.subPropertyOf, + URIRef("http://purl.org/dc/terms/" + dct), + ) + ) + ## add dspace alternative ID + # g.add((elementURI, URIRef("http://purl.org/dc/terms/alternative"), Literal(dspace))) + range = None + if prop_type == "DATE": + g.add((elementURI, OWL.range, XSD.date)) + range = XSD.date + elif prop_type == "NUMERIC VALUE": + g.add((elementURI, OWL.range, XSD.float)) + range = XSD.float + else: + g.add((elementURI, OWL.range, XSD.string)) + range = XSD.string + ##cardinality + if cardinality == "REPEAT VALUES": + br = BNode() + g.add((br, RDF.type, OWL.Restriction)) + g.add((br, OWL.onProperty, elementURI)) + g.add((br, OWL.someValuesFrom, range)) + g.add((conceptUri, RDFS.subClassOf, br)) + else: + br = BNode() + g.add((br, RDF.type, OWL.Restriction)) + g.add((br, OWL.onProperty, elementURI)) + g.add((br, OWL.maxQualifiedCardinality, Literal(1))) + g.add((br, OWL.onDataRange, range)) + g.add((conceptUri, RDFS.subClassOf, br)) + + if comment: + g.add((elementURI, SKOS.scopeNote, Literal(comment))) + if example: + g.add((elementURI, RDFS.comment, Literal(example))) + if element_description: + g.add((elementURI, SKOS.definition, Literal(element_description))) + # else: + # print(element_name) + + ## save graph + g.serialize(destination="fsc.ttl", format="turtle") + + +make_core()