Как извлечь значение атрибута в Grakn? - PullRequest
0 голосов
/ 04 июля 2019

Я хочу использовать GRAKN для моделирования знаний об автономном автомобиле.В одном примере я хочу определить, какую скорость я должен предложить автономной машине.Я знаю максимальную скорость автомобиля, знаю ограничение скорости на дороге, и если ограничение скорости на дороге не превышает максимальную скорость автомобиля, я хочу предложить автомобилю проехать допустимый предел скорости.максимальная скорость, ограничение скорости и предполагаемая скорость являются атрибутами автомобилей или дорог.В моем примере я хочу присвоить значение «speed-limit» как значение «предлагаемой скорости».Возможно ли это в GRAKN?

Вот что я пробовал.Я знаю, что это неверно, но я ожидаю, что решение будет выглядеть примерно так, но вместо присвоения значений вместо целого атрибута.

define

max-speed sub attribute, datatype double;
proposed-speed sub attribute, datatype double;
speed-limit sub attribute, datatype double;

drives-on sub relation,
    relates vehicle-role,
    relates type-of-road;

vehicle sub entity,
    has max-speed,
    has proposed-speed,
    plays vehicle-role;

    car sub vehicle;

road-type sub entity,
        has speed-limit,
        plays type-of-road;

        highway sub road-type;

proposed-speed-by-road-type sub rule,
    when {
        $x isa vehicle, has max-speed $s;
        $y isa road-type, has speed-limit $z;
        ($x,$y) isa drives-on;
        $z <= $s;
    }, then {
        $x has proposed-speed $z;
    };


proposed-speed-by-car-max sub rule,
    when {
        $x isa vehicle, has max-speed $s;
        $y isa road-type, has speed-limit $z;
        ($x,$y) isa drives-on;
        $z > $s;
    }, then {
        $x has proposed-speed $s;
    };

insert
$owncar isa car, has max-speed 190;
$highway isa highway, has speed-limit 130;
(vehicle-role: $owncar, type-of-road: $highway) isa drives-on;`

Теперь, если я сделаю запрос следующее: match $x id V82016, has proposed-speed $z; get; Я получу:grakn.core.server.exception.TransactionException-The type [car] is not allowed to have an attribute of type [speed-limit]. Please check server logs for the stack trace.

Я понял, потому что это не правильно.Поэтому я хотел бы извлечь значение ограничения скорости и назначить его предполагаемой скорости.Это возможно?

...