Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions module.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25">
<Document name="isc-iknow-setanalysis.ZPM">
<Module>
<Name>isc-iknow-setanalysis</Name>
<Version>1.0.1</Version>
<Description>About Set Analysis Demo app for InterSystems' iKnow technology</Description>
<Packaging>module</Packaging>
<SourcesRoot>src</SourcesRoot>
<Invoke Class="Demo.SetAnalysis.Utils" Method="CreateRestWebApp" Phase="Activate" When="After">
<Arg>/isc-iknow-setanalysis</Arg>
</Invoke>
<CSPApplication
SourcePath="/src/oth/csp/user/"
DeployPath="${cspdir}/iknow-setanalysis/"
Url="/iknow-setanalysis"
ServeFiles="1"
CookiePath="/iknow-setanalysis/"
PasswordAuthEnabled="1"
AuthenticationMethods="32"
MatchRoles=":%ALL"
Recurse="1"/>
<Resource Name="Demo.PKG"/>
</Module>
</Document>
</Export>
161 changes: 81 additions & 80 deletions src/cls/Demo/Hotels/DomainDef.cls
Original file line number Diff line number Diff line change
@@ -1,80 +1,81 @@
Class Demo.Hotels.DomainDef Extends %iKnow.DomainDefinition
{

/// <p>An XML representation of the domain this class defines.</p>
/// <p>For a detailed reference of the available elements and attributes, consult the class
/// reference for <class>%iKnow.Model.domain</class> and other classes in the <package>%iKnow.Model</package>
/// package.</p>
XData Domain [ XMLNamespace = "http://www.intersystems.com/iknow" ]
{
<domain name="Hotel reviews" objectsPackage="Demo.Hotels.Tables">
<userDictionary name="HotelReviewSentiment">
<entry rewriteFrom="friendly" assignLabel="UDPosSentiment" />
<entry rewriteFrom="wonderful" assignLabel="UDPosSentiment" />
<entry rewriteFrom="superb" assignLabel="UDPosSentiment" />
<entry rewriteFrom="good" assignLabel="UDPosSentiment" />
<entry rewriteFrom="love" assignLabel="UDPosSentiment" />
<entry rewriteFrom="loves" assignLabel="UDPosSentiment" />
<entry rewriteFrom="loved" assignLabel="UDPosSentiment" />
<entry rewriteFrom="well" assignLabel="UDPosSentiment" />
<entry rewriteFrom="comfortable" assignLabel="UDPosSentiment" />
<entry rewriteFrom="nice" assignLabel="UDPosSentiment" />
<entry rewriteFrom="ideally" assignLabel="UDPosSentiment" />
<entry rewriteFrom="recommend" assignLabel="UDPosSentiment" />
<entry rewriteFrom="excellent" assignLabel="UDPosSentiment" />
<entry rewriteFrom="fantastic" assignLabel="UDPosSentiment" />
<entry rewriteFrom="concenient" assignLabel="UDPosSentiment" />
<entry rewriteFrom="pleasant" assignLabel="UDPosSentiment" />
<entry rewriteFrom="great" assignLabel="UDPosSentiment" />
<entry rewriteFrom="amazing" assignLabel="UDPosSentiment" />
<entry rewriteFrom="clean" assignLabel="UDPosSentiment" />
<entry rewriteFrom="helpful" assignLabel="UDPosSentiment" />
<entry rewriteFrom="fabulous" assignLabel="UDPosSentiment" />
<entry rewriteFrom="efficient" assignLabel="UDPosSentiment" />
<entry rewriteFrom="attentive" assignLabel="UDPosSentiment" />
<entry rewriteFrom="caring" assignLabel="UDPosSentiment" />
<entry rewriteFrom="professional" assignLabel="UDPosSentiment" />
<entry rewriteFrom="clean" assignLabel="UDPosSentiment" />
<entry rewriteFrom="comfy" assignLabel="UDPosSentiment" />
<entry rewriteFrom="clean" assignLabel="UDPosSentiment" />

<entry rewriteFrom="hated" assignLabel="UDNegSentiment" />
<entry rewriteFrom="annoyed" assignLabel="UDNegSentiment" />
<entry rewriteFrom="annoying" assignLabel="UDNegSentiment" />
<entry rewriteFrom="disappointed" assignLabel="UDNegSentiment" />
<entry rewriteFrom="expensive" assignLabel="UDNegSentiment" />
<entry rewriteFrom="uncomfortable" assignLabel="UDNegSentiment" />
<entry rewriteFrom="difficult" assignLabel="UDNegSentiment" />
<entry rewriteFrom="nasty" assignLabel="UDNegSentiment" />
<entry rewriteFrom="disgusting" assignLabel="UDNegSentiment" />
<entry rewriteFrom="jammed" assignLabel="UDNegSentiment" />
<entry rewriteFrom="inconvenient" assignLabel="UDNegSentiment" />
<entry rewriteFrom="rotten" assignLabel="UDNegSentiment" />
<entry rewriteFrom="irritating" assignLabel="UDNegSentiment" />
<entry rewriteFrom="dirty" assignLabel="UDNegSentiment" />
<entry rewriteFrom="hopeless" assignLabel="UDNegSentiment" />
<entry rewriteFrom="horrendous" assignLabel="UDNegSentiment" />
<entry rewriteFrom="horrible" assignLabel="UDNegSentiment" />

<entry rewriteFrom="min." rewriteTo="\noend" />
</userDictionary>
<configuration name="HotelReviewConfig" languages="en" userDictionary="HotelReviewSentiment" />
<parameter name="$$$IKPDEFAULTCONFIG" value="HotelReviewConfig" />
<metadata>
<field name="Author" />
<field name="StayType" />
<field name="StayMonth" />
</metadata>
<data>
<table tableName="Demo_Hotels.Review" idField="ID" groupField="Hotelname" dataFields="Reviewfull"
metadataFields="Author,StayType,StayMonth" whereClause="reviewtext is not null"
metadataColumns="Authorname,StayType,StayMonth" />
</data>
<blacklist name="SimpleTerms">
<entry>hotel</entry>
<entry>guest</entry>
</blacklist>
</domain>
}

}
Class Demo.Hotels.DomainDef Extends %iKnow.DomainDefinition
{

/// <p>An XML representation of the domain this class defines.</p>
/// <p>For a detailed reference of the available elements and attributes, consult the class
/// reference for <class>%iKnow.Model.domain</class> and other classes in the <package>%iKnow.Model</package>
/// package.</p>
XData Domain [ XMLNamespace = "http://www.intersystems.com/iknow" ]
{
<domain name="Hotel reviews" objectsPackage="Demo.Hotels.Tables">
<userDictionary name="HotelReviewSentiment">
<entry rewriteFrom="friendly" assignLabel="UDPosSentiment" />
<entry rewriteFrom="wonderful" assignLabel="UDPosSentiment" />
<entry rewriteFrom="superb" assignLabel="UDPosSentiment" />
<entry rewriteFrom="good" assignLabel="UDPosSentiment" />
<entry rewriteFrom="love" assignLabel="UDPosSentiment" />
<entry rewriteFrom="loves" assignLabel="UDPosSentiment" />
<entry rewriteFrom="loved" assignLabel="UDPosSentiment" />
<entry rewriteFrom="well" assignLabel="UDPosSentiment" />
<entry rewriteFrom="comfortable" assignLabel="UDPosSentiment" />
<entry rewriteFrom="nice" assignLabel="UDPosSentiment" />
<entry rewriteFrom="ideally" assignLabel="UDPosSentiment" />
<entry rewriteFrom="recommend" assignLabel="UDPosSentiment" />
<entry rewriteFrom="excellent" assignLabel="UDPosSentiment" />
<entry rewriteFrom="fantastic" assignLabel="UDPosSentiment" />
<entry rewriteFrom="concenient" assignLabel="UDPosSentiment" />
<entry rewriteFrom="pleasant" assignLabel="UDPosSentiment" />
<entry rewriteFrom="great" assignLabel="UDPosSentiment" />
<entry rewriteFrom="amazing" assignLabel="UDPosSentiment" />
<entry rewriteFrom="clean" assignLabel="UDPosSentiment" />
<entry rewriteFrom="helpful" assignLabel="UDPosSentiment" />
<entry rewriteFrom="fabulous" assignLabel="UDPosSentiment" />
<entry rewriteFrom="efficient" assignLabel="UDPosSentiment" />
<entry rewriteFrom="attentive" assignLabel="UDPosSentiment" />
<entry rewriteFrom="caring" assignLabel="UDPosSentiment" />
<entry rewriteFrom="professional" assignLabel="UDPosSentiment" />
<entry rewriteFrom="clean" assignLabel="UDPosSentiment" />
<entry rewriteFrom="comfy" assignLabel="UDPosSentiment" />
<entry rewriteFrom="clean" assignLabel="UDPosSentiment" />

<entry rewriteFrom="hated" assignLabel="UDNegSentiment" />
<entry rewriteFrom="annoyed" assignLabel="UDNegSentiment" />
<entry rewriteFrom="annoying" assignLabel="UDNegSentiment" />
<entry rewriteFrom="disappointed" assignLabel="UDNegSentiment" />
<entry rewriteFrom="expensive" assignLabel="UDNegSentiment" />
<entry rewriteFrom="uncomfortable" assignLabel="UDNegSentiment" />
<entry rewriteFrom="difficult" assignLabel="UDNegSentiment" />
<entry rewriteFrom="nasty" assignLabel="UDNegSentiment" />
<entry rewriteFrom="disgusting" assignLabel="UDNegSentiment" />
<entry rewriteFrom="jammed" assignLabel="UDNegSentiment" />
<entry rewriteFrom="inconvenient" assignLabel="UDNegSentiment" />
<entry rewriteFrom="rotten" assignLabel="UDNegSentiment" />
<entry rewriteFrom="irritating" assignLabel="UDNegSentiment" />
<entry rewriteFrom="dirty" assignLabel="UDNegSentiment" />
<entry rewriteFrom="hopeless" assignLabel="UDNegSentiment" />
<entry rewriteFrom="horrendous" assignLabel="UDNegSentiment" />
<entry rewriteFrom="horrible" assignLabel="UDNegSentiment" />

<entry rewriteFrom="min." rewriteTo="\noend" />
</userDictionary>
<configuration name="HotelReviewConfig" languages="en" userDictionary="HotelReviewSentiment" />
<parameter name="$$$IKPDEFAULTCONFIG" value="HotelReviewConfig" />
<metadata>
<field name="Author" />
<field name="StayType" />
<field name="StayMonth" />
</metadata>
<data>
<table tableName="Demo_Hotels.Review" idField="ID" groupField="Hotelname" dataFields="Reviewfull"
metadataFields="Author,StayType,StayMonth" whereClause="reviewtext is not null"
metadataColumns="Authorname,StayType,StayMonth" />
</data>
<blacklist name="SimpleTerms">
<entry>hotel</entry>
<entry>guest</entry>
</blacklist>
</domain>
}

}

185 changes: 93 additions & 92 deletions src/cls/Demo/Hotels/Review.cls
Original file line number Diff line number Diff line change
@@ -1,92 +1,93 @@
Class Demo.Hotels.Review Extends %Persistent [ Not ProcedureBlock ]
{

Property Authorname As %String(MAXLEN = "");

Property DataOrigin As %String;

Property Hotelname As %String(MAXLEN = "");

Property Input As %String;

Property ResultNumber As %String;

Property ResultRow As %String;

Property Reviewdate As %String(MAXLEN = "");

Property Reviewscore As %String(MAXLEN = "");

Property Reviewtext As %String(MAXLEN = "");

Property Reviewtitle As %String(MAXLEN = "");

Property ReviewFull As %String [ Calculated, SqlComputeCode = { set {*} = {Reviewtitle} _ $c(13,10,13,10) _ {Reviewtext}}, SqlComputed ];

Property SourcePageURL As %String(MAXLEN = 500);

Property Staydetails As %String(MAXLEN = "");

Property StayType As %String [ Calculated, SqlComputeCode = { set {*} = $s($f({Staydetails},"business"):"business", $f({Staydetails},"family"):"family", $f({Staydetails},"solo"):"solo", $f({Staydetails},"couple"):"couple", $f({Staydetails},"friends"):"friends", 1:"unknown")}, SqlComputed ];

Property StayMonth As %String [ Calculated, SqlComputeCode = { set {*} = $zstrip($p({Staydetails}," ",2,3),"<>PC")}, SqlComputed ];

Property StayDate As %Date [ Calculated, SqlComputeCode = { set {*} = $zdateh($piece({StayMonth}," ",1)_" 1,"_$piece({StayMonth}," ",2),9,,,,,,,$h) }, SqlComputed ];

Property Widget As %String;

Storage Default
{
<Data name="ReviewDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Authorname</Value>
</Value>
<Value name="3">
<Value>DataOrigin</Value>
</Value>
<Value name="4">
<Value>Hotelname</Value>
</Value>
<Value name="5">
<Value>Input</Value>
</Value>
<Value name="6">
<Value>ResultNumber</Value>
</Value>
<Value name="7">
<Value>ResultRow</Value>
</Value>
<Value name="8">
<Value>Reviewdate</Value>
</Value>
<Value name="9">
<Value>Reviewscore</Value>
</Value>
<Value name="10">
<Value>Reviewtext</Value>
</Value>
<Value name="11">
<Value>Reviewtitle</Value>
</Value>
<Value name="12">
<Value>SourcePageURL</Value>
</Value>
<Value name="13">
<Value>Staydetails</Value>
</Value>
<Value name="14">
<Value>Widget</Value>
</Value>
</Data>
<DataLocation>^Demo.Hotels.ReviewD</DataLocation>
<DefaultData>ReviewDefaultData</DefaultData>
<IdLocation>^Demo.Hotels.ReviewD</IdLocation>
<IndexLocation>^Demo.Hotels.ReviewI</IndexLocation>
<StreamLocation>^Demo.Hotels.ReviewS</StreamLocation>
<Type>%Storage.Persistent</Type>
}

}
Class Demo.Hotels.Review Extends %Persistent [ Not ProcedureBlock ]
{

Property Authorname As %String(MAXLEN = "");

Property DataOrigin As %String;

Property Hotelname As %String(MAXLEN = "");

Property Input As %String;

Property ResultNumber As %String;

Property ResultRow As %String;

Property Reviewdate As %String(MAXLEN = "");

Property Reviewscore As %String(MAXLEN = "");

Property Reviewtext As %String(MAXLEN = "");

Property Reviewtitle As %String(MAXLEN = "");

Property ReviewFull As %String [ Calculated, SqlComputeCode = { set {*} = {Reviewtitle} _ $c(13,10,13,10) _ {Reviewtext}}, SqlComputed ];

Property SourcePageURL As %String(MAXLEN = 500);

Property Staydetails As %String(MAXLEN = "");

Property StayType As %String [ Calculated, SqlComputeCode = { set {*} = $s($f({Staydetails},"business"):"business", $f({Staydetails},"family"):"family", $f({Staydetails},"solo"):"solo", $f({Staydetails},"couple"):"couple", $f({Staydetails},"friends"):"friends", 1:"unknown")}, SqlComputed ];

Property StayMonth As %String [ Calculated, SqlComputeCode = { set {*} = $zstrip($p({Staydetails}," ",2,3),"<>PC")}, SqlComputed ];

Property StayDate As %Date [ Calculated, SqlComputeCode = { set {*} = $zdateh($piece({StayMonth}," ",1)_" 1,"_$piece({StayMonth}," ",2),9,,,,,,,$h) }, SqlComputed ];

Property Widget As %String;

Storage Default
{
<Data name="ReviewDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Authorname</Value>
</Value>
<Value name="3">
<Value>DataOrigin</Value>
</Value>
<Value name="4">
<Value>Hotelname</Value>
</Value>
<Value name="5">
<Value>Input</Value>
</Value>
<Value name="6">
<Value>ResultNumber</Value>
</Value>
<Value name="7">
<Value>ResultRow</Value>
</Value>
<Value name="8">
<Value>Reviewdate</Value>
</Value>
<Value name="9">
<Value>Reviewscore</Value>
</Value>
<Value name="10">
<Value>Reviewtext</Value>
</Value>
<Value name="11">
<Value>Reviewtitle</Value>
</Value>
<Value name="12">
<Value>SourcePageURL</Value>
</Value>
<Value name="13">
<Value>Staydetails</Value>
</Value>
<Value name="14">
<Value>Widget</Value>
</Value>
</Data>
<DataLocation>^Demo.Hotels.ReviewD</DataLocation>
<DefaultData>ReviewDefaultData</DefaultData>
<IdLocation>^Demo.Hotels.ReviewD</IdLocation>
<IndexLocation>^Demo.Hotels.ReviewI</IndexLocation>
<StreamLocation>^Demo.Hotels.ReviewS</StreamLocation>
<Type>%Storage.Persistent</Type>
}

}

Loading