This is an automated email from the ASF dual-hosted git repository.
sergeykamov pushed a commit to branch NLPCRAFT-383
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
The following commit(s) were added to refs/heads/NLPCRAFT-383 by this push:
new b2a8eb8 WIP.
b2a8eb8 is described below
commit b2a8eb8194c0bf8be0c88f6148b5f63c86ecca1c
Author: Sergey Kamov <[email protected]>
AuthorDate: Fri Aug 6 15:28:36 2021 +0300
WIP.
---
.../examples/solarsystem/SolarSystemModel.scala | 12 +++++++-
.../loaders/SolarSystemDiscoversValueLoader.scala | 4 +--
.../loaders/SolarSystemPlanetsValueLoader.scala | 4 +--
...taApi.scala => SolarSystemOpenApiService.scala} | 33 ++++++++++++++--------
.../src/main/resources/solarsystem_model.yaml | 2 ++
.../solarsystem/NCSolarSystemModelSpec.scala | 1 +
6 files changed, 39 insertions(+), 17 deletions(-)
diff --git
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/SolarSystemModel.scala
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/SolarSystemModel.scala
index 720c4bd..d94531a 100644
---
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/SolarSystemModel.scala
+++
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/SolarSystemModel.scala
@@ -18,7 +18,7 @@
package org.apache.nlpcraft.examples.solarsystem
import com.typesafe.scalalogging.LazyLogging
-import org.apache.nlpcraft.model.NCModelFileAdapter
+import org.apache.nlpcraft.model.{NCIntent, NCIntentTerm, NCModelFileAdapter,
NCResult, NCToken}
class SolarSystemModel extends NCModelFileAdapter("solarsystem_model.yaml")
with LazyLogging {
override def onInit(): Unit = {
@@ -28,4 +28,14 @@ class SolarSystemModel extends
NCModelFileAdapter("solarsystem_model.yaml") with
override def onDiscard(): Unit = {
super.onDiscard()
}
+
+ @NCIntent(
+ "intent=i1 " +
+ "term(planet)~{tok_id() == 'prop:moon'}"
+ )
+ def onCustomSortReport(
+ @NCIntentTerm("planet") sortTok: NCToken,
+ ): NCResult = {
+ NCResult.json("OK")
+ }
}
diff --git
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemDiscoversValueLoader.scala
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemDiscoversValueLoader.scala
index 6afef19..d676775 100644
---
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemDiscoversValueLoader.scala
+++
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemDiscoversValueLoader.scala
@@ -17,8 +17,8 @@
package org.apache.nlpcraft.examples.solarsystem.loaders
-import org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenDataApi
+import org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenApiService
class SolarSystemDiscoversValueLoader extends SolarSystemValueLoader {
- override def getData: Seq[String] =
SolarSystemOpenDataApi.getInstance().getAllDiscovers
+ override def getData: Seq[String] =
SolarSystemOpenApiService.getInstance().getAllDiscovers
}
diff --git
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemPlanetsValueLoader.scala
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemPlanetsValueLoader.scala
index dd3c661..5659d97 100644
---
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemPlanetsValueLoader.scala
+++
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemPlanetsValueLoader.scala
@@ -17,8 +17,8 @@
package org.apache.nlpcraft.examples.solarsystem.loaders
-import org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenDataApi
+import org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenApiService
class SolarSystemPlanetsValueLoader extends SolarSystemValueLoader {
- override def getData: Seq[String] =
SolarSystemOpenDataApi.getInstance().getAllPlanets
+ override def getData: Seq[String] =
SolarSystemOpenApiService.getInstance().getAllPlanets
}
diff --git
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenDataApi.scala
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenApiService.scala
similarity index 73%
rename from
nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenDataApi.scala
rename to
nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenApiService.scala
index 70b4f84..3bff72d 100644
---
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenDataApi.scala
+++
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenApiService.scala
@@ -19,21 +19,22 @@ package org.apache.nlpcraft.examples.solarsystem.tools
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
-import
org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenDataApi.BodiesBean
+import com.typesafe.scalalogging.LazyLogging
+import
org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenApiService.BodiesBean
import java.net.URI
-import java.net.http.{HttpClient, HttpRequest, HttpResponse}
import java.net.http.HttpClient.Version
+import java.net.http.{HttpClient, HttpRequest, HttpResponse}
-object SolarSystemOpenDataApi {
+object SolarSystemOpenApiService {
case class BodiesBean(bodies: Seq[Map[String, Object]])
- private var s: SolarSystemOpenDataApi = _
+ private var s: SolarSystemOpenApiService = _
- def getInstance(): SolarSystemOpenDataApi = {
+ def getInstance(): SolarSystemOpenApiService = {
this.synchronized {
if (s == null) {
- s = new SolarSystemOpenDataApi
+ s = new SolarSystemOpenApiService
s.start()
}
@@ -43,7 +44,7 @@ object SolarSystemOpenDataApi {
}
}
-class SolarSystemOpenDataApi {
+class SolarSystemOpenApiService extends LazyLogging {
private final val URL_BODIES =
"https://api.le-systeme-solaire.net/rest/bodies"
private final val MAPPER = new
ObjectMapper().registerModule(DefaultScalaModule)
@@ -52,10 +53,11 @@ class SolarSystemOpenDataApi {
private var discovers: Seq[String] = _
private def getBody(params: String*): Seq[Map[String, Object]] = {
- val req =
HttpRequest.newBuilder(URI.create(s"$URL_BODIES?data=${params.mkString(",")}")).
- header("Content-Type", "application/json").
- GET().
- build()
+ val req =
+
HttpRequest.newBuilder(URI.create(s"$URL_BODIES?data=${params.mkString(",")}")).
+ header("Content-Type", "application/json").
+ GET().
+ build()
val respJs = client.sendAsync(req,
HttpResponse.BodyHandlers.ofString()).get().body()
@@ -68,10 +70,15 @@ class SolarSystemOpenDataApi {
val res = getBody("englishName,discoveredBy")
def extract(name: String): Seq[String] =
-
res.map(_(name).asInstanceOf[String]).map(_.strip()).filter(_.nonEmpty).distinct
+
res.map(_(name).asInstanceOf[String]).map(_.strip).filter(_.nonEmpty).distinct
planets = extract("englishName")
discovers = extract("discoveredBy")
+
+ logger.info(
+ s"Solar System Open Api Service started. " +
+ s"Initial data discovered [planets=${planets.size},
discovers=${discovers.size}]"
+ )
}
def stop(): Unit = {
@@ -79,6 +86,8 @@ class SolarSystemOpenDataApi {
discovers = null
client = null
+
+ logger.info(s"Solar System Open Api Service stopped.")
}
def getAllPlanets: Seq[String] = planets
diff --git
a/nlpcraft-examples/solarsystem/src/main/resources/solarsystem_model.yaml
b/nlpcraft-examples/solarsystem/src/main/resources/solarsystem_model.yaml
index 954f2c0..32745a9 100644
--- a/nlpcraft-examples/solarsystem/src/main/resources/solarsystem_model.yaml
+++ b/nlpcraft-examples/solarsystem/src/main/resources/solarsystem_model.yaml
@@ -83,9 +83,11 @@ elements:
- id: "enum:planet"
description: "..."
+ valueLoader:
"org.apache.nlpcraft.examples.solarsystem.loaders.SolarSystemPlanetsValueLoader"
- id: "enum:discoverer"
description: "..."
+ valueLoader:
"org.apache.nlpcraft.examples.solarsystem.loaders.SolarSystemDiscoversValueLoader"
intents:
- "intent=ls term(act)={has(tok_groups(), 'prop')}"
\ No newline at end of file
diff --git
a/nlpcraft-examples/solarsystem/src/test/java/org/apache/nlpcraft/examples/solarsystem/NCSolarSystemModelSpec.scala
b/nlpcraft-examples/solarsystem/src/test/java/org/apache/nlpcraft/examples/solarsystem/NCSolarSystemModelSpec.scala
index 1bd102f..9dae572 100644
---
a/nlpcraft-examples/solarsystem/src/test/java/org/apache/nlpcraft/examples/solarsystem/NCSolarSystemModelSpec.scala
+++
b/nlpcraft-examples/solarsystem/src/test/java/org/apache/nlpcraft/examples/solarsystem/NCSolarSystemModelSpec.scala
@@ -27,5 +27,6 @@ import org.junit.jupiter.api.Test
class NCSolarSystemModelSpec extends NCTestContext {
@Test
def test(): Unit = {
+ checkIntent("moon", "i1")
}
}