https://gitlab.inria.fr/line/aide-group/macrovsa
Tip revision: 31a87d848f8ab28a06ccf77d0b359fc966974138 authored by vthierry on 15 December 2025, 21:31:50 UTC
sync from makefile
sync from makefile
Tip revision: 31a87d8
small_pizza_experiments.C
#include "macrovsa.hpp"
#include "time.hpp"
using namespace macrovsa;
/* Experiment corresponding to the (Viéville & Mercier 2024) draft
* @param {bool} [with_RDFSS = true] Defines if we add extra RDFSs supplementary inferences.
* @param {double} [tau_eat = 1] Defines if exact (tau_eat = 1) or approximate (tau_eat = 0.5) inference on eating.
* @param {String} [trace = "ado"] Level of trace as defined Rules.hpp.
*/
void small_pizza_experiment(double tau_eat = 1, String trace = "ado")
{
class SomeRules: public Rules {
public:
SomeRules(String trace) : Rules(0, trace) {
// ClassInheritance
Rule_2(rdfs9,
// getTau()
return algo::conj(algo::sim(predicate_1, "rdf:type"), algo::sim(object_1, subject_2), algo::sim(predicate_2, "rdfs:subClassOf"));
,
// setOutput()
output.add(*subject_1, tau, "rdf:type", *object_2);
);
}
}
someRules(trace);
// Defines incoming facts
RelationalMap incoming("Luigi pizza incoming facts");
incoming.add("Luigi", tau_eat, "eats", "thisPizza");
incoming.add("eats", "rdfs:domain", "Person");
incoming.add("eats", "rdfs:range", "Food");
incoming.add("thisPizza", "rdf:type", "MagheritaPizza");
incoming.add("thisPizza", "hasTopping", "thisMozzarella");
incoming.add("MagheritaPizza", "rdfs:subClassOf", "Pizza");
incoming.add("Pizza", "rdfs:subClassOf", "Food");
incoming.add("hasTopping", "rdfs:subPropertyOf", "hasIngredient");
incoming.add("MagheritaPizza", "hasTopping", "Tomato");
// Runs inference
RelationalMap infered("Luigi pizza infered facts");
aidesys::now(false, false);
someRules.apply(infered, incoming);
printf("Calculus duration in msec : %.3f\n", aidesys::now(false, true));
printf("%s\n", infered.asString().c_str());
}
int main()
{
small_pizza_experiment(1, "ado");
small_pizza_experiment(0.5, "");
return 0;
}
