1

对于 sqwrl 查询中的 AND 操作,它就像:

Symptom(fever) ^ Symptom(vomiting) ^ Disease(?y) ^ hasSymptom(?y,fever) ^ hasSymptom(?y,vomiting) -> sqwrl:select(?y)

从上面的规则,它是选择具有两种症状的疾病。sqwrl 查询中的 OR 操作呢?我想选择有症状发烧或有呕吐症状的疾病?任何帮助将不胜感激。

4

2 回答 2

2

选择有呕吐或发烧症状的疾病的正确答案。

Symptom(fever) ^ Symptom(vomiting) ^ Disease(?x) ^ Disease(?y) ^ has_symptom(?x, fever) ^ has_symptom(?y, vomiting)˚sqwrl:makeSet(?s1, ?x) ^ sqwrl:makeSet(?s2, ?y)˚sqwrl:union(?s3, ?s1, ?s2) ^ sqwrl:element(?e, ?s3) -> sqwrl:select(?e)

于 2017-02-05T08:04:54.543 回答
1

我认为,您正在搜索的内容可以通过collections来完成。使用它们,您可以定义析取。我不确定,但也许您想要的查询如下所示:

Symptom(?fever) ^ Symptom(?vomiting) ^ Disease(?x) ^ Disease(?y) ^
hasSymptom(?x, ?fever) ^ hasSymptom(?y, ?vomiting) ˚
sqwrl:makeSet(?s1, ?x) ^ sqwrl:makeSet(?s2, ?y) ˚
sqwrl:union(?s3, ?s1, ?s2)
-> sqwrl:select(?s3)
于 2017-02-02T16:41:54.703 回答