WSDL Interface to EPO (European Patent Office)

Hi,
I am trying to do patent searches accessing the webservice at the
European patent office
(www.ops.epo.org/patents/patent-information/free/open-patent-services.html).

Here is the code I wrote:


#step 1: SOAP method and parameters

require ‘soap/wsdlDriver’
wsdl = ‘ops.wsdl’
driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver

#step 2: SOAP request and response

XSD::Charset.encoding = ‘UTF8’

my_query = ‘ti=green and ti=plant’
result = driver.biblio-search(my_query,1,3)


Questions: How do I access the elements in result?
What do I do about this error message:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:371:in
pull': The 'xml' prefix must not be bound to any other namespace (http://www.w3.org/TR/REC-xml-names/#ns-decl) (REXML::ParseException) Line: Position: Last 80 unconsumed characters: <import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http:/ from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:365:ineach’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:365:in
pull' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/parsers/streamparser.rb:16:inparse’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/document.rb:201:in
parse_stream' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb:27:indo_parse’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/parser.rb:63:in
parse' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/importer.rb:42:inparse’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/importer.rb:30:in
import' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/importer.rb:19:inimport’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/import.rb:59:in
import' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/import.rb:47:inparse_attr’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/parser.rb:144:in
decode_tag' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/parser.rb:137:ineach’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/parser.rb:137:in
decode_tag' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/parser.rb:82:instart_element’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/xsd/xmlparser/parser.rb:67:in
start_element' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb:34:intag_start’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/parsers/streamparser.rb:24:in
parse' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/document.rb:201:inparse_stream’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb:27:in
do_parse' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/parser.rb:63:inparse’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/importer.rb:42:in
parse' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/importer.rb:30:inimport’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/importer.rb:19:in
import' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/import.rb:59:inimport’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/import.rb:47:in
parse_attr' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/parser.rb:143:indecode_tag’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/parser.rb:139:in
each' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/parser.rb:139:indecode_tag’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/parser.rb:84:in
start_element' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/xsd/xmlparser/parser.rb:67:instart_element’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb:34:in
tag_start' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/parsers/streamparser.rb:24:inparse’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/document.rb:201:in
parse_stream' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb:27:indo_parse’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/parser.rb:65:in
parse' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/importer.rb:29:inparse’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/xmlSchema/importer.rb:30:in
import' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/wsdl/importer.rb:18:inimport’
from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/soap/wsdlDriver.rb:124:in
import' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/soap/wsdlDriver.rb:28:ininitialize’
from ./patent_get.rb:7:in `new’
from ./patent_get.rb:7

Axel Fuchs wrote:

Hi,
I am trying to do patent searches accessing the webservice at the
European patent office
(www.ops.epo.org/patents/patent-information/free/open-patent-services.html).

$ curl -v
http://www.ops.epo.org/patents/patent-information/free/open-patent-services.html

$ dig www.ops.epo.org. a

;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN,

So it looks like that link is bad (authoritative non-existent domain
answer)

Here is the code I wrote:

I suggest you follow the steps on the other thread:

  • ensure you’re using the gem soap4r, not the bundled one
    require ‘rubygems’
    gem ‘soap4r’
    require ‘soap/wsdlDriver’

  • build interface classes using wsdl2ruby.rb

  • get a wiredump

Questions: How do I access the elements in result?

  • run it in irb and use inspection to look at the available methods

What do I do about this error message:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:371:in

`pull’: The ‘xml’ prefix must not be bound to any other namespace
(http://www.w3.org/TR/REC-xml-names/#ns-decl) (REXML::ParseException)

This suggests they’re sending back invalid XML or that the WSDL has
invalid XML, but we’d need to see a wiredump exchange and/or the WSDL.

Brian C. wrote:

$ dig www.ops.epo.org. a

;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN,

So it looks like that link is bad (authoritative non-existent domain
answer)

It looks like the correct domain is ops.epo.org, not www.ops.epo.org.

The path you gave gives a 404 error. The error page contains a link to
the WSDL at
http://ops.epo.org/patents/patent-information/free/wsdl/ops.wsdl but
that also gives a 404 error.

But I found another link to this:
http://ops.epo.org/wsdl/ops.wsdl

wsdl2ruby.rb says that it doesn’t like the wsdl, with the same error you
gave. It seems it doesn’t like:

<xsd:import namespace=“http://ops.epo.org
schemaLocation=“http://ops.epo.org//schema/ops.xsd”/>

If you fetch this xsd you see that it imports two more xsd’s, and these
include these declarations:

xmlns:xml=“http://www.w3.org/XML/1998/namespace

I believe this is what it’s objecting to. You can fix these by making
them relative links. Try the attached for size.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs