Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Seriously, does any programmer have the time to decipher byzantine shit like this before writing a new feature? "Custom local search", US 8255379 B2

> CLAIMS(20) A method comprising: receiving a query that is configured by an issuer of the query to perform a local search, wherein the local search is performed over a first dataset and a second data set, wherein the first dataset comprises a first entity and the second dataset comprises a second entity, and wherein the query comprises a first token and a second token; parsing the query such that the first token of the query is mapped to the first entity in the first dataset and the second token of the query is mapped to the second entity in the second dataset; and returning search results based at least in part upon the parsing of the query, wherein the method is executed by a processor of a computing device. 2. The method of claim 1, wherein the first dataset is a custom dataset, wherein the custom dataset comprises a plurality of entities generated by an end user, and wherein the plurality of entities comprise attributes that describe the plurality of entities and shapes pertaining to the plurality of entities. 3. The method of claim 2, wherein the second dataset comprises street-level vector data. 4. The method of claim 3, wherein parsing the query comprises determining an approximate geographic region pertaining to the query. 5. The method of claim 4, further comprising determining the approximate geographic region pertaining to the query based at least in part upon mapping the second token of the query to the second entity in the dataset. 6. The method of claim 1, wherein parsing the query comprises identifying which words and phrases in the query correspond to attributes in the first dataset and the second dataset. 7. The method of claim 1, wherein parsing the query comprises generating a plurality of different partial interpretations of the query. 8. The method of claim 7, wherein each partial interpretation in the plurality of partial interpretations comprises a set of mappings between tokens in the query to attributes in the first dataset and the second dataset and an approximate region of interest pertaining to the query. 9. The method of claim 8, further comprising refining at least one partial interpretation, wherein the at least one partial interpretation is refined by way of spatial processing. 10. The method of claim 9, wherein the at least one partial interpretation is refined by determining that an entity in the first dataset spatially corresponds with a region of interest pertaining to the query. 11. The method of claim 10, wherein the region of interest is altered based at least in part upon a geographic overlap of a previous region of interest and an entity. 12. The method of claim 1, wherein the query is received in a first language, and further comprising translating at least a portion of the query to a second language. 13. The method of claim 1, wherein the query is a free-form text query that comprises misspelled terms, erroneous terms, out of order terms, or valid but wrong terms. 14. A system that facilitates custom local search, the system comprising: a processor; and a memory that comprises a plurality of components that are executed by the processor, the plurality of components comprising: a receiver component that receives a query from a user, wherein the query comprises a plurality of tokens, wherein the query is configured to retrieve custom content with respect to a particular geographic region, and wherein the query comprises a first token and a second token; and an interpreter component that parses the query such that the first token is mapped to a first entity in a first dataset and the second token is mapped to a second entity in a second dataset, wherein the first dataset is a custom dataset that comprises custom data provided by an end user and the second dataset is a contextual dataset that comprises street-level geographic data. 15. The system of claim 14, wherein the first entity comprises a shape that describes a geographic region pertaining to the first entity, an attribute that describes the first entity, and a unique identifier that identifies the entity. 16. The system of claim 14, wherein the query comprises at least one token that is indicative of a custom dataset amongst a plurality of custom datasets to which the query pertains, free-form text, and at least one token that is indicative of geographic scope pertaining to the query. 17. The system of claim 14, wherein the interpreter component comprises a query interpreter component that outputs multiple partial interpretations of the query, wherein each partial interpretation comprises a list of mappings between subsequences of tokens of the query and sets of entities in the custom dataset and the contextual dataset and an approximate region of interest pertaining to the partial query interpretation. 18. The system of claim 17, wherein the interpreter component further comprises a refinement component that refines at least one of the partial interpretations, wherein the refinement component modifies the approximate region of interest pertaining to the partial query interpretation when refining the at least one of the partial interpretations. 19. The system of claim 18, wherein the interpreter component further comprises a ranker component that ranks refined partial interpretations. 20. A computer-readable data storage device comprising instructions that, when executed by a processor, cause the processor to perform acts comprising: receiving a query, wherein the query comprises a plurality of tokens, wherein the query is configured to execute over one or more custom datasets and one or more contextual datasets; generating a partial interpretation of the query, wherein generating the partial interpretation of the query comprises mapping a first subsequence of the tokens to a first attribute in the custom dataset and mapping a second subsequence of the tokens to a second attribute in the contextual dataset; refining the partial interpretation of the query to generate a refined interpretation, wherein refining the partial interpretation comprises mapping a first entity in the custom dataset that has the first attribute to the first subsequence of the tokens and mapping a second entity in the contextual dataset that has the second attribute to the second subsequence of tokens; and causing graphical items representative of the first entity and the second entity to be displayed on a display screen of a computing device.

There should be a non-profit organization that files arbitrary new patents preemptively on behalf of the public and then release them into the public domain.



A system that takes a free-form text query for places and tries all possible interpretations to find a match based (somehow) on a history of places for that user (history in the general term, the way I read it, it can be places the user has been, places the user has searched, places whose shape look like the user's face, etc) and a global geospatial database.

So, a fancy parser, a per-user list of places of potential interest and a Solr collection with geospatial data.

P.S. the irony is that at no point in that overly verbose spec, is there anything that in any way tells you how to build that system. It's like patenting a device for enabling one to force a resistance against achieving minimum possible potential energy in a gravity field upon a mass of fluid, i.e. the concept of a bucket (or a glass, or the act of cupping your palms). And while that is surely only the preface of the patent, I seriously doubt the body is any more illuminating. Maybe while completely abolishing software patents remains impossible, we should try to enact reform that forces them to be specific enough that just by reading the patent one would be able to write a program that performs the actions described therein. Even if it's just "take a solr server, configure it like this, take this particular natural language parser, generate the possible forms of the query like so...". At least then they would be useful in a decade or so.


This is one of the reasons software patents are dumb imo; they don't actually share sufficient details to implement the idea any more easily.

In other fields, such as mechanical engineering, patents are required to describe an invention in enough detail that a person "skilled in the art" could reproduce it.

In the field of software, the patent merely has to describe the invention (software) well enough that it can be identified, not written. To match other fields, where it's common to require essentially full bluprints, it would make sense to require working source code (if only a reference implementation) for any software patent.

As is, the patenter "gifts" the public with the knowledge of an idea which is rarely in itself useful; the source code could at least be potentially useful.


From Fonar v. GE, 1996: “As a general rule, where software constitutes part of a best mode of carrying out an invention, description of such a best mode is satisfied by a disclosure of the functions of the software. This is because, normally, writing code for such software is within the skill of the art, not requiring undue experimentation, once its functions have been disclosed. * * * Thus, flow charts or source code listings are not a requirement for adequately disclosing the functions of software.” [0]

The patent lawyers have figured out that requiring that software patents make sense and reveal actual new engineering knowledge would make them useless for extracting cash for lawyers from actual working programmers.

[0] http://caselaw.findlaw.com/us-federal-circuit/1229938.html


Amazing. That fact, alone, discredits software patents. For patents to have any social value, they must be protecting intellectual property that is difficult to reproduce. The assertion here is the reverse: in software, implementation, after description of the function, is so easy it does not merit description. If it is so, then software requires no patent protection in the first place.


I understand that logic and have heard it before.

However, it has a fundamental problem. Patents do not protect abstract ideas; they protect concrete inventions. I cannot patent "a means of traveling backwards in time" because that is an idea. As far as we know it's also impossible. You can't get a patent on "A surface that has zero friction" unless you also create that surface and explain how to do so. The idea that any physicist who is "skilled in the art" could figure out how to create such a surface from the laws of physics (which it surely must follow) is silly.

On the other hand, software patents are exactly like that. I can patent "A method whereby clicking a button solves P=NP" and simply claim that the solution is produced somehow. I have to give no example implementation or even very specific details. This is highly at odds with other industries.

I do understand the legality of it, but it's still significantly different than other fields and leads to inane results.


> Seriously, does any programmer have the time to decipher byzantine shit like this before writing a new feature?

No. That is the game that is imposed by entrenched players, the wealthy, & lawyers to protect their interests (and maintain their dominance). They found a way to "hack" the system to their benefit over creators.

> There should be a non-profit organization that files arbitrary new patents preemptively on behalf of the public and then release them into the public domain.

You need to have a working prototype to file the patent. This non-profit would need the inventors to cooperate.

[edit] Actually you don't need to have a working prototype. Now my question is isn't that the role that open source and free software / hardware fills?


Unless something has changed recently, my understanding is that you do not need to provide a working prototype under US patent laws. You just need an explanation on paper of some kind that would allow a third party to be able to build whatever is being patented.

Of course, someone has to look at the explanation to determine whether the prototype could be built and be functional to have the patent granted. But who has time to deal with all that noise when you just grant the patent to let someone else deal with it?


The patent language is not too bad. Defeating a patent is not too hard. There are specific terms and patterns to the language, just like a programming language. It's often quite logical. It's just like reading another programming language.

A claim is just a list of "AND" conditions, i.e. all the conditions must be met for the claim to be asserted. To defeat a patent claim, it's a matter of adding enough variance in your code to defeat ONE of the conditions.

I will demonstrate the decrypting of claim 1. The other claims are just dependent claims of 1 to make the whole thing looks meatier. If claim 1 is defeated, all other claims are irrelevant.

Claim 1 basically saying a user issues a query with two parameters on two tables to do search in a program in the local machine, with the following conditions:

1a. the query runs against two data sets, Table1 and Table2.

1b. Table1 has one type of data, e.g. Food. Table2 has another type of data, e.g. Drink.

1c. the query has two parameters: param1, param2. E.g. FoodEaten and DrinkConsumed

1d. parse the query to use Param1 against Table1, and to use Param2 against Table2. E.g. select * from Food where food_type=:FoodEaten union select * from Drink where drink_type=:DrinkConsumed

1e. the query result should based on the parsing of the query and the mapping of parameters to the tables. The result should relate to the parameters in the query.

1f. the whole procedure is run by a process in a computer.

See, it's not too bad once you break it down. The claim conditions are kind of BS individually. The basic idea of the patenting process is to string together a number of day-to-day common items and make the whole thing as patentable.

To defeat claim 1, just make one of the conditions false. The easiest is to attack 1c, which uses the phrase "comprises a first token and a second token," which means the query contains exactly two tokens as parameters. Just add a dummy parameter to all 2-parameter query to fail that condition.

Attacking 1a with more than 2 tables query also works.

Also breaking a 2-table query into two separate queries works, too.

Since claim 1 is gone, all other dependent claims are irrelevant.

Disclaimer: the above are purely for educational purpose only and are not considered as legal advice. Consult a lawyer for real legal advice.


"Comprises" is a term that has a specific usage in patents. Comprises means that at least all of the listed elements must exist but other elements that are not mentioned in the claim may also be present.

The alternative phrase is "consists of" which means that only the listed elements may be present. I think it's mostly used when claiming chemical or molecular formulas.


I am not a native speaker of English. In http://www.grammar-monster.com/easily_confused/comprise_comp... the difference is:

Make sure you name all the constituent parts when using comprise or compose. The word to use when other elements are may also be present is include.

The elements one, two, and three composed the set {1,2,3}. The set {1,2,3} is comprised of three elements. The set {1,2,3,4} includes the elements one, two and three.


In http://www.thefreedictionary.com/include all this is clarified, the botton line or golden rule of usage (edited).

  Some writers insist that include be used only when it is followed by a partial list of the contend of the reference of the subject. This restriction is too strong. The use of comprise or consist of  will avoid ambiguity when a listing is meant to be exhaustive.


I agree that it's the opposite of standard usage but that's how it's interpreted in patent language. Here's a quote straight from the USPTO website:

"The transitional term “comprising”, which is synonymous with “including,” “containing,” or “characterized by,” is inclusive or open-ended and does not exclude additional, unrecited elements or method steps." http://www.uspto.gov/web/offices/pac/mpep/s2111.html

There are other non-standard interpretations in patent language. For example, "a" or "an" is not necessarily a singular but can mean "one or more". Also the inventor is free to provide their own definitions for words they use in the patent specification.


That definition of "comprise" is more or less the opposite of the British English definition, where "A comprises B, C and D" means "A includes B, C and D and nothing else." E.g Parliament comprises the House of Commons, the House of Lords and the Queen.


I agree. It confused me when I first started looking at patents but the accepted usage in patent law is that it is open-ended and can include other non-mentioned elements.


That's what I thought initially when I encountered the word, but there were judges ruled in patent cases where "comprise" means the items making up the entire parent item, no more no less.


Do you remember the specific cases? I'd be interested in knowing the details of these rulings. If you look at the Garrod Glossaries you'll find several examples of the "open-ended" claim construction for comprising.


> A claim is just a list of "AND" conditions, i.e. all the conditions must be met for the claim to be asserted. To defeat a patent claim, it's a matter of adding enough variance in your code to defeat ONE of the conditions.

That's not true. Thanks to the doctrine of equivalents you can still infringe on a patent even if your invention differs from what the claim describes. (Now, if you want your invention to count as prior art, it does have to exactly match the claim - whether two inventions are considered the same for prior art purposes is different from whether they're considered the same for infringement purposes.)


> Just add a dummy parameter to all 2-parameter query to fail that condition.

This (along all your other circumventions) seems to me to only side-step the "spirit" of the invention -- to my mind any implementation using the techniques you suggest works more or less precisely as the patent describes.

If this is defeating I want no part of this charade.


I think you're reading too much into the "spirit" of an invention. A patent claim has very specific instruction to follow to satisfy the condition. If it's too vague, it would be struck down. People have been reading more broadly into patent than necessary and worry unnecessarily.

Like in the example above, the word "comprise" has very specific legal meaning - to be all of it, no more no less. Having 1 parameter or more than 2 parameters would not fit the claim description. You would see the word used again and again in patents. It's like the word "concurrent" in CS. Programmers just understand its meaning and the connotation of it.

Most of patents are BS anyway. You just need to learn to defeat it in its own game.


I'm afraid you're wrong. "Comprise" in a patent does not mean "all, no more and no less".

See, eg http://www.patentlens.net/daisy/patentlens/202.html

The transition words or phrases commonly used are "comprising," "consisting of" and "consisting essentially of" and have very distinct meanings:

"Comprising" is open-ended language, meaning that the claim encompasses all the elements listed but does not exclude additional, unnamed elements. For example, if a claim recites elements "A" and "B", an individual that practices the invention using elements "A" and "B" is infringing, and using "A", "B", and a new element "C" is infringing, whereas if she only uses element "A" or "B", she is not infringing.

In contrast, the transitions "consisting of" and "consisting essentially of " have more limited scope. "Consisting of" means that the device (or method) has the recited elements (or steps) and no more. For example, if a claim recites " A" and "B" and the individual uses only "A", or "A" and "C" but not "B", or even "A", "B", and "C", the claim is not infringed.

The meaning of "consisting essentially of" is intermediate to comprising and consisting of. A claim using this transition includes additional elements only if they do not affect the basic and novel characteristics of the claim. " Consisting essentially of" is not often used.

Drafting a claim to use open-ended language will enable the patent to be as broad as possible. Narrowing the claims to be more specific is the kind of thing that a patent examiner might demand in order to approve the patent.

(And this is why you have to employ lawyers whenever patents are involved, as otherwise your opponents will rip you to pieces in court.)


You seem to assume that a programmer should know about the patent and all other similar patents/patent conditions before he/she implements. I don't think that's so easy to do.


In the past, I have been advised by my employers that I should never read patents. The reasoning is that if I have a policy of never reading patents, then I can never willfully violate a patent. This limits the amount of damage I can cause when I inevitably violate a patent.

When engineers are advised by lawyers to never read patents that pertain to their field, you know the entire system is a fucking joke.


I have had employers specifically instruct me not to look up patents from work computers. I'm free to do that at home, but not at work.


I am sorry, but it's not "like a programming language". It's more like something that falls out from a compiler.


Regarding your last comment...

I've wondered before if a group of hackers could DDOS the patent system.

It could be a modern form of civil disobedience.


>I've wondered before if a group of hackers could DDOS the patent system.

There is such a group and they're already doing it. One of the players is the focus of this article, in fact.


A more effective approach might be to maintain a peer-reviewed ranking of various large tech companies based upon their patent history and to semi-regularly publicly base your employment decisions upon said list.


I'd argue that merely holding an egregious patent should not be the criterion but rather using it in a unprovoked manner. However, as I say this I wonder whether my bias is showing... against Microsoft (who I am frankly not very fond of) vs Google (who I like much more).

It is clear that with their investment in the patent troll, Microsoft is evil. However, Google has tried to hold up the evil companies by using standards essential patents as well. I can try to justify it in my mind but is Google really better than Microsoft? We have yet to see (as far as I know) Google sue anybody but isn't having a trove of nuclear weapons enough of a reason to distrust someone? It is not like they have to blatantly display it for it to be a part of negotiations (might be hand wrangling if you're on the wrong end of it).

I am conflicted because the more I think about it, the more I doubt my previous assertion. A pledge to not use frivolous patents in an aggressive way is not sufficient. However, wouldn't I rather Google or Twitter hold a frivolous patent knowing they likely won't sue me directly (I have very small dreams and I doubt I'd ever show up on their radar). If it keeps one more patent off of the hands of Intellectual Ventures (or even the likes of Amazon.com, Apple, and Microsoft), isn't that a good thing for the world?


Occasionally I feel like there should be a wall of shame for the patent attorney that wrote the claims (and possibly the named Inventors by extension).


The language is precise and defines the legal scope of the invention. The claims are not supposed to tell you how to implement the invention but to definitively define what is and is not within its scope. All areas of technical expertise have their own language to convey precise ideas, and the law is no different. Just because you cant read it doesn't mean it's not understandable.


> The claims are not supposed to tell you how to implement the invention

That part of the original deal around patents has been lost, then - to wit, that after the 17 years elapsed, the world would know how to implement this 'non-obvious invention'.


That's the role of the description, not the claims. Though according to some people here, all that you need to read is the title of the patent to decide whether it's novel and inventive.


The people writing and reading these papers for a living must live in a bubble and may not even realize how far and weird it is.

Could it be possible for a patent crash to happen? Maybe the way to get rid of this absurdity is to push it to the extreme, produce industrial quantities of silly patents and force the whole system to a stop, then a single match would easily burn all of it.


The truth is, neither do patent examiners. I've heard they only get 10 hours to review a patent application, at which point they have to approve it if they can't find any published [1] prior art.

[1] And that doesn't mean, "on some long-forgotten website in the dank corners of the internet". That means academic papers or other patents.


When I see such legalese style writing, I search for the first fullstop.

here it comes after 716 characters 0r 130 words. After this they seem to be lot more frequent.

Looks like the idea was to put people to sleep after 5 seconds.


Claims are supposed to be written in the form of one sentense. Claims are not instructions on how to construct the invention, they are a legal definition of the scope of things that would infringe the invention. The language used is supposed to be precise, not generally easy to read prose. Reading a patent properly takes some training and experience, just like reading any other technical literature.


The first claim just sounds like a SQL SELECT with a JOIN; wouldn't this be easy enough to get overturned?


It would only invalidate that claim, but barring finding other prior art for the other claims, the rest of the patent would stand.


ww520 above asserts: A claim is just a list of "AND" conditions, i.e. all the conditions must be met for the claim to be asserted. To defeat a patent claim, it's a matter of adding enough variance in your code to defeat ONE of the conditions.

One of you is right. Which one?


A patent can have many claims.

For instance,

1. A system for sending and receiving email.

You can probably find prior art for that.

2. Claim 1 where the email is sent over a TCP/IP network

And probably you can find prior art for that.

3. Claim 2 where the network is wireless

NTP won over $1 Billion for filing a patent with a claim about this serious, mostly from Blackberry.

Now you can continue like this indefinitely. That's why every time there's a new system, there are thousands of new patents that can be issued. Email on a phone, email over multipath TCP, email with a touchscreen, email with MIME messages, email with MIME messages on a touchscreen, &c. Each of those is considered valid to patent by the PTO. Then instead of email, try playing MP3s, or word processing, or online backup. You quickly arrive at a thicket of a million valid software patents covering everything you might ever want to program many times over.


Re: your idea at the end: You might find the first section of Charles Stross' Accelerando a fun read.


I gooooogled it [0], the patent was filed on 10/11/2009 (I'm British, so read that as dd/mm/yyyy). Some of the other patents listed go back a few years [1].

[0] http://www.google.com/patents/US8255379 [1] https://www.google.com/patents/US5889522


There should be a non-profit organization that files arbitrary new patents preemptively on behalf of the public and then release them into the public domain.

Good idea. Let's call it "Bell Labs".


A note of clarification, but there's actually no reason to patent something if you're going to release it into the public domain. Patents are an incentive for disclosure, so if you write a paper on the subject and never patent it, no one else can patent it later.


Or they can patent it anyway verbatim and say that your previous idea is not prior art. Do you disagree? Let's meet in court.


If you patent something then they could also take the patent document and copy it verbatim and patent it and say, "That patent isn't prior art."

There's really no difference between publishing your ideas in a public, searchable forum and patenting them, except that you get monopoly rights in the second case, but not in the first. Trolls can still leverage the cost of legal services against you whether you have a patent or prior art.


It takes less than 5 minutes for someone to tell if a published work (particularly in a journal) is prior art. As long as it was made publically available before the priority date (the date the provisional application was filed anywhere in the world [that is a party to the Paris Convention IIRC]) then it's clearly prior art. Any judge would throw out the case.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: