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