[ANNOUNCE] Apache UIMA DUCC 2.2.0 released

2017-02-23 Thread Jaroslaw Cwiklik
The Apache UIMA team is pleased to announce the release of the Apache
UIMA-DUCC version 2.2.0.

The Unstructured Information Management Architecture (UIMA) is a component
framework supporting development, discovery, composition, and deployment of
multi-modal analytics tasked with the analysis of unstructured information.

Apache UIMA is an Apache licensed open source implementation of the UIMA
specification which is being developed by a technical committee within
OASIS, a standards organization. The implementation comprises an SDK and
tooling for composing and running analytic components written in Java and
C++, with some support for Perl, Python and TCL.

DUCC stands for Distributed UIMA Cluster Computing. DUCC is a cluster
management system providing tooling,management, and scheduling facilities
to automate the scale-out of applications written to the UIMA framework.
Core UIMA provides a generalized framework for applications that process
unstructured information such as human language, but does not provide a
scale-out mechanism. UIMA-AS provides a scale-out mechanism to distribute
UIMA pipelines over a cluster of computing resources, but does not provide
job or cluster management of the resources.
DUCC defines a formal job model that closely maps to a standard UIMA
pipeline. Around this job model DUCC provides cluster management services
to automate the scale-out of UIMA pipelines over computing clusters.


This release contains a number of improvements and bug fixes. Notable
updates in this release include:

 - Ships with the latest UIMA-AS v2.9.0 and UIMA SDK 2.9.0
 - Ships with ActiveMQ v5.14.0
 - Added support for static failover and capability to move the head node
 - Fixed DUCC OR "warm" restart issues
 - Fixed DUCC startup script to fail if the DB doesn't start
 - Fixed DUCC shutdown sequence bug which prevented agents from stopping if
Broker was shutdown first
 - Fixed Rogue process detector to detect and cleanup orphan services
 - Deprecated ducc.agent.node.metrics.sys.gid.max and replaced with
ducc.agent.rogue.process.sys.uid.max
 - Enhanced DUCC Job Driver (JD) to provide individual work item
performance breakdowns
 - Modified DUCC to restrict broker use to ducc user only
 - On process launch failure, agent supplies a reason for failure for
display in ducc mon
 - Added duplicate daemon detector to prevent starting duplicate DUCC daemon
 - Many DUCC Database improvements
 - Many DUCC webpage improvements

For a complete list of bugs and improvements included in this release
please see
https://uima.apache.org/d/uima-ducc-2.2.0/issuesFixed/jira-report.html

-- Jerry Cwiklik, for the Apache UIMA development team


Re: Support for UIMA Ducc

2017-02-23 Thread Lou DeGenaro
It is not unusual for the Cassandra DB to take a short while to boot.  My
experience has been usually less than a minute for a new install, but that
depends on the machine's capabilities and load.

Please have a look at the DB log which can be found in
DUCC_HOME//cassandra-server/logs and look for signs of trouble.

The demo here http://uima-ducc-demo.apache.org:42133/jobs.jsp is running
DUCC 2.2.0 (will be released today!) on Ununtu14.04 with java 1.8.

Lou.

On Thu, Feb 23, 2017 at 10:27 AM,  wrote:

> Hello,
> by installing UIMA DUCC I get an error that the "DB cannot connect" and it
> trys it over and over.
> I followed this instruction: https://cwiki.apache.org/confl
> uence/display/UIMA/DUCC and Im using a virtual Machine with Ubunut 16, my
> Java Version: 1.8
> Can you help me in this case?
>
>
> Greetings
>
>
>
>


Support for UIMA Ducc

2017-02-23 Thread s5544307

Hello,
by installing UIMA DUCC I get an error that the "DB cannot connect"  
and it trys it over and over.
I followed this instruction:  
https://cwiki.apache.org/confluence/display/UIMA/DUCC and Im using a  
virtual Machine with Ubunut 16, my Java Version: 1.8

Can you help me in this case?


Greetings





Using a third party Delegate in UIMA-AS aggregate

2017-02-23 Thread Dibyojyoti Sanyal
Hello,

We are working in a project where we want to provide cross platform NLP
text processing with UIMA-AS processing. So our goal is to generate a
Delegate and add it to the delegates generated by UIMA-AS. UIMA-AS
generates services and the services endpoint names (or destinations) can be
provided to a UIMA-AS aggregate pipeline to generate a combination of
services. The services are the delegates which are used by the aggregate.

Now our approach is to provide a new destinations name( which is not
generated by any of the UIMA-AS services but by some other JAVA or non JAVA
cross platform program) along with other UIMA-AS generated endpoits which
are generated by few UIMA-AS services ,and build an aggregate combining
them. In the aggregate the UIMA-AS generated services will work as
delegates and the non UIMA-AS generated endpoint should also work for
another delegate which is not a UIMA-AS generated service.

As the documentation[1
]
says  the endpoints are the input queues generated when the UIMA-AS
services are generated. The input queue name user can specify. But, for
each input queue there is a reply queue created by the aggregate ,this
reply queue is a temporary queue and it is mentioned in the header of a CAS
message sent from aggregate to delegate, the delegate replies to the reply
queue.

So We are interested to know,
1. How we can generate a temporary reply queue and tell the UIMA-AS
aggregate to use it corresponding the input queue that is not generated by
the UIMA-AS service but by other means?
2. How the UIMA-AS generated delegate replies to a reply queue
(specifically the code)?
3. Is UIMA-AS is flexible enough so that we can provide a delegate which is
not generated by UIMA-AS but still can be combined with other UIMA-AS
delegates so that it can work seemlessly with others and can be used in a
UIMA-AS aggregate?

We have subscribe to an input queue and receive a CAS message, they we
tried to send reply to the reply queue which is mentioned in the 'reply-to'
field of the header but it did not work. The program we are using for this
is a python client which is connected to the UIMA-AS broker using stomp
protocol.Code is given below.

def main():
conn = stomp.Connection()
conn.set_listener('MyListener', MyListener())
conn.start()
conn.connect()
conn.subscribe('OpenNlpSegmenter_Service',1,'auto')

while True:
time.sleep(10);

class MyListener(stomp.ConnectionListener):
def on_connected(self,headers, message):
   print('connected  "%s"' % message)
def on_connecting(self,host_and_port):
   print("connecting to: ",host_and_port)
def on_error(self, headers, message):
print('received an error "%s"' % message)
def on_message(self, headers, message):
print('received headers "%s"' % headers)
print('received a message "%s"' % message)
print("trying to connect to reply queue")
conn = stomp.Connection()
conn.start()
conn.connect()
conn.send(headers['reply-to'],message,headers=headers)
conn.disconnect()


The header of a message is is looks like below:

{'*destination*': '/queue/LanguageToolLemmatizer_Service',

'priority': '4',

'ServerURI': 'tcp://localhost:61616',

'subscription': '1',

'timestamp': '1487698370963',

'*reply-to*': '/remote-temp-queue/ID:Dibyo-PC-54740-1487698146395-1:3:1',

'AcceptsDeltaCas': 'true',

'*MessageFrom*':
'rmtRtrnQ_DemoAnnotatorQueue_1_LanguageToolLemmatizer_Service_192.168.16.13f7a252:15a61b82f1a:-8000',


'message-id': 'ID:Dibyo-PC-54740-1487698146395-3:1:3:1:3',

'Payload': '1000',

'MessageType': '3000',

'expires': '0',

'Command': '2000',
'CasReference': '543544b:15a61bb7001:-7ff8'
}

1.
https://uima.apache.org/d/uima-as-2.8.1/uima_async_scaleout.html#ugr.async.ov.concepts.jms_descriptor

Your help is highly appreciated.

Thanks & Regards,
Dibyojyoti Sanyal
Student TU Darmstadt MDSS
*Linked in *


Re: Using RUTA

2017-02-23 Thread José Vicente Moyano Murillo
Hi,

ruta-core.jar it's enough.

It will be fantastic if i could access the snapshot repository.

2017-02-23 13:03 GMT+01:00 Peter Klügl :

> Hi,
>
>
> what do you need? Only ruta-core.jar or also the Eclipse plugins/update
> site?
>
> I will prepare a new RC for the next release soon.
>
> There should be snapshot artifacts built by jenkins in the snapshot
> repository. I am out-of-office today so do not have the link right now. (If
> you want to build it yourself, the svn source repo can be accessed by
> anyone)
>
>
> Best,
>
>
> Peter
>
>
>
>
> Am 23.02.2017 um 08:06 schrieb José Vicente Moyano Murillo:
>
>> Hi Peter, good morning.
>>
>> Have we any opportunity to get a fixed version? I mean a snapshot or an
>> access to the repo.
>>
>> Regards
>>
>> 2017-02-22 10:38 GMT+01:00 José Vicente Moyano Murillo :
>>
>> you're right
>>>
>>> % is performing some kind of "or".
>>>
>>> So we will wait for the new release.
>>>
>>> Many thanks
>>>
>>> 2017-02-22 9:54 GMT+01:00 Peter Klügl :
>>>
>>> I actually wonder why your rules work. I am quite sure that they match
 too often, i. e. they match also if only one of the conjunct rule
 elements match.

 You can simply try that by using a wrong string in the check like "NG"
 instead of "Neil Gaiman"

 Anyways, the problem will be fixed in a few minutes and will be part of
 the next release.


 Best,


 Peter


 Am 22.02.2017 um 09:38 schrieb Peter Klügl:

> Thanks. Maybe its just a bug in 2.5.0 I already fixed. I'll investigate
>
 it.

>
> Am 22.02.2017 um 09:24 schrieb José Vicente Moyano Murillo:
>
>> Thank you very much Peter. Your advice was amazing.
>>
>> We tried the first option using Conjunct rules and as you said it does
>>
> not

> work with version 2.5.0. But we change a little your example and it
>>
> works

> perfectly witn 2.4.0 and 2.5.0
>>
>> We use theses examples with success:
>>
>> DECLARE Annotation RuleDetection;
>>   Book{ -> CREATE(NeilsBook) } <- {
>>Attribute{Attribute.name=="title", Attribute.ct=="Norse
>>
> Mythology"}"

>%
>>Attribute{Attribute.name=="author",
>> Attribute.ct=="Neil
>> Gaiman"};"
>>   };
>>
>>
>> DECLARE Annotation RuleDetection;
>>   Book{ -> CREATE(NeilsBook) } <- {
>> Attribute{FEATURE("name","title"), FEATURE("ct", "Norse
>>
> Mythology")}"

>%
>> Attribute{FEATURE("name","author"), FEATURE("ct",
>> "Neil
>> Gaiman")};
>>   };
>>
>> DECLARE Annotation RuleDetection;
>>   Book{ -> CREATE(NeilsBook) } <- {
>>Attribute{Attribute.name=="title", Attribute.ct=="Norse
>>
> Mythology"}"

>%
>> Attribute{FEATURE("name","author"), FEATURE("ct",
>> "Neil
>> Gaiman")};
>>   };
>>
>>
>> May be the problem is with when we use Identifiers:
>> a1:Attribute and  a2:Attribute
>>
>> In any case thank you very much for your help.
>>
>>
>> 2017-02-21 17:46 GMT+01:00 Peter Klügl :
>>
>> Hi,
>>>
>>>
>>> I'd normally say that you need the conjunt rules construct to specify
>>>
>> an

> AND between two rule element independent of the position:
>>>
>>>
>>> Book{-> NeilsBook}<-{
>>>  a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"}
>>>  % a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"};
>>>  };
>>>
>>>
>>> However, I just noted that there is a problem with conjunct rules. I
>>> haven't used it in a long time and the test coverage much lower than
>>>
>> the

> other constructs. I'll create a ticket for it and fix it.
>>>
>>>
>>> Without conjunct rules, you need some boolean variables for cheking
>>>
>> the

> AND, which looks all but declarative:
>>>
>>>
>>> BOOLEAN ft, fa;
>>> FOREACH(book) Book{}{
>>>  book{-> ft = false, fa = false};
>>>  book->{a1:Attribute{a1.name=="title", a1.ct=="Norse
>>> Mythology"->
>>> ft=true};};
>>>  book->{a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"->
>>> fa=true};};
>>>  book{ft,fa -> NeilsBook};
>>> }
>>>
>>>
>>> ... or with a BLOCK...
>>>
>>>
>>> BLOCK(book) Book{}{
>>>  Document{-> ft = false, fa = false};
>>>  a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"->
>>>
>> ft=true};

>  a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"-> fa=true};
>>>  Document{ft,fa -> NeilsBook};
>>> }
>>>
>>>
>>> If the order of the attributes is known, you can avoid the AND check
>>>
>> and


Re: Using RUTA

2017-02-23 Thread Peter Klügl

Hi,


what do you need? Only ruta-core.jar or also the Eclipse plugins/update 
site?


I will prepare a new RC for the next release soon.

There should be snapshot artifacts built by jenkins in the snapshot 
repository. I am out-of-office today so do not have the link right now. 
(If you want to build it yourself, the svn source repo can be accessed 
by anyone)



Best,


Peter



Am 23.02.2017 um 08:06 schrieb José Vicente Moyano Murillo:

Hi Peter, good morning.

Have we any opportunity to get a fixed version? I mean a snapshot or an
access to the repo.

Regards

2017-02-22 10:38 GMT+01:00 José Vicente Moyano Murillo :


you're right

% is performing some kind of "or".

So we will wait for the new release.

Many thanks

2017-02-22 9:54 GMT+01:00 Peter Klügl :


I actually wonder why your rules work. I am quite sure that they match
too often, i. e. they match also if only one of the conjunct rule
elements match.

You can simply try that by using a wrong string in the check like "NG"
instead of "Neil Gaiman"

Anyways, the problem will be fixed in a few minutes and will be part of
the next release.


Best,


Peter


Am 22.02.2017 um 09:38 schrieb Peter Klügl:

Thanks. Maybe its just a bug in 2.5.0 I already fixed. I'll investigate

it.


Am 22.02.2017 um 09:24 schrieb José Vicente Moyano Murillo:

Thank you very much Peter. Your advice was amazing.

We tried the first option using Conjunct rules and as you said it does

not

work with version 2.5.0. But we change a little your example and it

works

perfectly witn 2.4.0 and 2.5.0

We use theses examples with success:

DECLARE Annotation RuleDetection;
  Book{ -> CREATE(NeilsBook) } <- {
   Attribute{Attribute.name=="title", Attribute.ct=="Norse

Mythology"}"

   %
   Attribute{Attribute.name=="author", Attribute.ct=="Neil
Gaiman"};"
  };


DECLARE Annotation RuleDetection;
  Book{ -> CREATE(NeilsBook) } <- {
Attribute{FEATURE("name","title"), FEATURE("ct", "Norse

Mythology")}"

   %
Attribute{FEATURE("name","author"), FEATURE("ct", "Neil
Gaiman")};
  };

DECLARE Annotation RuleDetection;
  Book{ -> CREATE(NeilsBook) } <- {
   Attribute{Attribute.name=="title", Attribute.ct=="Norse

Mythology"}"

   %
Attribute{FEATURE("name","author"), FEATURE("ct", "Neil
Gaiman")};
  };


May be the problem is with when we use Identifiers:
a1:Attribute and  a2:Attribute

In any case thank you very much for your help.


2017-02-21 17:46 GMT+01:00 Peter Klügl :


Hi,


I'd normally say that you need the conjunt rules construct to specify

an

AND between two rule element independent of the position:


Book{-> NeilsBook}<-{
 a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"}
 % a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"};
 };


However, I just noted that there is a problem with conjunct rules. I
haven't used it in a long time and the test coverage much lower than

the

other constructs. I'll create a ticket for it and fix it.


Without conjunct rules, you need some boolean variables for cheking

the

AND, which looks all but declarative:


BOOLEAN ft, fa;
FOREACH(book) Book{}{
 book{-> ft = false, fa = false};
 book->{a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"->
ft=true};};
 book->{a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"->
fa=true};};
 book{ft,fa -> NeilsBook};
}


... or with a BLOCK...


BLOCK(book) Book{}{
 Document{-> ft = false, fa = false};
 a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"->

ft=true};

 a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"-> fa=true};
 Document{ft,fa -> NeilsBook};
}


If the order of the attributes is known, you can avoid the AND check

and

just specify a sequential constraint:


Book{-> NeilsBook}<-{
 a1:Attribute{a1.name=="title", a1.ct=="Norse Mythology"}
 # a2:Attribute{a2.name=="author", a2.ct=="Neil Gaiman"};
 };


If you need to check on the complete title with the URL, you can

replace

the coveredText comparison with a REGEXP condition.


(tested with UIMA Ruta 2.5.0)


Best,


Peter



Am 21.02.2017 um 13:58 schrieb José Vicente Moyano Murillo:

Hello everyone

I'm planning to use RUTA to create some annotations. But i'm not

able to

accomplish my objective.

This is my case right now:

I have a text annotated with some annotations "*Book*".

Under "*Book*" annotation i have a few annotations "*Attribute*" that
stores some information about the book. Each "*Attribute*" has a

feature

"

*name*" and a feature "*parent*" to its parent (one "*Book*"

annotation).

And example could be a text with 2 "*Book*" annotations:

"*Book*" annotation number 1 with 3 nested attributes
1.- *Attribute* with name feature equals "title" -> covered text:

"Norse

Mythology