diff --git a/.gitignore b/.gitignore index 32627887..50755c63 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,5 @@ build .DS_Store .idea - -# Fuseki output directory .fuseki +src-gen diff --git a/build.gradle b/build.gradle index 67437ceb..e2b6295f 100644 --- a/build.gradle +++ b/build.gradle @@ -19,6 +19,7 @@ buildscript { jcenter() } dependencies { + classpath 'io.opencaesar.owl:owl-doc-gradle:+' classpath 'io.opencaesar.owl:owl-fuseki-gradle:+' classpath 'io.opencaesar.owl:owl-shacl-fuseki-gradle:+' classpath 'io.opencaesar.owl:owl-query-gradle:+' @@ -29,6 +30,9 @@ buildscript { classpath 'io.opencaesar.oml:oml-merge-gradle:0.8.+' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:+' // needed since gradle-bintray-plugin brings an old version of xerces + classpath 'io.opencaesar.docbook:docbook-generator-gradle:+' + classpath 'io.opencaesar.docbook:docbook-renderer-gradle:+' + // needed since gradle bintray brings an old version of xerces configurations.classpath.exclude group: 'xerces', module: 'xercesImpl' } } @@ -44,7 +48,8 @@ ext { * The configuration of OML dependencies */ configurations { - oml + oml // Include the oml dependencies only + stylesheets // Include the docbook stylesheets } /* @@ -61,6 +66,7 @@ repositories { */ dependencies { oml "io.opencaesar.ontologies:imce-vocabularies:$imceVersion" + stylesheets "io.opencaesar.docbook:docbook-stylesheets:+" } /* @@ -172,11 +178,106 @@ task owlShacl(type:io.opencaesar.owl.shacl.fuseki.OwlShaclFusekiTask, dependsOn: resultPath = file('build/reports') } +/* + * Zips stylesheets from docbook-stylesheets (local maven) + * Places them in build/stylesheets-gen + */ +task stylesheetUnzip(type: Copy) { + from configurations.stylesheets.files.collect { zipTree(it) } + into file("build/stylesheets-gen") +} +/* + * Gradle tasks to render the docbook physical_structure + */ +task physicalGenerate(type:io.opencaesar.owl.doc.OwlDocTask) { + endpointURL = 'http://localhost:3030/firesat' + documentIRI = 'http://opencaesar.io/examples/firesat/programs/earth-science/projects/firesat/documents/system-decomposition#PhysicalDecomposition' + outputPath = file('build/reports/physical_structure/physical_structure.json') +} + +task physicalDocbook(type:io.opencaesar.docbook.generator.DocbookGeneratorTask, dependsOn: physicalGenerate) { + input = file('build/reports/physical_structure/physical_structure.json') + output = file('build/reports/physical_structure/physical_structure.xml') +} + +task physicalPDF(type:io.opencaesar.docbook.renderer.DocbookRendererTask, dependsOn: stylesheetUnzip) { + input = file('build/reports/physical_structure/physical_structure.xml') + output = file('build/reports/physical_structure/physical_structure.pdf') + type = 'pdf' + xsl = file('build/stylesheets-gen/pdf/pdf.xsl') +} + +task physicalHTML(type:io.opencaesar.docbook.renderer.DocbookRendererTask, dependsOn: stylesheetUnzip) { + input = file('build/reports/physical_structure/physical_structure.xml') + output = file('build/reports/physical_structure/physical_structure.html') + type = 'html' + xsl = file('build/stylesheets-gen/html/html.xsl') + css = file('build/stylesheets-gen/default.css') +} + +physicalGenerate.mustRunAfter(owlLoad) +physicalDocbook.mustRunAfter(physicalGenerate) +physicalHTML.mustRunAfter(physicalDocbook) +physicalPDF.mustRunAfter(physicalDocbook) + +task physicalRender() { + dependsOn owlLoad + dependsOn physicalGenerate + dependsOn physicalDocbook + dependsOn physicalPDF + dependsOn physicalHTML +} + +/* + * Gradle tasks to render the docbook wbs document + */ +task wbsGenerate(type:io.opencaesar.owl.doc.OwlDocTask) { + endpointURL = 'http://localhost:3030/firesat' + documentIRI = 'http://opencaesar.io/examples/firesat/programs/earth-science/projects/firesat/documents/work-breakdown-structure#WorkBreakdownStructure' + outputPath = file('build/reports/wbs/wbs.json') +} + +task wbsDocbook(type:io.opencaesar.docbook.generator.DocbookGeneratorTask, dependsOn: wbsGenerate) { + input = file('build/reports/wbs/wbs.json') + output = file('build/reports/wbs/wbs.xml') +} + +task wbsPDF(type:io.opencaesar.docbook.renderer.DocbookRendererTask, dependsOn: stylesheetUnzip) { + input = file('build/reports/wbs/wbs.xml') + output = file('build/reports/wbs/wbs.pdf') + type = 'pdf' + xsl = file('build/stylesheets-gen/pdf/pdf.xsl') +} + +task wbsHTML(type:io.opencaesar.docbook.renderer.DocbookRendererTask, dependsOn: stylesheetUnzip) { + input = file('build/reports/wbs/wbs.xml') + output = file('build/reports/wbs/wbs.html') + type = 'html' + xsl = file('build/stylesheets-gen/html/html.xsl') + css = file('build/stylesheets-gen/default.css') +} + +wbsGenerate.mustRunAfter(owlLoad) +wbsDocbook.mustRunAfter(wbsGenerate) +wbsPDF.mustRunAfter(wbsDocbook) +wbsHTML.mustRunAfter(wbsDocbook) + +task wbsRender() { + dependsOn owlLoad + dependsOn wbsGenerate + dependsOn wbsDocbook + dependsOn wbsPDF + dependsOn wbsHTML +} + + /* * A task to build the project, which executes several tasks together */ task build() { dependsOn owlReason + // dependsOn bikeshed2html + dependsOn stylesheetUnzip } /* @@ -260,4 +361,4 @@ apply plugin: 'eclipse' eclipse { synchronizationTasks downloadDependencies -} \ No newline at end of file +} diff --git a/catalog.xml b/catalog.xml index de863b71..d6170e1e 100644 --- a/catalog.xml +++ b/catalog.xml @@ -1,6 +1,6 @@ - + diff --git a/src/oml/imce.jpl.nasa.gov/discipline/fse/bundle.oml b/src/oml/imce.jpl.nasa.gov/discipline/fse/bundle.oml index 68b6c04b..581ada81 100644 --- a/src/oml/imce.jpl.nasa.gov/discipline/fse/bundle.oml +++ b/src/oml/imce.jpl.nasa.gov/discipline/fse/bundle.oml @@ -8,4 +8,6 @@ vocabulary bundle with # as fse includes includes + + includes } \ No newline at end of file diff --git a/src/oml/opencaesar.io/examples/firesat/bundle.oml b/src/oml/opencaesar.io/examples/firesat/bundle.oml index 6b1ff885..a90f3f83 100644 --- a/src/oml/opencaesar.io/examples/firesat/bundle.oml +++ b/src/oml/opencaesar.io/examples/firesat/bundle.oml @@ -39,6 +39,10 @@ description bundle with # as fire includes includes includes + + includes + includes + includes // WP 05 includes diff --git a/src/oml/opencaesar.io/examples/firesat/organizations/jpl.oml b/src/oml/opencaesar.io/examples/firesat/organizations/jpl.oml index e94eb19e..ca371cf4 100644 --- a/src/oml/opencaesar.io/examples/firesat/organizations/jpl.oml +++ b/src/oml/opencaesar.io/examples/firesat/organizations/jpl.oml @@ -5,5 +5,22 @@ description with # as @rdfs:label "JPL" ci JPL : project:Organization - + + @rdfs:label "Intern" + ci Intern : project:Role + + @rdfs:label "Software Systems Engineer" + ci SoftwareSystemsEngineer : project:Role + + @rdfs:label "David Truong" + ci DavidTruong : project:Person [ + project:belongsTo JPL + project:hasRole Intern + ] + + @rdfs:label "Paul Gaspardo" + ci PaulGaspardo : project:Person [ + project:belongsTo JPL + project:hasRole SoftwareSystemsEngineer + ] } \ No newline at end of file diff --git a/src/oml/opencaesar.io/examples/firesat/programs/earth-science/projects/firesat/documents/common.oml b/src/oml/opencaesar.io/examples/firesat/programs/earth-science/projects/firesat/documents/common.oml new file mode 100644 index 00000000..4527d1e9 --- /dev/null +++ b/src/oml/opencaesar.io/examples/firesat/programs/earth-science/projects/firesat/documents/common.oml @@ -0,0 +1,32 @@ + +description with # as common { + uses as doc + + @doc:hasRequiredBinding 'DOCUMENT' + @doc:hasSparqlMapping ''' + SELECT (CONCAT(STR(YEAR(NOW())), '-', STR(MONTH(NOW())), '-', STR(DAY(NOW()))) AS ?hasDate) ?hasReleaseVersion WHERE { + $DOCUMENT ?hasReleaseVersion + } + ''' + ci TitlePage : doc:TitlePage [ + doc:hasElement Preparers + ] + + @doc:hasRequiredBinding 'DOCUMENT' + @doc:hasSparqlExpansion ''' + PREFIX doc: + PREFIX proj: + PREFIX rdfs: + + SELECT DISTINCT ?hasName ?hasRole ?hasOrganization WHERE { + $DOCUMENT doc:preparedBy ?preparer . + ?preparer proj:belongsTo ?organization . + ?preparer proj:hasRole ?role . + ?preparer rdfs:label ?hasName . + ?role rdfs:label ?hasRole . + ?organization rdfs:label ?hasOrganization . + } ORDER BY ?hasName + ''' + ci Preparers : doc:Preparer + +} \ No newline at end of file diff --git a/src/oml/opencaesar.io/examples/firesat/programs/earth-science/projects/firesat/documents/system-decomposition.oml b/src/oml/opencaesar.io/examples/firesat/programs/earth-science/projects/firesat/documents/system-decomposition.oml new file mode 100644 index 00000000..5e5859a7 --- /dev/null +++ b/src/oml/opencaesar.io/examples/firesat/programs/earth-science/projects/firesat/documents/system-decomposition.oml @@ -0,0 +1,256 @@ +description with # as system-decomposition { + + extends + extends <./common.oml> + + uses + uses + uses + + @doc:hasTitle 'FireSat Physical Structure' + @doc:hasReleaseVersion 'Development' + ci PhysicalDecomposition : doc:Book [ + doc:preparedBy jpl:DavidTruong + doc:preparedBy jpl:PaulGaspardo + + doc:hasElement common:TitlePage + + doc:hasElement 0-Preface + doc:hasElement 1-SubsystemsAndAssemblies + ] + + @doc:hasTitle 'Overview' + ci 0-Preface : doc:Preface [ + doc:hasElement PrefaceText + ] + + @doc:hasText ''' + This document details the physical decomposition of the systems involved in the + example fire detection satellite system described by the OML vocabulary. This includes + information about the assemblies used, what assemblies are used to create other assemblies, + and mass constraints for all the assemblies. + ''' + ci PrefaceText : doc:Para + + @doc:hasTitle 'Subsystem and Assemblies' + ci 1-SubsystemsAndAssemblies : doc:Chapter [ + doc:hasElement 0-SubsystemsAndAssembliesText + doc:hasElement 1-SubsystemsAndAssembliesTable + doc:hasElement 2-SubsystemSections + ] + + @doc:hasText ''' + The FireSat system is composed of multiple subsystems. These subsystems have a mass + constraint, and are the aggregate of multiple assemblies. These assemblies also have a + mass constraint that must be met, and some assemblies contain multiple base + assemblies put together. + ''' + ci 0-SubsystemsAndAssembliesText : doc:Para + + @doc:hasTitle 'Subsystems' + @doc:hasClass 'getTable' + @doc:hasBorder '0' + ci 1-SubsystemsAndAssembliesTable : doc:Table [ + doc:hasElement SubsystemTableContent + ] + + @doc:hasSparqlExpansion ''' + PREFIX fse: + PREFIX base: + PREFIX analysis: + PREFIX rdfs: + PREFIX metrology: + PREFIX iso-80000-4-quantities: + + SELECT DISTINCT ?iri ?identifier ?name (STR(?massNumber) AS ?mass) WHERE { + ?iri a fse:Subsystem . + ?iri fse:hasAcronym ?identifier . + ?iri rdfs:label ?name . + ?mc a iso-80000-4-quantities:mass . + ?mc fse:isMassLimitOf ?iri . + ?mq metrology:isMagnitudeOf ?mc . + ?mq metrology:hasDoubleNumber ?massNumber . + } ORDER BY ?name + ''' + @doc:hasForwardedBinding '*' + ci SubsystemTableContent : doc:Block [ + doc:hasElement 1-SubsystemTableSubsytemRow + doc:hasElement 2-SubsystemTableAssemblyRows + ] + + @doc:hasForwardedBinding '*' + @doc:hasStyle 'background-color: #BFDFBF' + @doc:hasClass 'ocTable' + @doc:hasBackgroundColor '#BFDFBF' + ci 1-SubsystemTableSubsytemRow : doc:TableRow [ + doc:hasElement 1-AcronymColumn + doc:hasElement 2-NameColumn + doc:hasElement 3-MassColumn + ] + + @doc:hasTitle 'Identifier' + @doc:hasRequiredBinding 'identifier as hasText' + ci 1-AcronymColumn : doc:TableColumn + + @doc:hasTitle 'Name' + @doc:hasRequiredBinding 'iri as hasLink' + @doc:hasRequiredBinding 'name as hasText' + ci 2-NameColumn : doc:TableColumn + + @doc:hasTitle 'Mass' + @doc:hasRequiredBinding 'mass as hasText' + ci 3-MassColumn : doc:TableColumn + + @doc:hasRequiredBinding 'iri as ss' + @doc:hasSparqlExpansion ''' + PREFIX fse: + PREFIX base: + PREFIX analysis: + PREFIX rdfs: + PREFIX metrology: + PREFIX iso-80000-4-quantities: + + SELECT DISTINCT ?iri ?identifier ?name (STR(?massNumber) AS ?mass) WHERE { + ?ss base:aggregates ?iri . + ?iri rdfs:label ?name . + ?iri fse:hasAcronym ?identifier . + ?iri a fse:Assembly . + ?mc a iso-80000-4-quantities:mass . + ?mc fse:isCBEMassOf ?iri . + ?mq metrology:isMagnitudeOf ?mc . + ?mq metrology:hasDoubleNumber ?massNumber . + } ORDER BY ?identifier + ''' + @doc:hasForwardedBinding '*' + @doc:hasClass 'interleaveTable' + @doc:hasStyle 'background-color: white' + @doc:hasBackgroundColor 'white' + ci 2-SubsystemTableAssemblyRows : doc:TableRow [ + doc:hasElement 1-AcronymColumn + doc:hasElement 2-NameColumn + doc:hasElement 3-MassColumn + ] + + @doc:hasSparqlExpansion ''' + PREFIX fse: + PREFIX base: + PREFIX analysis: + PREFIX rdfs: + + SELECT DISTINCT ?ss ?ssName (?ssName as ?hasTitle) ?ssNumber (?ss AS ?hasId) WHERE { + ?ss a fse:Subsystem . + ?ss rdfs:label ?ssName . + ?ss fse:hasAcronym ?ssNumber + } ORDER BY ?s + ''' + @doc:hasForwardedBinding 'ss' + @doc:hasForwardedBinding 'ssName' + @doc:hasForwardedBinding 'ssNumber' + ci 2-SubsystemSections : doc:Section [ + doc:hasElement 1-SubsystemDescription + doc:hasElement 2-AssemblySections + ] + + @doc:hasRequiredBinding 'ss' + @doc:hasRequiredBinding 'ssName' + @doc:hasRequiredBinding 'ssNumber' + @doc:hasSparqlMapping ''' + PREFIX fse: + PREFIX base: + PREFIX analysis: + PREFIX rdfs: + PREFIX metrology: + PREFIX iso-80000-4-quantities: + + SELECT DISTINCT (CONCAT('The mass constraint of ', $ssName, ' (', $ssNumber, ') is ', STR(?mass), '.') as ?hasText) WHERE { + ?mc a iso-80000-4-quantities:mass . + ?mc fse:isMassLimitOf $ss . + ?mq metrology:isMagnitudeOf ?mc . + ?mq metrology:hasDoubleNumber ?mass . + } + ''' + ci 1-SubsystemDescription : doc:Para + + @doc:hasRequiredBinding 'ss' + @doc:hasSparqlExpansion ''' + PREFIX fse: + PREFIX base: + PREFIX analysis: + PREFIX rdfs: + + SELECT DISTINCT ?assembly ?assemblyName (?assemblyName AS ?hasTitle) (?assembly as ?hasId) WHERE { + ?assembly a fse:Assembly . + $ss base:aggregates ?assembly . + ?assembly rdfs:label ?assemblyName . + } ORDER BY ?assembly + ''' + @doc:hasForwardedBinding 'assembly' + @doc:hasForwardedBinding 'assemblyName' + ci 2-AssemblySections : doc:Section [ + doc:hasElement 1-AssemblyDescription + doc:hasElement 2-ContainedAssemblies + ] + + @doc:hasRequiredBinding 'assembly' + @doc:hasRequiredBinding 'assemblyName' + @doc:hasSparqlMapping ''' + PREFIX fse: + PREFIX base: + PREFIX analysis: + PREFIX rdfs: + PREFIX metrology: + PREFIX iso-80000-4-quantities: + + SELECT DISTINCT (CONCAT('The mass of ', $assemblyName, ' is ', STR(?mass), '.') as ?hasText) WHERE { + ?mc a iso-80000-4-quantities:mass . + ?mc fse:isCBEMassOf $assembly . + ?mq metrology:isMagnitudeOf ?mc . + ?mq metrology:hasDoubleNumber ?mass . + } + ''' + ci 1-AssemblyDescription : doc:Para + + @doc:hasRequiredBinding 'assembly' + @doc:hasRequiredBinding 'assemblyName' + @doc:hasSparqlMapping ''' + SELECT (CONCAT($assemblyName, ' Contained Assemblies') AS ?hasTitle) WHERE { } + ''' + @doc:hasForwardedBinding 'assembly' + @doc:hasBorder '0' + ci 2-ContainedAssemblies : doc:Table [ + doc:hasElement ContainedAssemblyRow + ] + + @doc:hasRequiredBinding 'assembly as parent' + @doc:hasSparqlExpansion ''' + PREFIX fse: + PREFIX base: + PREFIX analysis: + PREFIX rdfs: + PREFIX metrology: + PREFIX iso-80000-4-quantities: + + SELECT DISTINCT ?name (STR(?massNumber) AS ?mass) WHERE { + $parent base:contains ?child . + ?child rdfs:label ?name . + ?child a fse:Assembly . + ?mc a iso-80000-4-quantities:mass . + ?mc fse:isCBEMassOf ?child . + ?mq metrology:isMagnitudeOf ?mc . + ?mq metrology:hasDoubleNumber ?massNumber . + } ORDER BY ?name + ''' + @doc:hasForwardedBinding '*' + ci ContainedAssemblyRow : doc:TableRow [ + doc:hasElement 1-AssemblyName + doc:hasElement 2-AssemblyMass + ] + + @doc:hasTitle 'Assembly' + @doc:hasRequiredBinding 'name as hasText' + ci 1-AssemblyName : doc:TableColumn + + @doc:hasTitle 'Mass' + @doc:hasRequiredBinding 'mass as hasText' + ci 2-AssemblyMass : doc:TableColumn +} \ No newline at end of file diff --git a/src/oml/opencaesar.io/examples/firesat/programs/earth-science/projects/firesat/documents/work-breakdown-structure.oml b/src/oml/opencaesar.io/examples/firesat/programs/earth-science/projects/firesat/documents/work-breakdown-structure.oml new file mode 100644 index 00000000..eb6d591a --- /dev/null +++ b/src/oml/opencaesar.io/examples/firesat/programs/earth-science/projects/firesat/documents/work-breakdown-structure.oml @@ -0,0 +1,448 @@ +description with # as work-breakdown-structure { + uses + uses + uses + uses + + extends + extends + extends + extends <./common.oml> + + @doc:hasReleaseVersion 'Development' + @doc:hasTitle 'FireSat Work Breakdown Structure' + ci WorkBreakdownStructure : doc:Book [ + doc:preparedBy jpl:DavidTruong + doc:preparedBy jpl:PaulGaspardo + + doc:describes earth-science-program:FireSatProject + + doc:hasElement common:TitlePage + doc:hasElement 0-Preface + doc:hasElement 1-Organizations + doc:hasElement 2-Programs + doc:hasElement 3-FireSat + ] + + @doc:hasTitle 'Overview' + ci 0-Preface : doc:Preface [ + doc:hasElement PrefaceText + ] + + @doc:hasText ''' + A description of the work breakdwon structure of an example forest fire + detection satellite system. The system is described in OML and this document + aims to present the details held in vocabulary. + ''' + ci PrefaceText : doc:Para + + @doc:hasTitle 'Organizations' + ci 1-Organizations : doc:Chapter [ + doc:hasElement 1-OrgList + ] + + @doc:hasSparqlExpansion ''' + PREFIX rdfs: + PREFIX proj: + + SELECT DISTINCT ?org ?orgName (?orgName as ?hasTitle) WHERE { + ?org a proj:Organization . + ?org rdfs:label ?orgName . + } ORDER BY ?orgName + ''' + @doc:hasForwardedBinding 'org' + @doc:hasForwardedBinding 'orgName' + @doc:hasTitle 'Organizations' + ci 1-OrgList : doc:Section [ + doc:hasElement 1-OrgDescription + doc:hasElement 2-OrgPeople + ] + + @doc:hasRequiredBinding 'orgName' + @doc:hasSparqlMapping ''' + SELECT (CONCAT($orgName, ' is one of the organizations involved in this satellite system') AS ?hasText) + WHERE { } + ''' + ci 1-OrgDescription : doc:Para + + @doc:hasRequiredBinding 'orgName' + @doc:hasRequiredBinding 'org' + @doc:hasSparqlMapping ''' + SELECT (CONCAT($orgName, ' Worker List') AS ?hasTitle) WHERE { } + ''' + @doc:hasForwardedBinding 'org' + @doc:hasBorder '0' + ci 2-OrgPeople : doc:Table [ + doc:hasElement OrgPerson + ] + + @doc:hasRequiredBinding 'org' + @doc:hasSparqlExpansion ''' + PREFIX proj: + PREFIX rdfs: + + SELECT DISTINCT ?personName ?roleName + WHERE { + ?person proj:belongsTo $org . + ?person proj:hasRole ?role . + ?person rdfs:label ?personName . + ?role rdfs:label ?roleName . + } ORDER BY ?personName + ''' + @doc:hasForwardedBinding '*' + ci OrgPerson : doc:TableRow [ + doc:hasElement 1-OrgPersonName + doc:hasElement 2-OrgPersonRole + ] + + @doc:hasTitle 'Name' + @doc:hasRequiredBinding 'personName as hasText' + ci 1-OrgPersonName : doc:TableColumn + + @doc:hasTitle 'Role' + @doc:hasRequiredBinding 'roleName as hasText' + ci 2-OrgPersonRole : doc:TableColumn + + @doc:hasTitle 'Programs' + ci 2-Programs : doc:Chapter [ + doc:hasElement 1-ProgramsDescription + doc:hasElement 2-ProgramsList + doc:hasElement 3-ProjectList + ] + + @doc:hasText ''' + Programs related to the fire satellite and their respective projects + ''' + ci 1-ProgramsDescription : doc:Para + + @doc:hasTitle 'Program List' + @doc:hasBorder '0' + ci 2-ProgramsList : doc:Table [ + doc:hasElement ProgramListRow + ] + + @doc:hasSparqlExpansion ''' + PREFIX proj: + PREFIX rdfs: + + SELECT DISTINCT ?programName WHERE { + ?program a proj:Program . + ?program rdfs:label ?programName . + } ORDER BY ?programName + ''' + @doc:hasForwardedBinding 'programName' + ci ProgramListRow : doc:TableRow [ + doc:hasElement ProgramColumn + ] + + @doc:hasTitle 'Program' + @doc:hasRequiredBinding 'programName as hasText' + ci ProgramColumn : doc:TableColumn + + @doc:hasSparqlExpansion ''' + PREFIX proj: + PREFIX rdfs: + + SELECT DISTINCT ?program (CONCAT(?programName, '\'s Projects') AS ?hasTitle) WHERE { + ?program a proj:Program . + ?program rdfs:label ?programName . + } ORDER BY ?programName + ''' + @doc:hasForwardedBinding 'program' + @doc:hasBorder '0' + ci 3-ProjectList : doc:Table [ + doc:hasElement ProjectListRow + ] + + @doc:hasRequiredBinding 'program' + @doc:hasSparqlExpansion ''' + PREFIX proj: + PREFIX rdfs: + + SELECT DISTINCT ?projectName ?organizationName ?missionName WHERE { + $program proj:authorizes ?project . + ?project proj:isResponsibilityOf ?organization . + ?project proj:supplies ?mission . + ?project rdfs:label ?projectName . + ?organization rdfs:label ?organizationName . + ?mission rdfs:label ?missionName . + } + ''' + @doc:hasForwardedBinding '*' + ci ProjectListRow : doc:TableRow [ + doc:hasElement 1-ProjectColumn + doc:hasElement 2-OrganizationColumn + doc:hasElement 3-MissionColumn + ] + + @doc:hasTitle 'Project' + @doc:hasRequiredBinding 'projectName as hasText' + ci 1-ProjectColumn : doc:TableColumn + + @doc:hasTitle 'Organization' + @doc:hasRequiredBinding 'organizationName as hasText' + ci 2-OrganizationColumn : doc:TableColumn + + @doc:hasTitle 'Mission' + @doc:hasRequiredBinding 'missionName as hasText' + ci 3-MissionColumn : doc:TableColumn + + @doc:hasTitle 'FireSat' + ci 3-FireSat : doc:Chapter [ + doc:hasElement 1-FireSatMission + doc:hasElement 2-FireSatProject + ] + + @doc:hasRequiredBinding 'SELF' + @doc:hasSparqlMapping ''' + PREFIX proj: + PREFIX rdfs: + + SELECT DISTINCT ?mission ?missionName (?missionName AS ?hasTitle) + WHERE { + $SELF ?mission . + ?mission rdfs:label ?missionName . + } + ''' + @doc:hasForwardedBinding 'mission' + @doc:hasForwardedBinding 'missionName' + ci 1-FireSatMission : doc:Section [ + doc:describes firesat-mission:FireSatMission + + doc:hasElement 1-MissionDescription + doc:hasElement 2-MissionEnvironments + doc:hasElement 3-StakeholderDescription + doc:hasElement 4-Stakeholders + ] + + @doc:hasRequiredBinding 'mission' + @doc:hasSparqlMapping ''' + PREFIX mission: + PREFIX rdfs: + + SELECT DISTINCT (CONCAT('The ', ?missionLabel, ' pursuses ', ?objectiveLabel, ' which has the objective: ', ?objectiveComment, + '. The ', ?missionLabel, ' operates in these environments: ') AS ?hasText) + WHERE { + $mission rdfs:label ?missionLabel . + $mission mission:pursues ?objective . + ?objective rdfs:label ?objectiveLabel . + ?objective rdfs:comment ?objectiveComment . + } + ''' + ci 1-MissionDescription : doc:Para + + @doc:hasRequiredBinding 'missionName' + @doc:hasSparqlMapping ''' + SELECT (CONCAT($missionName, ' Environments') AS ?hasTitle) WHERE { } + ''' + @doc:hasForwardedBinding 'mission' + @doc:hasBorder '0' + ci 2-MissionEnvironments : doc:Table [ + doc:hasElement EnvironmentRow + ] + + @doc:hasRequiredBinding 'mission' + @doc:hasSparqlExpansion ''' + PREFIX mission: + PREFIX rdfs: + + SELECT DISTINCT ?environmentLabel WHERE { + $mission mission:deploys ?deployed . + ?deployed mission:isInfluencedBy ?environment . + ?environment rdfs:label ?environmentLabel . + } ORDER BY ?environmentLabel + ''' + @doc:hasForwardedBinding 'environmentLabel' + ci EnvironmentRow : doc:TableRow [ + doc:hasElement EnvironmentCol + ] + + @doc:hasRequiredBinding 'environmentLabel as hasText' + @doc:hasTitle 'Environment' + ci EnvironmentCol : doc:TableColumn + + @doc:hasText 'The stakeholders of this mission are:' + ci 3-StakeholderDescription : doc:Para + + @doc:hasRequiredBinding 'mission' + @doc:hasForwardedBinding 'mission' + @doc:hasBorder '0' + ci 4-Stakeholders : doc:InformalTable [ + doc:hasElement StakeholderRow + ] + + @doc:hasRequiredBinding 'mission' + @doc:hasSparqlExpansion ''' + PREFIX mission: + PREFIX rdfs: + PREFIX proj: + + SELECT DISTINCT ?stakeholderLabel WHERE { + $mission mission:pursues ?objective . + ?stakeholder proj:represents ?objective . + ?stakeholder rdfs:label ?stakeholderLabel . + } ORDER BY ?stakeholderLabel + ''' + @doc:hasForwardedBinding 'stakeholderLabel' + ci StakeholderRow : doc:TableRow [ + doc:hasElement StakeholderCol + ] + + @doc:hasRequiredBinding 'stakeholderLabel as hasText' + @doc:hasTitle 'Stakeholder' + ci StakeholderCol : doc:TableColumn + + @doc:hasSparqlMapping ''' + PREFIX rdfs: + SELECT DISTINCT ?project ?hasTitle WHERE { + $SELF ?project . + ?project rdfs:label ?hasTitle . + } + ''' + @doc:hasForwardedBinding 'project' + ci 2-FireSatProject : doc:Section [ + doc:describes earth-science-program:FireSatProject + + doc:hasElement 1-ProjectDescription + doc:hasElement 2-MainWorkPackages + doc:hasElement 3-BreakdownDescription + doc:hasElement 4-WorkPackageSections + ] + + @doc:hasRequiredBinding 'project' + @doc:hasSparqlMapping ''' + PREFIX rdfs: + PREFIX mission: + PREFIX proj: + + SELECT (CONCAT('The ', ?projectLabel, ' deploys multiple work packages in pursuit of the ', ?missionLabel, + '. These work packages contain data on the products needed for this project and describes how these products should be built.') AS ?hasText) + WHERE { + ?project rdfs:label ?projectLabel . + ?project proj:supplies ?mission . + ?mission rdfs:label ?missionLabel . + } + ''' + ci 1-ProjectDescription : doc:Para + + @doc:hasForwardedBinding 'project' + @doc:hasTitle 'Main Work Packages' + @doc:hasBorder '0' + ci 2-MainWorkPackages : doc:Table [ + doc:hasElement MainWorkPackageRow + ] + + @doc:hasRequiredBinding 'project' + @doc:hasSparqlExpansion ''' + PREFIX proj: + PREFIX rdfs: + + SELECT DISTINCT ?workPackageLabel ?suppliesLabel ?organizationLabel + WHERE { + $project proj:authorizes ?workPackage . + ?workPackage rdfs:label ?workPackageLabel . + ?workPackage proj:isResponsibilityOf ?organization . + ?workPackage proj:supplies ?supplies . + ?supplies rdfs:label ?suppliesLabel . + ?organization rdfs:label ?organizationLabel . + } ORDER BY ?workPackageLabel + ''' + @doc:hasForwardedBinding '*' + ci MainWorkPackageRow : doc:TableRow [ + doc:hasElement 1-WorkPackageCol + doc:hasElement 2-SuppliesCol + doc:hasElement 3-ProvidingOrgCol + ] + + @doc:hasTitle 'Work Package' + @doc:hasRequiredBinding 'workPackageLabel as hasText' + ci 1-WorkPackageCol : doc:TableColumn + + @doc:hasTitle 'Supplies' + @doc:hasRequiredBinding 'suppliesLabel as hasText' + ci 2-SuppliesCol : doc:TableColumn + + @doc:hasTitle 'Providing Organization' + @doc:hasRequiredBinding 'organizationLabel as hasText' + ci 3-ProvidingOrgCol : doc:TableColumn + + @doc:hasText ''' + Some work packages authorize other work packages to further break down the work and + details needed to supply a certain part. These sub work packages often deal with subsystems + that make up the whole system that the main work package focsues on. The following sections + go over the main work packages and note any sub work packages. + ''' + ci 3-BreakdownDescription : doc:Para + + @doc:hasRequiredBinding 'project' + @doc:hasSparqlExpansion ''' + PREFIX proj: + PREFIX rdfs: + + SELECT DISTINCT ?workPackage ?workPackageLabel ?suppliesLabel ?organizationLabel (?workPackageLabel AS ?hasTitle) + WHERE { + $project proj:authorizes ?workPackage . + ?workPackage rdfs:label ?workPackageLabel . + ?workPackage proj:isResponsibilityOf ?organization . + ?workPackage proj:supplies ?supplies . + ?supplies rdfs:label ?suppliesLabel . + ?organization rdfs:label ?organizationLabel . + } ORDER BY ?workPackageLabel + ''' + @doc:hasForwardedBinding 'workPackage' + @doc:hasForwardedBinding 'workPackageLabel' + @doc:hasForwardedBinding 'suppliesLabel' + @doc:hasForwardedBinding 'organizationLabel' + ci 4-WorkPackageSections : doc:Section [ + doc:hasElement 1-WorkPackageDescription + doc:hasElement 2-SubWorkPackages + ] + + @doc:hasRequiredBinding 'workPackageLabel' + @doc:hasRequiredBinding 'suppliesLabel' + @doc:hasRequiredBinding 'organizationLabel' + @doc:hasSparqlMapping ''' + SELECT (CONCAT(?workPackageLabel, ' focuses on the ', ?suppliesLabel, ' and is the responsibility of ', ?organizationLabel, '.') AS ?hasText) + WHERE { } + ''' + ci 1-WorkPackageDescription : doc:Para + + @doc:hasForwardedBinding 'workPackage' + @doc:hasRequiredBinding 'workPackageLabel' + @doc:hasSparqlMapping ''' + SELECT (CONCAT(?workPackageLabel, '\'s Sub Work Packages') AS ?hasTitle) WHERE { } + ''' + @doc:hasBorder '0' + ci 2-SubWorkPackages : doc:Table [ + doc:hasElement SubWorkPackageRows + ] + + @doc:hasRequiredBinding 'workPackage' + @doc:hasSparqlExpansion ''' + PREFIX proj: + PREFIX rdfs: + + SELECT DISTINCT ?workPackageLabel ?suppliesLabel ?organizationLabel + WHERE { + $workPackage proj:authorizes ?subWorkPackage . + ?subWorkPackage rdfs:label ?workPackageLabel . + ?subWorkPackage proj:isResponsibilityOf ?organization . + ?subWorkPackage proj:supplies ?supplies . + ?supplies rdfs:label ?suppliesLabel . + ?organization rdfs:label ?organizationLabel . + } ORDER BY ?workPackageLabel + ''' + @doc:hasForwardedBinding 'workPackageLabel' + @doc:hasForwardedBinding 'suppliesLabel' + @doc:hasForwardedBinding 'organizationLabel' + ci SubWorkPackageRows : doc:TableRow [ + doc:hasElement 1-SubWorkPackageCol + doc:hasElement 2-SuppliesCol + doc:hasElement 3-ProvidingOrgCol + ] + + @doc:hasTitle 'Sub Work Package' + @doc:hasRequiredBinding 'workPackageLabel as hasText' + ci 1-SubWorkPackageCol : doc:TableColumn + +} \ No newline at end of file diff --git a/src/sparql/compositions.sparql b/src/sparql/compositions.sparql deleted file mode 100644 index a0c74259..00000000 --- a/src/sparql/compositions.sparql +++ /dev/null @@ -1,8 +0,0 @@ -PREFIX fse: -PREFIX base: - -SELECT ?x ?y - -WHERE { - ?x base:contains ?y -} \ No newline at end of file