Describing configurations
of software experiments
as Linked Data
Joachim Van Herwegen, Ruben Taelman, Sarven Capadisli, Ruben Verborgh
https://linkedsoftwaredependencies.org/articles/describing-experiments/
Why write research articles?
We want other researchers…
2
Why write research articles?
We want other researchers…
…to re-use our data.
…to re-use our software.
…to build upon our results.
3
Why write research articles?
We want other researchers…
…to re-use our data.
…to re-use our software.
…to build upon our results.
4
Paper evaluation (2014)
“We provide all source code of the implementations, as
well as the full benchmark configuration, at
http://example.com.”
5
Paper evaluation (2014)
“We provide all source code of the implementations, as
well as the full benchmark configuration, at
http://example.com.”
6
Paper evaluation (2014)
“We provide all source code of the implementations, as
well as the full benchmark configuration, at
http://example.com.”
“… is compared to Virtuoso (6.1.8 and 7.1.1) and Jena
Fuseki (TDB 1.0.1 and HDT 1.1.1).”
7
Paper evaluation (2014)
“We provide all source code of the implementations, as
well as the full benchmark configuration, at
http://example.com.”
“… is compared to Virtuoso (6.1.8 and 7.1.1) and Jena
Fuseki (TDB 1.0.1 and HDT 1.1.1).”
8
Paper evaluation (2014)
“We provide all source code of the implementations, as
well as the full benchmark configuration, at
https://github.com/LinkedDataFragments/.”
“… is compared to Virtuoso (6.1.8 and 7.1.1) and Jena
Fuseki (TDB 1.0.1 and HDT 1.1.1).”
9
Improved evaluation description
Exact and complete description of the setup
10
Improved evaluation description
Exact and complete description of the setup
… using Linked Data
11
Improved evaluation description
Exact and complete description of the setup
… using Linked Data
… for automatic instantiation.
12
Describing configurations as Linked Data
Interlinking software modules
Instantiating software components
Updated evaluation
13
Describing configurations as Linked Data
Interlinking software modules
Instantiating software components
Updated evaluation
14
Interlinking software modules
Which software modules were used?
Which evaluations made use of this module?
Which other modules depend on this module?
15
Node Package Manager (npm)
Package manager for JavaScript
16
Node Package Manager (npm)
Package manager for JavaScript
17
http://www.modulecounts.com
Node Package Manager (npm)
Package manager for JavaScript
Convert to
Linked Data
18
http://www.modulecounts.com
Package.json
{
"name": "ldf-server",
"version": "2.2.2",
"license": "MIT",
"repository": {
"type": "git",
"url": "git@github.com:LinkedDataFragments/Server.js.git"
},
"bugs": {
"url": "https://github.com/LinkedDataFragments/Server.js/issues"
},
"dependencies": {
"asynciterator": "^1.1.0",
"jsonld": "^0.4.11",
"lodash": "^2.4.2"
}
}
19
Package.json
{
"name": "ldf-server",
"version": "2.2.2",
"license": "MIT",
"repository": {
"type": "git",
"url": "git@github.com:LinkedDataFragments/Server.js.git"
},
"bugs": {
"url": "https://github.com/LinkedDataFragments/Server.js/issues"
},
"dependencies": {
"asynciterator": "^1.1.0",
"jsonld": "^0.4.11",
"lodash": "^2.4.2"
}
}
20
Package.jsonld
Convert JSON to JSON-LD to generate Linked Data
21
Package.jsonld
Convert JSON to JSON-LD to generate Linked Data
ldf-server:2.2.2 a doap:Version ;
doap:name "ldf-server" ;
doap:revision "2.2.2" ;
spdx:licenseDeclared spdx:MIT ;
doap:repository <git+ssh://git@github.com/…/Server.js.git> ;
npm:dependency asynciterator:^1.1.0 ;
npm:dependency jsonld:^0.4.11 ;
npm:dependency lodash:^2.4.2 .
<git+ssh://git@github.com/…/Server.js.git> a doap:GitRepository .
22
Describing configurations as Linked Data
Interlinking software modules
Instantiating software components
Updated evaluation
23
LDF Server
"datasources": {
"dbpedia": {
"title": "DBpedia 2014",
"type": "HdtDatasource"
"settings": { "file": "data/dbpedia2014.hdt" }
}
}
24
LDF Server
"datasources": {
"dbpedia": {
"title": "DBpedia 2014",
"type": "HdtDatasource"
"settings": { "file": "data/dbpedia2014.hdt" }
}
}
JSON  JSON-LD
ex:myServer ldfs:datasource ex:MyHdtDataSource
ex:MyHdtDataSource a ldfs:DatasourceHdt;
rdfs:label "DBpedia 2014";
ldfs:hdtFile "data/dbpedia2014.hdt".
25
Components.js
Instantiation framework that interprets this config
ex:myServer ldfs:datasource ex:MyHdtDataSource
ex:MyHdtDataSource a ldfs:DatasourceHdt;
rdfs:label "DBpedia 2014";
ldfs:hdtFile "data/dbpedia2014.hdt".
26
Components.js
Instantiation framework that interprets this config
ex:myServer ldfs:datasource ex:MyHdtDataSource
ex:MyHdtDataSource a ldfs:DatasourceHdt;
rdfs:label "DBpedia 2014";
ldfs:hdtFile "data/dbpedia2014.hdt".
How?
27
Object Oriented Ontology
28
Object Oriented Ontology
29
Component description
ldfs:DatasourceHdt a oo:Class ;
rdfs:subClassOf ldfs:Datasource ;
oo:componentPath "datasources.HdtDatasource" ;
oo:parameter ldfs:hdtFile ;
oo:constructorArguments ([
rdfs:subclassOf ldfs:DatasourceConstructor ;
om:field [ om:fieldName "file" ;
om:fieldValue ldfs:hdtFile ]
]) .
ldfs:hdtFile rdfs:range xsd:string .
30
Component description
ldfs:DatasourceHdt a oo:Class ;
rdfs:subClassOf ldfs:Datasource ;
oo:componentPath "datasources.HdtDatasource" ;
oo:parameter ldfs:hdtFile ;
oo:constructorArguments ([
rdfs:subclassOf ldfs:DatasourceConstructor ;
om:field [ om:fieldName "file" ;
om:fieldValue ldfs:hdtFile ]
]) .
ldfs:hdtFile rdfs:range xsd:string .
31
class DatasourceHdt extends Datasource {
file: string;
constructor (input) {
super(input);
this.file = file;
}
}
Component description
ldfs:DatasourceHdt a oo:Class ;
rdfs:subClassOf ldfs:Datasource ;
oo:componentPath "datasources.HdtDatasource" ;
oo:parameter ldfs:hdtFile ;
oo:constructorArguments ([
rdfs:subclassOf ldfs:DatasourceConstructor ;
om:field [ om:fieldName "file" ;
om:fieldValue ldfs:hdtFile ]
]) .
ldfs:hdtFile rdfs:range xsd:string .
External file  can be written for existing code
32
class DatasourceHdt extends Datasource {
file: string;
constructor (input) {
super(input);
this.file = file;
}
}
Components.js
ex:myServer ldfs:datasource ex:MyHdtDataSource
ex:MyHdtDataSource a ldfs:DatasourceHdt;
rdfs:label "DBpedia 2014";
ldfs:hdtFile "data/dbpedia2014.hdt".
Allows users to fully set up the same system by
providing a URI to a config
33
Describing configurations as Linked Data
Interlinking software modules
Instantiating software components
Updated evaluation
34
Updated evaluation
Describe steps using RDFa in HTML paper.
Link to exact versions of all modules used.
Link to RDF config file.
Link to exact evaluation results.
35
Updated evaluation
“5. Install the server software configuration,
implementing the TPF specification, with its
dependencies on the server.”
36
Updated evaluation
“5. Install the server software configuration,
implementing the TPF specification, with its
dependencies on the server.”
ldf:experiment npm:engine node:v6.8.1, npmv:4.2.0;
doap:name "ldf-server";
doap:revision "2.2.1";
doc:dependsOn strftime:0.6.2;
doc:dependsOn asynciterator:1.1.0.
strftime:0.6.2 doap:revision "0.6.2"; doap:name "strftime".
asynciterator:1.1.0 doap:revision "1.1.0"; doap:name "asynciterator".
…
37
Updated evaluation
“5. Install the server software configuration,
implementing the TPF specification, with its
dependencies on the server.”
ex:myServer ldfs:datasource ex:MyHdtDataSource
ex:MyHdtDataSource a ldfs:DatasourceHdt;
rdfs:label "DBpedia 2014";
ldfs:hdtFile "data/dbpedia2014.hdt".
38
Updated evaluation
“5. Install the server software configuration,
implementing the TPF specification, with its
dependencies on the server.”
ex:myServer ldfs:datasource ex:MyCustomDataSource
ex:MyCustomDataSource a ex:CustomDatasource;
rdfs:label "DBpedia 2014";
ex:Uri "http://example.com/custom";
ex:samples 5.
39
Conclusion
Interlinking research allows for…
40
Conclusion
Interlinking research allows for…
… better reproducability.
… better re-use.
… better research.
41

Describing configurations of software experiments as Linked Data

  • 1.
    Describing configurations of softwareexperiments as Linked Data Joachim Van Herwegen, Ruben Taelman, Sarven Capadisli, Ruben Verborgh https://linkedsoftwaredependencies.org/articles/describing-experiments/
  • 2.
    Why write researcharticles? We want other researchers… 2
  • 3.
    Why write researcharticles? We want other researchers… …to re-use our data. …to re-use our software. …to build upon our results. 3
  • 4.
    Why write researcharticles? We want other researchers… …to re-use our data. …to re-use our software. …to build upon our results. 4
  • 5.
    Paper evaluation (2014) “Weprovide all source code of the implementations, as well as the full benchmark configuration, at http://example.com.” 5
  • 6.
    Paper evaluation (2014) “Weprovide all source code of the implementations, as well as the full benchmark configuration, at http://example.com.” 6
  • 7.
    Paper evaluation (2014) “Weprovide all source code of the implementations, as well as the full benchmark configuration, at http://example.com.” “… is compared to Virtuoso (6.1.8 and 7.1.1) and Jena Fuseki (TDB 1.0.1 and HDT 1.1.1).” 7
  • 8.
    Paper evaluation (2014) “Weprovide all source code of the implementations, as well as the full benchmark configuration, at http://example.com.” “… is compared to Virtuoso (6.1.8 and 7.1.1) and Jena Fuseki (TDB 1.0.1 and HDT 1.1.1).” 8
  • 9.
    Paper evaluation (2014) “Weprovide all source code of the implementations, as well as the full benchmark configuration, at https://github.com/LinkedDataFragments/.” “… is compared to Virtuoso (6.1.8 and 7.1.1) and Jena Fuseki (TDB 1.0.1 and HDT 1.1.1).” 9
  • 10.
    Improved evaluation description Exactand complete description of the setup 10
  • 11.
    Improved evaluation description Exactand complete description of the setup … using Linked Data 11
  • 12.
    Improved evaluation description Exactand complete description of the setup … using Linked Data … for automatic instantiation. 12
  • 13.
    Describing configurations asLinked Data Interlinking software modules Instantiating software components Updated evaluation 13
  • 14.
    Describing configurations asLinked Data Interlinking software modules Instantiating software components Updated evaluation 14
  • 15.
    Interlinking software modules Whichsoftware modules were used? Which evaluations made use of this module? Which other modules depend on this module? 15
  • 16.
    Node Package Manager(npm) Package manager for JavaScript 16
  • 17.
    Node Package Manager(npm) Package manager for JavaScript 17 http://www.modulecounts.com
  • 18.
    Node Package Manager(npm) Package manager for JavaScript Convert to Linked Data 18 http://www.modulecounts.com
  • 19.
    Package.json { "name": "ldf-server", "version": "2.2.2", "license":"MIT", "repository": { "type": "git", "url": "git@github.com:LinkedDataFragments/Server.js.git" }, "bugs": { "url": "https://github.com/LinkedDataFragments/Server.js/issues" }, "dependencies": { "asynciterator": "^1.1.0", "jsonld": "^0.4.11", "lodash": "^2.4.2" } } 19
  • 20.
    Package.json { "name": "ldf-server", "version": "2.2.2", "license":"MIT", "repository": { "type": "git", "url": "git@github.com:LinkedDataFragments/Server.js.git" }, "bugs": { "url": "https://github.com/LinkedDataFragments/Server.js/issues" }, "dependencies": { "asynciterator": "^1.1.0", "jsonld": "^0.4.11", "lodash": "^2.4.2" } } 20
  • 21.
    Package.jsonld Convert JSON toJSON-LD to generate Linked Data 21
  • 22.
    Package.jsonld Convert JSON toJSON-LD to generate Linked Data ldf-server:2.2.2 a doap:Version ; doap:name "ldf-server" ; doap:revision "2.2.2" ; spdx:licenseDeclared spdx:MIT ; doap:repository <git+ssh://git@github.com/…/Server.js.git> ; npm:dependency asynciterator:^1.1.0 ; npm:dependency jsonld:^0.4.11 ; npm:dependency lodash:^2.4.2 . <git+ssh://git@github.com/…/Server.js.git> a doap:GitRepository . 22
  • 23.
    Describing configurations asLinked Data Interlinking software modules Instantiating software components Updated evaluation 23
  • 24.
    LDF Server "datasources": { "dbpedia":{ "title": "DBpedia 2014", "type": "HdtDatasource" "settings": { "file": "data/dbpedia2014.hdt" } } } 24
  • 25.
    LDF Server "datasources": { "dbpedia":{ "title": "DBpedia 2014", "type": "HdtDatasource" "settings": { "file": "data/dbpedia2014.hdt" } } } JSON  JSON-LD ex:myServer ldfs:datasource ex:MyHdtDataSource ex:MyHdtDataSource a ldfs:DatasourceHdt; rdfs:label "DBpedia 2014"; ldfs:hdtFile "data/dbpedia2014.hdt". 25
  • 26.
    Components.js Instantiation framework thatinterprets this config ex:myServer ldfs:datasource ex:MyHdtDataSource ex:MyHdtDataSource a ldfs:DatasourceHdt; rdfs:label "DBpedia 2014"; ldfs:hdtFile "data/dbpedia2014.hdt". 26
  • 27.
    Components.js Instantiation framework thatinterprets this config ex:myServer ldfs:datasource ex:MyHdtDataSource ex:MyHdtDataSource a ldfs:DatasourceHdt; rdfs:label "DBpedia 2014"; ldfs:hdtFile "data/dbpedia2014.hdt". How? 27
  • 28.
  • 29.
  • 30.
    Component description ldfs:DatasourceHdt aoo:Class ; rdfs:subClassOf ldfs:Datasource ; oo:componentPath "datasources.HdtDatasource" ; oo:parameter ldfs:hdtFile ; oo:constructorArguments ([ rdfs:subclassOf ldfs:DatasourceConstructor ; om:field [ om:fieldName "file" ; om:fieldValue ldfs:hdtFile ] ]) . ldfs:hdtFile rdfs:range xsd:string . 30
  • 31.
    Component description ldfs:DatasourceHdt aoo:Class ; rdfs:subClassOf ldfs:Datasource ; oo:componentPath "datasources.HdtDatasource" ; oo:parameter ldfs:hdtFile ; oo:constructorArguments ([ rdfs:subclassOf ldfs:DatasourceConstructor ; om:field [ om:fieldName "file" ; om:fieldValue ldfs:hdtFile ] ]) . ldfs:hdtFile rdfs:range xsd:string . 31 class DatasourceHdt extends Datasource { file: string; constructor (input) { super(input); this.file = file; } }
  • 32.
    Component description ldfs:DatasourceHdt aoo:Class ; rdfs:subClassOf ldfs:Datasource ; oo:componentPath "datasources.HdtDatasource" ; oo:parameter ldfs:hdtFile ; oo:constructorArguments ([ rdfs:subclassOf ldfs:DatasourceConstructor ; om:field [ om:fieldName "file" ; om:fieldValue ldfs:hdtFile ] ]) . ldfs:hdtFile rdfs:range xsd:string . External file  can be written for existing code 32 class DatasourceHdt extends Datasource { file: string; constructor (input) { super(input); this.file = file; } }
  • 33.
    Components.js ex:myServer ldfs:datasource ex:MyHdtDataSource ex:MyHdtDataSourcea ldfs:DatasourceHdt; rdfs:label "DBpedia 2014"; ldfs:hdtFile "data/dbpedia2014.hdt". Allows users to fully set up the same system by providing a URI to a config 33
  • 34.
    Describing configurations asLinked Data Interlinking software modules Instantiating software components Updated evaluation 34
  • 35.
    Updated evaluation Describe stepsusing RDFa in HTML paper. Link to exact versions of all modules used. Link to RDF config file. Link to exact evaluation results. 35
  • 36.
    Updated evaluation “5. Installthe server software configuration, implementing the TPF specification, with its dependencies on the server.” 36
  • 37.
    Updated evaluation “5. Installthe server software configuration, implementing the TPF specification, with its dependencies on the server.” ldf:experiment npm:engine node:v6.8.1, npmv:4.2.0; doap:name "ldf-server"; doap:revision "2.2.1"; doc:dependsOn strftime:0.6.2; doc:dependsOn asynciterator:1.1.0. strftime:0.6.2 doap:revision "0.6.2"; doap:name "strftime". asynciterator:1.1.0 doap:revision "1.1.0"; doap:name "asynciterator". … 37
  • 38.
    Updated evaluation “5. Installthe server software configuration, implementing the TPF specification, with its dependencies on the server.” ex:myServer ldfs:datasource ex:MyHdtDataSource ex:MyHdtDataSource a ldfs:DatasourceHdt; rdfs:label "DBpedia 2014"; ldfs:hdtFile "data/dbpedia2014.hdt". 38
  • 39.
    Updated evaluation “5. Installthe server software configuration, implementing the TPF specification, with its dependencies on the server.” ex:myServer ldfs:datasource ex:MyCustomDataSource ex:MyCustomDataSource a ex:CustomDatasource; rdfs:label "DBpedia 2014"; ex:Uri "http://example.com/custom"; ex:samples 5. 39
  • 40.
  • 41.
    Conclusion Interlinking research allowsfor… … better reproducability. … better re-use. … better research. 41