diff --git a/.fuseki.ttl b/.fuseki.ttl index 1839cf6..e1460bb 100644 --- a/.fuseki.ttl +++ b/.fuseki.ttl @@ -1,24 +1,46 @@ -@prefix fuseki: . -@prefix rdf: . -@prefix rdfs: . -@prefix tdb: . -@prefix ja: . -@prefix : <#> . +PREFIX : <#> +PREFIX fuseki: +PREFIX ja: +PREFIX tdb: -[] rdf:type fuseki:Server . +# Service 1: Assertions endpoint +:service1 a fuseki:Service ; + fuseki:name "tutorial2-tdb" ; + fuseki:dataset :assertions ; + fuseki:serviceQuery "" , "query", "sparql" ; + fuseki:serviceUpdate "" , "update" ; + fuseki:serviceReadWriteGraphStore "data" ; + . -<#service> rdf:type fuseki:Service ; - rdfs:label "Tutorial2" ; # Human readable label for dataset - fuseki:name "tutorial2" ; # Name of the dataset in the endpoint url - fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph store protocol (read and write) - fuseki:endpoint [ fuseki:operation fuseki:query ; fuseki:name "sparql" ] ; # SPARQL query service - fuseki:endpoint [ fuseki:operation fuseki:shacl ; fuseki:name "shacl" ] ; # SHACL query service - fuseki:dataset <#dataset> . +# Service 2: Inference endpoint +:service2 a fuseki:Service ; + fuseki:name "tutorial2" ; + fuseki:dataset :inferences ; + fuseki:serviceQuery "" , "query", "sparql" ; + fuseki:serviceUpdate "" , "update" ; + fuseki:serviceReadWriteGraphStore "data" ; + fuseki:serviceReadGraphStore "get" ; + . + +:inferences a ja:RDFDataset ; + ja:defaultGraph :inf_model ; + . -## In memory TDB with union graph. -<#dataset> rdf:type tdb:DatasetTDB ; - tdb:location "--mem--" ; - # Query timeout on this dataset (1s, 1000 milliseconds) - ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "1000" ] ; - # Make the default graph be the union of all named graphs. - tdb:unionDefaultGraph true . +:inf_model a ja:InfModel ; + ja:baseModel :baseModel ; + ja:reasoner [ + ja:reasonerURL ; + ja:rulesFrom ; + ] + . + +:baseModel a tdb:GraphTDB ; + tdb:graphName ; + tdb:dataset :assertions ; + . + +:assertions a tdb:DatasetTDB ; + # location is relative to the .fuseki folder + tdb:location "assertions" ; + tdb:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "1000" ] ; + . \ No newline at end of file diff --git a/README.md b/README.md index 6c0a87d..92918ee 100755 --- a/README.md +++ b/README.md @@ -31,16 +31,17 @@ This is an example OML project for a hypothetical mission called Kepler 16b. For ./gradlew stopFuseki ``` -## Load to Fuseki Dataset +## Load Dataset to Fuseki ``` -./gradlew owlLoad +./gradlew load ``` -Pre-req: A Fuseki server with a firesat dataset must be running at http://localhost:3030/firesat (see Start Fuseki above) +## Save Dataset from Fuseki +``` +./gradlew save +``` ## Run SPARQL Queries ``` -./gradlew owlQuery +./gradlew query ``` - -Pre-req: A Fuseki server with a firesat dataset must be running at http://localhost:3030/firesat (see Load to Fuseki Dataset) diff --git a/build.gradle b/build.gradle index 3c6568f..a8491e8 100644 --- a/build.gradle +++ b/build.gradle @@ -25,9 +25,11 @@ buildscript { classpath 'io.opencaesar.owl:owl-fuseki-gradle:+' classpath 'io.opencaesar.owl:owl-query-gradle:+' classpath 'io.opencaesar.owl:owl-load-gradle:+' + classpath 'io.opencaesar.owl:owl-save-gradle:+' classpath 'io.opencaesar.owl:owl-reason-gradle:+' classpath 'io.opencaesar.oml:oml-merge-gradle:+' classpath 'io.opencaesar.adapters:oml2owl-gradle:+' + classpath 'io.opencaesar.adapters:owl2oml-gradle:+' } } @@ -74,6 +76,8 @@ task omlToOwl(type:io.opencaesar.oml2owl.Oml2OwlTask, group:"oml", dependsOn: do inputCatalogPath = file('catalog.xml') // OWL catalog outputCatalogPath = file('build/owl/catalog.xml') + // Generate rules + generateRules = true } /* @@ -117,7 +121,7 @@ task generateDocs(type: io.opencaesar.owl.doc.OwlDocTask, dependsOn: owlReason) * Start the headless Fuseki server * @seeAlso https://github.com/opencaesar/owl-tools/blob/master/owl-doc/README.md */ -task startFuseki(type: io.opencaesar.owl.fuseki.StartFusekiTask, group:"oml") { +task startFuseki(type: io.opencaesar.owl.fuseki.StartFusekiTask, group:"oml", dependsOn: owlReason) { configurationPath = file('.fuseki.ttl') outputFolderPath = file('.fuseki') webUI = true @@ -131,20 +135,29 @@ task stopFuseki(type: io.opencaesar.owl.fuseki.StopFusekiTask, group:"oml") { outputFolderPath = file('.fuseki') } +/* + * A task to load an OWL catalog to a TDB-persisted Fuseki dataset endpoint + * @seeAlso https://github.com/opencaesar/owl-tools/blob/master/owl-load/README.md + */ +task owlLoadTdb(type:io.opencaesar.owl.load.OwlLoadTask, group:"oml", dependsOn: startFuseki) { + inputs.files(file('.fuseki/fuseki.pid')) // rerun when fuseki restarts + catalogPath = file('build/owl/catalog.xml') + endpointURL = "http://localhost:3030/$dataset-tdb".toString() + fileExtensions = ['owl', 'ttl'] + iris = ["$rootIri".toString()] +} + /* * A task to load an OWL catalog to a Fuseki dataset endpoint * @seeAlso https://github.com/opencaesar/owl-tools/blob/master/owl-load/README.md */ -task owlLoad(type:io.opencaesar.owl.load.OwlLoadTask, group:"oml", dependsOn: owlReason) { - inputs.files(startFuseki.outputFolderPath) // rerun when fuseki restarts +task owlLoad(type:io.opencaesar.owl.load.OwlLoadTask, group:"oml", dependsOn: owlLoadTdb) { + inputs.files(file('.fuseki/fuseki.pid')) // rerun when fuseki restarts catalogPath = file('build/owl/catalog.xml') endpointURL = "http://localhost:3030/$dataset".toString() fileExtensions = ['owl', 'ttl'] - iris = [ - "$rootIri/classes".toString(), - "$rootIri/properties".toString(), - "$rootIri/individuals".toString() - ] + iris = ["$rootIri/classes".toString(), "$rootIri/properties".toString()] + loadToDefaultGraph = true } /* @@ -159,6 +172,44 @@ task owlQuery(type:io.opencaesar.owl.query.OwlQueryTask, group:"oml", dependsOn: format = 'json' } +/* + * A task to save a Fuseki dataset endpoint to an OWL catalog + * @seeAlso https://github.com/opencaesar/owl-tools/blob/master/owl-save/README.md + */ +task owlSave(type:io.opencaesar.owl.save.OwlSaveTask, group:"oml") { + inputs.files(startFuseki.outputFolderPath) // rerun when fuseki restarts + endpointURL = "http://localhost:3030/$dataset-tdb".toString() + catalogPath = file('build/save/catalog.xml') + fileExtension = 'ttl' +} + +/* + * A task to convert the OWL catalog to OML catalog + * @seeAlso https://github.com/opencaesar/owl-adapter/blob/master/owl2oml/README.md + */ +task owlToOml(type:io.opencaesar.owl2oml.Owl2OmlTask, dependsOn: [downloadDependencies, owlSave]) { + inputCatalogPath = owlSave.catalogPath + outputCatalogPath = file('catalog.xml') + doNotUpdatePaths = [ file('build/oml'), file('src/oml/example.com/tutorial2/vocabulary') ] + inputFileExtensions = ['ttl'] + outputFileExtension = 'oml' +} + +/* + * A task to load the OML dataset to Fuseki + */ +task load (dependsOn: owlLoad) + +/* + * A task to save the OML dataset from Fuseki + */ +task save (dependsOn: owlToOml) + +/* + * A task to query the OML dataset in Fuseki + */ +task query (dependsOn: owlQuery) + /* * A task to check the project's build artifacts * @seeAlso https://docs.gradle.org/current/userguide/base_plugin.html diff --git a/src/oml/example.com/tutorial2/description/bundle.oml b/src/oml/example.com/tutorial2/description/bundle.oml index e322903..67b6c97 100644 --- a/src/oml/example.com/tutorial2/description/bundle.oml +++ b/src/oml/example.com/tutorial2/description/bundle.oml @@ -1,11 +1,18 @@ description bundle as ^bundle { - - uses - includes - includes + includes - includes + includes - includes + includes + + includes + + includes + + includes + + includes + + uses } \ No newline at end of file diff --git a/src/oml/example.com/tutorial2/description/components.oml b/src/oml/example.com/tutorial2/description/components.oml index b2dab94..447fd47 100644 --- a/src/oml/example.com/tutorial2/description/components.oml +++ b/src/oml/example.com/tutorial2/description/components.oml @@ -1,81 +1,95 @@ description as components { uses as base + uses as mission - instance orbiter-launch-system : mission:Component [ - base:hasIdentifier "C.01" - base:hasCanonicalName "Orbiter Launch System" - ] - instance orbiter-spacecraft : mission:Component [ - base:hasIdentifier "C.02" - base:hasCanonicalName "Orbiter Spacecraft" + instance lander-ground-data-system : mission:Component [ + base:hasCanonicalName "Lander Ground Data System" + base:hasIdentifier "C.07" ] - instance orbiter-power-subsystem : mission:Component [ - base:hasIdentifier "C.02.01" - base:hasCanonicalName "Orbiter Power Subsystem" + + instance lander-launch-system : mission:Component [ + base:hasCanonicalName "Lander Launch System" + base:hasIdentifier "C.05" ] - instance orbiter-harness : mission:Component [ - base:hasIdentifier "C.02.02" - base:hasCanonicalName "Orbiter Harness" + + instance lander-spacecraft : mission:Component [ + base:hasCanonicalName "Lander Spacecraft" + base:hasIdentifier "C.06" ] - instance orbiter-thermal-subsystem : mission:Component [ - base:hasIdentifier "C.02.03" - base:hasCanonicalName "Orbiter Thermal Subsystem" + + instance mission-operations-system : mission:Component [ + base:hasCanonicalName "Mission Operations System" + base:hasIdentifier "C.04" ] + instance orbiter-command-and-data-handling-subsystem : mission:Component [ - base:hasIdentifier "C.02.04" base:hasCanonicalName "Orbiter C&DH Subsystem" + base:hasIdentifier "C.02.04" ] - instance orbiter-telecom-subsystem : mission:Component [ - base:hasIdentifier "C.02.05" - base:hasCanonicalName "Orbiter Telecom Subsystem" + + instance orbiter-ground-data-system : mission:Component [ + base:hasCanonicalName "Orbiter Ground Data System" + base:hasIdentifier "C.03" ] + instance orbiter-guidance-navigation-control-subsystem : mission:Component [ - base:hasIdentifier "C.02.06" base:hasCanonicalName "Orbiter GN&C Subsystem" + base:hasIdentifier "C.02.06" ] + + instance orbiter-harness : mission:Component [ + base:hasCanonicalName "Orbiter Harness" + base:hasIdentifier "C.02.02" + ] + + instance orbiter-launch-system : mission:Component [ + base:hasCanonicalName "Orbiter Launch System" + base:hasIdentifier "C.01" + ] + instance orbiter-mechanical-subsystem : mission:Component [ - base:hasIdentifier "C.02.07" base:hasCanonicalName "Orbiter Mechanical Subsystem" + base:hasIdentifier "C.02.07" ] - instance orbiter-spacraft-flight-software : mission:Component [ - base:hasIdentifier "C.02.08" - base:hasCanonicalName "Orbiter Flight Software" + + instance orbiter-power-subsystem : mission:Component [ + base:hasCanonicalName "Orbiter Power Subsystem" + base:hasIdentifier "C.02.01" ] + instance orbiter-propulsion-subsystem : mission:Component [ - base:hasIdentifier "C.02.09" base:hasCanonicalName "Orbiter Propulsion Subsystem" + base:hasIdentifier "C.02.09" ] - instance orbiter-ground-data-system : mission:Component [ - base:hasIdentifier "C.03" - base:hasCanonicalName "Orbiter Ground Data System" - ] - instance mission-operations-system : mission:Component [ - base:hasIdentifier "C.04" - base:hasCanonicalName "Mission Operations System" - ] - instance lander-launch-system : mission:Component [ - base:hasIdentifier "C.05" - base:hasCanonicalName "Lander Launch System" - ] - instance lander-spacecraft : mission:Component [ - base:hasIdentifier "C.06" - base:hasCanonicalName "Lander Spacecraft" - ] - instance lander-ground-data-system : mission:Component [ - base:hasIdentifier "C.07" - base:hasCanonicalName "Lander Ground Data System" - ] - ref instance orbiter-spacecraft [ - base:contains orbiter-power-subsystem - base:contains orbiter-harness - base:contains orbiter-thermal-subsystem + + instance orbiter-spacecraft : mission:Component [ base:contains orbiter-command-and-data-handling-subsystem - base:contains orbiter-telecom-subsystem base:contains orbiter-guidance-navigation-control-subsystem + base:contains orbiter-harness base:contains orbiter-mechanical-subsystem - base:contains orbiter-spacraft-flight-software + base:contains orbiter-power-subsystem base:contains orbiter-propulsion-subsystem + base:contains orbiter-spacraft-flight-software + base:contains orbiter-telecom-subsystem + base:contains orbiter-thermal-subsystem + base:hasCanonicalName "Orbiter Spacecraft" + base:hasIdentifier "C.02" + ] + + instance orbiter-spacraft-flight-software : mission:Component [ + base:hasCanonicalName "Orbiter Flight Software" + base:hasIdentifier "C.02.08" + ] + + instance orbiter-telecom-subsystem : mission:Component [ + base:hasCanonicalName "Orbiter Telecom Subsystem" + base:hasIdentifier "C.02.05" + ] + + instance orbiter-thermal-subsystem : mission:Component [ + base:hasCanonicalName "Orbiter Thermal Subsystem" + base:hasIdentifier "C.02.03" ] -} +} \ No newline at end of file diff --git a/src/oml/example.com/tutorial2/description/interfaces.oml b/src/oml/example.com/tutorial2/description/interfaces.oml index d3aee75..abbc44b 100644 --- a/src/oml/example.com/tutorial2/description/interfaces.oml +++ b/src/oml/example.com/tutorial2/description/interfaces.oml @@ -1,40 +1,48 @@ description as interfaces { + extends as components + uses as base + uses as mission - extends as components - instance orbiter-ground-data-system.telemetryIn : mission:Interface [ - base:hasIdentifier "I.04" - base:hasCanonicalName "Telemetry In" - ] - relation instance orbiter-ground-data-system.presents.telemetryIn : mission:Presents [ - from components:orbiter-ground-data-system - to orbiter-ground-data-system.telemetryIn - ] instance orbiter-ground-data-system.commandOut : mission:Interface [ - base:hasIdentifier "I.03" base:hasCanonicalName "Command Out" + base:hasIdentifier "I.03" ] + relation instance orbiter-ground-data-system.presents.commandOut : mission:Presents [ from components:orbiter-ground-data-system to orbiter-ground-data-system.commandOut ] + relation instance orbiter-ground-data-system.presents.telemetryIn : mission:Presents [ + from components:orbiter-ground-data-system + to orbiter-ground-data-system.telemetryIn + ] + + instance orbiter-ground-data-system.telemetryIn : mission:Interface [ + base:hasCanonicalName "Telemetry In" + base:hasIdentifier "I.04" + ] + instance orbiter-spacecraft.commandIn : mission:Interface [ - base:hasIdentifier "I.01" base:hasCanonicalName "Command In" + base:hasIdentifier "I.01" ] + relation instance orbiter-spacecraft.presents.commandIn : mission:Presents [ from components:orbiter-spacecraft to orbiter-spacecraft.commandIn ] - instance orbiter-spacecraft.telemetryOut : mission:Interface [ - base:hasIdentifier "I.02" - base:hasCanonicalName "Telemetry Out" - ] + relation instance orbiter-spacecraft.presents.telemetryOut : mission:Presents [ from components:orbiter-spacecraft to orbiter-spacecraft.telemetryOut ] -} + + instance orbiter-spacecraft.telemetryOut : mission:Interface [ + base:hasCanonicalName "Telemetry Out" + base:hasIdentifier "I.02" + ] +} \ No newline at end of file diff --git a/src/oml/example.com/tutorial2/description/junctions.oml b/src/oml/example.com/tutorial2/description/junctions.oml index 07448e5..82cd271 100644 --- a/src/oml/example.com/tutorial2/description/junctions.oml +++ b/src/oml/example.com/tutorial2/description/junctions.oml @@ -1,20 +1,22 @@ description as junctions { + extends as interfaces + uses as base + uses as mission - extends as interfaces relation instance orbiter-ground-data-system.orbiter-spacecraft.command.uplink : mission:Junction [ from interfaces:orbiter-ground-data-system.commandOut to interfaces:orbiter-spacecraft.commandIn - base:hasIdentifier "J.01" base:hasCanonicalName "Orbiter Command Uplink" + base:hasIdentifier "J.01" ] relation instance orbiter-ground-data-system.orbiter-spacecraft.telemetry.downlink : mission:Junction [ from interfaces:orbiter-spacecraft.telemetryOut to interfaces:orbiter-ground-data-system.telemetryIn - base:hasIdentifier "J.02" base:hasCanonicalName "Orbiter Telemetry Downlink" + base:hasIdentifier "J.02" ] } \ No newline at end of file diff --git a/src/oml/example.com/tutorial2/description/masses.oml b/src/oml/example.com/tutorial2/description/masses.oml index 1eea4ee..f4b941f 100644 --- a/src/oml/example.com/tutorial2/description/masses.oml +++ b/src/oml/example.com/tutorial2/description/masses.oml @@ -1,79 +1,92 @@ description as masses { - uses as xsd + extends as components + uses as vim4 + uses as mechanical - extends as components + + ref instance components:lander-launch-system : mechanical:MechanicalComponent + + ref instance components:lander-spacecraft : mechanical:MechanicalComponent + + ref instance components:orbiter-command-and-data-handling-subsystem : mechanical:MechanicalComponent + + ref instance components:orbiter-guidance-navigation-control-subsystem : mechanical:MechanicalComponent + + ref instance components:orbiter-harness : mechanical:MechanicalComponent ref instance components:orbiter-launch-system : mechanical:MechanicalComponent - instance orbiter-launch-system.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "2000"^^xsd:double - vim4:characterizes components:orbiter-launch-system - ] - ref instance components:lander-launch-system : mechanical:MechanicalComponent + ref instance components:orbiter-mechanical-subsystem : mechanical:MechanicalComponent + + ref instance components:orbiter-power-subsystem : mechanical:MechanicalComponent + + ref instance components:orbiter-propulsion-subsystem : mechanical:MechanicalComponent + + ref instance components:orbiter-spacraft-flight-software : mechanical:MechanicalComponent + + ref instance components:orbiter-telecom-subsystem : mechanical:MechanicalComponent + + ref instance components:orbiter-thermal-subsystem : mechanical:MechanicalComponent + instance lander-launch-system.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "3500"^^xsd:double vim4:characterizes components:lander-launch-system + vim4:hasDoubleNumber 3.50E+03 ] - ref instance components:lander-spacecraft : mechanical:MechanicalComponent instance lander-spacecraft.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "1200"^^xsd:double vim4:characterizes components:lander-spacecraft + vim4:hasDoubleNumber 1.20E+03 ] - ref instance components:orbiter-power-subsystem : mechanical:MechanicalComponent - instance orbiter-power-subsystem.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "297"^^xsd:double - vim4:characterizes components:orbiter-power-subsystem + instance orbiter-command-and-data-handling-subsystem.mass.magnitude : mechanical:MassMagnitude [ + vim4:characterizes components:orbiter-command-and-data-handling-subsystem + vim4:hasDoubleNumber 1.47E+02 ] - ref instance components:orbiter-harness : mechanical:MechanicalComponent - instance orbiter-harness.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "138"^^xsd:double - vim4:characterizes components:orbiter-harness + instance orbiter-guidance-navigation-control-subsystem.mass.magnitude : mechanical:MassMagnitude [ + vim4:characterizes components:orbiter-guidance-navigation-control-subsystem + vim4:hasDoubleNumber 1.56E+02 ] - ref instance components:orbiter-thermal-subsystem : mechanical:MechanicalComponent - instance orbiter-thermal-subsystem.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "307"^^xsd:double - vim4:characterizes components:orbiter-thermal-subsystem + instance orbiter-harness.mass.magnitude : mechanical:MassMagnitude [ + vim4:characterizes components:orbiter-harness + vim4:hasDoubleNumber 1.38E+02 ] - ref instance components:orbiter-command-and-data-handling-subsystem : mechanical:MechanicalComponent - instance orbiter-command-and-data-handling-subsystem.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "147"^^xsd:double - vim4:characterizes components:orbiter-command-and-data-handling-subsystem + instance orbiter-launch-system.mass.magnitude : mechanical:MassMagnitude [ + vim4:characterizes components:orbiter-launch-system + vim4:hasDoubleNumber 2.00E+03 ] - ref instance components:orbiter-telecom-subsystem : mechanical:MechanicalComponent - instance orbiter-telecom-subsystem.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "316"^^xsd:double - vim4:characterizes components:orbiter-telecom-subsystem + instance orbiter-mechanical-subsystem.mass.magnitude : mechanical:MassMagnitude [ + vim4:characterizes components:orbiter-mechanical-subsystem + vim4:hasDoubleNumber 3.25E+02 ] - ref instance components:orbiter-guidance-navigation-control-subsystem : mechanical:MechanicalComponent - instance orbiter-guidance-navigation-control-subsystem.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "156"^^xsd:double - vim4:characterizes components:orbiter-guidance-navigation-control-subsystem + instance orbiter-power-subsystem.mass.magnitude : mechanical:MassMagnitude [ + vim4:characterizes components:orbiter-power-subsystem + vim4:hasDoubleNumber 2.97E+02 ] - ref instance components:orbiter-mechanical-subsystem : mechanical:MechanicalComponent - instance orbiter-mechanical-subsystem.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "325"^^xsd:double - vim4:characterizes components:orbiter-mechanical-subsystem + instance orbiter-propulsion-subsystem.mass.magnitude : mechanical:MassMagnitude [ + vim4:characterizes components:orbiter-propulsion-subsystem + vim4:hasDoubleNumber 1.06E+02 ] - ref instance components:orbiter-spacraft-flight-software : mechanical:MechanicalComponent instance orbiter-spacraft-flight-software.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "165"^^xsd:double vim4:characterizes components:orbiter-spacraft-flight-software + vim4:hasDoubleNumber 1.65E+02 ] - ref instance components:orbiter-propulsion-subsystem : mechanical:MechanicalComponent - instance orbiter-propulsion-subsystem.mass.magnitude : mechanical:MassMagnitude [ - vim4:hasDoubleNumber "106"^^xsd:double - vim4:characterizes components:orbiter-propulsion-subsystem + instance orbiter-telecom-subsystem.mass.magnitude : mechanical:MassMagnitude [ + vim4:characterizes components:orbiter-telecom-subsystem + vim4:hasDoubleNumber 3.16E+02 + ] + + instance orbiter-thermal-subsystem.mass.magnitude : mechanical:MassMagnitude [ + vim4:characterizes components:orbiter-thermal-subsystem + vim4:hasDoubleNumber 3.07E+02 ] -} +} \ No newline at end of file diff --git a/src/oml/example.com/tutorial2/description/missions.oml b/src/oml/example.com/tutorial2/description/missions.oml index a4f8099..ba3bab3 100644 --- a/src/oml/example.com/tutorial2/description/missions.oml +++ b/src/oml/example.com/tutorial2/description/missions.oml @@ -1,34 +1,34 @@ description as missions { + extends as components + + extends as objectives + uses as base + uses as mission - extends as objectives - extends as components - instance orbiter : mission:Mission [ - base:hasIdentifier "M.01" - base:hasCanonicalName "Orbiter Mission" - mission:pursues objectives:characterize-atmosphere - mission:pursues objectives:characterize-environment - mission:pursues objectives:characterize-gravitational-field - ] instance lander : mission:Mission [ - base:hasIdentifier "M.02" base:hasCanonicalName "Lander Mission" + base:hasIdentifier "M.02" + mission:deploys components:lander-ground-data-system + mission:deploys components:lander-launch-system + mission:deploys components:lander-spacecraft + mission:deploys components:mission-operations-system mission:pursues objectives:characterize-atmosphere mission:pursues objectives:characterize-environment mission:pursues objectives:characterize-rocky-core-shape ] - ref instance orbiter [ + + instance orbiter : mission:Mission [ + base:hasCanonicalName "Orbiter Mission" + base:hasIdentifier "M.01" + mission:deploys components:mission-operations-system + mission:deploys components:orbiter-ground-data-system mission:deploys components:orbiter-launch-system mission:deploys components:orbiter-spacecraft - mission:deploys components:orbiter-ground-data-system - mission:deploys components:mission-operations-system - ] - ref instance lander [ - mission:deploys components:lander-launch-system - mission:deploys components:lander-spacecraft - mission:deploys components:lander-ground-data-system - mission:deploys components:mission-operations-system + mission:pursues objectives:characterize-atmosphere + mission:pursues objectives:characterize-environment + mission:pursues objectives:characterize-gravitational-field ] } \ No newline at end of file diff --git a/src/oml/example.com/tutorial2/description/objectives.oml b/src/oml/example.com/tutorial2/description/objectives.oml index 20106df..225650f 100644 --- a/src/oml/example.com/tutorial2/description/objectives.oml +++ b/src/oml/example.com/tutorial2/description/objectives.oml @@ -1,40 +1,47 @@ description as objectives { uses as base + uses as mission instance characterize-atmosphere : mission:Objective [ - base:hasIdentifier "O.01" - base:hasCanonicalName "Characterize the atmosphere of Kepler 16b" base:aggregates characterize-liquid-ocean + base:hasCanonicalName "Characterize the atmosphere of Kepler 16b" + base:hasIdentifier "O.01" ] - instance characterize-liquid-ocean : mission:Objective [ - base:hasIdentifier "O.02" - base:hasCanonicalName "Characterize the liquid ocean of Kepler 16b" + + instance characterize-environment : mission:Objective [ + base:aggregates characterize-liquid-ocean + base:hasCanonicalName "Characterize the energetic particule environment of the Kepler 16b binary star system" + base:hasIdentifier "O.07" ] + instance characterize-gravitational-field : mission:Objective [ - base:hasIdentifier "O.03" - base:hasCanonicalName "Characterize the gravitational field of Kepler 16b" base:aggregates characterize-liquid-ocean base:aggregates characterize-rocky-core + base:hasCanonicalName "Characterize the gravitational field of Kepler 16b" + base:hasIdentifier "O.03" ] + + instance characterize-liquid-ocean : mission:Objective [ + base:hasCanonicalName "Characterize the liquid ocean of Kepler 16b" + base:hasIdentifier "O.02" + ] + instance characterize-rocky-core : mission:Objective [ - base:hasIdentifier "O.04" - base:hasCanonicalName "Characterize the rocky core of Kepler 16b" base:aggregates characterize-rocky-core-density base:aggregates characterize-rocky-core-shape + base:hasCanonicalName "Characterize the rocky core of Kepler 16b" + base:hasIdentifier "O.04" ] + instance characterize-rocky-core-density : mission:Objective [ - base:hasIdentifier "O.05" base:hasCanonicalName "Characterize the core density of Kepler 16b" + base:hasIdentifier "O.05" ] + instance characterize-rocky-core-shape : mission:Objective [ - base:hasIdentifier "O.06" base:hasCanonicalName "Characterize the core shape of Kepler 16b" + base:hasIdentifier "O.06" ] - instance characterize-environment : mission:Objective [ - base:hasIdentifier "O.07" - base:hasCanonicalName "Characterize the energetic particule environment of the Kepler 16b binary star system" - base:aggregates characterize-liquid-ocean - ] -} +} \ No newline at end of file diff --git a/src/oml/example.com/tutorial2/description/requirements.oml b/src/oml/example.com/tutorial2/description/requirements.oml index 3580a7d..c6dfd00 100644 --- a/src/oml/example.com/tutorial2/description/requirements.oml +++ b/src/oml/example.com/tutorial2/description/requirements.oml @@ -1,26 +1,28 @@ description as requirements { + extends as interfaces + uses as base + uses as mission - extends as interfaces instance orbiter-ground-data-system-command-to-spacecraft : mission:Requirement [ base:hasIdentifier "R.04" mission:specifies interfaces:orbiter-ground-data-system.presents.commandOut ] - instance orbiter-spacecraft-command-from-ground-data-system : mission:Requirement [ - base:hasIdentifier "R.05" - mission:specifies interfaces:orbiter-spacecraft.presents.commandIn - ] - instance orbiter-ground-data-system-telemetry-from-spacecraft : mission:Requirement [ base:hasIdentifier "R.06" mission:specifies interfaces:orbiter-ground-data-system.presents.telemetryIn ] + instance orbiter-spacecraft-command-from-ground-data-system : mission:Requirement [ + base:hasIdentifier "R.05" + mission:specifies interfaces:orbiter-spacecraft.presents.commandIn + ] + instance orbiter-spacecraft-telemetry-to-ground-data-system : mission:Requirement [ base:hasIdentifier "R.07" mission:specifies interfaces:orbiter-spacecraft.presents.telemetryOut ] -} +} \ No newline at end of file