Grakn中的规则错误:“规则未形成有效子句,因为它包含多原子头”

问题描述

我有一个无法提交的规则。这是规则:

when {
    $t isa person; 
    $car isa car; 
    $t2 isa person; 
    $r ($t,$car) isa ownership;     
    $r2 ($t2,$car) isa ownership;     
},then {
    $car has age 23; 
    ($car,$t2) isa ownership; 
};

这是我commit遇到的错误

INVALID_ARGUMENT: InvalidKBException-A structural validation error has occurred. Please correct the [`1`] errors found. 
The rule [rule-32] does not form a valid clause,as it contains a multi-atom head
. Please check server logs for the stack trace.
All uncommitted data is cleared

解决方法

一条规则只能推断一个事实:

在Graql中,规则的“何时”部分必须是合取的 模式,而“ then”则应是原子的-每个规则都可以得出 仅单个事实

docs

,

@Jon T所说的是正确的,因此,针对您的问题的解决方案是将规则分为两个规则。

这两个规则将具有相同的import webpack from 'webpack-stream'; import named from 'vinyl-named'; import browserSync from "browser-sync"; import {src,dest,watch,series,parallel} from 'gulp'; import del from 'del'; import postcss from 'gulp-postcss'; import sourcemaps from 'gulp-sourcemaps'; import autoprefixer from 'autoprefixer'; import yargs from 'yargs'; import sass from 'gulp-sass'; import cleanCss from 'gulp-clean-css'; import gulpif from 'gulp-if'; import imagemin from 'gulp-imagemin'; const PRODUCTION = yargs.argv.prod; export const serve = done => { server.init({ port: 8181,proxy: "https://verbier:8890/",reloadOnRestart: true }); done(); }; export const reload = done => { server.reload() done(); }; export const clean = () => del(['dist']); export const styles = () => { return src(['assets/scss/bundle.scss','assets/scss/admin-style.scss']) .pipe(gulpif(!PRODUCTION,sourcemaps.init())) .pipe(sass().on('error',sass.logError)) .pipe(gulpif(PRODUCTION,postcss([ autoprefixer ]))) .pipe(gulpif(PRODUCTION,cleanCss({compatibility:'ie8'}))) .pipe(gulpif(!PRODUCTION,sourcemaps.write())) .pipe(dest('dist/css')) } export const watchForChanges = () => { watch('assets/scss/**/*.scss',series(styles,reload)); watch('assets/images/!**!/!*.{jpg,jpeg,png,svg,gif}',series(images,reload)); watch(['assets/!**!/!*','!src/{images,js,scss}',scss}/!**!/!*'],series(copy,reload)); watch('assets/js/!**!/!*.js',series(scripts,reload)); watch("**/*.php",reload); } export const images = () => { return src('assets/images/!**!/!*.{jpg,gif}') .pipe(gulpif(PRODUCTION,imagemin())) .pipe(dest('dist/images')); } export const copy = () => { return src(['assets/!**!/!*','!assets/{images,scss}/!**/!*']) .pipe(dest('dist')); } export const scripts = () => { return src(['assets/js/bundle.js','assets/js/admin-style.js']) .pipe(named()) .pipe(webpack({ module: { rules: [ { test: /\.js$/,use: { loader: 'babel-loader',options: { presets: ['@babel/preset-env'] } } } ] },mode: PRODUCTION ? 'production' : 'development',devtool: !PRODUCTION ? 'inline-source-map' : false,output: { filename: '[name].js' },externals: { jquery: 'jQuery' },})) .pipe(dest('dist/js')); } const server = browserSync.create(); export const dev = series(clean,parallel(styles,images,copy,scripts),serve,watchForChanges); export const build = series(clean,scripts)); export default dev; 子句,其中Sub ShowDesktop() CreateObject("Shell.Application").MinimizeAll End Sub 子句仅具有一个结论:

when