2017-02-02 16 views
1

AND 연산에서 작동하는 방법, 그것은 같은 것입니다 : 위의 규칙에서쓰거나 sqwrl 쿼리 sqwrl 쿼리에 대한

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

, 그것은 모두 증상이 질병을 선택하는 것입니다. sqwrl 쿼리에서 OR 연산은 어떻습니까? 증상 열이나 증상 구토가있는 질병을 선택하고 싶습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

2

정답은 하나 증상 구토 나 열이 질병을 선택할 수 있습니다. 오류 실행 SQWRL 쿼리 :

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)

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) 
+0

나는이 예외를 얻고 오류 실행 Drools가 엔진 지배 그러나 – Muzogeek

+0

을, 나는 컬렉션에 대한 설명서를 읽고 난 다른 규칙 구축 :^증상 (구토를 증상 (발열))? 질병 (? x)^질병 (? y)^has_symptom (? x, fever)^has_symptom (? y, 구토) ˚sqwrl : makeSet (? s1,? x)^sqwrl : makeSet (? s2,? y) ˚sqwrl : union (? s3,? s1,? s2)^sqwrl : size (? n,? s3) -> sqwrl : select (? n) 아무런 예외가 없다. 크기에 대한 올바른 결과. 하지만 s3을 선택할 때는 작동하지 않습니다. – Muzogeek