예제 #1
0
function process_file($file, array &$errors = array())
{
    if ($file['error'] != 0) {
        return "Er is een fout opgetreden bij het uploaden.";
    }
    $reader = new KnowledgeBaseReader();
    $errors = $reader->lint($file['tmp_name']);
    $unique_name = sha1(microtime() . uniqid('kb', true)) . '.xml';
    if (count($errors) > 0) {
        return false;
    }
    if (!move_uploaded_file($file['tmp_name'], '../knowledgebases/' . $unique_name)) {
        $errors[] = "De knowledge-base kon niet worden opgeslagen op de server.";
        return false;
    }
    return $unique_name;
}
예제 #2
0
파일: list.php 프로젝트: Nr90/kennissysteem
function process_file($file)
{
    if ($file['error'] != 0) {
        return "Er is een fout opgetreden bij het uploaden.";
    }
    $reader = new KnowledgeBaseReader();
    $errors = $reader->lint($file['tmp_name']);
    if (!preg_match('/^[a-zA-Z0-9_\\-\\.]+\\.xml$/i', $file['name'])) {
        return "De bestandsnaam bevat karakters die niet goed verwerkt kunnen worden.";
    }
    if (count($errors) > 0) {
        $out = "De volgende fouten zijn gevonden in de knowledge-base:\n<ul>";
        foreach ($errors as $error) {
            $out .= sprintf("\n<li title=\"%s\">%s</li>\n", htmlspecialchars($error->file . ':' . $error->line, ENT_QUOTES, 'utf-8'), $error->message);
        }
        return $out .= "</ul>\n";
    }
    if (!move_uploaded_file($file['tmp_name'], '../knowledgebases/' . $file['name'])) {
        return "De knowledge-base kon niet worden opgeslagen op de server.";
    }
    return "De knowlegde-base is opgeslagen :)";
}
예제 #3
0
파일: main.php 프로젝트: Nr90/kennissysteem
function main($argc, $argv)
{
    if ($argc < 2 || $argc > 3) {
        usage($argv[0]);
    }
    // Als '-v' is meegegeven tijdens het starten, ga in verbose mode
    if ($argv[1] == '-v') {
        verbose(true);
        $argc--;
        array_shift($argv);
    } else {
        verbose(false);
    }
    // Reader voor de XML-bestanden
    $reader = new KnowledgeBaseReader();
    // Parse een xml-bestand (het eerste argument) tot knowledge base
    $state = $reader->parse($argv[1]);
    // Start de solver, dat ding dat kan infereren
    $solver = new Solver();
    // leid alle goals in de knowledge base af.
    $goals = $state->goals;
    // Begin met de doelen die we hebben op de goal stack te zetten
    foreach ($goals as $goal) {
        $state->goalStack->push($goal->name);
    }
    // Zo lang we nog vragen kunnen stellen, stel ze
    while (($question = $solver->solveAll($state)) instanceof AskedQuestion) {
        $answer = cli_ask($question);
        if ($answer instanceof Option) {
            $state->apply($answer->consequences, Yes::because("User answered '{$answer->description}' to '{$question->description}'"));
        }
    }
    // Geen vragen meer, print de gevonden oplossingen.
    foreach ($goals as $goal) {
        printf("%s: %s\n", $goal->description, $goal->answer($state)->description);
    }
}
예제 #4
0
 private function readState($file)
 {
     $reader = new KnowledgeBaseReader();
     $state = $reader->parse($file);
     return $state;
 }
예제 #5
0
<?php

include '../util.php';
include '../solver.php';
include '../reader.php';
include '../formatter.php';
if (!preg_match('/^[a-zA-Z0-9_\\-\\.]+\\.xml$/i', $_GET['kb'])) {
    die('Doe eens niet!');
}
$reader = new KnowledgeBaseReader();
$state = $reader->parse(first_found_path(array('./' . $_GET['kb'], '../knowledgebases/' . $_GET['kb'])));
class FactStatistics
{
    public $name;
    public $values;
    public function __construct($name)
    {
        $this->name = $name;
        $this->values = new Map(function () {
            return new FactValueStatistics();
        });
    }
}
class FactValueStatistics
{
    public $inferringRules;
    public $dependingRules;
    public $inferringQuestions;
    public function __construct()
    {
        $this->inferringRules = new Set();
예제 #6
0
<?php

require '../util.php';
require '../solver.php';
require '../reader.php';
$reader = new KnowledgeBaseReader();
$out = $reader->lint('kb_empty.xml');
assert('count($out) === 0');